Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.04.2014, 20:29

DeadStorm. Der nächste 2D-Hit ;D

Hallo Community,

mein Name ist Maximilian Apel und ich bin seit Kurzem volljährig. Ich beschäftige mich nun seit ungefähr einem Jahr mit Programmierung in Java, mit dem Ziel, eines Tages mal tolle Spiele zu programmieren. Bisher habe ich Bradley Kjells Java Tutorial durchgelesen und in "Java von Kopf bis Fuß" reingeschnuppert, also nur allgemeine Java-Programmierung gelernt, ohne näher auf Spiele, Engines, Grafiken und Sound einzugehen. Diese Themen werden von Bradley Kjell leider nur sehr oberflächlich behandelt. Trotzdem habe ich mich vor einigen Wochen an die Programmierung meines ersten Spieles herangewagt und trotz schwerer "Bildungslücken" :D und anderer Schwierigkeiten ist es jetzt geschafft!
Na gut, irgendwie hätte ich es mir schöner vorgestellt. Letzten Endes ist es doch äußerst simpel geblieben, trotzdem hoffe ich, dass es reicht, um einmal ein bisschen Feedback zu meiner Arbeit zu bekommen. Das Spiel findet ihr hier:
http://rapidshare.com/share/BFDE0B3E87268D24E54872C0EE1CF2D1


Programmiert habe ich mit Java, hauptsächlich im Texteditor (ja, ich weiß, dass das unprofesionell ist, aber ehrlich gesagt kann ich mich einfach nicht mit IDE's anfreunden, ich habs oft genug versucht :( ). Nur wenn es einmal sehr brenzlig wurde, habe ich den Code mal meinem Freund Net Beans gegeben, damit er mal nach Fehlern sieht ;) . Das Ganze ist natürlich in 2D-Grafik, aus der Draufsicht.
Im Spiel selbst geht es darum, Zombies zu töten (wow, ich bin beeindruckt von meiner Kreativität :D ). Diese kommen in steigender Anzahl kontinuierlich auf einen zu, erst aus einer Ecke, dann aus 2, dann 3… bis die Maximalzahl von 6 Spawnpunkten erreicht ist. Soweit die Theorie. In der Praxis zeigt sich, dass dank Permadeath und One-Touch-Kill niemand Level 5 überleben sollte, aber ihr könnts gerne probieren ;) .
Viel Wert habe ich auf die Modellierung der Waffe gelegt, einen 8-schüssigen Revolver im Kaliber .22, der 6 der 10 Sounds, die im Spiel verwendet werden, für sich beansprucht. Das Nachladen und Schießen ist sehr realistisch gestaltet, nur bei der Nachladezeit musste ich zwecks Balancing am Ende ein Auge zudrücken ;).
So viel zum Eigenlob, jetzt noch mal zu den Problemen, die ich bemerkt habe und nicht ausradieren konnte/wollte:
1. Der Sound ist verbuggt :(, keine Ahnung warum, aber manchmal scheint ein Schuss korrekt registriert zu werden, bleibt aber einfach stumm. Dasselbe passiert mit anderen Waffengeräuschen, hauptsächlich dem "cocking"- und "insert"-sound. Der entsprechende Code befindet sich in "GameLoop.java" unter "//shoot" und "//reload", bzw. im Konstruktor.
2. Der Spieler kann problemlos über den unteren Rand des Spielfeldes hinausmarschieren! Das Problem liegt vermutlich irgendwo in "GameLoop.java" ("//move Player"), "GameArea.java" oder "GameWindow.java".
3. Ich wollte die Zombies außerhalb des Bildes spawnen lassen, das funktioniert aber irgendwie nicht, sie tauchen dann einfach nicht auf. Es gibt dann aber keine Exception und das Programm läuft ansonsten normal. Der Code zum Spawn liegt in "GameLoop.java" ("//spawn zeds").
4. Die Spielschleife scheint sehr unregelmäßig zu laufen. Im Regelfall braucht sie während dem Spiel 2-3 Millisekunden pro Iteration, vereinzelt aber bis zu 17! Woran liegt das? Ich nehme an, dass dies die Ursache für Problem Nr. 4 ist, das da lautet, dass die Zombie-Sterbeanimationen total unregelmäßig schnell ablaufen, manchmal mit normaler Geschwindigkeit und manchmal kaum zu sehen.
5. Ich entschuldige mich dafür, dass ich kein Hauptmenü bieten kann. Ich hatte mir eins vorgenommen, jedoch musste ich einsehen, dass der ganze Kladderadatsch mit Artwork etc. den "Release" noch mal locker um ein halbes Jahr verschoben hätte :D . Auf eine großartige Sterbeanimation des Spielers habe ich bewusst verzichtet, weil ich es schön finde am Ende zu sehen, woran man gestorben ist (also welcher Zombie einen berührt hat).
Programmiertechnisch weiß ich, dass viele Features noch sehr unprofessionell eingefügt sind, aber zu meiner Verteidigung muss ich sagen: Ich weiß es einfach noch nicht besser :(. Ich freue mich auf Hinweise und Tipps, und wenn mir jemand ein gutes Spiele-Tutorial empfehlen kann, bin ich sehr dankbar. Das Tutorial "Spiele-Programmierung in Java" hier aus dem Forum (Autor ist aus der PDF leider nicht ersichtlich) habe ich mir schon mal angesehen, es hilft mir aber nicht wirklich weiter, da es eher Lösungen aufzählt als sie erklärt.

Wenn ihr Fragen oder Hinweise für mich habt, freue ich mich, hier von euch zu lesen. Sorry für den langen Text, aber ich konnte mich einfach nicht zügeln ;)
LG Max

Edit:
Ich vergaß das Offensichtlichste: Es gibt keine funktionierende .jar-Datei. Wenn ich das Spiel verpacken will, wird der Sound nicht mehr gefunden und es lässt sich wegen der daraus resultierenden NullPointerException nicht mehr starten. Kann mir da jemand helfen?

Edit:
Dropbox-Link: https://www.dropbox.com/sh/ueqapfh85hyjx1e/T6nQ8-LQyO
Ich hoffe, das funktioniert.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »kruemelkeksfan« (06.04.2014, 14:47)


Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

2

06.04.2014, 10:20

Da ich die Datei nicht downloaden kann, versuch ich einfach so mal deine genannten Punkte zu lösen.

1. Mein ersten, und bisher einziges Javaspiel, hatte auch Probleme mit dem Sound. Das liegt daran, dass der Sound vom vorherigen Schuss noch nicht zuende ist und somit wird kein neuer erzeugt. Da ich nur sehr wenig Ahnung von Java hab, solltest du das explizit googlen, aber vielleicht muss man den Sound auf eine Liste legen oder den Sound vor dem neuen Schuss stoppen.
2. Hast du denn Kollisionen dafür eingebaut? Wenn ja, dann musst du den Spieler, wenn er an der Wand ist, einige Pixel von der Wand replazieren, sonst kann er sich da festhängen.
3. Laufen sie in die richtige Richtung? Spawn mal nur einen Zombie und beobachte mit einer Consolen-Ausgabe wo er hinläuft.
4. Für Animationen brauchst du immer einen gewissen Delay pro Sprite, sonst wäre eine 6 teilige Animation bei 60FPS bereits nach 0,1 Sekunden abgelaufen.
Dafür kannst du eine Framerate von z.b. 60FPS erzwingen und ein Delay pro Sprite von 0,1Sekunden einbauen, sodass es 0,6 Sekunden für die Animation dauert.
5. Ein Menu zu erstellen ist gar nicht so schwer. Dafür kannst du einen Anfangsbildschirm mit nur 3 Buttons wählen. Dann kannst du für jeden Status eine Prozedur aufrufen. Z.B. 1: Spielen 2: Highscore 3: Optionen


Ich hoffe du verstehst das in etwa. Ich kann wie gesagt die Datei nicht downloaden.
42 / Pi = 13,37

3

06.04.2014, 10:54



Da ich die Datei nicht downloaden kann, versuch ich einfach so mal deine genannten Punkte zu lösen.
Warum geht es nicht? Hab ich bei RapidShare was falsch gemacht? Sorry, ich mach das wirklich alles zum ersten Mal... :hmm:

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

4

06.04.2014, 11:20

Wenn ich auf "zum Download" klicke, komme ich auf eine diverse Sportwetten-Seite.
42 / Pi = 13,37

5

06.04.2014, 11:30



Wenn ich auf "zum Download" klicke, komme ich auf eine diverse Sportwetten-Seite.

Ich auch. Aber bei mir öffnet die sich in einem neuen Tab/Registerkarte. Einfach zum Ursprungstab zurückgehen und auf Download klicken. Welchen Browser verwendest du?

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

6

06.04.2014, 12:40

Nimm einfach Dropbox. Da weiß man wenigstens, dass der Shit funktioniert.
42 / Pi = 13,37

7

06.04.2014, 14:48

Nimm einfach Dropbox. Da weiß man wenigstens, dass der Shit funktioniert.
Du magst das wissen. Ich weiß, wie der RapidShare-Mist funktioniert ;)
Probier mal hier: https://www.dropbox.com/sh/ueqapfh85hyjx1e/T6nQ8-LQyO
Funktioniert der?

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

8

06.04.2014, 14:59

Einwandfrei. Ausgezeichnet. Außerirdisch gut.

Wenn ich dich noch mehr loben soll, dann verzichte bitte in Zukunft auf ";)".
Danke
42 / Pi = 13,37

9

06.04.2014, 20:25

1. Mein ersten, und bisher einziges Javaspiel, hatte auch Probleme mit dem Sound. Das liegt daran, dass der Sound vom vorherigen Schuss noch nicht zuende ist und somit wird kein neuer erzeugt. Da ich nur sehr wenig Ahnung von Java hab, solltest du das explizit googlen, aber vielleicht muss man den Sound auf eine Liste legen oder den Sound vor dem neuen Schuss stoppen. 2. Hast du denn Kollisionen dafür eingebaut? Wenn ja, dann musst du den Spieler, wenn er an der Wand ist, einige Pixel von der Wand replazieren, sonst kann er sich da festhängen. 3. Laufen sie in die richtige Richtung? Spawn mal nur einen Zombie und beobachte mit einer Consolen-Ausgabe wo er hinläuft. 4. Für Animationen brauchst du immer einen gewissen Delay pro Sprite, sonst wäre eine 6 teilige Animation bei 60FPS bereits nach 0,1 Sekunden abgelaufen. Dafür kannst du eine Framerate von z.b. 60FPS erzwingen und ein Delay pro Sprite von 0,1Sekunden einbauen, sodass es 0,6 Sekunden für die Animation dauert. 5. Ein Menu zu erstellen ist gar nicht so schwer. Dafür kannst du einen Anfangsbildschirm mit nur 3 Buttons wählen. Dann kannst du für jeden Status eine Prozedur aufrufen. Z.B. 1: Spielen 2: Highscore 3: Optionen
1. Daran scheints nicht zu liegen :( Auch wenn ich die Sounds explizit vor der Wiedergabe stoppe bleiben die Fehler bestehen. Ich denke eher, es ist eine Art Überlastung, da das Problem nur auftritt, wenn viele Sounds knapp hintereinander gespielt werden (auch wenn sie sich nicht überlappen).
2. Mein Fenster ist 600 Px hoch. Der Code ist so in etwa:

if (playerY < 600) { //Spieler bewegen}

Bei der Breite und am oberen Rand funktioniert diese Herangehensweise hervorragend…
3. Gute Idee mit der Konsolenausgabe. Also der Zombie existiert tatsächlich, kommt aber nicht näher, obwohl die "KI" onscreen problemlos funktioniert. Werd wohl noch mal drübergucken müssen…
4. Die Schleife schläft nach jedem Durchlauf, bis 30 Millisekunden um sind. eigentlich sollte sie also konstant sein.
5. Ja, da hast du recht, aber das wäre doch relativ schmucklos? *unterdrück Zwinkersmiley*

Cranberry

Treue Seele

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

10

06.04.2014, 22:49

Kann das Spiel leider nicht spielen:

(Link)


Ohne IDE zu programmieren ist eine ganz ganz schlechte Idee. Hol dir doch Eclipse, wenn du schon in Java codest.
Falls du wirklich mal professioneller Spieleprogrammierer werden willst, rate ich dir dazu irgendwann mal mit C++ anzufangen, da das der Industriestandard ist.

Viel Glück weiterhin! :)

Werbeanzeige