# Fragen zu MMO



## Asyx (12. Mrz 2011)

Hallo!

Ich habe folgendes vor:

Ich möchte mich ganz langsam (2-3 Jahre hab ich eingeplant) an ein eigenes kleines mmo rantasten. Nicht um es zu spielen, sondern um es einfach zu machen. Es soll also ein Projekt werden, um zu lernen (es wird nacher auf SourceForge landen). Am anfang möchte ich nur Terrain bilden. Dann die Objekte (Bäume, Steine, Gebäude usw.) mit Blender in das Spiel bringen. Dann die ersten Bewegungen in der Welt machen, Charaktere basteln, NPC's ins Spiel bringen, GUI basteln usw...

Sozusagen vom kleinen Mini Jump and Run über über sowas wie eine Sandbox die ich langsam befülle bis hin zu sowaswie ein kleines RPG dem ich langsam Multiplayerelemente einbinde. Wie gesagt... 2-3 Jahre hab ich eingeplant.

Das Spiel soll nie wirklich performant sein oder tausende von Spielern auf einem Server managen können. Ich glaube, dafür wäre Java auch die falsche Sprache.

Ich programmiere jetzt seit ca 4 oder 5 Jahren. Angefangen mit PHP und dann mit C#. Nachdem ich von Windows auf Mac ungesteigen bin, habe ich mir Java angeguckt. Das gegenseitige Kopieren von C# und Java machte Java für mich erstmal zur perfekten Sprache für ein Betriebssystem ohne .Net. Nach Java bin ich dann auf Objective-C kleben geblieben.

Ich hab also schon viel gemacht und habe eigentlich allgemein in der Programmierung schon einiges an Kentnissen gesammelt. Aber ich schweife ab.

Im Endeffekt geht es mir um Folgendes: Da ich nie C++ benutzt hab, ist Java die einzige Möglichkeit mir und meinen 2 Freunden, die ebenfalls an dem Projekt mitarbeiten, die Möglichkeit zu geben das Spiel zu spielen. Ich habe mich bis jetzt aber wenig bis gar nicht mit der Entwicklung von 3D Spielen beschäftigt. Als "Framework" oder "Binding" (gibt es da einen Unterschied? Ich würds auch Wrapper nennen) habe ich mit LWJGL ausgesucht. Zum einen, weil Minecraft auch LWJGL benutzt (und ich eigentlich mit Minecraft sehr zufrieden bin) und weil mir LWJGL mehr zusagt. Anscheind scheiden sich bei LWJGL und JOGL die Geister. Aber die Vorteile von LWJGL (angeblich einfachere Verarbeitung von Eingaben des Users, OpenAL usw.) überwiegten meiner Meinung nach. Außerdem hab ich mir da jetzt schon die Tutorials aus dem Wiki angeguckt und auch mehr oder weniger gute Tutorials angeguck Leider alle nur bis zum einfachen Würfel bilden. Danach wurden die Tutorials zu veraltet um sie noch einfach so wie sie sind zu benutzen. Darum möchte ich jetzt von euch wissen, ob LWJGL die richtige Wahl war (an OpenGL bin ich natürlich gebunden)? Welche alternativen gibt es? Habt ihr Tutorials für mich, die die 3D Programmierung (mit LWJGL) ordentlich abdecken?

Gegen einen Buchtipp, habe ich eigentlich auch nichts einzuwenden. Habe nur keine Lust noch auf Amazon zu warten :bae:.

Ich hoffe ich wurde nicht zu ausschweifend. Hatte nur Angst, dass der Thread wieder in die Sparte "Der Typ kann eigentlich nichts und weiß gar nicht, was auf ihn zukommt." und habe daher ein wenig "ausgeholt". Und wahrscheinlich, hab ich wieder die Hälfte vergessen ;(.

MfG Asyx


----------



## muckelzwerg (14. Mrz 2011)

Sorry, aber diese Fragen kann Dir niemand beantworten. Das sind alles Fragen über die Du schon sehr bald lachen wirst, wenn Du auch nur annähernd Dein Ziel erreichst.
Wieviele User hier haben wohl ein eigenes MMO (egal wie performant oder nicht) in Java entwickelt?
Was Du bekommen kannst, sind grundlegende Tipps zur Spieleentwicklung, zu speziellen Teilproblemen etc.
Alles weitere ist ja gerade die Herausforderung und Schwierigkeit bei solch einem Projekt. Wenn man diese "Probleme" lösen könnte, indem man Fragen im Internet stellt, dann hätte jeder zweite einen WoW-Clon als Hobbyprojekt am Laufen.

"Es gibt keine Abkürzungen." Das gilt auch für Spieleprogrammierung. Gerade dort verstecken sich sehr viele Disziplinen, die noch nichtmal den Leuten viel Spaß machen, die sowas studieren.  Zum Beispiel Geometrie und Algebra.
Dann gibt es eine extrem große Menge an Erfahrungswerten, die man braucht. Sowas kann man nicht erfragen. Sowas bekommt man nur, indem man die richtigen Fehler macht.
Auch bei den Profis dauert die Entwicklung eines Spiels sehr lange, kostet extrem viele Mannstunden und sehr viel Geld.
Und am Ende hagelt es dann immernoch Bugfixes und DLC und was noch alles.
Jetz rechnet mal auf euer bisschen Zeit runter. Das ist vielleicht ein Hundertstel eher Tausendstel dessen, was WoW bietet. Klar, man kann viele Abstriche machen. Aber WoW/1000 ... was bleibt da noch übrig?

Zeit sparen könnt ihr dort, wo man an Grafiker, Designer, Animateure, Zeichner etc. abgibt. 
Natürlich könnt ihr lernen, wie man mit Blender arbeitet. Und dann auch wie man mit Blender andere Programme wie Maya oder 3DSMax ersetzt. Und dann wieder, was man doch noch alles für Werkzeuge braucht, nur um ein paar schöne Animationen sauber in ein Spiel zu integrieren.
Aber überleg mal, wieviel Zeit es die Menschen kostet, die nichts anderes machen. Jetzt frag Dich, wie weit Du bei all den Disziplinen kommen willst, wenn Du nicht nur beim Zehnkampf, sondern am gleichen Tag noch beim IronMan, der Tour de France, der Ralley Dakar und dem RAAM antrittst.

Du machst da einen Fehler, den viele am Anfang machen. Du steckst Dir die Ziele zu niedrig und gleichzeitig zu umfangreich.
Ja zu NIEDRIG, weil Du ein "schwaches" Spiel machen willst. Ja zu umfangreich, weil Du ein komplettes Spiel machen willst.
Fang mit gängigen Spieletutorials an. Entwickelt ein paar Prototypen, das machen die Profis auch. Und Prototypen werden irgendwann weggeworfen, wenn man von vorne anfängt. Auch das gehört dazu.
Dann setzt ein paar Spieleideen WIRKLICH um. Baut statt einem schwachen MMO mal ein gutes PacMan. Oder ein gutes Jump 'n Run, oder einen guten Top-Down-Shooter. Da habt ihr schon mehr als genug zu tun, könnt viel lernen und gleichzeitig auch Erfolge haben.

Lernt mit Modularisierung umzugehen. Wenn ihr ein einfaches Frontend habt, um z.B. sowas wie Zelda LTTP zu bauen, dann könnt ihr da so ziemlich alles reinfummeln, was ein MMO an Logik hat. 
Die mathematischen Modelle für das Erscheinen von Gegnern, für das Verteilen von Belohnungen, für das Berechnen der Kämpfe, für Fähigkeiten der Avatare ... oder vielleicht mal ganz am Anfang sowas wie Picking, Colission-Detection und Pathfinding. 
Und für all das brauchst Du Dir genau NULL überlegen, ob Du Jogl, oder LWJGL, oder vielleicht doch überhaupt C# verwendest.

Wenn es soweit kommt, dass Du diese Frage WIRKLICH beantworten musst, dann wirst Du sie (mit Ausnahme bestimmter technischer Details) auch beantworten können.


----------



## Empire Phoenix (17. Mrz 2011)

Für java kann ich nur jMonkeyEngine.org | Home empfehlen. Technisch auf gutem Stand und ganz gut dokumentiert. Einarbeiten musste dich da aber trotzdem. War vor 2 Jahren an der Stelle wo du jetzt bist und bei mir kann man jetzt zumindest netzwerksynchronisiert rumlaufen (und physikwürfel durch die gegend schieben) Aber wenn es auch für die Freude am Lernen ist spricht nichts dagegen.

Themen die du lernen wirst ob du willst oder nicht:
Rechnen mit hyperkomplexen Zahlen -> Quaternions
Vektorrechnung 
Arbeitsweise von Grafikkarten und Renderen
Bottlenecks und limitierung selbiger
Wie man ordentlich Programmiert weil sich sonst ein so großes Project von selbe abwürgt (musste meins insgesamt 2 mal nochmal von 0 anfangen um elementare Fehler zu beseitigen, aber das was man dabei lernt ist unersetzbar)
Sowie mit relativer sicherheit Shadersprachen also GLSL
Modelprogramm oder ne Arbeit um Models einzukaufen(kann am anfang aber sehr gut erstmal übergangen werden).

Was Java und viele spieler angeht, Lineage 2 private server mit durchaus mal 1000 Leuten laufen auf Java. 
(Tatsächlich ist der performanceunterschied zwischen java und c absolut unwichtig, da der faktor dermaßen winzig ist im verhältniss zu dem Unterschied den ein anderer Ansatz/ ein anderer Algorithmus bringt,)


----------



## Evil-Devil (17. Mrz 2011)

Die TUtorials im LWJGL Wiki entstehen relativ langsam, wir haben alle ein RL 
 Bei Fragen die LWJGL spezifisch sind fragst du am besten im Forum oder kommst in den IRC Kanal. Da LWJGL primär nur ein OpenGL Binding ist sind die besten OpenGL Ressourcen alle Tutorials die mit OpenGL arbeiten. Man kann dadurch sehr vieles relativ einfach nach LWJGL/Java portieren und verwenden.

Wenn du keine fertige Engine verwenden willst ist es u.U. empfehlenswert sich ein Buch zu OpenGL zu kaufen und das zunächst einmal durchzuarbeiten.


----------



## Friedhelm (18. Mrz 2011)

Ich finde die Idee mit 2 Freunden was für sich sinnvolles zu machen sehr gut. Es geht garnicht darum wie umfangreich es ist, sondern ob es euch Spass macht.

Würde gerne auch ein C&C  Red Alert nur für mich machen, weil es das alte nicht mehr auf aktuellen Maschienen gibt... und die Server abgeschaltet sind, sowie eigene Ideen einprogrammieren. Für mich ist der Aufwand überschaubar, und das sogar einzelne Programmierer das gebacken bekommen, sieht man immer mal wieder im Internet. 

Ich benutze JOGL und LWJGL gleichzeitig. Dazu habe ich mir eine entsprechende Umgebung gebastelt, so dass ich entweder mit JOGL oder LWJGL starte. jMonkeyEngine kam für mich nicht in Frage, weil zu weit entwickelt, zu komplett, wenn man etwas von grund auf neues machen möchte, jedenfalls für meine Anwendungen.

Für  alle Probleme die Dich dabei erwarten, ist dieses Forum sehr gut geeignet. Ich habe oft etwas gesucht und hier gefunden, bzw. erfragt. Hier gibt es in der Mehrzahl kompetente und freundliche Leute... das macht das entwickleln und tüfteln sehr angenehm. 

Lass Dich also nicht entmutigen, und macht das Game. Und ihr werdet sehen, es ist ein gutes Gefühl etwas "geschafft" und "abgeschlossen" zu haben. Ist für Euch auch für später immer eine gewisse Referenz wenn ihr Euch irgendwo bewerbt, oder in andere Projekte einsteigen wollt.

Ps.: manches wird oft größer gemacht als es eigentlich ist, weil es selbst versucht wurde, aber zu schwer war... jeder tut sich da unterschiedlich schwer. Das muss man auch immer mit bedenken. Ich habe schon oft etwas als "unmöglich und zu zeitraubend" gegoltenes möglich gemacht, spreche da aus ca. 27 Jahren Erfahrung   Ich finde nichts ist unmöglich... man muss nur endlich damit anfangen :rtfm:


----------



## Asyx (1. Sep 2011)

So... Der Thread ist zwar schon sehr alt aber ich will trotzdem mal ein Update liefern.

Erstmal möchte ich Euch danken. Ihr habt mir sehr geholfen. Im Endeffekt siehts jetzt wie folgt aus:

Ich werde erstmal ein paar Sachen in ein 2D Spiel packen. Ich orientiere mich da an den Aprilscherz von Blizzard aus dem Jahr 2007 oder 2008 (Eine Instanz aus WoW im Atari Style). Ich kann alles alleine Machen und lerne erstmal OpenGL richtig kennen. Außerdem war das Spiel, welches auf der Basis dieses Aprilscherzes entstand, sehr lustig ABER es hatte keinen Netzwerk Multiplayer und war nicht sehr umfrangreich. Dadraus kann man bestimmt was lustiges machen. Später werd ich dann wahrscheinlich langsam in Richtung 3D gehen. Jedoch da eher in eine sehr einfache Grafik. Ich bin einfach unfähig was Blender und Photoshop angeht. Außerdem muss ich erstmal meinen "Designer" ein wenig bremsen. Der sitzt seit einer Woche an einer Spielerfigur und regt sich gerade dadrüber auf, dass die Mundwinkel, Falten im Gesicht und die Ohren komisch aussehen...

Später werde ich dann langsam aber sicher alles implementieren. Aber immer so, dass ich was fertiges in der Hand habe. Vielleicht wird das Spiel dann nicht sehr komplex aber ich habe immer was in der Hand. Anstatt also erstmal komplett alles zu implementieren werde ich langsam Anfangen und mich dann dadrüber freuen, dass ich kleine Schweine verhauen kann und dann langsam dadrauf aufbauen (Später soll es Erfahrung für das tote Schwein geben. Dann soll man Stufen aufsteigen können. Dann neue Zauber. Dann Talente usw...). Ich glaube, dann sind meine Vorstellungen nicht mehr zu niedrig und zu umfangreich =)

Ich bleibe bei LWJGL aber werde mir OpenGL in Objective-C angucken. Eigenlich ist es ja egal in welcher Sprache ich OpenGL kennen lerne. LWJGL nimmt mir ja nur den OpenGL Context an, den ich in OpenGL selber bauen muss. Ich fühl mich immer besser, wenn ich weiß, was da gerade passiert wenn ich eine Framework benutze. Außerdem ist Xcode so viel schöner als Eclipse =)

Ich werde hier mal meine Ergebnisse posten. Vielleicht findet jemand diesen Thread über Google (so hab ich den Thread wieder gefunden...) und kann sich sofort angucken, was ich alles gemacht habe (Das soll ja der Sinn von dem Projekt sein. Ich lerne was beim Programmieren und andere können was aus meinem Source Code lernen).

MfG Asyx


----------



## maxemann96 (15. Jan 2012)

Hallo,
hab mich heute hier angemeldet und den Thread über Google gefunden.
Ich selber beschäftige mich schon seit ca 2 Jahren mit Java und und seit ca. 1 Jahr mit PHP. In LWJGL mit Java bin ich ca. vor einem Viertel Jahr eingestiegen.
Ich finde deine Idee von einem sehr einfachen MMO nicht schlecht und denke, dass ich den Thread auf
jeden Fall im Auge behalten werde. Wenn du deine Fortschritte uns allen kundtust wäre das eine super
Sache. Ich denke auch, dass ich meinen Fortschritt in naher Zukunft posten werde.

Viel Spaß und nicht den Kopf im 3D-Dschungel verlieren

maxemann96


----------

