kostenloser Webspace werbefrei: lima-city


Spieleprogrammierung: C++ oder Java?

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    pc-cube

    Kostenloser Webspace von pc-cube, auf Homepage erstellen warten

    pc-cube hat kostenlosen Webspace.

    Hallo,

    das erste was ich sagen möchte, ich habe nicht vor ein Spiel zu programmieren und deswegen möchte ich keine Antworten "Lass es lieber sein" oder so. Jetzt zu meiner Frage: Welche Programmiersprache ist heute modern für Spiele, C++ oder Java. Soweit ich weiß war es ja immer C++, aber ich habe gehört das Java auf dem aufsteigenden Ast ist. Besonders intressiere ich mich dafür in welcher Sprache Point-and-Click Adventures programmiert werden.


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du kannst im Prinzip jede Programmiersprache verwenden. Die Frage ist bloß, wo die Prinzipien mit der Realität kollidieren. Wenn du sehr viele Berechnungen in begrenzter Zeit durchführen musst, sind Programmiersprachen ratsam, die in Binärcode compiliert werden und bei denen der Compiler auch Optimierungen durchführen kann. Vertreter dieser Sprachen sind natürlich C, C++ und D. Java ist gewissermaßen ein Hybrid. Die Sprache wird zunächst in Bytecode compiliert aber während der Laufzeit kann dieser Bytecode stellenweise auch in Binärcode umcompilieren, so dass vergleichbare Geschwindigkeiten erreicht werden können.

    In der Spieleindustrie werden in der Regel actionlastige Spiele hergestellt mit aufwendigen Berechnungen. Daher ist dort C++ sehr beliebt. Wenn man aber etwas wesentlich simpleres programmieren will, wie z.B. ein einfaches 2D Point-and-Click Adventure, dürfte nahezu jede ausgereifte general-purpose Sprache geeignet sein.

    Ansonsten ist noch anzumerken, dass viele Spiele auch eine Scripting-Schnittstelle besitzen. Lua wird beispielsweise gerne mit C++ kombiniert, um während der Laufzeit des Spiels dynamisch das Spiel beeinflussen zu können.


    Allgemeine Anmerkung: Mit Binärcode ist Maschinen- und Betriebssystemspezifischer Code gemeint.

    Beitrag zuletzt geändert: 1.5.2012 9:53:56 von bladehunter
  4. Hey!
    Denke, dass auch C++ bei den Spielen immer noch sehr weit eingesetzt wird im Desktopbereich
    Zu den Click and Point Adventures denke ich, dass vielleicht HTML 5 in Verbindung mit Java Script auch interessant wäre, denn du könntest plattform- und geräteunabhängig geräteunabhängig entwickeln. Also egal ob Mac, Linux, Windows, iOS, Android,... egal ob 23" PC oder 7" Tablet...
  5. g****e

    Hey

    Das kommt in der Tat darauf an, was es werden soll. In der Spieleentwicklung würd ich aber eher auf C++ setzen. Wenn man sich anschaut, was für eine Leistung Minecraft zb frisst, obwohl es doch so einfach gestalltet ist, weiß ich nicht, würde mich das eher abschrecken. Wenn es dagegen so etwas kleines wie Tetris ist, oder FrozenBubble, dann ist auch Java gut geeignet.

    Es kommt auf den Aufwand drauf an, und welche Hilfsmittel du nutzen möchtest. Wenn du eine GameEngine nutzen willst wird Java zb nicht soo gut dafür sein, wenn du eine Grafikengine selbst schreibst, dann ist das schon wieder total egal.

    Bisschen Konzept könnte uns helfen.

    Liebe Grüße
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    ggamee schrieb:
    Das kommt in der Tat darauf an, was es werden soll. In der Spieleentwicklung würd ich aber eher auf C++ setzen. Wenn man sich anschaut, was für eine Leistung Minecraft zb frisst, obwohl es doch so einfach gestalltet ist, weiß ich nicht, würde mich das eher abschrecken. Wenn es dagegen so etwas kleines wie Tetris ist, oder FrozenBubble, dann ist auch Java gut geeignet.
    Wobei man hier noch etwas beachten muss:
    Wenn ich als Spielhersteller ein Spiel verkaufen möchte passt es mir gar nicht ins Konzept wenn ich das Spiel nur 1x verkaufe und es dann auf Mac, Linux und Windows läuft. Viel lieber würde ich das 3x für jede Platform verkaufen...

    ggamee schrieb:
    Es kommt auf den Aufwand drauf an, und welche Hilfsmittel du nutzen möchtest. Wenn du eine GameEngine nutzen willst wird Java zb nicht soo gut dafür sein, wenn du eine Grafikengine selbst schreibst, dann ist das schon wieder total egal.
    Java könntest du dafür so einsetzen wie eine Scriptsprache in einem Spiel, die GameEngine ist dann natürlich in C++...

    Bei Point-And-Click-Adventures ist es föllig egal welche Sprache du verwendest, du musst sie nur beherrschen... ;-)
  7. Ich würde dir ganz klar zu c++ raten . Es ist einfach die sprache die am meisten genutzt wird für spiele.
    Ist zwar schwer zu lernen aber wenn du es mal kannst dann ist vieles möglich. Stecke dir aber am anfang nicht zu hohe ziele. Beginne mit einem Pong-Klon und arbeite dich dann weiter. Vergiss aber bitte spiele wie wow alleine schreiben zu wollen das wird nicht klappen.
    Setzte dir kleine ziele, entwirf ein Konzept und suche dir leute die mitmachen

    eine Gute seite ist die:

    www.spieleprogrammierer.de

    kannst auch mich gerne anschreiben habe schon ein spiel gemacht in c++ und kann dir vll. ein bisschen helfen
  8. t*****b

    pc-cube schrieb:
    das erste was ich sagen möchte, ich habe nicht vor ein Spiel zu programmieren und deswegen möchte ich keine Antworten "Lass es lieber sein" oder so.


    Nur aus interesse (wenn wir uns schon die Mühe machen, zu antworten): Wieso willst du das denn dann wissen?

    pc-cube schrieb:
    Jetzt zu meiner Frage: Welche Programmiersprache ist heute modern für Spiele, C++ oder Java. Soweit ich weiß war es ja immer C++


    Man kann Spiele sowohl in C++ als auch in Java oder Basic oder sonst was programmieren. Richtig ist, dass viele großen Studios in C++ entwickeln, da es dafür einfach die besten Engines (Grafik, Physik, Netzwerk, ...) gibt. Sicher gibt es auch Schmieden, die in Java entwickeln. Mittlerweile verwenden auch viele XNA, welches auf .NET (C#, VB.NET, ...) basiert.

    pc-cube schrieb:
    aber ich habe gehört das Java auf dem aufsteigenden Ast ist.


    In der Wirtschaft werden hierzulande die meisten Anwendungsentwickler im Bereich Java gesucht, gleich dannach kommt jedoch C++. Dazu lassen sich bei Google Statistiken finden. Die Spielebranche macht aber (vor allem in Deutschland) nur einen sehr sehr kleinen Bruchteil (ich vermute mal unter 10%) aus, darum kann man das nicht unbedingt darauf ableiten.

    pc-cube schrieb:
    Besonders intressiere ich mich dafür in welcher Sprache Point-and-Click Adventures programmiert werden.


    Hier wirst du zB mit dem bereits genannten XNA ziemlich schnell relativ gute Ergebnisse erzielen, aber mit jeder anderen halbwegs guten 2D-Engine auch.
  9. Wie schon oft geschrieben wurde, ist C++ in der Spieleentwicklung klar zu empfehlen, obwohl Java da eigentlich kaum langsamer ist. Extrem Geschwindigkeits-Kritische Elemente werden gerne in C oder gar Assembler geschrieben. ( Wobei letzteres sehr gute Kenntnisse voraussetzt, um es besser als die Compiler zu machen. )

    Was Plattformunabhängigkeit angeht: Das bedeutet fast immer sehr viel mehr Aufwand. In den Anfängen würde ich davon erstmal absehen. Wenn man später mehr Übung darin hat und auch die Unterschiede zwischen den Systemen kennt, kann man sich daran versuchen. Ausnahme dabei sind natürlich Browsergames, welche per se Betriebssystem- und Browserunabhängig sein sollten. ( Wobei bei letzterem der Internetexplorer mächtig ärger machen kann... )

    Für den Anfang würde ich empfehlen, mich in C++ mit SDL einzuarbeiten. Dies funktioniert für alle Betriebssysteme ganz gut und macht den Code am Ende notfalls auch relativ gut portierbar und bringt einem gute Einblicke in die Spieleprogrammierung. Wenn man dann seine ersten kleinen Spiele fertig hat, kann man anfangen, sich an eigene Engines zu wagen.

    Andere Sprachen als C++ und Java für die Spieleentwicklung zu verwenden ( oder gar erst zu lernen ) halte ich für problematisch. Natürlich reicht es, für diverse Dinge, vor allem .Net erleichtert einem den Einstieg in die Programmierung, wobei ich mir denke, dass "Einfacher" nicht unbedingt "Besser" ist. Denn grundsätzlich nehme ich an, dass man die Ambition hat, möglichst bald, möglichst weit hinaus zu kommen. Und jedes Projekt bringt einem gewisse Erfahrung - aber halt nur in der Sprache, die man verwendet.

    Ansonsten bleibt noch zu sagen, dass es sich - wenn man schon Erfahrung hat - lohnt, sich darin zu üben, von jeder Programmiersprache die Vorteile zu nutzen, also beispielsweise rechenintensive Dinge auf C/C++/Assembler auszulagern und die GUI beispielsweise mit .Net zu gestalten. Für den Anfang muss man da jedoch erstmal gewisse Erfahrung in einer Sprache zu machen - und da eignet sich meiner Meinung nach C++ am besten, unabhängig davon, was man vor hat. Denn früher oder später wird man es wahrscheinlich brauchen.
  10. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    kelserific schrieb:
    Extrem Geschwindigkeits-Kritische Elemente werden gerne in C oder gar Assembler geschrieben. ( Wobei letzteres sehr gute Kenntnisse voraussetzt, um es besser als die Compiler zu machen. )
    Nenn mir bitte ein aktuelles Spiel (nicht aus der DOS-Zeit!) in dem ernsthaft Assembler eingesetzt wird.

    Um mit Assembler bessere Ergebnise zu erzielen als mit purem C muss man den verwendeten Prozessor ganz genau kennen, wissen was dort wie läuft und was schneller ist.
    Jeder Assembler-Code lässt sich am Ende nur auf genau dem Prozessor verwenden für den er geschrieben wurde, wenn man mal auf die Idee kommen sollte den Code portieren zu wollen ist das ein extremer Aufwand im Vergleich dazu wenn man C mit einem guten Compiler verwendet hätte. Ein guter C-Compiler optimiert ebenfalls den Code... Assembler selbst zu verbauen ist also meist (fast immer) überflüssig.
  11. hackyourlife schrieb:
    Nenn mir bitte ein aktuelles Spiel (nicht aus der DOS-Zeit!) in dem ernsthaft Assembler eingesetzt wird.
    Weil in der Dos-Zeit die Spiele anders waren? Viele Spiele ( bzw. die Engines ) verwenden gerne eigene Assembler-Elemente. Natürlich wird nicht das ganze Spiel in Assembler geschrieben, aber meines Wissens wurden einige Elemente in OpenGL in Assembler geschrieben, weil halt Compiler nicht immer 100%ig optimal sind. Wie bereits erwähnt, ist das nur äußerst selten der Fall, aber solche Fälle gibt es durchaus.

    hackyourlife schrieb:
    Um mit Assembler bessere Ergebnise zu erzielen als mit purem C muss man den verwendeten Prozessor ganz genau kennen, wissen was dort wie läuft und was schneller ist.
    Der explizite Prozessor ist da gar nicht so wichtig, da die meisten Prozessoren innerhalb ihrer Architektur halbwegs identisch reagieren. Einen Vorteil kann man daraus ziehen, wenn es beispielsweise um exotische Prozessoren geht, wie beispielsweise in der Bulldozer-Architektur, die meist - wenn überhaupt - nur sehr spartanisch unterstützt wird, obwohl sie in bestimmten Gebieten ihre Vorteile hat.
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    kelserific schrieb:
    Weil in der Dos-Zeit die Spiele anders waren? Viele Spiele ( bzw. die Engines ) verwenden gerne eigene Assembler-Elemente. Natürlich wird nicht das ganze Spiel in Assembler geschrieben, aber meines Wissens wurden einige Elemente in OpenGL in Assembler geschrieben, weil halt Compiler nicht immer 100%ig optimal sind. Wie bereits erwähnt, ist das nur äußerst selten der Fall, aber solche Fälle gibt es durchaus.
    Was du hier anschneidest sind die standard-Bibliotheken (wie z.b. libc oder opengl), aber was ich gemeint habe: in welchem Spiel ist im Code der vom Spielentwickler geschrieben wird Assembler enthalten (Spiel-Engine oder Spiel-Code, nicht Standard-Bibliotheken wie libc/opengl/directx).

    Was zur DOS-Zeit anders war: die Prozessoren waren (viel) langsamer, deshalb musste dort ganz genau auf Geschwindigkeit geachtet werden. Genauso war der Speicherplatz beschränkter, Arbeitsspeicher sowie Platten-/Diskettenspeicher. Code musste also möglichst effizient sein.

    Heute hingegen ist es fast egal ob das Programm 1MB oder 10MB hat solange es läuft.

    kelserific schrieb:
    Der explizite Prozessor ist da gar nicht so wichtig, da die meisten Prozessoren innerhalb ihrer Architektur halbwegs identisch reagieren. Einen Vorteil kann man daraus ziehen, wenn es beispielsweise um exotische Prozessoren geht, wie beispielsweise in der Bulldozer-Architektur, die meist - wenn überhaupt - nur sehr spartanisch unterstützt wird, obwohl sie in bestimmten Gebieten ihre Vorteile hat.
    Wenn du in Assembler was programmieren willst willst du doch den Prozessor ausreizen, und dazu wär es nicht schlecht auch alle Extra-Features des Prozessors auszureizen (MMX, SSE, 3DNow!, ...)...
    Aber auch wenn du das nicht nutzt kannst du manchmal etwas schnelleren Code schreiben... trotzdem kannst du den Code nicht auf andere Plattformen portieren (x86=>ARM oder x86=>PPC ...) und du musst dich extrem gut mit dem Prozessor / Architektur auskennen...

    Aber jetzt wirds schön langsam off-topic... der TE wollte nur wissen ob C oder Java verwendet wird.
    Und wie bereits erwähnt: abhängig davon was du vor hast.
  13. hackyourlife schrieb:
    Was du hier anschneidest sind die standard-Bibliotheken (wie z.b. libc oder opengl), aber was ich gemeint habe: in welchem Spiel ist im Code der vom Spielentwickler geschrieben wird Assembler enthalten (Spiel-Engine oder Spiel-Code, nicht Standard-Bibliotheken wie libc/opengl/directx).
    Wenn du OpenGL benutzt, benutzt du also Code, der in Assembler geschrieben ist. Ergo könnte man jedes Spiel, welches OpenGL benutzt zu denjenigen zählen, die Assembler-Code verwenden. Ob der Hersteller diesen nun selbst schreibt, ist ja ziemlich irrelevant. Spiele-Engines werden meistens angepasst ( Auch die Standard-Enginges wie ogl, directx usw. ) um im spezifischen Fall schnellere Ergebnisse zu erzielen. Dies sind meines wissens immer minimale Angelegenheiten. Dennoch kann es im zweifelsfall schneller sein, als die Compiler-Version.

    hackyourlife schrieb:
    Was zur DOS-Zeit anders war: die Prozessoren waren (viel) langsamer, deshalb musste dort ganz genau auf Geschwindigkeit geachtet werden. Genauso war der Speicherplatz beschränkter, Arbeitsspeicher sowie Platten-/Diskettenspeicher. Code musste also möglichst effizient sein.
    Das spielt weniger eine Rolle, da sich der Aufwand mit der Prozessorkraft zusammen skaliert. Wenn man heute die Technik von übermorgen ausreizen will, muss man durchaus jeden Bit beachten, damit sich die Aktion im Millardenfachen rentiert. Wenn ich einen Bit pro Byte spare, spare ich auf 1GB 125MB. Wenn sich das ganze dann noch vervielfacht, kann man sehr schnell sehr viel Leistung sparen, welche anderwertig verwendet werden kann. Was letztenendes dazu führt, dass aktuelle Spiele auf aktuellen Systemen laufen.

    hackyourlife schrieb:
    Wenn du in Assembler was programmieren willst willst du doch den Prozessor ausreizen, und dazu wär es nicht schlecht auch alle Extra-Features des Prozessors auszureizen (MMX, SSE, 3DNow!, ...)...
    Aber auch wenn du das nicht nutzt kannst du manchmal etwas schnelleren Code schreiben... trotzdem kannst du den Code nicht auf andere Plattformen portieren (x86=>ARM oder x86=>PPC ...) und du musst dich extrem gut mit dem Prozessor / Architektur auskennen...
    Natürlich muss man viele Dinge beachten. Aber wie schon am Bulldozer-Beispiel gezeigt, kann es durchaus Vorteile bringen, jede aktuelle Architektur einzubeziehen, auch, wenn die entsprechenden Bibliotheken noch nicht so weit sind oder gar nicht vorgesehen ist, dass sie diese exotischen Architekturen unterstützen.
    Beispielsweise reagiert ein 6-Kern Prozessor anders als ein ( Bulldozer ) 6-Thread-Prozessor. Es liegt also am Ende aktuell noch am Entwickler, solche Mikro-Architekturen zu unterstützen.
  14. Ich kann dir auch aus eigener Erfahrung bestätigen, dass zB. Java oder C# relativ schnell zu erlernen sind und sich gerade für kleinere Games bestens eignen.

    Für große und aufwendige Spiele sei dir aber C++ ans Herz gelegt, da du hardwarnah programmieren und optimieren kannst, auch wenn du dich etwas intensiver damit beschäftigen musst, gerade im Bezug auf Speicherallokierung, Pointerarithmetik etc.
  15. Da geht beides. Ich neh z.B. beides. C++ auf basis der SourceEngine von Valve (gibts bei steam), aber auch jave. mit java ist es fürs einsteigen einfacher, weil du alles schnell erstellen kannst, aber mit c++ ist es einfacher, eine vielfältigkeit zu erschaffen. außerdem kann man mit c++ genause wie in c inline assambler anwenden, was bedeutet, man kann mehr mit der hardware arbeiten (ACHTUNG KOMPLIZIERT). ich würd dir c++ empfehlen.
  16. Ich persönlich arbeite viel lieber mit c++ da meines Wissens nach Java mehr für Browsergames oder Handyspiele gut ist.
    Das einzige Java Spiel was mal groß raus kam war Minecraft.
    C++ Spiele hingegen gibts wie Sand am Meer.
  17. Da Java in einer Virtuellen Box ausgeführt wird leidet Java eben ein bissel an geschwindigkeit
    ansonsten gibt es an JAVA nichts auszusetzen!

    C , c++ , obj c ist in meinen Augen schwierieger!


    Es kommt halt drauf an was Du machen möchtest !
    Wenn Du spiele für nen Iphone entwickel möchtest ist objC das richtige !

    usw .

  18. algorithmpalace

    algorithmpalace hat kostenlosen Webspace.

    Ich benutze Java mit Slick, und bin komplett zufrieden. Es läuft flüssig, schnell und verbraucht nicht viele Ressourcen.

    Davor habe ich natives Java benutzt(Swing+Java2D), das ganze war extreeem leistungshungrig und ungenau. Davon kann ich also abraten.
  19. Da ich sehr viele Spiele schreibe dies Haupsächlich in Objectiv C ich aber auch genügend in Java verwirklichen musste kann ich dir diese
    3D engin ans Herzen legen


    DIESE engin ist auch in JAVA geschrieben!!!!°!

    jMonkeyEngine 3.0 | Java OpenGL Game Engine


    es gibt viele beispiele alles Open sorce !

    Hoffe es Hilft Dir weiter in deiner Entscheidung
  20. nie-genug-gewuerzt

    nie-genug-gewuerzt hat kostenlosen Webspace.

    Ich habe mal gehört, Java sei für die heutigen Spiele zu langsam. Die Frage ist natürlich, ab wann sich das bemerkbar macht. Dennoch würde ich grundsätzlich eher auf C++ setzen.
  21. nie-genug-gewuerzt schrieb:
    Ich habe mal gehört, Java sei für die heutigen Spiele zu langsam. Die Frage ist natürlich, ab wann sich das bemerkbar macht. Dennoch würde ich grundsätzlich eher auf C++ setzen.

    Wenn man nicht vernünftig programmieren kann, kann auch C++ zu langsam werden.

    Generell kommt es eben immer drauf an, was man machen will. Das Java langsam ist, stimmt in der Regel für die Startzeit der JVM. Danach läuft es meistens schneller.
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!