Simpler einstieg
-
hey!
wollte mal fragen wie man am besten in spiel grafikprogrammierung einsteigen kann, mit c(++) wäre mir am liebsten (wenn das geht).
verweise auf tuts u.ä. wären sehr nett, denn der bereich interessiert mich schließlich schon und hab lediglich keine ahnung wie man darin einsteigen soll
danke im vorraus!
-
Die Experten raten den Einsteigern, erst einmal die Grundlagen von C++ zu erlernen bis das sauber und fest sitzt. Dann langsam in die Systemprogrammierung seiner Wunschplattform reinschnuppern.
Selber machen tut/tat es natürlich keiner von ihnen so. Ich empfehle, entweder von einem überschaubares aber interessanten Spiel die Quelltexte zu beziehen und es das dann zum Spaß nach Herzenslust modifizieren.
Oder eine Engine wie Ogre oder Irrlicht. Die bieten auch Tutorials.
PS: Die Empfehlung zu einem reinem C++ Grundlagenbuch bleibt davon natürlich unberührt.
-
Hi,
Ja, du solltest SEHR gut C(++) können...
Danach solltest du das FAQ suchen, da steht das meiste...Danach kommen alle wieder und wollen MMORPG...
Dann fragen alle, statt zu suchen, ob DirectX(=Microsoft) oder OpenGL (=auch Linux, Mac, ...) (such einfach danach)
--------------------------------
2D: (sf) SDL (Forum durchsuchen)
(ggf. auch mit OpenGL erweiterbar... => 3D )Wenn du einen leichten Einstieg in die 3D-Programmierung suchst, guckst du:
-glfw.sourcefourge.net (Ein plattformunabhängiges OpenGL-Framework, siehe auch "Tutorial")
danach:
-nehe.gamedev.net (unten rechts auch ein Link => deutsch)--------------------------------
danach:
-Such dir nen kleines Opensource-Spiel (z.B.: "Supertux" oder einen anderen Clone, schau dir den Quelltext an, schreib ein paar Änderungen und dann kannst du ein eigenes Spiel anfangen...!!!Du brauchst GEDULT!!!
P.S.: Nimm doch bitte O-GL, dann haben die Linuxuser/Macs auch was davon...

-------------------------------
edit:
Hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-212031.html
-
Kommt natürlich auch drauf an, was du machen willst. Sollen es verhältnismässig simple 2D-Jump'n'Runs wie Super Mario sein? Oder willst du gleich einen EgoShooter oder ein MMORPG basteln? Dazu würde ich dir allerdings nicht raten, die Gefahr ist gross, dass du dich übernimmst und die Motivation an der Sache verlierst. Unterschätz aber auch die Programmierung eines Jump'n'Runs nicht, am Anfang wäre wohl das Beste ein Snake oder etwas in der Art.
Und was die C++-Grundlagen betrifft, es ist natürlich schon von enormem Vorteil, wenn man Dinge wie Funktionen, Referenzen, Zeiger, Klassen und die wichtigen OOP-Konzepte, die STL und andere Dinge sehr gut kennt. Auch wenn manchmal die Verlockung zu gross ist, sich bei etwas Praktischem zu versuchen, sollte man nicht zu übereilig sein. Ich selber wusste auch zu wenig von den Grundlagen, das führte natürlich dazu, dass ich oft schlechten, unschönen und langsamen Code schrieb (zum Teil immer noch schreibe ;)).
Ich habe mit 2D-Programmierung angefangen, allerdings würde ich dir statt SDL (habe ich anfangs auch gelernt) zu SFML raten, das ist sehr benutzerfreundlich und von der Performance her relativ schnell. Im Gegensatz zu SDL ist es auch in C++ geschrieben und verfolgt mehr objektorientierte Ansätze. Mit SDL kommst du (gerade bei einem Jump'n'Run) ziemlich schnell an die Grenzen der Performance.
Also zusammenfassend würde ich dir raten, zuerst in die 2D-Programmierung mit SFML einzusteigen, da kannst du schon einmal sehr viele grundlegende Erfahrung sammeln. Später kannst du dein Wissen auch mit OpenGL, DirectX oder was auch immer du willst erweitern. Aber das ist natürlich ganz allein dein Entscheid.
-
C++ muss sitzen, sonst gibt es ständig Probleme. Ansonsten 3D-Programmierung mit Irrlicht als Einstieg. Insgesamt sollte man möglichst selbständig sein und Geduld aufbringen, da die Lösungen für selbstgestellte Aufgaben einem nicht gerade entgegen fliegen und die Communities generell etwas hochnäsig sind.
-
Also ich würde auch sagen der beste Einstieg ist gleich mal selbst ein kleines Spiel zu schreiben. Wichtig ist dabei das "klein", aus mehreren Gründen:
je grösser, desto wahrscheinlicher dass es nie fertig wird
je grösser, desto wahrscheinlicher dass man während des Programmierens soviel neues dazulernt und "den ganzen alten scheiss" den man zu Anfang geschrieben hat bald nimmer sehn kann, und es daher nie fertig wird 
je grösser, desto unübersichtlicher wird das ganze, vor allem wenn man noch nicht SO der mega-software-designer ist
je kleiner, desto schneller wird man fertig, und desto schneller kann man das nächste projekt angehen, wo man dann von anfang an all das besser machen kann was man bisher gelernt hat, und sich dann neuen herausforderungen widmen kannIch persönlich würde auch empfehlen ersmtal was in 2D zu machen, und erst irgendwann später mit 3D anzufangen. Auch wenn man dadurch bei den 2D Projekten einiges lernt was man bei 3D wieder komplett vergessen kann. Insgesamt denke ich schadet es nicht, sein Gehirn trainiert hat man damit auf jeden Fall, und etliche Dinge bleiben ja auch gleich (Timing, Input, Sound etc.).
Als allererstes Projekt ist etwas wie Tetris glaube ich nicht verkehrt. "Jeder" hat sowas schonmal geschrieben und es gibt 1000 Versionen davon im Netz, aber keine dieser Versionen ist so gut und so vollständig dass man nicht irgendwas (zumindest subjektiv) "besser" machen könnte. Ist ausserdem echt schnell fertig und man hat ein Erfolgserlebnis. Wer Tetris nicht mag, bzw. wem das schon zu aufwändig ist der soll mit Mine-Sweeper anfangen. Als zweites Projekt vielleicht ein kleined 2D Ballerspiel oder Jump & Run.
Kommt natürlich alles drauf an wie gut man schon programmieren kann, welche APIs man schon "kennt" und ggf. sogar schon selbst verwendet hat etc.
Mit einer Engine wie Irrlich anzufangen halte ich persönlich für jmd. der noch nicht sattelfest in C++ ist und/oder noch nie ein Spiel programmiert hat für einen Fehler.
Allerdings hat der Erhard ja auch schon geschrieben "C++ muss sitzen" - von daher kein Einspruch sondern eher eine Bestätigung.Was 2D angeht sind als Libraries/Engines SDL, SFML oder auch die "gute alte" Allegro (http://alleg.sourceforge.net/) glaube ich ganz OK.
-
Also für einen simplen Einstieg brauchst du kein C++.
Um schnell und einfach zu einem Spiel zu kommen ohne auf Baukästen zu setzen, kannst du auch mit c# mit dem XNA GameStudio von Microsoft arbeiten.Ok, für XNA muss es kein C# sein, doch die tutorials auf creators.xna.com sind alle in C# geschrieben.
Für einen Einstieg in die Spieleprogrammierung gibt es sogar videotutorials, jeweils einmal für ein komplettes 2d Spiel und eines für ein 3d spiel.
Darüber hinaus noch einige andere tutorials und samples, diese jedoch nicht als videotutorials.
Zudem positiv bewerten lässt sich hier, dass zu allen Beispielen und tutorials Projektdateien zum downlaod angeboten werden die sich auch alle fehlerlos kompillieren lassen.Wenn du diesen Weg gehen solltest, lass dich nicht davon abschrecken das dort die ganze Zeit von der Xbox die Rede ist, denn mit XNA lassen sich sowohl XBox als auch Windowsspiele erstellen.
Und egal was du schon über die Geschwindigkeitsunterschiede zwischen c# und c++ gehört haben magst:
Es ist völlig unerheblich ob das was du da genau gehört hast stimmt oder nicht, c# ist immer noch schnell.
Zu mindest so schnell, als das man als Anfänger oder auch allgemein als Soloprogrammierer jemals an die Grenzen von diesem Zeug stoßen könnte (Wenn man es nicht gerade darauf anlegt).Neben diesem Creators club gibt es auf der microsoft seite auch noch einige andere spielrelevante tutorials zu c#.
-
Klar braucht er kein C++, er kann auch Java oder DarkBasic oder Delphi nehmen, oder eben C# wie du vorschlägst.
Allerdings will er C++ verwenden, zumindest schreibt er das im 1. Posting.
-
Wenn er c++ verwenden möchte kann er das ja tun, ich selbst nutze ja auch c++, bin also bei Leibe kein C++ Gegner, möchte ihn das auch gar nicht ausreden.
Aber er wollte einen einfachen Einstieg und würde c++ verwenden, wenn dies denn möglich ist (also für den einfachen Einstieg).
Doch da man für sowas ja stets die Relationen der verfügbaren Mittel betrachten muss, würde ich nicht sagen, dass ganz verallgemeinert ein Einfacher Einstieg in die Spiele(!)-Programmierung mit C++ möglich ist.Vor Kurzem habe ich einfach nur um was neues zu lernen mal mit C# angefangen.
Nachdem ich mir dann so die grundlegensten Regeln angeeignet hatte hab ich noch einen kleinen Exkurs aus der Konsole heraus unternommen und war erstaunt um wie vieles einfacher die Anfänge sind ein kleines Spielchen zu gestalten (hatte da jetzt xna verwendet).Gäbe es als Einzige Alternative irgendwas schwierigeres als C++ sähe das wieder anders aus, da wäre nunmal c++ der einfache Einstieg.
Natürlich ist c++ jetzt kein Monster vor dem man sich fürchten müsste, auch ein Kompletter Anfänger kann damit sachen erreichen.
Nur würde ich das nicht als einfachen Einstieg bezeichnen.Zudem bietet mir meine Entwicklungsumgebung für c# Intellisense und ähnliche Hilfe in einem Ausmaß, dass ich bis jetzt noch bei keier Entwicklungsumgebung für c++ so wie dort gefunden hatte oO
Ok, das hat jetzt nichts mit der Sprache zu tun und ist sehr Umgebungsspezifisch, doch wer mit XNA arbeitet wird es sich wohl sicher auch nicht entgehen lassen vs05EE zu verwenden.
-
Naja, ich weiss nicht ob Spiele-Programmierung in C# mit XNA soviel einfacher ist.
Aber egal.
Ich verstehe deine Argumentation und erkenne sie an
Was er verwendet wird und muss er letztlich selbst entscheiden.
-
Entwicklungsumgebung für c++
Ich denke, dass man mit der Visual Studio C++ 2008 Express Edition http://www.microsoft.com/germany/Express/download/default.aspx bezüglich C++ Sourcecode-Erstellung eine hervorragende und darüber hinaus gar kostenlose IDE zur Verfügung hat.