Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 33 von 33

Thema: Programmiersprache für games

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    C++. Es lohnt sich.

    2D:
    C++&SDL
    3D
    C++&SDL+OpenGL

    Wenn du alles selbst schreibst hast du keine Kosten und bist vor allem bei gutem Code auch plattformunabhängig. Im Idealfall läuft dein Spiel dann auch auf deinem Toaster.
    +1

    Am besten die Kombination von C++, SDL (und OpenGL) innerhalb von Eclipse mit CDT-Plugin.

    btw. Ich muss mal schauen, wie ich SourceCode unter Windows kompiliert kriege mit MinGW. Unter Ubuntu Linux ist das kein Problem.

  2. #2
    Zitat Zitat von niR-kun Beitrag anzeigen
    btw. Ich muss mal schauen, wie ich SourceCode unter Windows kompiliert kriege mit MinGW. Unter Ubuntu Linux ist das kein Problem. :D
    Ich hab zwar Code::Blocks als bevorzugte IDE, da es flott läuft und plattformunabhängig ist, aber um SDL in MingGW laufen zu kriegen musste ich erstmal folgende Linker Flags reinschmeißen:
    Zitat Zitat
    -lmingw32
    -lSDLmain
    -lSDL
    -lSDL_image
    Wobei -lSDL_image offensichtlich optional ist, nur BMPs zu verwenden würde ich aber niemandem raten. Auch wichtig ist es auf den richtigen #include zu achten. Bei den SDL Libs, die ich unter Windows habe ist es beispielsweise SDL_Image.h während es unter Ubuntu SDL_image.h ist.



    Zitat Zitat
    Du bist witzig.
    Bau einen Rechner oder zumindest nen Prozessor+Grafikprozessor in deinen Toaster und es wird laufen.

  3. #3
    Ich finde sowieso Kyuu sollte mal ein paar konstruktive Sachen bringen, als ständig den Leuten nur zu sagen, wie wenig Ahnung sie haben.

    zu D: Ist sicher vielversprechend, genau wie Go, aber im Endeffekt macht es keinen Sinn einem Einsteiger auf diese Sprache zu bringen, wenn es noch nicht absehbar ist, ob sie sich irgendwann durchsetzen wird. Lieber doch erstmal was solides und wenn man dann vielleicht wirklich C kann, dann ist D auch gar nicht mehr so fern!

  4. #4
    Zitat Zitat von Aperetif Beitrag anzeigen
    Ich finde sowieso Kyuu sollte mal ein paar konstruktive Sachen bringen, als ständig den Leuten nur zu sagen, wie wenig Ahnung sie haben.
    Du solltest mal deinen Groll gegen mich beiseite legen und meine vorherigen Posts hier nochmal in Ruhe durchlesen, hoffentlich entdeckst du dann die ein oder andere "konstruktive Sache".

    Ich finde solche Vorhaltungen nehmen der Diskussion die Basis.

    Zitat Zitat von Aperetif Beitrag anzeigen
    zu D: Ist sicher vielversprechend, genau wie Go, aber im Endeffekt macht es keinen Sinn einem Einsteiger auf diese Sprache zu bringen, wenn es noch nicht absehbar ist, ob sie sich irgendwann durchsetzen wird. Lieber doch erstmal was solides und wenn man dann vielleicht wirklich C kann, dann ist D auch gar nicht mehr so fern!
    D hat eine Binärschnittstelle zu C, das heißt du kannst von D aus C-Code aufrufen und ich glaube sogar umgekehrt mit einigen Einschränkungen, die den GC betreffen.

    Jetzt wirst du dir wahrscheinlich denken, dass man gerade deswegen zuerst C lernen sollte, aber das ist kein Argument dafür, denn die Schnittstelle zu C ist eher dafür gedacht, bereits vorhandene C-Bibliotheken von D aus zu nutzen und damit ist es nichts, was man bei D unbedingt benötigt.

    Verstehe mich nicht falsch, ich finde dass C sogar heute noch einen festen Platz in der Informatik hat und diesen kaum in den nächsten Jahrzehnten verlieren wird, aber das heißt nicht, dass man es unbedingt benötigt und in der Tat, ich kenne einige, die mit C nur in der Schule in Berührung kamen und heute, ohne sich damit nochmal näher zu beschäftigen, kaum über Hello World hinaus kämen. Außerdem kann ich dein Argument auch umdrehen: Wenn man D kann, ist C auch nicht mehr weit!

    Das dazu. Und nun zu dem, was mich hier stört: "durchsetzen" und "solide". Was ist für dich "durchsetzen"? Anwendung im professionellen Bereich? Verdrängung von Sprachen wie C++? Das letztere ist tatsächlich noch nicht eingetreten, auch wenn ich persönlich einen Trend dahin sehe und D das Zeug dazu hat. Im professionellen Bereich wird D allerdings bereits eingesetzt und hat sich damit mehr als bewährt. Nun zu "solide". D wird bereits seit 1999 entwickelt und wenn du auf der offiziellen Website warst, hast du sicher bemerkt, dass die Sprache sich bereits in der zweiten Version befindet, es also bereits eine Version erreicht hat, die eine Vollständigkeit signalisiert. Dann wirst du sicherlich bemerkt haben, dass D von zahlreichen Compilern und vielen Platformen unterstützt wird, von vielen professionellen Entwicklungswerkzeugen, wie etwa SCons bereits berücksichtigt wird, eine äußerst umfassende Standardbibliothek besitzt, sowie eine anerkannte alternative Community-Standardbibliothek, die noch viel mehr bietet und - nicht zu vergessen - für so gut wie alles Bibliotheken bietet, von denen die meisten auf die bereits vorhandenen C-Bibliotheken zurückgreifen.
    Allen Ernstes, das ist für mich sehr solide.

    Und zum Schluss: Es macht sehr viel Sinn, einem Einsteiger D zu empfehlen (auch wenn ich das nicht getan habe, sondern im speziellen Fall des OP Python und Lua empfohlen habe), denn es steht weder im vornherein fest, dass er jemals im professionellen Bereich tätig sein wird und damit auf "Industriestandards" fixiert sein muss, noch welche Sprache er benötigen wird. Außerdem weißt du ja, wenn man D kann, ist jede andere Sprache nicht mehr weit! Nicht zu vergessen: D hat alles was man braucht, ist "solide", sehr weit fortgeschritten, modern, konsistent, performant, kurzum: eignet sich hervorragend für so gut wie jeden Zweck, mit ein paar Ausnahmen. Man sollte auch bedenken, dass es der erste Eindruck ist, der zählt und da sollte man optimalerweise etwas nehmen, das es "richtig" macht.

  5. #5
    Was das lernen selbst angeht, eine Sprache können ist besser als keine Sprache können.

    Wenn man jetzt C# lernt und Microsoft in 5 Jahren sagt "oh nose, wir stoppen das C# projekt weil wir gegen Java eh abscheissen kthxbye" ist das immernoch wertvolle Programmiererfahrung. Die "hat Zukunft"-Debatte kommt immer so rüber, als wenn jemand mit 5 Jahren Erfahrung in C# in Java genau so viel kann wie jemand, der in seinem Leben noch nie ein "Hello World" zustande gebracht hat.

    Ob nun der eine Dialekt mehr Zukunft hat als ein anderer ist imo völlig scheissegal.

  6. #6
    Zitat Zitat von Aperetif Beitrag anzeigen
    Ich finde sowieso Kyuu sollte mal ein paar konstruktive Sachen bringen, als ständig den Leuten nur zu sagen, wie wenig Ahnung sie haben.
    Wenn man mal als ausstehender Leser dazu seinen Senf beigeben darf: Meinst du nicht das du da einfach konstruktives überliest? Mit offenen Augen quasi? Wenn man sich deine erste Reaktion anschaut:

    Zitat Zitat
    Wenn man irgendwann mal professionell arbeiten will, wird man aufgrund von Industriestandards und Mächtigkeit der Sprache und der Vielfalt an Bibliotheken nicht um C/C++ herumkommen, capisci?
    Dann ist das kaum die Reaktion die man auf ein "wie bitte?" erwartet. Es ist eher, pardon, die Reaktion eines verletzten Egos. So reagieren in der Regel Programmierfortgeschrittene die Glauben sie hätten nun wirklich Ahnung von der Materie. Nicht unbedingt die beste Art und Weise eine konstruktive Diskussion zu starten.

    Kyo mag nicht wirklich freundlich reagieren, aber er sagt klar und deutlich was Sache ist. Mehr nicht.

    @Thema
    Spieleprogrammierung ist so eine Sache für sich. Sie kann klasse als Motivationsträger dienen um die Programmierung kennen zu lernen. Über die ersten Versuche in HTML, was ja noch nichts mit Programmierung an sich zutun hatte, zu der Maker P&C Sprache, zu solchen Exoten wie Blitz Basic also dann anschließend Java, C++ und Consorten hat sie mich zu meiner jetztigen Berufswahl motiviert. Auch wenn es nie wirklich zu einem Spiel gereicht hat.

    Dir eine Sprache zu empfehlen ist so eine Sache. Eine Sache die immer nötig ist, ist das du am Anfang damit Leben musst das du nicht viel siehst von dem was du da tust. Du musst also Spaß daran finden das dein Code Schrift und ähnlicher hervor bringt. Wie Corti schon sagt ist dabei die Erfahrung die Sache die den Brei fett macht. Selbst der Maker hat dort einen gewissenen Lernwert, da man auch hier die nötigen Grundstrukturen in eingeschränkter Form besitzt. Eine Abfrage funktioniert soweit überall gleich. Also solltest du nach meiner Meinung etwas nehmen was dich motiviert. Was dir Spaß macht das Thema weiter zu verfolgen. Das ist in meinen Augen der beste Garante dafür das du dich weiter entwickelst und mehr lernst.

    Zum reinschnuppern kann ich dir also durchaus diverse Basic Dialekte wie z.B. Blitz Basic empfehlen. Du hast einen relativ klaren Befehlssatz mit dem du schnell sichtbare Ergebnisse erzielen kannst. Wie gesagt, auch der Maker ist durchaus dafür zu gebrauchen um sich die Grundlagen beizubringen.

  7. #7
    Wie schon erwähnt ist der Perfomanceunterschied zu gering um allein danach zu entscheiden welche Sprache man wählt.

    Ich wollte nach dem Maker zu C++ gehen, allerdings habe ich nach einem Monat wieder aufgehört. Der Sprung vom Maker war mir einfach zu groß und Ergebnisse konnte man keine aufregenden sehen (grafische ^^).
    Seitdem bin ich bei den BlitzBasic Dialekten (aktuell BlitzMax) hängen geblieben worüber ich zurückblickend sehr froh bin. Meiner Meinung nach ist C++ keine Standardsprache mehr, eher ein Standardformat, was eben auf allen exotischen Platformen läuft. Allerdings finde ich es für einen Anfänger viel zu überladen und man braucht lange bis man mal einen richtigen Überblick kriegt.

    Die Sprache musst dir aber du aussuchen, denn wenn sie dir nicht gefällt (und sei es nur die Syntax) wirst du keinen Spaß dran haben.

    Meine Empfehlungen: BlitzMax, Phyton(mit Py Game), Lua

    Geändert von Greyce (28.08.2010 um 23:06 Uhr)

  8. #8
    Zitat Zitat von Greyce Beitrag anzeigen
    Meiner Meinung nach ist C++ [...] Allerdings finde ich es für einen Anfänger viel zu überladen und man braucht lange bis man mal einen richtigen Überblick kriegt.
    Man merkt C++ an, dass es im Grunde steinalt ist. In den Jahren der Entwicklung und bei den einzelnen Komponenten wurde anders als bei zB Java weniger drauf geachtet alles in der selben Struktur zu halten. Java ist viel durchstrukturierter und somit einfacher lernbar. Bei C++ hat man selbst als Fortgeschrittener noch seine "wtf, warum ist DAS jetzt so?"-Momente.

    Klingt strange aber wer beide mal gemacht hat wird wissen, was ich mein.

  9. #9
    Java hat dafür das Problem einer in die Jahre gekommenen API. In C++ gibt es dafür keine wirkliche einheitliche API. Es gibt Boost und diverse Sachen, aber trotzdem habe ich das Gefühl das jedes C++ Programm seine eigenen Standard-Datenstrukturen und Algorithmen schreibt, das Rad also jedes Mal neu erfunden wird oO Was mich in C++ aber eher stört ist, dass es dem Programmierer zu viele Möglichkeiten gibt. Dadurch das selbst so grundlegende Operatoren wie der Zuweisungsoperator überladen werden können, kann man sich letztlich überhaupt nicht mehr darauf verlassen das ein Stück Code das tut was man von ihm erwartet. Hier ist Java halt sehr übersichtlich, da die Sprache in sich recht einfach aufgebaut ist. Dafür muss man halt sehr viel Code schreiben ^^°
    So Scriptsprachen wie Python, Ruby oder Lua sind natürlich auch ganz was feines. Ich denke aber das es für Anfänger sehr sinnvoll ist sich erst mal mit einer statisch typisierten Sprache vertraut zu machen um überhaupt die Ideen und Konzepte der Typisierung zu verstehen. Denn auch wenn in Python oder Ruby die Variablen keine Typen haben, sind deren Objekte dennoch strikt typisiert.

  10. #10
    Das Rad muss nicht immer neu erfunden werden, wenn man frei-nutzbare Code-Schnipsel (sogenannte Snipets, z.B. aus Tutorials) nutzt um seinen Code zusammen zu schreiben (Code-Recycling). C und C++ sind die meist-genutzten Programmiersprachen, da findet man vieles, was man haben will, und viel Unterstützung.

    Ich nutzte an der Runtime, die ich unter Ubuntu schreibe, C++ als Programmiersprache, für die Grafik ist SDL verantwortlich und für die Skriptbarkeit wird LUA rein gelinkt. Es funktioniert wunderbar damit.

    Bei Java und .Net braucht man immer noch eine VM die den Bytecode just-in-time interpretiert. Mono ist zwar schon weit, aber ist nicht 100%-.Net kompatibel.

    PS: Einziges Manko bei SDL: Es fehlt die Darstellung von Schrift. Es gibt zwar das Paket SDL_TTF, das aber irgendwie rumzickt. In 9 von 10 Fällen stürzte mein Programm mit einer "Segmentation Fault" ab. Deswegen nutze ich jetzt einen Bitmap-Font.

  11. #11
    Zitat Zitat von niR-kun Beitrag anzeigen
    Bei Java und .Net braucht man immer noch eine VM die den Bytecode just-in-time interpretiert. Mono ist zwar schon weit, aber ist nicht 100%-.Net kompatibel.
    Für alle die jetzt denken eine VM ist eine Seltenheit: Nein, jeder hat so was auf seinem Rechner, der einen modernen Browser nutzt.

    @Topic

    Was Maki und Kyuu gesagt haben sagt eigentlich alles. Ich hab mit dem Maker angefangen und bin da zu Java gegangen.

  12. #12
    Zitat Zitat von R.D. Beitrag anzeigen
    Für alle die jetzt denken eine VM ist eine Seltenheit: Nein, jeder hat so was auf seinem Rechner, der einen modernen Browser nutzt.
    Die Java VM, ob nun IceTea6 oder die OpenJDK/JVM nutzt ist ja egal - funktioniert größtenteils überall. Bloß bei .Net ist das Problem, dass es auf älteren Windows-Versionen nicht geht und nur eingeschränkt mit Mono läuft.

    Ob man nun Programmier-Sprachen nutzt, die auf einer VM laufen oder die nativ, ist eine Glaubensfrage. Beides hat Vor- und Nachteile:

    VM:
    Vorteil: - läuft auf so gut wie allen Systemen (.Net nur teilweise)
    - kein neu-kompilieren nötig bei anderem OS
    Nachteil: - die VM muss installiert sein und unterstützt werden
    - der Bytecode muss jedes mal beim aufrufen neu interpretiert werden

    nativ:
    Vorteil: - man brauch nur einmal zu kompilieren
    - keine VM nötig
    Nachteil: - für anderes OS (und z.B. bei Update der Shared-Libarys) neu-kompilieren notwendig

    PS: Ich hab mit dem RM2K angefangen, bin zwischendurch mal bei Pascal geblieben, dann auf RM2K3 umgestiegen und habe dann angefangen zu C++ um zu steigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •