Spiele programmiersprache

  • Hallo,

    Ich habe bereits in Java, 3D Spiele (wie kleine Egoshooter), und in C (nicht C++!), Spiele wie Snake programmiert.
    Allerdings stoße ich bei beiden auf ein Problem!
    Java.) - 'Clean but Slow' (Auserdem ist Java bei Spielen auch EXTREM Fehleranfällig)
    + Platformunabhängig

    C .) - C ist eine REINE Textkonsole, und daher EXTREM schlecht für Spiele.
    + C ist 'Fast but Dirty' daher ist C (wenn man es nicht perfekt beherscht) generell Fehleranfällig.

    Daher jetzt meine Frage:
    Welche Programmiersprache ist die am allergeeignetsten Sprache für 3D-Spiele?

  • C++ hat sich vom "Markanteil" her eingebürgert - Nicht zwangsweise weil es die beste Wahl ist, der Erfahrungsschatz und verfügbares Zeug dazu ist einfach enorm. Historisch gewachsen. Es ist halt auch dieser Mittelweg zwischen Java und C.

    Es gibt auch so Sachen wie XNA, die direkt auf Spieleentwicklung getrimmt sind (im Microsoft-Bereich, wohlgemerkt)

  • Deine Aussagen würd ich nicht unterschreiben ;). Fehleranfälligkeit liegt definitiv nicht an Java, sondern am Programmierer. Das könnte man maximal über C /C++ sagen, wenn man sich mit Speicherverwaltung nicht auskennt. C ist auch keine Textkonsole, sondern eine Programmiersprache. Es gibt einen Haufen von Frameworks für C/C++, mit denen du 3D Spiele entwickeln kannst. Zudem ist C++ nur eine Erweiterung von C, die sich auf verschiedene Paradigmen (zB Objektorientierung) stützt. C++ ist seit Jahren Standard für 3D Spiele, wobei ich auch schon welche in C# (sehr ähnlich zu Java) gesehen hab. Mittlerweile gibts auch schon genug OpenGL Framworks für Java und C#, mit denen sich 3D Spiele entwickeln lassen. Wenn du aber auf Performance aus bist, würd ich die aber nicht besonders empfehlen.

    edit: Übrigens is das doch recht bekannte Minecraft in Java geschrieben.

    Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

    freiBär für alle!
    https://twitter.com/freiBaer

  • ok, danke für deine Hilfe.
    Könntest du mir da eine besondere Programmieroberfläche (muss natürlich gratis sein) empfehlen?
    Habe schon Erfahrung mit Code::Blocks und DevC++.
    Hätte zwar auch (von der Schule aus) MS Visual Studio zur verfügung, aber die Oberfläche ist nicht so mein Ding.

    Zitat

    Das könnte man maximal über C /C++ sagen, wenn man sich mit Speicherverwaltung nicht auskennt



    Und da liegt auch noch ein Problem:
    Wir lernen größtenteils C nur als Einstieg in die Programmierung und lernen daher auch nur mit Text zu arbeiten,
    Werte zu berechnen etc...
    Und in C vorallem auch die Grundkenntnisse wie z.B. Strings, Arrays, natürlich auch Schliefen, Funktionen, usw...
    Also heißt das soviel wie das wir in C die programmierung extrem Oberflächlich machen.

    Und mitlerweile funktioniert bei mir "3D-Java" auch nichtmehr so gut,
    weil mitlerweile keine vernünftigen *.jar Files von JMonkeyEngine mehr erstellt werden.
    Unser Schwerpunkt liegt auf Java.

    Zitat

    Fehleranfälligkeit liegt definitiv nicht an Java, sondern am Programmierer



    Mit der Fehleranfälligkeit meine ich auch auch nicht direkt Java, sonder vieleher die Systemverträglichkeit.
    Der Thread "Fehler beim Wasser" ist auch von mir und der liegt nicht an der Programmierung sondern
    eher an der "Verträglichkeit zur Hardware" bzw der der Treiber.
    und ich persöhnlich finde einfach z.B. C++ schöner zum Spieleprogrammieren, weil Java bei meinen Treibern
    nicht all zu gut "ankommt".

    Und mitlerweile funktioniert bei mir "3D-Java" generell nichtmehr so gut.

    5 Mal editiert, zuletzt von Alpha_omega (3. Mai 2011 um 20:50)

  • Wenn bei euch in der Schule der Schwerpunkt auf Java liegt würde ich einfach vorerst dabei bleiben. Es spricht nichts dagegen ein Spiel in Java zu programmieren. Bei der Performance hat man zwar ein paar Einschränkungen, aber wenn du nicht gerade Far Cry 3 programmieren willst dürfte dich das nicht all zu stark einschränken. Außerdem lernst du dann gleich wie du deinen Code ordentlich optimierst. Später, wenn du mehr Erfahrung mit Programmierung hast dürfte es nicht all zu schwer fallen auf eine andere Sprache wie z.B. C++ umzusteigen. Wenn du dich für Java entscheidest würde ich dir aber empfehlen nicht Java3D sondern OpenGL Bindings wie LWJGL (wird auch beim weiter oben erwähnten Minecraft verwendet) oder JOGL zu verwenden.

    Aus 100% Apfelsaftkonzentrat. Kann Spuren von Nüssen enthalten.

  • Dazu fällt mir folgendes ein, was ich vor Ewigkeiten mal gelesen hab, wens interessiert: http://www.mistybeach.com/articles/WhyID…geProjects.html



    Ok, da muss ich dir recht geben. Meine letzten Arbeiten in C++ liegen schon ca. 5 Jahre zurück. Vielleicht hab ichs ein wenig zu stark vereinfacht ;)

    Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

    freiBär für alle!
    https://twitter.com/freiBaer

  • Javascript mit Canvas und WebGL. o/
    Im ernst, ich hab mir zumindest mal das Canvas Element angesehen und bin begeistert davon. Man kann sehr schnell was auf die Beine stellen und das debuggen war eine regelrechte Freude. Nachteile gibts aber auch genug:
    - keine Operatorüberladung. Sehr ungut für Vektor und Matrizenrechnungen. (Ich warte sehnsüchtigst darauf, dass jemand in Javascript einen Javascript Parser schreibt, der Operatorüberladung einführt)
    - Bilder können nur asynchron geladen werden.
    - keine Methodenüberladung. Auch Käse.
    - Keine Gamepads. Javascript erkennt nur Tastatur und Maus.
    - Abspielen von Sounds ist auch nicht so trivial.

    Nimm halt wasauchimmer dir liegt und für deine Vorhaben ausreichend ist.

  • Auf meiner Homepage findest du ein paar Spiele, die ich in den letzten Jahren programmiert habe. Die meisten davon habe ich in C++ geschrieben, wobei ich für die Grafik OpenGL verwendet habe. Meiner Meinung nach ist das eine gute Kombination. C++ ist eine relativ leicht zu erlernende und absolut mächtige Programmiersprache, für die es Compiler gibt, die sehr effizienten Code erzeugen. Mit IDEs wie Microsoft Visual Studio gestaltet sich das Programmieren sehr angenehm. OpenGL ist besonders einfach zu erlernen, und man kann damit sowohl 2D- wie auch 3D-Grafik erzeugen, ohne sich erst mit den der 3D-Projektion zu Grunde liegenden mathematischen Formeln herumschlagen zu müssen.

    Eines der Spiele auf meiner Homepage habe ich mit C# und XNA Game Studio entwickelt. XNA Game Studio ist ein Framework, das vor allem für Anfänger sehr gut geeignet ist, weil es einem bei gewissen Routinearbeiten hilft. Es gibt einen vordefinierten Game Loop, die Methoden Draw, Update etc. werden in einem bestimmten periodischen Abstand in vordefinierter Reihenfolge aufgerufen - um diese Sachen muss man sich also nicht mehr kümmern. Man muss die Methoden nur mehr mit Inhalt befüllen. Wie gesagt, ist das für Anfänger sehr hilfreich, aber wenn man ein bisschen Erfahrung in der Spieleprogrammierung hat, kann man ohne weiteres auf C++ und OpenGL umsteigen. Denn alles, was XNA einem abnimmt, kann man auch selbst implementieren - es ist halt mit etwas höherem Aufwand verbunden.

    Ein Tutorial, das ich zum Thema XNA geschrieben habe, findest du ebenfalls auf meiner Homepage.

  • DirectX ist Windows only, OpenGL ist relativ Plattformunabhängig. DirectX enthält mehrere Komponenten die für Spiele nützlich sind, OpenGL ist daher eher mit DirectX Graphics vergleichbar. OpenGL steht bei Spielen noch etwas Abseits, meinen Beobachtungen nach dauert es auch meistens länger bis neue Funktionen in OpenGL einzug finden als in DirectX. Was besonders schade ist, ist das ATI/AMD-Treiber sich manchmal etwas schwer mit OpenGL tun (wie bspw. in deinem anderen Thread) obwohl sie es eigentlich Unterstützen.

    "Erfahrungen sammeln heißt Fehler begehen." - Herbert George Wells

  • Also ich würde jetzt nicht sagen das alle anderen fehlerfrei sind, aber die meisten & häufigsten Probleme gibt es mit den ATI/AMD-Treibern.

    "Erfahrungen sammeln heißt Fehler begehen." - Herbert George Wells

  • nicht die programmiersprache ist ausschlaggebend, sondern die gameengine oder das framework.
    du kannst ja mal mit unity3d beginnen, wenn du magst. kannst dann wahlweise in c#, javascript und boo programmieren.

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.» 

    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • ok, danke für deine Hilfe.
    Der Thread "Fehler beim Wasser" ist auch von mir und der liegt nicht an der Programmierung sondern
    eher an der "Verträglichkeit zur Hardware" bzw der der Treiber.
    und ich persöhnlich finde einfach z.B. C++ schöner zum Spieleprogrammieren, weil Java bei meinen Treibern
    nicht all zu gut "ankommt".



    Hmm, deine Treiber wissen doch überhaupt nicht in welcher Sprache dein Spiel geschrieben ist.

    - Clemens

    To avoid horrible confusion, please pronounce the G in the word GNU when it is the name of this project.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!