Wie anfangen bzw Tutorial?



  • PRIEST schrieb:

    Die Cryengine2 ist an manchen ecken totaler spaghetti code.

    Ich frag mich obs irgendne "große" Engine gibt die nicht an allen Ecken und Enden Spaghetti/übler Code ist. Wenn ich mir die Gehirn- und Augenvergewaltigung der Half Life 2 Engine anschaue....



  • Schwarzer Frost schrieb:

    Welche Programmiersprache muss man können?
    Ich kann zu 75% C, 25% C++, 20 % Java, 60% Assambler (und PHP).

    Na, dann nimm Assembler! 😃

    Nein, ich würde schon unter C++ programmieren, da hast du auch am ehesten die Voraussetzungen, um an die Grenzen der Performance zu gelangen. Zudem werden die meisten kommerziellen Spiele in C++ programmiert.

    Anfangen würde ich auch mit SFML, das ist meiner Ansicht nach eine sehr schön gestaltete, benutzerfreundliche und sogar schnelle Library für 2D-Grafikprogrammierung. Möglicherweise musst du noch ein wenig mehr C++ lernen, aber das kann sowieso nie schaden 😉
    ______
    Was ich mich allerdings frage: Wie man sein Wissen so einschätzen kann? 100% wird man ganz sicher nie erreichen, und 25% von allem, was C++ bietet, ist schon beträchtlich 🙂
    Aber unter Annahme, dass du damit die reinen Sprachkonzepte (Funktionen, Operatorüberladung, Polymorphie, Templates, ...) meinst, ist vielleicht schon noch etwas mehr nötig. Aber das wird sich ja zeigen... 😉

    TravisG schrieb:

    Ich frag mich obs irgendne "große" Engine gibt die nicht an allen Ecken und Enden Spaghetti/übler Code ist.

    Was ist für dich "gross"? Ist aber irgendwie schade, dass viele Entwickler meinen, saubere und ressourcensparende Programmierung wäre mit zunehmender Projektgrösse und -funktionalität unwichtiger...

    Sieht man auch teilweise an neueren Spielen, dass Entwickler sich einfach auf einen Anwender mit einem superschnellen Computer verlassen. Denn irgendwie ist es ja schon merkwürdig, dass sich die Computerleistung seit Jahren vervielfacht, aber die Spielegrafik sich nicht nur verbessert, zumindest nur in kleinen Schritten. Manchmal hab ich auch das Gefühl, bessere Grafik wird als billiger Vorwand für schlechte Programmierung genommen. Ein Spiel besteht schliesslich nicht nur aus Grafik, und teilweise sind es auch andere Algorithmen, die zur Langsamkeit beitragen... Aber naja, so gut kann ich das auch nicht beurteilen, ist einfach mein persönlicher Eindruck...


  • Mod

    PRIEST schrieb:

    Die Cryengine2 ist an manchen ecken totaler spaghetti code.

    Und ich helfe ihm damit, indem ich ihm mitteile das nicht jede engine gut ist nur weil sie in einem toll aussehendem spiel drin steckt oder groß vermarktet wird.. man soll ja auch keine falschen eindrücke vermitteln gell.

    kannst du uns verraten wie du/man an den CryEngine2 code drankomm(s)t? dachte das gibt's nur fuer licensierte.



  • Bei jemandem der von sich selber behauptet das er zu "60% Assambler" kann und in die Spieleprogrammierer einsteigen will ist die Wahrscheinlichkeit bestimmt sehr hoch, dass er mit der CryEngine 2 anfängt. 🙄


  • Mod

    naja, so ziemlich jede engine ist ueberlastung fuer leute die gerade anfangen, aber das will nicht jeder wahrhaben 😉



  • ist doch logisch, dass eine engine für ein kommerzielles produkt, dass unter zeit- und finanzdruck entsteht spaghetticode enthält. wenn man da kurz vor fertigstellung entdeckt, dass das konzept nicht 100% aufgeht, wird halt eher schnell was reingequetscht, als dass die firma an dem projekt am ende sogar noch pleite geht, nach 3-5 jahren entwicklung. die interessiert doch ned, ob ihr code preise gewinnt, die wollen ihr produkt verkaufen und dafür reicht, dass es läuft... welcome to the real world 😃

    zum thema: wenn man mit 2D anfängt (weise entscheidung) und dabei wirklich was lernen möchte, empfehle ich: 2D engine selbst schreiben. durch verwenden, von fremdem, fertigem code lernt man keine neue technologie kennen. schau dir die konzepte "double buffering" und "page flipping" an und schon wirst du eine idee haben, wie du es angehen kannst.
    es kann durchaus interessant sein, die eigene 2D engine mit jedem spiel, dass man schreibt zu erweitern und zu sehen, wie sie auf einmal immer mehr kann. außerdem ist sichergestellt, dass du die technologien, die du auf diesem wege lernst, auch aus dem ff beherrschst. probiers mal aus... investiere 2-3 wochen mühe und du wirst sehen, es lohnt sich



  • naja, so ziemlich jede engine ist ueberlastung fuer leute die gerade anfangen, aber das will nicht jeder wahrhaben

    Was soll denn bitte "leute die gerade anfangen" bedeuten? (mit dem Programmieren, mit C++?) Man kann schlicht und einfach nicht aus dem Stand mit echter Spiele-Programmierung beginnen. Was soll denn dabei heraus kommen?

    Ich behaupte nach wie vor, dass eine Engine einen Entwickler, der C++ ausreichend gut beherrscht, schnell voran bringt. Es ist effizienter, auf vorhandenen Systemen aufzubauen, als diese ständig fragmentarisch neu zu entwickeln (Man nennt dies allgemein "das Rad nicht ständig neu entwickeln").

    Es spricht nichts dagegen, sich anhand von DirectX oder OpenGL mit den Grundlagen zu beschäftigen. Das meinte rapso vermutlich, und da hätte er Recht.



  • Man kann schlicht und einfach nicht aus dem Stand mit echter Spiele-Programmierung beginnen

    Warum nicht ?
    "Echte" Spiele brauchen eine "Engine" ?



  • Warum nicht ?

    Weil Spieleprogrammierung ziemlich viele Facetten von OOP, 3D zu Networking hat.

    "Echte" Spiele brauchen eine "Engine" ?

    Ja, alles andere ist ineffizient und daher Vergeudung von Kraft und Zeit.


  • Mod

    Erhard Henkes schrieb:

    naja, so ziemlich jede engine ist ueberlastung fuer leute die gerade anfangen, aber das will nicht jeder wahrhaben

    Was soll denn bitte "leute die gerade anfangen" bedeuten? (mit dem Programmieren, mit C++?)

    leute die diese sprache nicht programmierten, leute die dieses themengebiet der programmierung nie kannten, leute denen alles neu ist was mit spieleentwicklung zu tun hat, also die die was _lernen_.

    Man kann schlicht und einfach nicht aus dem Stand mit echter Spiele-Programmierung beginnen. Was soll denn dabei heraus kommen?

    natuerlich nicht, noch unrealistischer ist es aus dem stand gleich auch noch ne engine und spieleentwicklung zu lernen. die meisten sind mit grundlagen schon ausreichend ausgelastet.

    Ich behaupte nach wie vor, dass eine Engine einen Entwickler, der C++ ausreichend gut beherrscht, schnell voran bringt.

    ja, wenn jemand c++ kann, genug praxiserfahrung hat, die grundlagen von spieleentwicklung versteht, was die ganzen zusammenhaenge betrifft, algorithmen usw. der kann mit einer Engine in die produktion von spielen gehen, wenn er die passende gefunden hat und er selber keine besser hinbekommt bzw hinbekommen moechte.

    Es ist effizienter, auf vorhandenen Systemen aufzubauen, als diese ständig fragmentarisch neu zu entwickeln (Man nennt dies allgemein "das Rad nicht ständig neu entwickeln").

    das ist manchmal der fall, oft aber auch nicht. 'das rad nicht neu erfinden' fuehrte in manchen gegenden dazu dass alle den selben wagen fuhren: trabi. und das zeigt, dass es nicht DIE engine gibt, sondern jeder fuer sich entscheiden sollte. manche sind schon mit kleinen opensource engines gluecklich, andere wollen auf beste qualitaet setzen und andere wiederrum schreiben ihre engines selber weil sie dann ein perfekt angepasstes packet haben (und das impliziert nicht, dass man alles from scratch schreibt, es gibt viele die sich fertige scriptsprachen, collisionlibs, soundlibs etc etc. nehmen, aber trotzdem ihr system bauen.)

    deine sicht der dinge muss nicht strict die einzig richtige sein. effiziens beim start der produktion ist nur ein kleiner faktor.



  • "Echte" Spiele brauchen eine "Engine" ?

    Ja, alles andere ist ineffizient und daher Vergeudung von Kraft und Zeit.

    Das ist eine Frage der Betrachtung.
    Wenn das ausschliessliche Ziel die Fertigstellung eines Spiels mit moeglichst geringem Aufwand ist, hast Du sicherlich Recht.
    Man sollte hier aber auch beachten, dass es das allgemeine Verstaendnis und die persoenlichen Faehigkeiten erheblich steigern kann, Dinge einfach mal selbst zu machen - auch wenn das dann laenger dauert.
    Aber das scheint offenbar nicht in Deinem Interesse zu liegen.

    Persoenlich halte ich gerade (einfache) Grafikprogrammierung fuer ideal um mit dem Programmieren zu beginnen weil man Erfolge sofort sehen (und zeigen) kann.
    Sicher sehr viel motivierender als Zahlen in der Konsole ein- und auszugeben...



  • Ich denke wenn man nur ein Hobby-Programmierer ist bzw. nur privat an Spielen herumprogrammiert ist es doch egal ob man jetzt ne fertige Engine verwendet oder nicht.
    Allerdings würde ich keine fertige verwenden - vorallem weil ICH lernen will wie es gemacht wird und zwar in allen Bereichen (gut...auf die untersten ebenen genau muss ich es auch nicht wissen) - aber auf jeden Fall wie man was umsetzt usw.
    Wenn jmd "nur" ein Spiel basteln will soll er ne fertige Engine verwenden - aber letzten Endes ist es nichts anderes als sich in FremdCode einzulesen und diesen zu verstehen.



  • Imo sollte man "Das Rad neu erfinden" und "Zeitverschwendung" mit der Hinsicht auf Spieleenticklung nicht total gleichsetzen. Das wird so wie ich das sehe viel zu oft in einen negativen Zusammenhang gebracht.

    Klar, wenn man wirklich vor hat mit nem Hobby Team ein etwas größeres Projekt anzugehen, dann wird es einfach nicht anders gehen als sich eine der 2 oder 3 großen OS-Libs zu holen. Die Zeit und meistens auch die Kenntnis der Entwickler reicht einfach nicht aus um für das eigene Projekt eine Engine in den Boden zu stampfen, nur damit man sich im Endeffekt ein wenig besser damit auskennt.

    Ich habe natürlich keine Statistiken, aber ich vermute, das auch heute die meisten Spieleprogrammierer noch "1-Mann-Teams" sind, die Spiele zum Vergnügen oder aus Interesse alleine programmieren. Und gerade für diese ist es oftmals viel komfortabler und auch "spassiger" eine kleine "Basisengine" zu schreiben, die man im Laufe eines Spielprojekts nach und nach erweitert und verbessert (ich spreche da natürlich aus eigener Erfahrung)

    Engines wie die Irrlicht-Engine / Irrklang usw sind für solch einfachen Spieleprojekte oft einfach zu überladen.



  • Ich denke wenn man nur ein Hobby-Programmierer ist bzw. nur privat an Spielen herumprogrammiert ist es doch egal ob man jetzt ne fertige Engine verwendet oder nicht.
    Allerdings würde ich keine fertige verwenden - vorallem weil ICH lernen will wie es gemacht wird und zwar in allen Bereichen (gut...auf die untersten ebenen genau muss ich es auch nicht wissen) - aber auf jeden Fall wie man was umsetzt usw.
    Wenn jmd "nur" ein Spiel basteln will soll er ne fertige Engine verwenden - aber letzten Endes ist es nichts anderes als sich in FremdCode einzulesen und diesen zu verstehen.

    Wenn ich zurückdenke wie mir die Lehrer damals in der Schule C/C++ beibringen wollten, war das eigentlich alles ziemlich nervig und vorallem langatmig.
    Nach den HelloWorld-Programmen ohne irgendwelchen Erklärungen zu >void< main und was "#include" sein soll...usw kam dann sofort als aufgabe Sinus von 'Eingabe' ausgeben. Dinge mit denen man so einfach überhaupt nichts anfangen kann in dem Alter. Ich war damals auch echt schlecht weil mich das alles nicht interessiert hat. Damit ich dann aber (weils im nächsten Jahr noch schwieriger werden sollte) nicht durchfalle hab ich in den Sommerferien angefangen ein kleines Spiel zu programmieren. Ein TextRollenSpiel/Adventure.
    Einfach mit Auswahlmöglichkeiten
    "1.) Etwas zum kloppen finden"
    "2.) Zum Schmied gehen"
    usw....
    Da war alles dabei...von Zufallsauswahl welches der Monster der Spieler im Wald treffen sollte. Ein eigenes Programm zum Monster erstellen (einfach name und attribute des monsters eingeben und das programm macht daraus quellcode den ich nur kopieren muss)
    File Handling, formatierte Textausgabe, Pointer,....war alles dabei...
    Klar...wenn ich mir den Code jetzt ansehe ist es einfach nur furchtbar was ich da damals verbrochen habe....aber das Spiel selbst ist trotzdem immer noch unterhaltsam.
    Danahc hatte ich auch keinerlei Probleme mehr mit dem Programmieren in der Schule...sogar ganz im Gegenteil...
    Daher würde ich es schon empfehlen mal mit der Konsole anzufangen und sich da einzufinden...Direkt mit WinAPI und Co beginnen ist zu viel denke ich.

    EDIT: seltsam....Ich konnte meine Beitrag nicht editieren...



  • Bei meinem Programmierunterricht war das damals genauso.
    Ich finde solche Programme rauben einem einfach die Motivation. Wenn du jetzt eine Engine/Lib schreibst lernst du natürlich viel dazu. Und kannst diese dann mit hoher Sicherheit auch besser verwenden als eine andere.
    Aber von einer Engine allein sieht man nicht viel. Und ich denke, dass man gerade am Anfang schnell auf ein sichtbares Ergebnis kommen möchte. Einem "Anfänger" raubt es einfach den Spass, wenn er tagelang an etwas sitzt und dann nachher erfährt, dass es nicht funktioniert. Dann ist auch noch debuggen angesagt. Letztendlich hat man kein Bock mehr.
    Zum anderen weiß man, ohne vorher eine andere Engine benutzt zu haben, garnicht was eine Engine jetzt so großartig tun können soll.

    Ich hab damals auch mit dem RPG-Maker angefangen!
    Da konnte ich allerdings noch keine Programmiersprache. Bin dann zu PHP gegangen, und letztendlich zu C++.
    Leute, die vom RPG-Maker kommen, sind gewohnt, direkt ein Ergebnis zu haben. Ich weiß nicht, wie das bei dir ist, Threadersteller.

    Mein Fazit:
    Man verwendet erstmal eine Engine. Weiß, was man mit ihr tun muss. Hat ein sichtbares Ergebnis. Lernt ebenfalls die Sprache kennen, nur nicht so trocken, sondern mit mehr Spass. Und setzt sich an die Engine dran, wenn man konkrete Vorstellungen hat.



  • Mein Fazit: Man verwendet erstmal eine Engine. ...
    und setzt sich an die (eigene) Engine dran, wenn man konkrete Vorstellungen hat.

    Genau so würde ich es einem Einsteiger in die Grafik-/Spieleprogrammierung auch empfehlen. Voraussetzung sind aber bereits ausreichend gute C++ Kenntnisse.

    Selbstverständlich ist es interessant und lehrreich, sich mit mathematischen/grafischen Grundlagen und den Libs DX und OGL zu beschäftigen, wenn man Zeit und ausreichend Geduld hat.

    Die oft propagierte These "Der Weg ist das Ziel" gefällt mir hier allerdings überhaupt nicht. Ein Einsteiger sollte möglichst schnell klare Vorstellungen über das erreichbare Ziel gewinnen, dann den für ihn richtigen Weg (flach oder steil, gekrümmt oder geradlinig) einschlagen und vor allem auch am Ziel ankommen.
    Motivationskurve und Lernkurve sollten eben zusammen passen. 🙂


Anmelden zum Antworten