Spiele-Programmierung

2D/3D, oder Toolkit

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Spiele-Programmierung
Ich selbst habe zB mit einer Gruppe ein 2D Jump’n’Run in Java programmiert (mit einer kleinen Gruppe noch in der Schule).
Es ist Netzwerk-fähig, hat aber seine Probleme, wenn es um Performance geht. Nachdem wir nun alle unterschiedliche Wege gegangen sind, ist das Projekt natürlich auch verlaufen. (Das Spiel hat immerhin eine Gravitations-Reibungs-Physik mit Eis[rutschen], Beschleuningung etc. und einen Deathmatchmodus. Sogar neue Karten lassen sich einfach basteln)

Aktuell befasse ich mich mit der Thematik der 3D-Entwicklung auch unter Java und im besonderen des Storytelling/Game Design.

Weil ich nun schon einige getroffen habe, die anscheinend programmieren können, will ich mich doch einmal umhören, ob es jemanden (oder eine Gruppe) gibt, die an irgendwelchen Spielen basteln.
Also Story, Aufbau, Sprache etc.


sehr cool, es gibt auffällig wenige informatiker die sowas machen.

ich hab vor vielen jahren mal einen 2d-spaceshooter programmiert.
hilights: borg-angriffe, asteroidenschwärme(beides gefährlich!!1), raumschiffe aus bekannten filmen, deathmatch-modus(sonst nix), computergegner, bis zu 4 spieler an einem computer, keine story, mörder-action!

der nachfolger lässt noch auf sich warten wegen problemen mit netzwerk und kollisionserkennung. garnich so einfach das…

gibts dein spiel irgendwo zum runterladen?


Java ist für rechenintensive Spiele einfach zu langsam. Ich würde da lieber C oder C++ verwenden. Für 2D-Spiele gibt es z.B. die plattformunabhängige SDL-Bibliothek, d.h. das Programm wäre dann auch unter Linux lauffähig.

Ich persönlich habe früher auch mit meinem Bruder ein paar Spiel-Projekte gestartet (u.a. ein 2D-Panzer-Arena-Ballerspiel und eine Fußball-Spielengine mit Echtzeit-Berechnung). Mir ist es dann allerdings immer so ergangen, dass nach ein paar Wochen die Anfangseuphorie verflogen ist bzw. ich schlichtweg nicht mehr genug Zeit aufbringen konnte (-> Schule…), um diese Projekte fertig zu stellen.
Wenn ich halt mehr Zeit hätte…

Falls sich hier aber eine Gruppe mit einem vielversprechenden Projekt bilden sollte, bin ich sofort dabei!


java zu langsam?
bitte nicht immer soeinen schmarn verbreiten…


Vergleich von verschiedenen Programmiersprachen hinsichtlich Rechenzeit und Speicherauslastung:

  1. Java vs. GNU C: http://shootout.alioth.debian.org/benchmark.php?test=all&lang=java&sort=fullcpu
  2. Java vs. GNU C++: http://shootout.alioth.debian.org/benchmark.php?test=all&lang=java&lang2=gpp&sort=fullcpu

hab mir zwar die programme nicht angeschaut, aber selbst wenn die programme gut geschrieben sind:

  • die verwendete java version ist alt
  • beim wichtigen cpu-time wert ist java nur wenig schlechter als c.

du willst mir doch nicht erzählen, dass wenn java 1,5 mal langsamer wäre(ist es in der praxis nicht), es nicht geeignet für spiele ist…


Die c’t hat sich mal mit dem Thema beschäftigt, also Java vs. C++ und man kann sagen, dass es mal so mal so ausging, je nachdem welche Version man genommen hat (Enterprise, IBM, Visual Studio etc.) aber letztendlich ist Java vollkommen gut genug, um aktuelle Spiele zu machen, ich glaube Vampire: The Masquerade und noch einige mehr sind in Java geschrieben. Ausserdem hat man unter Java einfach einige Vorteile, die man unter C++ nicht hat und man hat fast alle Bibliotheken von Sun, also aus einer Hand, gut Dokumentiert.
Und OpenGl- bzw. DirectX-Anbindungen gibt es genauso, wie es schon fertige einzubindende Engines gibt.
Die Frage ist eigentlich nur, welche Sprache einem eher liegt / welche Vorteile sie hat und letztendlich womit man sich besser auskennt.


Dass es auch für Java OpenGL-/DirectX-Anbindung gibt, habe ich nicht gewusst - damit scheint sich meine Argumentation in Schall & Rauch aufzulösen.
Die Wahl der Programmiersprache ist also anscheinend wirklich hauptsächlich vom persönlichen Geschmack abhängig. Und über Geschmack lässt sich bekanntlich nicht streiten.

Also: Egal, welche Programmiersprache - wenn was läuft, mach ich mit!


Mal ne blöde Frage (bin noch eher ahnungslos):

Müsste es nicht primär auf den compiler ankommen, wie gut er die jeweilige Prozessorarchitektur nutzt?

Denn im Endeffekt läuft doch alles auf elementares alu gerechne und speicher /register verschieben raus?

Stelle die Frage hier einfach mal in Raum…


howdy spielemitentwickler, bevor es hier zum flamewar Java gegen C++ kommt (oder gott bewahre OpenGL vs. DirectX, weil dann kriegt ihr es mit mir zu tun :)):
Ich hab mich auch mitm kumpel dem gaming zugewandt, wir proggen an nem 3d game mit multiplayer … streng geheimes gamedesign weil sowas gabs noch nie, falls jemand bock drauf hat (offizieller projektbeginn ist der 31. oktober) kann er sich ja bei mir melden :slight_smile:
(C++ Gurus erwünscht, OO Design Gurus, CIL Erfahrung erwünscht :slight_smile: )


ja junge… und wo sind die bilder? :smiley:


Achso, noch eins:
Im allgemeinen geht man davon aus, dass ca. 10% des Quelltextes 90% der Zeit benutzt werden. Java hat hier etwas, was sich “HotSpot” nennt, was diese 10% vorcompiliert und behält, damit es flotter geht.

@Anteru:
Mit OO Design kann ich dienen, aber so ganz ohne alles würde ich mich doch nicht darauf einlassen.
Kannst du vielleicht mal die Richtung sagen, FirstPerson, MMORPG, etc.
Ich möchte ja gar nicht die Story wissen, aber das Themengebiet, wenn auch nur angrenzend, wäre ganz gut.
Ausserdem würde es mich doch mal interessieren, wie ihr gedenkt das Ganze fertig zu bringen, weil wahrscheinlich nur ca. 1% dieser Spiele jemals fertig werden. Habt ihr lange Erfahrung/schon fertige Spiele, oder sogar schon Scripter/Designer/Grafiker/Muiker?
BTW: Ich finde es besonders faszinierend an der Uni, dass sie einem die Grundlage bietet all diese Leute zu finden und für einige Jahre gemeinsan an etwas entwickeln zu können.


jo also wir sind jetzt nicht leute die zum ersten mal was programmieren … und nen guten plan haben wir auch. musiker ist leider so ne sache, die haben wir nicht. bei den anderen sachen - wir sind zwar nur zu dritt (atm) aber die spielidee (geht in richtung sci-fi) benötigt gott sei dank nicht allzu viel artwork - wir haben die hoffnung dass unsere fähigkeiten für den anfang reichen :slight_smile: (ich gehe davon aus dass es für nen Prototypen der andere anlockt auf jeden Fall reicht)

Ein Spiel hamma vorher nicht programmiert, aber ich seh jetzt das Problem nicht darin dass es ein Spiel ist sondern einfach nur ein relativ großes Programm dass bei entsprechend sauberem Design auch funktionieren wird, und wenns um größere Programme geht da haben wir schon Erfahrung …

Ma gucken, wär cool wenn sich die paar Leute die Interesse an Spieleentwicklung haben mal vielleicht ganz unverbindlich irgendwo abends treffen könnten, wenn man sich sieht sieht die sache oftmals ganz anders aus, mit Leute programmieren die ich nicht persönlich kenne mache ich auf jeden Fall nicht mehr.

@cody: Pics gibts wenns was lauffähiges gibt, bin kein Freund irgendwelche Screenshots zu zeigen wo irgendwelche Dinge in meiner Debugumgebung hier passieren. Sobald User selber was starten können wirds auch die ersten Pics geben.

Du sagst es, wenns dass nicht wäre hätte ich hier nichts gesagt. Wär halt cool wenn sich paar Leute mit Skill finden lassen und dann mit denen irgendwas durchziehen. Mal schauen was noch passiert hier, vielleicht hockt hier das nächste CryTek.


@Anteru:
Es klingt eingentlich ganz nett, zumal mir SciFi auch liegt.
Ich traue Leuten, die schon einiges programmiert haben auch zu einen Server und eine kleine Datenbank zu schreiben. Auch Eingaben und Masken bekommt man hin, aber wenn es um 3D-Berechnungen und besonders DirectX/OpenGl geht, glaube ich muss man wissen wie es geht. Aber wenn ihr euch mir ObjectTrees, Nodes, BumpMapping und ähnlichem auskennt, ok.
Aber auch ich muss zugeben, dass mir eher ein “normal-großes” (was bei Programmierern normalerweise unerreichbar hohe Anforderungen sind) Projekt Spass machen würde. Und dann eben eher beim Background anfangen und das Frontend mit “learning per doing” gestalten.
Ich schätze mal so habt ihr euch das auch gedacht?!


eingentlich ist die sache die: des game soll das erste game werden dass wir programmieren und wir wollen es ebenfalls lernen. es gibt kein patentrezept zu guter software außer viel erfahrung und um genau die geht es uns. dass es ein game wird liegt daran dass wir uns nicht übernehmen wollen und gleich ne datenbank programmieren oder so (ehrlich, so komplex wird des game nicht, kein baldur’s gate II und auch kein MMORPG) und v.a. wir wollen spaß dran haben. ich hab einige zeit an nem anderen großen prog gearbeitet aber da gabs kein echtzeitfeedback, du konntest am ende nur gigabyteweise daten und progs reinstopfen und es lieferte gigabyteweise daten zurück, aber es gab nicht diesen fun-faktor wie bei spielen jetzt wo ich ne maustaste drücke und auf dem monitor passiert was…

wobei wenn ichs mir länger überleg … ma gucken was in 6 monaten läuft - wenn es funzt dann mach ma es vielleicht open source oder nehmen mehr mitglieder auf, im moment denke ich werd ich hier nur vorbeichecken um meine meinung kundzutun :slight_smile: aber das mit der anwerbung denke ich war atm keine gute idee

BTW Kein anderer Pro der hier sein Portfolio offenbaren will? Tät mich mal interessieren was ihr schon großes geleistet habt.

BTW - um wieder ein wenig on Topic zu werden…
Die Programmiersprache spielt für den Erfolg schon eine Rolle, aber nicht wegen der Performance beim Ausführen sondern der Performance beim Schreiben. Jeder der schon mal low-level programmiert hat weiß dass es v.a. eines ist - zeitaufwändig. Und so low-level sollte man nie optimieren müssen, die Bottlenecks liegen viel höher und da will ich ne Sprache die mir möglichst viel abnimmt. Mit Java hab ichs allerdings noch nie probiert, aber Java ist auf jeden Fall eine von denen: Automatisches GC ist der Zeitsparer schlechthin, außerdem sind die Kompilierzeiten nicht so wild und das macht es möglich schneller besseren Code zu schreiben. Dass der dann 10% langsamer läuft oder so ist doch ehrlich gesagt wurscht wenn er zumindest läuft. In der gleichen Zeit die ich für ein Programmmodul in C++ brauche schaffe ich in ner Skriptsprache sicher 3. Und dass ist mir viel wichtiger als diese 10% Runtimespeed die ich gewinnen kann, schließlich will ich mit meinem Programm fertigwerden und nicht die Zeit bei der Implementierung totschlagen.


Zum Thema Implementierung:
UML2.0, wie man heute (wenn man es geschafft hat nicht einzuschlafen) mal reinschnuppern konnte, wird auch dazu benutzt - darauf wollen wir auch schätzungsweise in der Vorlesung hinaus - um ein großes Programm aufzuteilen, alle Schnittstellen zu definieren und die Doku zu schreiben.
Als wir unser 2D-Jump’n’Run geschrieben haben (was wir in Gruppen gemacht haben), haben wir das aus Zeitmangel rausgelassen, aber dadurch gab es eben ab und zu Probleme bei den Schnittstellen. Ich wollte damit eigentlich nur sagen: Ich glaube, wenn ich ein großes Projekt anfangen würde, würde ich damit beginnen. Aber großes Defizit: man plant und plant … und plant, naja der Spass bleibt zunächst auf der Strecke. Dafür geht es dann sehr viel flotter.
In Java kann zB alle UML-erstellten Klassen samt Doku automatisch generieren (ich schätze mal in C auch). [ich sollte mal aufhören von Java zu sprechen, sonst werde ich noch gelüncht]


In dem Zusammenhang sei mal auf das Seminar am LS2 hingewiesen, das gerade laeuft:
http://www2.informatik.uni-erlangen.de/Lehre/WS200506/GameAlgHS/


Ich hab in C++ angefangen eine mischung aus Shooter und RPG zu schreiben, mit OpenGL und Quake3 map unterstützung und einer eingebundenen sehr guten physik-library (newton). Leider hab ich irgendwann mal keine Lust gehabt, es weiterzuentwickeln, und jetzt schlummert es auf meiner platte, bis ich irgendwann mal wieder Lust hab weiterzuschreiben. sind mittlerweile an die 50 cpp dateien, libs nicht mit eingerechnet. Ich hab auch ein komplettes Szenario und viele Features im Kopf, ob die sich alle realisieren lassen ist aber immer fraglich.
Ach ja, ein javascript-gesteuertes Interface hab ich auch angefangen, damit man das anpassen kann.


cool dass hier an so etwas „geforscht“ wird :slight_smile:

gleich mal vormelden für 2010 damit ich auch reinkomme …


@Nico UML2 ist nur gut sobald du den Rohentwurf schon auf Papier hast, und sobald du den Rohentwurf auf Papier hat brauchst du UML2 eigentlich nicht mehr :slight_smile: Ich nehms eigentlich nur her (in der Planungsphase) wenn ich irgendwie meinen Mitentwicklern was zeigen will und ich kann ihn persönlich gerade net erreichen … aber sonst mach ma eigentlich immer alles Pencil&Paper und UML Diagramme - wenn überhaupt - werden erst kurz bevor die Implementierung gemalt damit nicht jeder haufenweise Papier rumfliegen hat.
Das mit dem automatischen Klassenerstellen kannst du eigentlich immer in die Tonne kicken, des Prob bei aller Automatik ist wenn du Klassen schreiben musst die man automatisch generieren kann dann hast du was falsch gemacht und solltest stattdessen das Skript schreiben dass sie automatisch generiert (oder ne XML Datei wo du die Klassen reinhaust und ein XSLT was dir dann C++/Java/Wrapper für Skriptsprachen etc. rausspuckt - v.a. gut wenn du ne API entwickelst). Wenn die Klasse so sinnvoll ist dass die Automatik nicht ausreicht (eigentlich jede die wirklich für den produktiven Einsatz bestimmt ist) dann spart dir die Automatik höchstens Zeit für das Klassenskellet … aber ob des reicht die Zeit die du beim UML Bildchen erstellen verbraucht hast wieder reinholt glaub ich nicht. Ich werds aber - mal wieder - bei meinem aktuellen Prog ausprobieren, ma gucken.

Auf jeden Fall sollte man immer vorher planen und hernach entwickeln, ein gutes Design macht schon bei der Planung Spaß und ohne gutes Design wird sich der Spaß beim Programmieren nie einstellen :slight_smile: Ist zwar ne Binsenweißheit aber wer ohne Technical Design Document in die Schlacht zieht der ist selber schuld.