# Retro Arena



## XxXRichiXxX (12. Okt 2013)

Hallo,

ich möchte euch heute mein Projekt "Retro Arena" vorstellen. Ich würde mich sehr freuen, wenn ihr es mal runterladet und eure Meinung/konstruktive Kritik mir mitteilt.
Wenn ihr Idee habt, dann könnt ihr die auch gerne äußern.

*Infos*

Name: Retro Arena
Genre: Battle Arena/Action
Sprache: Deutsch
Größe: 8MB (14MB wegen Source Code)


*Spielidee*

Die Idee hinter Retro Arena ist im Prinzip sowas wie Gladiatoren, diese kämpfen auch mit Schwert und Schild in einer Arena um ihr Leben. So ist es auch bei Retro Arena, der einzige Unterschied ist, dass man gegen allerhand Monster kämpft.


*Spielziel*

Das Ziel von Retro Arena ist es, einen besonders mächtigen Spielstand/Charakter zu haben.
Später soll es noch Möglich sein, gegen andere Spieler lokal und übers Internet gegeneinander zu kämpfen und viele Coins für einen Sieg einzusahnen um noch besser zu werden.


*Screenshots*

Hautpmenü




Charakter/Spielstand statsmenü




Wüsten Arena





*Download & Mindmap*

Download: Retro Arena + Source Code
Virustotal: http://tinyurl.com/lx9z6p9
Mindmap: Retro Arena - Mind Map


Mfg Richi

PS: Ich möchte hier keine Diskussion, warum ich schon wieder was neues mache!


----------



## XxXRichiXxX (16. Okt 2013)

+++ UPDATE +++

Hier ist nun ein Update. Ich habe vieles Verbessert, eingefügt und verändert.

Größe: 18MB (31 wegen Source Code)

Download: Retro Arena
Virustotal: http://tinyurl.com/lx9z6p9
Mindmap: http://tinyurl.com/p4zxbtd

Ich würde mich sehr über Feedback, Meinung und konstruktive Kritik von euch freuen.

Mfg Richi


----------



## MrClave (17. Okt 2013)

Atmosphäre ist definitiv vorhanden, allerdings gibt's da so einige Dinge, die ich ändern würde.


Musik fängt schon vor dem Bildschirm an. Fühlt sich merkwürdig an als Nutzer.
Die Schriften (Farben, Schriftart) sind teilweise unschön. Man sollte sich an ein gewisses Farbschema halten.
Schriftschatten eher nervig, als schön.
"Welle X" zu weit rechts. Ragt aus dem Bild heraus.
Speichern drücken zum anwenden der Upgrades. Ich will, dass ein Spiel so etwas sofort übernimmt.
Speichern Button zeigt nur "Speicher" an, statt "Speicher*n*"
Lange Wartezeiten nach tot.
ESC zum fortführen nach dem tot eher ungewöhnlich. Space, Enter oder ein Mausklick erscheinen logischer.
Maustaste gedrückt halten zum angreifen. Sehr nervig auf Dauer. Ich will einen Angriff pro Mausklick.
Ingame Zeit läuft manchmal in doppelter Geschwindigkeit.
Bei klicken auf Neu wird keine Sicherheits-Abfrage gestartet. Man könnte sich ja mal verklicken.
Popup-Menü im Metal-LookAndFeel beim kauf eines zu teuren Upgrades -> unschön & zerstört Atmosphäre.
Maps/Level. Sind es easy, medium und hardcore? Kam mir zumindest so vor.

Ich denke, das sind erst mal genug Punkte 
Trotzdem schönes Leveldesign. Richtiges retro-feeling kommt da auf.


----------



## XxXRichiXxX (17. Okt 2013)

MrClave hat gesagt.:


> Atmosphäre ist definitiv vorhanden, allerdings gibt's da so einige Dinge, die ich ändern würde.
> 
> 
> Musik fängt schon vor dem Bildschirm an. Fühlt sich merkwürdig an als Nutzer.
> ...



Vielen dank für dein Feedback.


Hab die Schatten weitestgehend weggemacht (gefällt mir auch besser)
Du meinst unten rechts in der Ecke? Bei mir nicht, hab es dennoch etwas weiter nach links gerückt.
Der "Speichern"-Button bleibt, da ich sonst "Rückgängig"-Button machen müsste.
Danke für den Hinweis, ist geändert.
Hab die Zeit verkürzt.
Hab die Taste auf Space geändert.
Geändert, man muss nun nur einmal klicken.
Die Ingame Zeit läuft fast mit der echten, habs gerade überprüft.
Sicherheitsfrage eingefügt.
Ist geändert.
Ja, die Schwierigkeit ist so eingeteilt.

Vielen dank, ich stecke viel Arbeit in die Level.

Mfg Richi


----------



## jonas.r (17. Okt 2013)

Bekomme auf meinem Mac leider ne Exception:

```
Exception in thread "main" java.lang.NullPointerException
	at org.xxxrichixxx.player.MusicPlayer.loop(MusicPlayer.java:21)
	at org.xxxrichixxx.menu.Menu.main(Menu.java:115)
```

Beim Doppelklick auf die Jar kommt immerhin noch kurz die Marschmusik, danach stürzt es leider ab. In der Konsole kommt nichtmal die Musik und die Exception wird ausgespuckt.

Würds mir gerne ansehen.

Liebe Grüße,
Jonas


----------



## mavinatic (18. Okt 2013)

Hallo XxXRichiXxX,

ich habe dein Spiel nicht gespielt, war aber an der SourceCode-Analyse interessiert.

Kritik:
- In der Package "org.xxxrichixxx.entities" & "org.xxxrichixxx.arenas" würde ich mit Vererbung arbeiten! Denn viele Klassen implementieren den gleichen oder ähnlichen Code!
- Bezüglich der Images wäre es sicherlich möglich ein großes Image zu verwenden anstatt von 9 einzelenen Animationsbilder und diese dann gerecht anzeigen zu lassen.
- Ich persöhnlich vermeide Variablennamen mit underscores.
- An verschiedenen Stellen hast du dich wiederholt - Bei der Softwareentwicklung gibt es einen "Grundsatz" -> Dont repeat yourself!
- Warum hat die Class "Frame" eine extra package -> Ich würde sie auch unter GUI einlagern
- In der Klasse ImageLoadere gibt es die Methode "loadImageIcon" dort hast du das ExceptionHandling Semi-Professionell durchgezogen. Aus großen Softwareprojekten kann ich dir nur empfehlen Logger wie log4j oder ähnliches zu nutzen, auch wenn das für dein Projekt vllt etwas überdimensioniert klingt, finde ich Logging-Frameworks klasse, so kann man einfacher debuggen, falls ein Fehler im SourceCode ist.

Diese Kritik ist teilweise hohes Niveau! Das sind alles nur Verbesserungsvorschläge, welche ich persöhnlich einbauen würde um mit wachsener Menge an SourceCode noch die Übersicht zu bewahren!

Beste Grüße


----------



## XxXRichiXxX (18. Okt 2013)

jonas.r hat gesagt.:


> Bekomme auf meinem Mac leider ne Exception:
> 
> ```
> Exception in thread "main" java.lang.NullPointerException
> ...



Da konnte wahrscheinlich das Menülied nicht geladen werden.
Ich schicke dir demnächst per Pn eine Version, bei ich das Debug in meinem Audioloader verbessert habe.



mavinatic hat gesagt.:


> Hallo XxXRichiXxX,
> 
> ich habe dein Spiel nicht gespielt, war aber an der SourceCode-Analyse interessiert.
> 
> ...



Vielen dank für dein Feedback.


Vererbungen werde ich demnächst noch einbauen.
Es ist sicherlich besser ein großes Img zu haben, hab damit aber noch keine Erfahrung gesammelt und das ist mir jetzt zu viel Aufwand, 80+ Bilder pro Entity in ein Bild zsm. zu fassen.
Ich habe variablennamen mit underscrores nur, damit man diese besser lesen kann (z.B. kann man a_image besser lesen als aimage)
"An verschiedenen Stellen hast du dich wiederholt - Bei der Softwareentwicklung gibt es einen "Grundsatz" -> Dont repeat yourself!" Was meinst du damit?
werde ich noch verschieben, hatte aber am anfang noch kein package gui.
Ich bleibe jetzt erstmal bei meinem ExceptionHandling und werde mir bei meinem nächsten Projekt mal ein Logging-Framework anschauen.

Mfg Richi


----------



## MrClave (18. Okt 2013)

Don't repeat *yourself* hab' ich noch nicht gehört (eher "Don't repeat mistakes"), allerdings gibt es in der Informatik den Grundsatz, Redundanzen zu vermeiden. (Oder auch "Only Enter Once" für professionelle Anwendungen).

Redundant ist etwas, sobald es unnötigerweise doppelt vorkommt.

Beispiel:
Wenn du eine Gegner und eine Spieler klasse hast, gibt es zwischen beiden ja gewisse Gemeinsamkeiten. Zum Beispiel einen Namen. (Gilt auch für gemeinsame Methoden, wie z.B. bewegung)
Da wäre es doch ratsam, wenn man eine überliegende Entity Klasse hat, von der man bei Klassen wie Gegner und Player ableiten kann, damit diese Dinge wirklich überall 100% identisch sind und man sie nicht tausend mal neu schreiben muss.

Ist eine schöne Baumstruktur.

```
Entity
                               Enemy                               Player
                ConrecteEnemyA        ConrecteEnemyB
```
So kann man sich dann Stück für Stück an konkrete Klassen nähern.
Macht es auch leichter den Code später zu verändern/erweitern.


----------



## XxXRichiXxX (18. Okt 2013)

MrClave hat gesagt.:


> Don't repeat *yourself* hab' ich noch nicht gehört (eher "Don't repeat mistakes"), allerdings gibt es in der Informatik den Grundsatz, Redundanzen zu vermeiden. (Oder auch "Only Enter Once" für professionelle Anwendungen).
> 
> Redundant ist etwas, sobald es unnötigerweise doppelt vorkommt.
> 
> ...



Achso, ok. 
Ich werde, wie bereits gesagt, noch Vererbungen machen.

Mfg Richi


----------



## mavinatic (19. Okt 2013)

Hey,

unter WIKIPEDIA findest du auch nach dem DRY-Prinzip: Don?t repeat yourself ? Wikipedia

Zu den Underscores wird bekanntlich nach Java Conventions der sogenannte "CamelCase" benutzt. Sprich wenn ein neues Wort in einer variable beginnt dann startet man mit einem Großbuchstaben.

Beispiel: "aImage" oder "dontRepeatYourself" so kann man variablenNamen besser lesen ;-)

Ich finde gut, dass du von jedem User die Kritik so offen aufnimmst!


----------



## XxXRichiXxX (19. Okt 2013)

mavinatic hat gesagt.:


> Hey,
> 
> unter WIKIPEDIA findest du auch nach dem DRY-Prinzip: Don?t repeat yourself ? Wikipedia
> 
> ...



Ah ok, vielen dank.
Ich werde es es beim nächsten Projekt beabsichtigen. Es wäre jetzt zu viel Aufwand, alle Variablen zu ändern.

Es ist mir sehr wichtig, dass Feedback von jemanden auszuwerten.

Hast du noch Verbesserungsvorschläge oder Ideen zu meinem Spiel?
Mfg Richi


----------

