# Fragen zur Umsetzung



## Helgon (12. Jan 2012)

Hey, ich hab folgendes Video (Cobalt Level Editor fun - YouTube!
) gefunden und mich würde echt mal interessieren, ob ihr eine Idee habt, womit das wohl auch umsetzbar wäre... Jajaja ok, sorry umsetzbar ist wohl alles mit allem , aber gibt es irgend was das sich in Java damit anbietet (besonders). Die einzigen GameEngines die ich bis jetzt nur gefunden habe (vernüftig erscheinen) waren jME und LWJGL.

Womit glaubt ihr ist das dort (im Video) realisiert? Eigene Engine? Ist sowas auch "möglich" mit einer der beiden genannten oder anderen Engine? 

Würde gern mal wieder etwas "learning by doing" betreiben 


Grüße


----------



## Fu3L (12. Jan 2012)

Also strenggenommen ist LWJGL keine Game Engine, sondern lediglich eine Möglichkeit von java aus auf OpenGL/AL und CL zuzugreifen inklusive einiger netter Klassen wie Vector3f und so weiter.
Wäre Cobal in Java geschrieben, würde "unter der Haube", wie bei Minecraft, wahrscheinlich LWJGL stecken. Ich meine mich allerdings mich zu erinnern, dass es in C# geschrieben ist oder in C++.

Die Engine wird wahrscheinlich selbstgeschrieben sein, so weit ich weiß, wurde da schon recht lange dran geschrieben, bevor Mojang das Projekt aufgenommen hat.

Mit LWJGL ist das, was du da siehst, sicherlich möglich. Je nach deinem Skilllevel. Mit der JMonkeyEngine sollte das aber auch möglich sein, kannst ja schließlich eigene Shader schreiben und co. Wüsste aber selbst grad nicht, wie man sowas macht, da lerne ich noch  (Hierbei beziehe ich mich besonders zB auf diese sehr stimmig gemachten Lichtquellen, die mich an dem Spiel schon immer fasziniert haben.)


----------



## Helgon (12. Jan 2012)

Jo ich weis das die da länger dran sind, ich frag mich nur 

Was steckt den bei Minecraft "unter der Haube" wie du es nennst 

Hast Recht, das Licht fand ich persönlich auch sehr hübsch, aber ich kannte das Spiel gar nicht, bis ich grad auf dieses Video gestoßen bin und der Editor hats mir echt angetan


----------



## Fu3L (12. Jan 2012)

Bei Minecraft ist es eben LWJGL, damit kann man, wie du sicher weiß, bequem die OpenGL Funktionen nutzen und damit die Grafikkarte ansprechen. Den Rest wird Notch wohl selbst geschrieben haben. (Er braucht ja auch nur eine geometrische Grundform, mal abgesehen von Items, die irgendwie als Sprites realisiert werden^^)


----------



## Helgon (12. Jan 2012)

Ah, danke. Gut zu wissen.
Dann muss ich mich die Tage mal dran setzen und übers Wochende versuchen in LWJGL reinzukommen  - Gut das es Kaffee gibt 

Grüße


----------



## Kr0e (12. Jan 2012)

Ich denke, es hätte Minecraft besser getan, wenn Notch ne Engine benutzt hätte und nicht alles selbst gemacht hätte. Man übernimmt sich oft schnell und schludert häufig hier und da um das Projekt voran zu treiben... Es gab mal nen Blogeintrag von Notch auf seinem Blog, wo er genau das mal beschrieben hatte, vorallem weil er sich ja anfangs garnicht gedacht hätte, dass das mal so ein Renner wird.

Lieber man setzt von Anfang an auf solide Technik und nicht auf etwas derart low-leveliges wie OpenGL oder DirektX. Ohne Engine kommt man da nicht weit, klar bei simplen Spielen müssen wa garnicht erst anfangen darüber zu reden, da reicht das vollkommen, aber sobalds kompelxer wird und man nciht 1000 Mann und 5 Jahre ZEit hat, so sollte man schon mal nach existierenden Rädern Ausschau halten, einfach weil es die Produktivität imens steigert...

Es geht auch garnicht NUR um OpenGL, die Probleme gehen dann ja überall los... Modellimport, Netzwerk, Spielstruktur etc... Eine Engine kombiniert meistens alles einheitlich zusammen und dadurch werden die damit erstellten Spiele auch besser und einfacher wartbar.

Wenn man wirklich ALLES selbst schreibt, dann hat man meistens schon verloren... Ich hatte es in einem anderen Thread schonmal gesagt: Wer die perfekte Mischung aus Produktivität & Flexibilität & Stabilität sucht im Hinblick auf Spiele, ist IMHO mit Unity3D hervoragend beraten. Dort schafft man auch als One-Man-Company durchaus schon ne ganze Menge. jME3 fängt ja an dem nachzukommen mit ihrer MonkeyPlatform(Also neben der Engine auch ein Editor!), aber die ist echt für die Tonne. DAs wird noch dauern, bis die dort etwas verlgiechbares geschaffen haben. Hier zeigt sich wieder, dass kommerzielle Produkte einen ganz anderen Level an Qualität haben.

Ansonsten kann man bei Spielen auch auf Klassiker wie Ogre3D oder Irrlicht setzen, zwar C++ aber durchaus "reifer" als Javaprodukte. (Einfach weil es C++ viel länger gibt...) Natürlich gibts da andere Probleme... Grundsätzlich hasst dich der C++ Compiler und er wird dir niemals etwas durchgehen lassen 

Mein Prof. meinte mal, dass C/C++ eine notwendige Krankheit in der Informatik ist 

Gruß,
Chris


----------



## Helgon (12. Jan 2012)

Interessant auch mal den Standpunkt zu hören.

Unity3D hab ich mir auch mal angeschaut, ganz nett, aber da braucht man auch echt lang, sich erstmal rein zu arbeiten.

Ogre3D hatte ich vor einiger Zeit auch mal mit gearbeitet, ziemlich Komplex und man kann viel mit realisieren, aber hier fehlt mir glaub ich die Manpower und auch die Motivation mich wieder mit C++ zu beschäftigen.

Zu was würdest du den greifen, wenn du einen Editor, wie den im Video, realisieren wollen würdest. Jetzt mal von Netzwerk etc. abgesehen.

Grüße

P.S.: Bietet LWJGL kein Model Import, ne oder? Wenns 3D ist muss man doch irgendwelche Meshes importieren können?!


----------



## tdc (12. Jan 2012)

Sorry, Kr0e, aber ich muss dir widersprechen. (War ja außerdem in meinem D) Thread in dem du das bereits erwähnt hast)

Meiner Meinung nach haben solche Engines vieeeele Nachteile. (die meisten nachfolgenden Argumente sind allerdings auch nur persönliche Meinungen)

Ich finde es nervig, einfach nur eine risiege GUI vor sich zu haben. Man muss sich mit sämtlichen Funktionen vertraut machen und sich einfach nur sehr sehr lange einarbeiten. Desweiteren empfinde ich es als verdammt störend, wenn ich nicht die 100%ige Kontrolle habe. D.h. die Engine macht zwar alles für mich, allerdings wird man imo auch ziemlich eingeschränkt.

Außerdem kommt es, wenn man Engines benutzt, oft auch eher auf Dinge, wie das Erstellen von Modellen und Texturen an. Beim selbstprogrammieren beschäftigt man sich allerdings eher mit dem Spiel an sich und das Design gerät zwar eher in den Hintergrund, dafür steht das Spielgeschehen im Vordergrund. (-> Minecraft  )

Desweiteren ist es bei mir einfach so, dass mich die Technik dahinter teilweise Interessiert (Ausnahme: Kollisionserkennung  ) und es mir weniger darum geht, möglichst schnell etwas fertiges zu haben, als viel mehr darum sich Zeit zu lassen und sich näher damit zu beschäftigen. Natürlich ist es nicht unbedingt sofort so stabil, bugfrei und schnell, wie wenn man es einfach mit einer Engine macht, allerdings sind das Probleme die sich durch genügend Zeitaufwand beheben lassen und mir persönlich macht es auch teilweise Spaß, mein Spiel in dieser Hinsicht zu verbessern.

Ich denke auch, dass speziell Minecraft mit einer Engine wohl gar nicht so einfach möglich gewesen wäre, da Minecraft an sich eben sehr "lowlevel" ist und vielleicht wäre es dann auch gar kein soo großer Erfolg geworden... wer weiß...



> P.S.: Bietet LWJGL kein Model Import, ne oder? Wenns 3D ist muss man doch irgendwelche Meshes importieren können?!


Allein die Form kann man relativ einfach über das .obj-Format importieren (ein kleiner Importer sollte nicht allzu kompliziert sein). Wenn du allerdings noch die Texturen laden willst, hab ich leider keine Ahnung, denn ich weiß leider nicht, wie das im .obj-Format mit Texturen funktioniert oder ob man lieber andere Formate nehmen sollte.


Edit: Wahrscheinlich habe ich oben viel Müll geschrieben, worauf ich hinaus will: ich habe einige Engines ausprobiert, bin aber mit LWJGL vollkommen zufrieden.


----------



## Helgon (12. Jan 2012)

Danke für die Antwort, freu mich natürlich über weitere Meinungen und Erfahrungen!

Grüße


----------



## Apo (12. Jan 2012)

Ich würde auch sagen, es kommt darauf an was du vorhast.
Was die Jungs da gebastelt haben, sieht echt schick aus und kann schon eine Menge. Aber wie erwähnt wurde, auch nur das, was die Entwickler implementiert haben.
Ich bin ein Freund von Engines, die mir das Leben vereinfachen (z.B. Slick) und trotzdem noch freien Spielraum lassen "mein" Spiel zu machen.
Ein Editor für "alle" Spiele wird es nicht geben egal wie toll der Editor ist. Bestes Beispiel ist Little Big Planet. Die User haben zwar schon echt kreative Sachen gebastelt (und ich bewundere viele Entwickler dafür), aber sind trotzdem stark eingeschränkt.
Ein Editor zu basteln lohnt sich aber trotzdem und sei es nur für dich selber. Meiner Erfahrung nach ist die Zeit, die du in den Editor steckst zwar groß, aber die Zeitersparnis beim Level designen dann noch viel größer, wenn du einen Editor nach deinen Wünschen gestaltet hast.


----------



## Helgon (12. Jan 2012)

Es geht mir nicht mal so groß darum, dass ich damit danach großartig etwas anfangen kann. Als Beispiel einfach mal nur das letzte Projekt an dem ich gearbeitet hab (in den Ferien rund 2 Wochen) und nun steht das ganze Gerüst, man kann es "relativ simpel" im Code erweitern, also sprich neue Level, Gegner Logiken einbinden, also folgt jetzt die Fleißarbeit (auf die ich keine Lust hab), weil das ganze auch nur als Übung gedacht war. Genau so möchte ich eben selbst so einen Level Editor basteln, einfach nur um ne neue Erfahrung zu gewinnen, nicht unbedingt weil ich 100te von Leveln Designen möchte


----------



## Fu3L (13. Jan 2012)

Also an Unity3D finde ich alleine schon das Tree-Authoring Tools cool^^

Allerdings finde ich es auch für meine Ideen schwierig, eine Engine zu nutzen... Das liegt vor allem daran, dass die meisten Engines darauf ausgelegt sind, dass irgendwer ein Level designed. Ich würde aber gerne meine Level prozedural erzeugen  Allerdings hat mich dein Erwähnen von Engines noch einmal zum Nachdenken gebracht und ich werde nochmal auf andere Weise testen irgendeine (vermutlich JMonkey, weil schon bekannt) für meine Ideen zu nutzen^^

Das ganze Low Level aufzuziehen reizt mich, wie meine Vorredner auch, wegen des Lerneffekts  Wobei man dann wahrscheinlich immer mal wieder was neu schreiben muss, weil man merkt, dass es Mist ist^^ (Aber dieser Lerneffekt ist ja ebenso gewünscht).


----------



## Spacerat (13. Jan 2012)

Das Vorhaben ist lobenswert aber alleine kaum oder gar nicht zu schaffen. Spiele, die auf einer Engine beruhen, erkennt man leider immer am Gameplay, da solche Engines auch in späteren Versionen kaum etwas neues bieten und eigentlich schon fertig sind, sobald das Grundgerüst steht. Glücklicherweise gibt es Engines, die so leistungsfähig sind, das dieses Manko kaum auffällt. Seht euch nur mal Bethesda Softworks (Morrowind, Oblivion, Fallout3, Fallout New Vegas und bald auch Skyrim) an, was diese Spiele gemeinsam haben. Nichtsdestotrotz aber sind es durchweg Kassenschlager.
Kurzum, Engines haben immer den Nachteil, dass die Dateiimporte, Skriptengines, Kommandokonsolen usw. meist immer statisch sind und man deswegen auf bestimmte Dateitypen (z.B. TIFF, PNG, JPEG, GIF, 3DS, OBJ, X-Files usw.) angewiesen ist oder sich seine Importer weiterhin selbst schreiben muss.
Eine Nachfrage nach einer Modularen Engine müsste erst noch laut werden.


----------



## Helgon (13. Jan 2012)

Ich wollt doch gar keine eigene Engine schreiben, glaub da hast du was falsch verstanden. Zu einem fehlt mir die Manpower, zum anderen auch die Kompetenz 

Mir geht es lediglich um einen Level-Editor wie im Anfangspost geposteten Video.


----------



## Kr0e (13. Jan 2012)

Jap, genau. Außerdem wie gesagt: Wer das als Lernziel hat, dem will ich nichts empfohlen haben ;-) Na klar, bei fertigen Engines arbeitet man auf einem hohen Niveau. Sprich wenn man PRODUKTIV was erreichen will, dann würde ich sogar soweit gehen zu sagen, dass es von der Pike auf nur sehr schwer zu realisieren ist, auch wenn man ein ganzes Team hat. Das Geld spielt hier auch eine große Rolle.

Ich meine ok, bei kleinen simplen 2D Spielen ist es wahrscheinlich überdimensioniert wenn auch nicht unbedingt unangebracht. Und das Hauptargument vonwegen "Einarbeitung in den Editor...". Ich muss schon sagen, da gibt es härtere Nüsse als Unity3D z. B.. Ich habe mich jetzt seit knapp einer Woche 1-2 Stunde pro Tag mal aus reinem privat Vergnügen mal damit beschäftigt und war überrascht, wie intuitiv dieser Editor ist.

Fakt: JEDES 3D Spiel das auf einem Levelkonstrukt aufbaut braucht sowieso fürher oder später einen Editor, sei er nun von einem selbst programmiert oder bereits vorgefertigt.
Aber man sollte nicht den Arbeitsaufwand von Engine+Editor+KrimsKrams unterschätzen. Unity3D basiert auf wirklcih guten und SOLIDEN Systemen:

Für Netzwerk wird RakNet benutzt (C++ Kennern wird das ein BEgriff sein, quasi DAS Netzwerkframework für C++), für Physik wird NVidias PhysX benutzt... Eine sehr ausgereifte Physiklösung also gleich freihaus.
Dazu die neusten Grafiktehcniken die man mit reinem OpenGL nicht mal eben so umsetzt. Stichwort Deferred Rendering und Shader.

Und Unity3D ansich ist eine Gameengine und bietet quasi einen Editor. Es wird dennoch programmiert, undzwar die Spiellogig (C#, JS, Boo - Jedem das seine quasi). Man kann damit sehr viel in kurzer Zeit erreichen, weil der ganze Aufbau logisch und schlüssig ist und durch das Skripten sehr flexibel.

Wer Java kennenlernen will und sich mit der "inneren" Funktionsweise von Spielen noch nicht so recht auskennt UND Spaß daran hat, das erstmal zu lernen, für den ist sowas natürlcih nichts.

Zu Minecraft: Ja, Minecraft ist recht lowlevelig, aber das heißt nciht, dass Engines solche Ziele behindern. Beispiel: Mythruna (gemacht mit jME3) ist ein Minecraft clone in Entwicklung, vom Gameplay her nicht verglecihbar mit Minecraft, aber vom Grafischen her und was die Blockwelt und deren Performance angeht, so ist dies weit über dem von Minecraft (Auch wenn Minecraft Fans sagen, dass ist gut so^^) Aber darum gehts mir grad nicht 


So, lange Rede kurzer Sinn: Für großanlegte Spiele braucht man immer eine Art Engine, als einen ansich recht flexbilen Teil, der viele Probleme lösen kann und die Programmierweise etwas mehr strukturiert.

Ob man nun die Engine erstmal selbst macht oder auf etwas existierendes zurückgreift, das ist eine finanzielle/resourcen-abhängige Frage.

Ein schönes Wochenende 
Chris


----------



## Evil-Devil (13. Jan 2012)

Wie schon festgestellt bietet LWJGL abgesehen von ein paar Hilfsklassen keinerlei Funktionalitäten die es in Engines gibt. Wobei jME als Unterbau LWJGL nutzt.

Allerdings gibt es im Forum einige Projekte die einem helfen können. Zb. OBJ Loader, TrueType Font Texture Generator, GUI. Auf Java-Gaming gibt es andere hilfreiche Projekte zum Thema Netzwerk und Co.

Am besten bei beiden COmms anmelden und hinein schauen. Da beißt keiner  Und mancher von den Jungs hier ist dort auch vertreten.

LWJGL - Forum
LWJGL - Wiki

Java-Gaming.org - home of the largest java game developer community


----------



## Helgon (13. Jan 2012)

Danke für den ausführlichen Post.

Da führt eh kein weg vorbei wenn ich mich mit LWJGL intensiver beschäftigen möchte @Evil-Devil.
Java Gaming kannt ich jedoch nicht


----------



## Helgon (15. Jan 2012)

Hab grad übrigens auf Facebook ne Antwort von Cobalt bekommen 



> daisyMoon engine is written in c++, Cobalt is written in Lua-script



Für die diejenigen, die es interessiert.

Grüße

Jens Bergensten on DaisyMoon 1/2 - YouTube


----------

