Java für große Spiele geeignet ?

Chris787

Neues Mitglied
Ich möchte anfangen Java zu lernen und später damit auch ein Spiel machen, jetzt wollte ich aber vorher fragen ob man mit Java auch große Spiele machen kann mit einer "rießigen Welt" .
Was ich auch noch gerne wissen möchte, welche Bücher könnt ihr mir als Anfänger empfehlen?
 

darekkay

Bekanntes Mitglied
Mit Java lässt sich so ziemlich "alles" realisieren - möchtest du aber speziell in Richtung Spieleprogrammierung gehen, würd ich dann doch zu etwas anderem greifen (C++/OpenGL bsp.)
 

Network

Top Contributor
Und was hat C++ für Vorteile gegenüber Java, ist das leichter zu lernen?

Vorteile:
Diverse Komponenten in Sachen Stabilität und Geschwindigkeit wie zum Beispiel DirectX. Bei Java nicht direkt implementiert, geht aber auch, ist nur viel umständlicher.

Java ist jedoch hundertmal einfacher zu lernen als C++. C++ ist sowas von extrem Programmiererunfreundlich... Ich bin glücklich, als C#/C++ Programmierer auf Java umgestiegen zu sein.
 
F

Firephoenix

Gast
Hi,
Es gibt ja schon einige Artikel die Java auf Spieletauglichkeit analysieren und als Ergebnis findet man eigentlich an vielen Stellen, dass sich Java durchaus für taugliche große Spiele eignet.
Viel Performance zieht man sowieso aus geschickteren Algorythmen als aus der Wahl der Sprache.
Im Spielebereich wird trotzdem hauptsächlich zu C-Varianten gegriffen, da diese sich dort einfach eingebürgert haben, einige Spiele sind aber trotzdem in Java entstanden oder am entstehen.
(Ein Beispiel für ein Java-Game ist z.b. League of Legends)
Gruß
 
G

Gastredner

Gast
Zuallererst sollte dir erst einmal klar sein, dass du nicht ein halbes Jahr lang Sprache XY lernen und anschließend in der Lage sein wirst, "große Spiele" zu programmieren. Dafür solltest du wesentlich mehr Zeit einplanen, denn zum Entwickeln von Software benötigt man mehr als nur das Wissen um Syntax und einfachen Gebrauch der gewählten Sprache.
Daher ist es für den Anfang vermutlich sowieso irrelevant, ob sich Java für die Entwicklung sher anspruchsvoller Spiele eignet. Nimm dir eine Sprache, lerne sie, arbeite damit und wenn du dann genug Erfahrung hast, dann beginne an deinem Spiel zu arbeiten oder eine Sprache zu lernen, die dies einfacher gestaltet. Der Vorteil: du hast bereits Erfahrung in der Entwicklung und musst im optimalen Fall nur die neue Syntax sowie die individuellen Fallstricke und Eigenheiten der neuen Sprache lernen, das restliche Prozedere kannst du aus deiner Erfahrung heraus übertragen.
Meine Empfehlung wäre daher: such dir eine Sprache (ich finde Java z. B. ganz hübsch) und nähere dich in kleinen Schritten (Syntax und Tools lernen und beherrschen -> einfache Übungen -> kleine Programme -> einfache kleine Spiele -> größere Programme -> komplexere Programme/Spiele -> etc) deinem Ziel an und spezialisiere dich dabei auf die Dinge, die für die Spieleprogrammierung wichtig sind (z. B. DirectX- oder OpenGL-Programmierung, im Java-Umfeld eher letzteres). Sobald du soweit bist, kannst du erst einmal versuchen, dein Spiel mit Java zu entwickeln. Sollte sich dies als unfruchtbar erweisen, sattle um auf eine andere Sprache. C# würde sich dann beispielweise anbieten, aufgrund der Nähe zu Java.
Alternativ könntest du dich auch gleich mit C# beschäftigen und später dann XNA zur Entwicklung von Spielen nutzen, anstatt deine eigene Engine von Grund auf zu schreiben. Oder lerne UnrealScript und setze dich mit dem UDK auseinander. Viele Wege führen nach Rom, und auch wenn der Java-Weg länger sein mag, so dürfte er durchaus ans Ziel führen (verglichen mit anderen Wegen vielleicht sogar mit durch die zusätzliche Zeit erkauften Boni;)).
 

darekkay

Bekanntes Mitglied
(Ein Beispiel für ein Java-Game ist z.b. League of Legends)

LoL ist kein Java-Game. Das Spiel selbst ist, wie hätte es anders sein können, in C++ geschrieben. Java wird nur für die Server benutzt.

we use at least the following languages here
C++ (the core game is written in this)
Lua (core game)
C# (game tools)
ActionScript (game hud and pvp.net)
Java (platform servers)
Erlang (platform servers)
Php/sql (web team / platform)

Quelle
 

Marco13

Top Contributor
Der klassische Link zum Quake2-Klon in Java: Bytonic Software

Hab' neulich Videos von Battlefield 3 und der CryEngine gesehen :shock: Natürlich würde man sowas nicht in Java machen :lol: Aber alles, wovon ein einzelner Mensch (oder auch ein Team von semiprofessionellen Programmierern mit einem Budget von weniger als 10 Millionen Dollar) es auch nur in Erwägung ziehen könnte in Erwägung zu ziehen (sic) es umzusetzen würde man mit Java um ein vielfaches einfacher und schneller hinbekommen. "Schneller" ist hier primär in bezug auf den Zeitaufwand zu verstehen, aber auch in bezug darauf, dass ... es "relativ wenige" Menschen gibt, die überhaupt C++ programmieren können, verschwindend wenige, die "gut" C++ programmieren können (auch wenn nicht ganz so wenige das glauben ;) ) und diejenigen, die gut und effizient C++ programmieren können sich dessen bewußt sind und sich ohnehin auf anderen Levels bewegen als wir "Script-Kiddies" hier in unserem "Java will auch mal eine Programmiersprache werden wenn es groß ist"-Forum.
(Nicht so erst nehmen ;) )
 
G

Gast2

Gast
jetzt wollte ich aber vorher fragen ob man mit Java auch große Spiele machen kann mit einer "rießigen Welt" .
ja sicher ... in meiner Welt (vgl. Signatur) benötigst Du in Realzeit ca. 80 Jahre (bei einer Auswertung pro Woche) ... ist Dir das groß genug?

es kommt darauf an was für ein Spiel Du mit Java machen willst
 
F

Firephoenix

Gast
LoL ist kein Java-Game. Das Spiel selbst ist, wie hätte es anders sein können, in C++ geschrieben. Java wird nur für die Server benutzt.



Quelle

Mist, da war tatsächlich meine Info falsch ;) Und die Server von denen sind ja kein gutes Beispiel...

Aber das Minecraft erst so spät kommt finde ich lustig, bei uns in der uni kennt das eig. jeder der info studiert ;)
Gruß
 

Kr0e

Gesperrter Benutzer
Ohne Witz, der Thread sollte nicht weitergeführt werden... Das endet sonst wo :D

Java ist prinzipiell genauso gut für Spiele geeignet... C++ Überlegenheit ist vorbei... Es gibt nur einen Grund, warum beständig auf C++ gesetzt wird: Die meisten Engines (Havok etc.) sind nunmal in C++ geschrieben.. und man schreibt ne Engine nicht mal eben in 5 min.. Ergo macht es einfach keinen Sinn für die Firmen erstmal ne neue Engine in Java zu schreiben, die sich mit bereit bestehenden und seit Jahren erprobten Engines vergleichen lässt.

Mal GANZ daonv abgesehen, dass C# bald eher geeignet ist. Das .NET Framework ist genial und bietet managed Direct X was unter vielen Gesichtspunkten besser ist... C++ besitzt unzählige Altlasten.. solange du nicht iwelche Treiber schreiben willst, vergiss C/C++.

Vom Syntax her tun die sich wenig... C++ bietet ein paar unschöne Paradigmen, die eigentlcih als unsicher gelten...

Also, Spiele sind in Java mehr als möglich, viele wurden bereits realisiert...

Frag doch direkt, ob es möglich ist, mit einem Auto zu fahren :D

jMonkeyEngine ist zur Zeit der beste Anhaltspunkt für eine 3D-Engine in Java.. Aber es gibt vieeele mehr:

Ardor3D, jPTC, Slick(Ok, das ist 2D :p), Espresso3D, Java3D, ogre4j(Cool!)... es gibt noch mehr.. aber die anderen fallen mir grad nich ein..

Aber meine Vorredner haben Recht: Wenn du alleine ein Spiel kreierst, muss dir klar sein, dass das ne MENGE Arbeit ist.
Du brauchst eigentlcih ein Team um alle Bereiche (Webauftritt, Art&Design, Sounds&Effekte, Netzwerk ggf.) abzudecken.

....

@Marco13:

C++ ist nichts magisches, was nur die Auserwählten können. Ich habe Erfahrung mit C++ und muss sagen: Es ist ähnlcih wie bei Java: Es kommt nur darauf an, die existierenden Frameworks und Engines zu beherrschen. Kein vernünftiges C++ Projekt würde ich z.B. ohne Zusatzbibliotheken wie "C++ Boost" beginnen. Bei Spielen würde ich dann OGRE oder Irrlicht nehmen... Alles ähnlcih einfach gehalten, wie jMonkeyEngine... Das sind doch alles nur Sprachen ... Jeweils mit Vor und Nachteilen...

Und der Fakt, dass man als "Skriptkiddy" nichts großes auf die Beine stellen kann, hat nichts mit der Sprache zu tun, sondern ist schlicht und einfach ein Zeitproblem. Auch der MegaHighendC++Programmierer würde Probleme haben, ein Spiel zu schreiben. Das Problem ist ja nicht die dahinter stehende Technik, sondern alles vernünftig in adequater Zeit zu verbinden...
 
Zuletzt bearbeitet:

Fu3L

Top Contributor
Ich bin gerade dabei mich in die JMonkeyEngine einzuarbeiten und bin wirklich überrascht, wie leicht man die Grundlagen eines Spiels damit erstellen kann. Ein Tag konzentriertes Tutoriale lesen und ich habe eine Spielfigur, die über ein Terrain läuft, dessen Relief durch eine Heightmap individuell vorgegeben werden kann. Inklusive Frei-beweglicher Kamera, Physik, HUD (Head-Up Display) und Multithreading-support. Die Dokumentation der Klassen an sich ist leider etwas dürftig, aber vieles wird in den Tutorials erklärt und zur Not kann man auch den mitgelieferten Quelltext zu Rate ziehen.

Betreffend der "riesiegen Welt": Das Terrain, dass ich erstelle is ziemlich groß (das ganze "Spiel" belegt 500 MB Arbeitsspeicher^^), aber mein Prozessor (die langsamste denkbare Variante des i7 für Notebooks^^) lässt sich davon beim Umherlaufen nichts anmerken. Zugegebenerweise habe ich auch keine Objekte außer die Spielfigur platziert...

Durch den JIT läuft Java ja sowieso schon optimiert und die JMonkeyEngine reicht viele Befehle an OpenGL weiter, sodass dort eh native Methoden aufgerufen werden. Der Performanceunterschied ist also, wenn überhaupt, nur gering.
Selbst die Physik-Engine von JMonkey, die noch in Java implementiert ist, soll laut demjenigen, der gerade dabei ist, sie auf native Methoden umzustellen, genauso schnell laufen, wie die native Implementierung (jMonkeyEngine.org | Groups | Troubleshooting - Physics | Forum | Performance of jBullet
Dafür musst du dich nicht mit Dingen rumschlagen, durch die ich meinen Versuch, C++ zu lernen, entnervt beendet habe, wie Speicherverwaltung (zumindest nur ein wenig^^) oder (für mich als Java-Muttersprachler am schlimmsten) das ganze Referenzen/Pointer etc. Gewirr inklusive .h files und undurchsichtige Compilerfehlermeldungen^^
 

Titanpharao

Bekanntes Mitglied
Schließe mich meinen Vorrednern gern an. Wenns nicht gerade Crysis 2 werden soll, sollte Java immer ausreichen.

Habe selbst ein großes Spiel am laufen,ist zwar kein 3D, hat aber mehr "Inhalt" als so manches andere Solo-RPG. (3D n der Spielgröße würde man auch niemals allein hinbekommen, ich arbeite jetzt schon 3 Jahre dran.)

IMoY Wujinyou

Vielleicht kommt noch Sound dazu ... experimentiere gerade etwas rum, wobei ich sagen muss das es sehr bescheident ist, was es zu Sound & Video AKTUELLES auf dem Markt gibt ... das meiste ist vor 2007 entstanden. Knobel immer noch mit meinem Sound schneller/langsamer abspielen Problem. Dafür gibts jetzt ein Intro-Movie :p aber nur unter Windows :D
 

Marco13

Top Contributor
Ohne Witz, der Thread sollte nicht weitergeführt werden... Das endet sonst wo :D
Wie üblich werden sich einige Zweige in Diskussionen darüber verlieren, welche Sprache oder welches Framework das beste ist, und zwei (oder mehr) "Seiten" werden ihre Argumente auflisten und ignorieren und ignoriert werden. Es gibt Pros und Cons, jeder mag sich selbst ein Bild machen.


C++ ist nichts magisches, was nur die Auserwählten können. Ich habe Erfahrung mit C++ und muss sagen: Es ist ähnlcih wie bei Java: Es kommt nur darauf an, die existierenden Frameworks und Engines zu beherrschen.

Definitiv richtig. Mein Einlass bezog sich auf damit verwandte Dinge: Java macht einen zweifellos vieles leichter als C++. Das fängt bei low-level-Sprachaspekten an (Speicherverwaltung) und geht über medium-level Dinge (Klassenstrukturen und Methodensignaturen, in C++ viiiieeel schwieriger "gut" zu machen als in Java), bis zu high-level-Dingen wie Frameworks und deren Verwendung. Letzteres auch wieder auf mehreren Ebenen: Vom Einbinden (in Java: Rechtsklick auf JAR->"Add to build path", in C++ ... beliebig kompliziert, was die Hemmschwelle, andere Libs einzubinden, dramatisch erhöht) bis zur API-Doku, die bei Java fast prinzipedingt vollständiger (weil einfacher zu generieren) ist, als ein nebenher erstelltes (und IMHO auch nicht so übersichtliches) Doxygen.

Sicher ist auch an C++ nicht "magisches". Ich wollte (vereinfacht gesagt) andeuteten, dass es viel, viel, viel einfacher ist, ein "guter Java-Programmierer" zu sein, als ein "guter C++-Programmierer". Ich weiß zumindest, dass es Leute gibt, die meinen, sie würden ("gut"???) C++ programmieren, und verwenden zum Zahlen/String-Konvertieren dann atoi & Co, schreiben sich ihre eigene String- oder Vector-Klasse weil "...da sind noch ein paar praktische Zusatzfunktionen dabei" :autsch:, lesen Files über "File"-Objekte, kennen die STL nur vom Hörensagen, und meinen allen ernstes: "Ach, ob die Methoden und Variablen nun private oder public sind ist doch egal..." (Auch wenn das teilweise nichts mit der Sprache zu tun hat). Der Aufwand für ein "gutes Programm" ist bei C++ um mehrere Größenordnungen (!) höher - einerseits auf "intellektuell-akademischer" Seite, bezogen auf die Fähigkeiten und den Wissensstand über die Sprachdetails und best practices, andererseits als auch in bezug auf den Code, den man am Ende hinschreiben muss.

Ich habe schon lange nichts mehr mit C++ gemacht, aber bei dem wenigen, was ich gemacht habe, seit ich mit Java arbeite, habe ich gemerkt, dass sich mein Programmierstil stark an Java anlehnt: Alles sind Pointer, alles erstmal komplett virtuelle Klassen, usw... Um die Sprache nicht nur für "low-level-Programmierung" sondern für Softwareentwicklung auf einem sinnvollen, übergeordnet-abstrahierenden Level nutzen zu können, kommt man um Dinge wie boost's shared_ptr IMHO eigentlich nicht drumrum, und konsequent weitergedacht ... (C++-Fans werden mich jetzt hauen ;) ) ... bindet man erstmal 50 Libs ein, damit man mit 100mal komplizierterer Syntax so ähnlich programmieren kann wie mit Java von vornherein :D
 

Titanpharao

Bekanntes Mitglied
@Noctarius/ProgX dann spielst doch auch mal, ab besten wärend der Arbeit :-D oder UNI und hinterlasst mal einen Eintrag ins Forum :-( das so Leeeeeer ...

Glaube nicht das NES schon PNG Bilder hatte ^^ aber sonst kommts da ganz gut ran ja ...
 

Kr0e

Gesperrter Benutzer
@Marco13:

Da hast du Recht... C++ läd oft zum schlechten Stil sein... Alleine mal die Zusatzbibliothek Boost ans Laufen zu kriegen ohne mit Fehlermeldungen zugemüllt zu werden... Ich persönlich war immer geheimer Fan von C++ (Hab damit angefangen), aber je mehr ich mit Java (Und auch C#) gemacht habe, desto unangenehmer fand ich C++. Java und C# sind eben im Gegensatz zu C++ produktive Sprachen wo man nich erstmal die Nägel geradebiegen muss, bevor man ein Baumhaus baut ;)

Gruß,

Chris
 

Fu3L

Top Contributor
das Problem ist für einen Informatiker weniger das Programm bzw. Spiel - als die Grafik und Sound :-( ... ich werde das gleiche Problem haben, wenn ich anfange einen eigenen Client für mein Spiel zu schreiben

Ohh jaa ... Ich habs geschafft, dass ein künstlerisch begabter Freund von mir sich das 3D-Modelling aneignet.. Aber selbst wenn man bereit ist viel zu lernen, kann man nicht eben stimmige Hintergrundmusik (am besten noch mit Harven oder anderen exotische Instrumenten) kreieren... Und Sounds von Seiten wie freesound.org zusammenzuzimmern, ist wahrscheinlich* auch höchstens eine Übergangslösung... :(

Ich habe noch nicht viel Zeit mit demDurchstöbern des Archivs verbracht und kann es daher nicht mir Sicherheit sagen^^

Edit: Um einen Bezug zum Thread Thema herzustellen: Mit der JMonkeyEngine ist es wenigstens relativ einfach Sounds über OpenAL im Dreidimensionalen Raum abzuspielen. Also auch dies klappt gut mit Java ;)
 
Zuletzt bearbeitet:

Ulathar

Aktives Mitglied
dazu zitiere ich mal das schlusswort aus dem link oben:

The phrase "lies, damn lies and benchmarks" is by now a cliche. Suffice it to say, benchmarks never tell the full story, and there are many factors to consider when choosing a programming language. That said, you may find parts of this paper enlightening, especially with regards to Scala performance.

sagt ja keiner, dass das 100%ig eindeutig ist :). ich bin und bleibe auch bei java einfach weils "idiotenischer" ist (naja fast ^^).
wenn ich überlege, wieviel mehraufwand ich in c/c++ betreiben muss um eine saubere speicherverwaltung sicherzustellen und auch dieses verdammt unübersichtliche headergedöhns mit den .h files und namespaces.... nee da verzicht ich im zweifelsfall lieber auf performance und bleib bei java.

zumal die 3D darstellung für games oder sonstiges ja so oder so nativ ausgeführt wird.
 

Illuvatar

Top Contributor
Zu dem Google-Paper möcht ich jetzt dann doch noch folgendes Zitat anbringen:
Jeremy Manson brought the performance of Java on par
with the original C++ version. This version is kept in the
java_pro directory. Note that Jeremy deliberately refused
to optimize the code further, many of the C++ optimizations
would apply to the Java version as well.
 

Marco13

Top Contributor
Hmja, da hat auch bei dem Blog-Eintrag jemand drauf hingewiesen. Ich hatte das Paper nur überflogen, und dort kam dann hat sowas wie List<Set<Integer>> vor :autsch: Klar sind das die zur Verfügung stehenden Sprachmittel, und es wäre schön, wenn Primitive Collections Teil der API (oder besser: Teil der Sprache an sich!) wären, aber geben tut's die schon...
 

masii

Mitglied
Vielleicht ganz interessant für den ein oder anderen. Ein ehemaliger NCsoft Programmierer hat an einem MMO Client in Java und der jMonkeyEngine gearbeitet.

Unter seinem Youtube Video ist auch sein Blog verlinkt.
 

Noctarius

Top Contributor
Die jMonkeyEngine gehörte eine Weile lang NCsoft und wurde maßgeblich von denen für ein Projekt vorangetrieben. Dann wurde das Projekt leider eingestampft.
 

Paddelpirat

Bekanntes Mitglied
Naja das Video sieht nicht schlecht aus, aber im Vergleich zu dem was auf dem Markt ist, kann ich schon verstehen, dass man sich dann doch für andere Ansätze entschieden hat. Fragt sich natürlich noch aus welchem Jahr der Content im Video stammt.
 

Fu3L

Top Contributor
Ich hab mich mal noch mehr schlau gemacht, was Engines angeht und wenn man heute liest:

CryEngine 3 frei für nicht kommerzielle Projekte, bei kommerziellen Projekten 20% an CryTek
UnrealEngine 3 frei für nicht kommerzielle Projekte, bei kommerziellen Projekten einmalig 99 € und dann ab 50k Gewinn 25% an Epic Games
Quake 3 Arena Engine unter GPL

Da kommt man schon in Versuchung alles mit Java aus der Liste zu streichen^^
 

Paddelpirat

Bekanntes Mitglied
Vor allem sind diese Engines auch erprobt und es gibt den nötigen Support von den Entwicklern, falls was nicht so auf Anhieb funktioniert. Ich glaub bei Java müsste man sehr vieles selber Regeln, was den Support und das Testen betrifft.
 

Kr0e

Gesperrter Benutzer
DAs Problem ist eben, dass es keine Infrastruktur gibt für Spiele. Die Firmen treiben leider diesen Ansatz nie voran. An und für such ist JAva durchaus geeignet aber ohne Support von den großen Firmen mit GEld wird das leider nichts...
 

Empire Phoenix

Top Contributor
Naja dafür kann ist die Quake engine schrott aus heutiger sicht vonner grafic, da is jme schon meilenweit vorraus was Shader und so angeht.

Bei den anderen beiden biste sowie du irgetwas im sourcecode machen must verlassen oder zahlst mal schnell nen paar millionen.
 

Evil-Devil

Top Contributor
Millionen jetzt nicht gerade, aber allein die Tatsache das heutige AAA Engines aus sehr viel Middleware bestehen bzw. sich zusammensetzen lassen.

Da wären u.a. SpeedTree, Lightmass, Havok, RAD, Scaleform und wie sie alle heißen. Das kann man nicht mal so eben aufholen.
 

Noctarius

Top Contributor
Och das es geht zeigen immer wieder plötzlich auftauchende, neue Engines.
Zuletzt waren da die CryEngine (die auch noch nicht wirklich alt ist) und die Whiteengine von SquareEnix (FF XIII / FF XIIII).
 

Paddelpirat

Bekanntes Mitglied
Hmm die sieben Jahre von der Cryengine (seit dem ersten Spiel damit) ist schon eine lange Zeit und im Vergleich zur Unreal Engine die deutlich älter ist, ist sie nicht sehr weit verbreitet, das kommt wohl erst noch. Und bei der White Engine würde ich mal behaupten, dass die Entwickler einfach genug Geld mit den vorherigen 12 FF-Teilen gesammelt haben *g*.

Naja aber die Frage ist ja eigentlich: Wieso sollte man überhaupt versuchen ein AAA Spiel mit Java zu machen? Welche Vorteile sollte Java gegenüber C, bzw. evtl. C++ haben, die die Entwicklungskosten einer vergleichbaren Engine rechtfertigen würden? Damit die Spiele auch unter Linux laufen?
 

Ulathar

Aktives Mitglied
Wart mal ab bis die neue Consolen Generation raus ist. Dann werden DEUTLICH mehr Spiele auf CryEngine Basis erscheinen, darauf kannst du wetten.
Evtl geht dann auch endlich mal die Entwicklung der KI voran. So gut die Grafik mittlerweile ist, so mies ist die KI.
Ich als leidenschaftlicher PC Zocker verfluche jedenfalls diese blöden Kästchen fürs Wohnzimmer (Consolen) die heut zu Tage die "Leadplatform" darstellen :(.

Das is wie fahren mit angezogener Handbremse ^^.
 

Fu3L

Top Contributor
Ich habe Mr. Molyneux verflucht, weil er Fable 2 nicht für den PC hat erscheinen lassen :(

Für ein gutes, großes Spiel muss es aber auch nicht immer eine Triple A Engine sein. Die von Fable 1 würde mir vollkommen reichen^^ Dieser Comic-Stil hat eben auch seinen Reiz und es hat mich kaum ein Spiel bisher so in seinen Bann gezogen wie Fable 1 (aber da kommen auch noch so Sachen wie die Vertonung dazu), obwohl die Kämpfe zu leicht waren^^
Natürlich fehlen da die Objekte, die von Physik beeinflusst werden und pflanzenbewachsener Boden, aber grafisch ist die mMn super^^
 

Evil-Devil

Top Contributor
Das deutlich mehr Spiele auf Basis der CE3 herauskommen werden muss sich erst noch zeigen. Es ist halt immer die Frage wie schnell/leicht man eine Engine "vergewaltigen" kann. Die Unreal Engine hat sich von einer Outdoor FPS Engine zu einem Allrounder gemausert. Neben dem MMO Branch (hat CE2 auch) kann man eben sehr schnell viel erreichen. Der Sandbox Editor der CryEngine kann ja ähnliches, nur hat es Crytek bisher versäumt seine Engine vernünftig zu vermarkten. Da ist Epic eindeutig Marktführer.

@Warum Java: Weil man es kann? weil es sauberer sein kann. Ok, die aktuellste Version von C++ hat nun auch diese ganzen neuen Multicore Features, doch wird sich die Industrie wohl kaum auf eine andere Sprache einigen, nur weil es dort Features gibt die C/C++ nicht hat. Dann schreibt man halt einen Workaround...

@Warum von C++ wechsel: Warum sollte man Milliarden Investitionen wegschmeißen? Man schmeißt einen JEE Server auch nicht einfach weg, nur weil manches anderswo einfacher/komfortabler ist.

Letzten Endes bleibt es an uns hängen, dass man etwas schafft das von anderen verwendet werden kann. Ich fände zb. einen JavaFX Export ähnlich der Funktionsweise von Scaleform geil.
 

Empire Phoenix

Top Contributor
Naja in java grafisch geht eigntlich problemlos mit jbullet gibts auchen halbwegs gute physicengine (kann zumindest mit der der source engineprobemlos mithalten).

Warum jetzt java? Sobald man eine der großen engines nimmt muss man auch deren Toolsets nehmen.
Das kann teils super sein, aber es besteht immer die chance das man an eine grenze trifft, und dann ist man wenn man nciht gerade großkunde ist oder sourcecodezugriff kauft aufgeschmissen.

In Java kann man schneller das selbe wie in c++ erreichen durch geringeren Programmieraufwand.
Spiele in java kann man auch relativ problemlos auf mac und linux benutzen/ verkaufen.

Wenn ich ein reines Grafikblenderspiel amchen will, würde ich aber auch zu einer der großen engines tendieren, erst bei speziellen Krams hat mand avon mehr anchteile als vorteile.

(Beispielsweise wäre Minecraft mit den genannten Engines eher schwer möglich gewesen, mangels guter lowlevel api's für meshmanipulationen)
 

schalentier

Gesperrter Benutzer
In Java kann man schneller das selbe wie in c++ erreichen durch geringeren Programmieraufwand.

Mit solchen pauschalen Aussagen waere ich vorsichtiger. Wenns so stimmen wuerde, wuerde es mehr in Java geschriebene Spiele oder Engines geben.

Das Hauptproblem (und gleichzeitig einer der groessten Segen) seh ich darin, dass man keine Kontrolle ueber den Speicher hat. Sobald man mit richtig vielen Daten arbeitet (durchsuchen, auf Festplatte auslagern, nachladen, etc), kaempft man eigentlich meistens gegen den geliebten Garbage Collector. Und diese Engines machen eigentlich nur eins: grosse Datenmengen an Dreiecken durchsuchen und nur sichtbare an die Grafikkarte schicken.

Das zweite Problem (und gleichzeitig der zweitwichtigste Segen) sind die fehlenden Pointer. Hat man grosse Datenmengen und will auf einzelne Informationen zugreifen, nimmt man mit C/C++ nen Pointer auf ne struct und setzt den auf die korrekte Position im Speicher. Mit Java speichert man entweder alles in einem eignen Objekt (OOP) oder versucht mit ByteBuffer & Co den fehlenden Pointer nachzubauen. Letzeres ist meistens (ab einer gewissen Datenmenge) schneller als Fuer-Alles-Ein-Objekt, aber der Code wird noch viel unleserlicher als äquivalenter C/C++ Code. Und zumindest in genau diesem Fall ist C/C++ einfach schneller ;-)

Das dritte Problem (und ja, der drittwichtigste Segen) ist die Hardwareabstraktion. Die Algorithmen die bei Unreal, CryTech oder der SourceEngine eingestetzt werden sind unter Garantie mit viel Wissen ueber die Hardware optimiert. Da sind sicherlich einige Kniffe und Genialitaeten drin versteckt, die man mit Java einfach nicht nachbauen kann (auch wenns am Ende nur ein paar Zeilen Assembler sind, um nochmal 0.2% mehr Frames zu schaffen).

Letzlich sind diese Engines ja nicht viel anders als die JVM: Die "VM" dort bietet nur mehr Zeug fuer grafiklastige Probleme an.

Ich will damit nicht sagen, dass man mit Java keine Spiele programmieren kann - Minecraft ist wohl das beste Gegenbeispiel - aber ich wuerde Java auch nicht als die Sprache fuer jeden Zweck herausstellen.
 

Noctarius

Top Contributor
Naja ich kann auch in Java (zu mindestens in aktuellen Versionen) direkt auf dem Speicher manipulieren.
A direct byte buffer may be created by invoking the allocateDirect factory method of this class. The buffers returned by this method typically have somewhat higher allocation and deallocation costs than non-direct buffers. The contents of direct buffers may reside outside of the normal garbage-collected heap, and so their impact upon the memory footprint of an application might not be obvious. It is therefore recommended that direct buffers be allocated primarily for large, long-lived buffers that are subject to the underlying system's native I/O operations. In general it is best to allocate direct buffers only when they yield a measureable gain in program performance.

Oder z.B. MappedByteBuffer (MappedByteBuffer (Java Platform SE 6))
 

schalentier

Gesperrter Benutzer
Mit direct byte buffers habsch auch schon rumexperimentiert. Ich meine aber sowas:

In einem aktuellen Projekt hab ich ein 13 Byte langen Key. Der dient als Key in einem BTree. Natuerlich kann man nun beim Erzeugen des Keys aus den Eingangsdaten (es handelt sich um Koordinaten) diesen nun byteweise berechnen. Aber es ist deutlich flinker, einfach 3x nen Integer zu berechnen und die zu setzen. Das geht leider nicht mit den direct buffers. Das 13. Byte muss dann uebrigens wieder als Byte angesprochen werden.

In C/C++ ist das einfach ne struct oder man greift direkt auf den Datenstrom zu (z.B. um alles auf die Platte auszulagern).

Ja, man kann all das auch mit Java machen, aber ich rede grad von wirklich vielen dieser 13-Byte-Keys. Und genau da kann Java (ganz prinzipiell) einfach nicht mit C/C++ mithalten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
S Grafik erstellen für Java Spiel Spiele- und Multimedia-Programmierung 8
D STARTHILFE gesucht !! Java-Projekt für Schule !! Spiele- und Multimedia-Programmierung 73
T Java-Klasse für Spielfeld? Spiele- und Multimedia-Programmierung 2
S Java Delay für Shuffle funktion? Spiele- und Multimedia-Programmierung 4
D sehr simple Java Spiele Platformübergreifend für Handys/PDAs Spiele- und Multimedia-Programmierung 3
S Optimale Grafikkarte für Java 3D programmierung? Spiele- und Multimedia-Programmierung 13
S Gesucht: Java Profis für MMOG Projekt Spiele- und Multimedia-Programmierung 2
M Sound-Lösung für Java/JMF Spiele- und Multimedia-Programmierung 8
R Eignet sich Java für ein Beat'em'Up? Spiele- und Multimedia-Programmierung 3
C |DOMINOSPIEL| Starthilfe für Java-Anfänger Spiele- und Multimedia-Programmierung 2
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
A Minecraft Java Buch fehlermeldung Spiele- und Multimedia-Programmierung 61
yakazuqi Minecraft java.lang.Error: Watchdog Spiele- und Multimedia-Programmierung 3
L Fehler bei "Nochmal Spielen" (Java) Spiele- und Multimedia-Programmierung 1
N Minecraft Java Error Spiele- und Multimedia-Programmierung 6
M "Java Datei" Cannot be resolved to a variable Spiele- und Multimedia-Programmierung 2
1Spinne Minecraft Fabric Modding Java Error Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
O Browser-basiertes online Pokerspiel mit Java Spiele- und Multimedia-Programmierung 1
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
G VST-Plugins in Java verwenden Spiele- und Multimedia-Programmierung 0
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
T Welche packages aus der java api doku ist hilfreich zur Android Spieleprogrammierung Spiele- und Multimedia-Programmierung 2
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
I Java Andere Fenster in Borderless-Mode setzen Spiele- und Multimedia-Programmierung 16
leon_krys Java-Bußgeldrechner Spiele- und Multimedia-Programmierung 5
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
P Website mit Java Backend? Spiele- und Multimedia-Programmierung 1
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
E Kalah Java Implementation Spiele- und Multimedia-Programmierung 1
G [Java] Vereinfachung von Boolean Abfragen Spiele- und Multimedia-Programmierung 3
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
T Java 3D Spiele- und Multimedia-Programmierung 2
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
J Java Buttons Spiele- und Multimedia-Programmierung 6
T Java Kalender Spiele- und Multimedia-Programmierung 5
Ice4P4rty Java Optische Oberfläche Spiele- und Multimedia-Programmierung 2
MABY Eine mp3 Datei in Java abspielen Spiele- und Multimedia-Programmierung 14
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
H Yu-Gi-Oh! Mit Java was tun? Spiele- und Multimedia-Programmierung 6
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
S Pong java.lang.StackOverflowError Spiele- und Multimedia-Programmierung 3
C Java aus Klasse rausgehen Spiele- und Multimedia-Programmierung 2
MaxG. Java Internet Radio Spiele- und Multimedia-Programmierung 6
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
P java.lang.NoClassDefFoundError: in Greenfoot Spiele- und Multimedia-Programmierung 0
G Java Achsen invertieren Spiele- und Multimedia-Programmierung 2
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
David Schwarzbeck Java 3 dimensionale Kollisions Abfrage Spiele- und Multimedia-Programmierung 2
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
beatles Java Minesweeper - OS X und Win7 Unterschied Spiele- und Multimedia-Programmierung 2
D Minecraft Java JDK installiert - Minecraft läuft nichtmehr in 64 Bit Spiele- und Multimedia-Programmierung 2
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
windl MoviePlayer in Java Spiele- und Multimedia-Programmierung 0
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
J programm mit java-plugin Spiele- und Multimedia-Programmierung 2
D Java Webgame, welche Frameworks oder Techs sind von Nöten? Spiele- und Multimedia-Programmierung 5
P Java 2D Bug? Spiele- und Multimedia-Programmierung 8
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
R Java App sendet Midi Daten über Flash Spiele- und Multimedia-Programmierung 3
O Java Zeile aus Textdatei zufällig ausgeben Spiele- und Multimedia-Programmierung 8
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
J Java Kollisionsabfrage Spiele- und Multimedia-Programmierung 21
Flo. android java tastatureingaben abfangen. Spiele- und Multimedia-Programmierung 1
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
P Java Grafiken mit Rechnungen verknüpfen Spiele- und Multimedia-Programmierung 4
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
S Engine2D - Java 2D Engine Spiele- und Multimedia-Programmierung 20
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben