# Game Engine für selbstprogrammiertes Spiel



## Kutshi (27. Okt 2011)

Huhu,

Ich und eine Freundin von mir belegen im Moment an der Uni einen Kurs in dem wir ein Spiel programmieren soll. Wir sind aber beide ziemliche Neulinge auf dem Gebiet weil wir noch nie selbstverantwortlich ein Spiel programmiert haben.

Im moment sieht es wohl so aus das wir das Spiel in Java programmieren wollen (haben letztes Semester eine C+ einführung gemacht welche echt schrecklich war, weswegen wir auf die Sprache im Moment ein bisschen allergisch reagieren) und das der Charakter sich frei in einer Welt bewegen kann, wo er Aufgaben erfüllen muss und Kämpfen kann, aber kein Multipalyer Modus vorgesehen ist. 

Weswegen ich mich an euch wende ist, das wir Hilfe brauchen eine vernümftige Game Engine für das Spiel zu finden da wir uns beide mit diesem Thema nicht wirklich auskennen.


----------



## Firephoenix (27. Okt 2011)

Falls das ganze 2D werden soll könnt ihr hier ja mal einen Blick riskieren:
Slick - 2D Game Library based on LWJGL
Das Framework bietet relativ viele Funktionen, man selbst kann aber entscheiden was man davon benutzt.
Die Einarbeitungszeit kam mir persönlich auch relativ gering vor, da gibt es schlimmeres 
Gruß


----------



## Kutshi (27. Okt 2011)

Danke für die schnelle Antwort. Werden uns das erstmal angucken und ja die garfiken sollen nicht 3d sein.


----------



## Kutshi (27. Okt 2011)

Hab noch ne frage. Wie sieht es bei der Engine mit der Lisense aus? Weil das Spiel soll nacher sozusagen ohen urheberrechtsverletzungen hochladbar sein.

gibt es auch nochandere Engins die sich lohnen anzugucken?


----------



## AwsmDude (27. Okt 2011)

BSD:
Slick - 2D Game Library based on LWJGL - Slick License (BSD)


----------



## Empire Phoenix (28. Okt 2011)

Ich würde ja behaupten, dass je nach umfang Swing also die standart java gui schon ausreicht.


----------



## hdi (28. Okt 2011)

@Empire Abgesehen von einem Mouse/KeyListener, einer paintComponent()-Methode und der Möglichkeit gebuffered zu zeichnen (active rendering) bietet dir Swing nichts, was dir für die Programmierung eines Spiels hilfreich wäre. Das ist nun mal eine GUI Bibltiothek, und keine Game Engine.


----------



## Kr0e (28. Okt 2011)

@hdi: Sehr viel mehr bietet dir Slick auch nicht... Mehr braucht man auch nicht.
EDIT:Ok, vlt Sound, aber das ist mit pure Java auch null-Problem.


----------



## hdi (28. Okt 2011)

Also ich kenne Slick zwar nicht, aber ich geh stark davon aus dass das Teil einige Dinge zum Aufziehen und Steuern eines Game Loops enthält, sowie die Definition verschiedene abstrakter Klassen und Interfaces zum Zeichnen und Bewegen von Sprites (Vllt auch Interaktion, zB Kollisionserkennung). Das alles hat nichts mit einer GUI-Bibltiothek zu tun. Hier  wurde nach einer Game Engine gefragt, von daher finde ich Swing als Antwort nicht passend.



> Mehr braucht man auch nicht.



Äh... s.o. Ich weiß ja nich was für Spiele du machst. Pong?


----------



## Kr0e (28. Okt 2011)

Kollisionen kann man mit java.awt.geom abfragen, mehr kann Slick2D wirklich nicht, der Rest geht schnell von der Hand und nein, ich rede nicht von Pong . Sooo kompliziert ist das nicht, zur Not macht man eben auzch mal einen geringen Teil selbst  (Man braucht nicht für alles eine Engine!!!)

EDIT: Und noch was: Java2D(Swing!) ist keine GUI - Library...


----------



## hdi (28. Okt 2011)

> mehr kann Slick2D wirklich nicht


Dann ist Slick2D halt ganz schön s******e  Eine ordentliche Game Engine kann nun mal mehr als Swing, und auch mehr als Java2D und die paar Dinge, die in .geom definiert sind. 



> Sooo kompliziert ist das nicht, zur Not macht man eben auzch mal einen geringen Teil selbst


Ich glaub wir reden aneinander vorbei. Natürlich kann man's selbst machen. Aber der TO sucht ne Game Engine. Das Aufziehen des gesamten Gameloops und die Steuerung von Objekten und Animationen ist das, was den Großteil der Arbeit ausmacht, und das kann Swing nicht, da es dabei (auch in Java2D) nur um Anzeige geht, nicht aber um Spiellogik.


----------



## Kr0e (29. Okt 2011)

Nagut, dann formulieren wir es eben strikter!

Es gibt keine Java 2D Game Engine. Ergo bleibt einem nciht mehr übrig  Und selbst mit dem was gegeben ist, kann man verdammt gut arbeiten. 

Du redest von " Steuerung von Objekten und Animationen" ... Du meinst damit vermutlich einen Szenengraphen, den gibt es sowohl für Java2D als auch für Slick2D (jeweils als kleine Zusatzlibrary).

Tut mir Leid, des Weiteren kann ich dir nicht wirklich folgen. Ein 2D Spiel beinhaltet wirklihc nicht viel technische Komplexität, weshalb man sich mit Hilfe kleiner Tools (Java2D, Slick2D) schon recht einseitigh auf die Spiellogig stürzen kann, auch ohne Mega-Game-Engine.


----------



## Firephoenix (29. Okt 2011)

hdi hat gesagt.:


> Dann ist Slick2D halt ganz schön s******e  Eine ordentliche Game Engine kann nun mal mehr als Swing, und auch mehr als Java2D und die paar Dinge, die in .geom definiert sind.
> 
> 
> [...]



Ich würde mal behaupten dafür ist Slick aber auch nicht da.
Klar gibt es game-libs wo man nur noch ein paar entities definiert und den rest macht das framework, aber der hauptpunkt warum ich slick verwende ist, dass es gerade das nicht bietet und ich mir nur die teile rausgreife die ich selbst brauche.

In einem aktuellem projekt z.b. brauche ich keine komplizierten Entities, also habe ich den Teil selbst geschrieben, die Pfadsuche von Slick durch eine eigene Ersetzt und eine eigene kleine Tilemap geschrieben.
Was einem viel Arbeit abnimmt ist der Gameloop von Slick und die Möglichkeiten die man beim rendern von Bildern hat - das sind aber nur persönliche Eindrücke 
Gruß


----------



## Kutshi (29. Okt 2011)

Also der Kurs schmipft sich ,,Game Engineering and Simulation" (hoffe hab es diesmal richtig auf die Reihe bekommen ).  Wir haben auch schon so kleine Spiele Programmiert (kennt ihr Achtung die Kurve? Haben davon ne einfach 2 Mann Version gemacht), d.h. Gui ist nicht das Problem. Da wir aber ein halbes Jahr für das Spiel Zeit haben soll es halt ein bisschen mehr können, weswegen ne Game Engine Gut wär. Wir wollen auch gerne was dazu lernen. ich fänd es schon cool wenn jemand noch ne Idee für ne Gute Java Engine hat würde ich mich freuen.  

Danke nochmal für die vielen Ideen.


----------



## hdi (29. Okt 2011)

> weswegen ne Game Engine Gut wär. Wir wollen auch gerne was dazu lernen


Das widerspricht sich jetzt aber ein wenig finde ich. Eine Game Engine kapselt halt viele Dinge, also wenn es dir um's Lernen geht, dann würd ich auch von irgendeiner externen lib abraten. Klar kann man damit auch neue Dinge lernen (nicht zuletzt eben diese Engine kennen ), aber du lernst halt nich so viel als wie wenn du das alles selbst aufziehst. 



> Da wir aber ein halbes Jahr für das Spiel Zeit haben


Das sollte eigentlich reichen um das alles selbst zu implementieren. Ich würde dir empfehlen dieses  Buch zu lesen. Das meiste daraus brauchst du gar nicht, schon die ersten paar Kapitel zeigen das wichtigste.


----------



## Kutshi (29. Okt 2011)

hdi hat gesagt.:


> Eine Game Engine kapselt halt viele Dinge, also wenn es dir um's Lernen geht, dann würd ich auch von irgendeiner externen lib abraten. Klar kann man damit auch neue Dinge lernen (nicht zuletzt eben diese Engine kennen ), aber du lernst halt nich so viel als wie wenn du das alles selbst aufziehst.



Ich weiß einfach nicht 100% was alles dazugehört und wie der Aufwand ist so was selbst zu programmieren (ich wüsste jetzt auch nicht was ich genau zu tun hätte). Wie gesagt wir fangen uns erst gerade an damit zu beschäftigen und ich bin mir nicht 100% sicher das wir uns nicht nachher in was verrennen. Solche Gruppen gab es auch schon. Und da wir auch Java gewählt haben damit wir mehr Zeit für die Spiel Strucktur und so stecken wollen fanden wir das halt mit der fertigen besser.


----------



## hdi (29. Okt 2011)

> Wir haben auch schon so kleine Spiele Programmiert


Naja dann sollte ja der grobe Aufbau eines Game Loops bekannt sein oder?


----------



## Kutshi (29. Okt 2011)

hdi hat gesagt.:


> Naja dann sollte ja der grobe Aufbau eines Game Loops bekannt sein oder?



Ja da haste recht. Wusste nur nicht das man es so nennt.


----------



## Evil-Devil (31. Okt 2011)

Slick bietet an sich alles was man für ein 2D Spiel brauch. Ansonsten die externen AddOns/Libs nachinstallieren. Also Physik, animierte Sprites und Sound ist alles mit Slick möglich, allerdings hört es dann auch auf. Effekte muss man schon selbst gestalten. Und ein Editor muss kein Bestandteil einer Engine sein, schließlich ist ein Editor imho primär ein Werkzeug für das jeweilige Spiel. Und da dieses bei einem 2D Spiel alles von Iso bis TopDown sein kann wäre es übertrieben einen Editor mitzuliefern. Bei 3D Engines wie UE3, CE3 oder IDT5 ist das was anderes, denn dort ist alles möglich unabhängig vom Editor.


----------



## Empire Phoenix (31. Okt 2011)

Evil-Devil hat gesagt.:


> Bei 3D Engines wie UE3, CE3 oder IDT5 ist das was anderes, denn dort ist alles möglich unabhängig vom Editor.



Stimmt so leider garnicht, je nach spielprinzip sind die sdk's deshabl totaler müll. 

(Zb wenn du ne weltraumsimulation in 64 bit amchst, hast du die situation das du die map um den player bewegen musst, statt umgedreht aufgrund von float genauigkeiten.)


----------



## Evil-Devil (31. Okt 2011)

Wieso sollte man die Welt um den Spieler bewegen?

Abgesehen davon sind die meisten FPS Engines per Default nicht auf endlosen Weltraum ausgelegt. Die Unreal Engine 3 kann zb. aktuell maximal 128k Welt Einheiten pro Map veranschlagen. Das ist zwar schon sehr groß, aber ich denke damit müsste man trotz alledem noch auf Sprungtore wie in der X Serie zurückgreifen.

Abgesehen davon bietet das SDK nur die Grundlage. Mit der UE3 kann man aktuell an sich alles erstellen. Sogar einen Mortal Kombat Klon 

BTW: Was genau soll eine Weltraumsimulation in 64bit sein?


----------



## Empire Phoenix (31. Okt 2011)

Oh gibtes, macht auch sinn, zb eve online wäre ein beispiel dafür wie sowas gemacht werden kann (glaube das rechnet intern sogar noch höher)


----------



## Evil-Devil (31. Okt 2011)

Das klingt interessant, kannst du dazu mehr erzählen?


----------



## Kutshi (31. Okt 2011)

Also ich finde es ja cool das ihr hier so ne nette Unterhaltung führt aber da Donnerstag mein Prof ne antwort haben will wär vielleicht anz nett, wenn vielleicht noch jemand ne Idee hat welche Engine man sich noch angucken kann.  

Wir bleiben sonst erstmal bei Slick hängen. Weil selber machen trauen wir uns noch nicht zu.


----------



## Ein Keks (31. Okt 2011)

Bleibt bei slick! Die engine ist top. Eventuell könnt ihr euch noch ma die MarteEngine angucken, baut auf slick auf und ist etwas anfängerfreundlicher (scenegraph)


----------



## Empire Phoenix (1. Nov 2011)

Für 2d gibt es eigntlich nur Slick und das standart Swing.

Bei 3d würde es interessanter, kann aber auch leichter passieren das man sich übernimmt.
(Hier würde ich JME3(sehr schön für gaming pc's) angucken, und jcpt(bei unbekannter hardware sehr nett da software renderer))


----------



## Kutshi (3. Nov 2011)

Danke für die vielen Netten antworten. Wir haben heute nochmal mit unseren Professor geredet und der hatte noch ne zweite Engine die sich jetzt erstmal meine Patnerin angucken will. Er meinte auch das wir nihct unbedingt eine brauchen. Die entscheidung ist zwar noch nihct gefallen aber ich denke wir haben jetzt genug anregungen um alleine Weiterzukommen.


----------



## JimPanse (4. Nov 2011)

Vielleicht ein wenig Spät aber für Java ist jMonkeyEngine 3.0 | Java OpenGL Game Engine eine sehr gute und einfache Game Engine mit der auch bereits einige Spiele veröffentlicht wurden.

ABER: In der kommerziellen Spiele-Entwicklung (habe selbst bei einem Projekt mitgearbeitet) wird C/C++ + mind. Script Sprache (Phyton, Lua, etc) vorrausgesetzt d.h. würde ich dir eher zu 
OGRE – Open Source 3D Graphics Engine raten.

Grüße


----------

