Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmiersprache für games
Bevor jetz die standardsprüche kommen wie: Fürn game braucht man jahrelange übung in ner programmiersprache blabla. ich weiß aber wennn ich net anfang zu lern kann ichs in ein paar jahren immer noch net. welche sprache wäre dafür am meisten geeignet? muss kein super game mit hammer grafik werden
Auf dieser Seite gibts ne Menge Tipps dazu:
http://www.spieleprogrammieren.com/
Dieser Standardspruch kommt von denen, die keine Ahnung haben. Worin du Erfahrung brauchst ist nicht die Programmiersprache direkt, denn das macht nur einen sehr kleinen Anteil der Voraussetzungen aus, sondern Entwicklungswerkzeuge wie Compiler, Debugger, IDE, die Schnittstellen, die dein Spiel anspricht, wie Grafik/Video, Audio, Netzwerk, Dateisystem, etc, sowie Bibliotheken, die diese vereinfachen/erweitern oder bestimmte Dinge bereits realisiert haben und dir damit Arbeit ersparen. Darüber hinaus brauchst du eventuell tiefergehende Kenntnisse über die Funktionsweise des Computers, bestimmter Hardware, zumindest aber das grundlegende Wissen, denn darauf baut alles auf. Nicht zu vergessen essentielle Dinge wie Spiellogik, Algorithmen zur Lösung bestimmter Probleme wie zum Beispiel Wegfindung, diverse Datenstrukturen, mathematisches Grundwissen und eventuell Weiterführendes wie Vektor-/Matrizenrechnung und anderes.
Es spricht aber nichts dagegen direkt mit der Spieleprogrammierung anzufangen, ohne all das, was du später benötigen wirst bereits zu kennen und dein Wissen iterativ während der Entwicklung zu erweitern, im Gegenteil, das ist das, wozu ich raten würde.
Und zu deiner Frage: Heutzutage gibt es Programmiersprachen, die einen Einstieg sehr leicht machen, dennoch aber mächtig genug sind um damit auch Spiele zu realisieren und vieles mehr. Beispiele wären Python und Lua. Das wäre wohl das erste womit du dich beschäftigen müsstest.
Hey danke für die antworten^^
@ Kyuu: Meine Rede. Klar ist es sauschwer un man braucht ewig zum lernen aber wenn man nie anfängt ändert sich daran nichts^^
falls es 3d sein soll kann ich dir die engine unity empfehlen. gibt es kostenlos und unterstützt 3 sprachen javascript, c# und phyton. ka wie einfach sie 2d sachen damit verwirklichen lassen. jedoch kann man sich relativ schnell was zusammen zimmern und spass haben.
http://unity3d.com/
falls es 3d sein soll kann ich dir die engine unity empfehlen. gibt es kostenlos und unterstützt 3 sprachen javascript, c# und phyton. ka wie einfach sie 2d sachen damit verwirklichen lassen. jedoch kann man sich relativ schnell was zusammen zimmern und spass haben.
http://unity3d.com/Es gibt mehrere Engines für 3D Spiele:
http://www.blender.org/
http://www.udk.com/
UDK und Unity sind wohl die besten.
Blender funktioniert auch mit Phyton und mit UDK kenn ich mich nicht richtig aus.
Und nun eine Frage von mir:
Was ist eigentlich besser UDK oder Unity??
Papa Justify
22.08.2010, 12:25
Unity brauch sich sicherlich nicht hinter der Unreal Engine 3 verstecken, aber dennoch ist die UE3 das augereiftere, hochqualitativere Produkt. Dafür fällt der Einstieg mit Unity leichter und der UE3 wird oft nachgesagt, dass sie diesen eigenwilligen Look hat, der nicht jedem gefällt.
@Kyuu & Threadersteller:
Wenn es Spieleprogrammierung auf hohem Level sein soll, kommt man irgendwann nicht mehr um C/C++ herum. Man sollte aber auch nicht den Anfängerfehler machen und sich gleich die erstbeste 3D-Engine schnappen und drauf hoffen, dass irgendwas geiles bei rumkommt. Grundzüge der Programmierung lernt man am besten mit Sprachen mit einfacher Syntax, wie Pascal oder Java. Damit lässt sich auch schon Mächtiges erschaffen. Man sollte aber immer klein anfangen.
Minispiele á la Tetris, Snake lassen dich spielend Programmieren lernen.
Im Normalfall ist ein Spiel in mehrere Ebenen aufgeteilt. Als Grundsatz existiert die Engine, die im Prinzip, wie der Name schon sagt, der "Motor" eines Spieles ist. Bei einer engine handelt es sich um eine Programmsammlung, die bestimmte Dinge wie etwa grafische Darstellungen, Netzwerk, Sound oder Physik übernimmt. Zu der Engine kommt dann ein Toolset aus einem oder mehreren Editoren, mit denen Inhalte für die Engine, also das eigentliche Spiel erstellt werden. Engine und Entwicklungsumgebung sind der Teil eines Spieles, bei deren Entwicklung wirklich programmiert wird. Genau diese beiden Dinge existieren beim RPG-Maker schon, nämlich die RPG_RT.exe als Engine und der RPG-Maker als Toolset, mit dem sich Inhalte dafür erstellen lassen.
Wenn du dir vorstellst, dass du mithilfe einer Programmiersprache ein ganzes Spiel erstellen kannst, liegst du falsch. Du erstellst damit lediglich das Fundament, auf dem dein Spiel aufbaut. Es kommen aber immer noch weitere Dinge hinzu wie Grafiken erstellen, Sounds erstellen, Animieren usw.
Dies gilt aber nur für ausgefeilte, wirklich komplexe Spiele. Kleine Dinger wie Snake lassen sich auch ohne großartige Aufteilung in diverse Ebenen programmieren. Bei komplexeren Projekten ist so etwas aber unerlässlich, wenn man keinen gigantischen Aufwand haben will.
Sich dem Aufbau eines Spiels bewusst zu werden ist aber auf jeden Fall der beste Einstieg und wesentlich sinnvoller als sich gleich zu Anfang in irgendeine Engine reinzufuxen.
elvissteinjr
22.08.2010, 14:16
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.
@Kyuu & Threadersteller:
Wenn es Spieleprogrammierung auf hohem Level sein soll, kommt man irgendwann nicht mehr um C/C++ herum.
Wie bitte?
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.
Du bist witzig. :)
Rein theoretisch lässt sich ein Spiel in jeder Sprache schreiben, wobei natürlich anzumerken ist, dass der syntaktische Aufbau mancher Sprachen besser geeignet ist als der anderer, um damit ein Spiel zu entwickeln. Letztendlich kommt es aber nicht nur auf die Sprache an sich an, sondern genauso auf den Maschinencodeübersetzer. Hier unterscheidet man zwischen Compilern und Interpretern, es gibt auch Hyrbiden aus den beiden, aber dazu später mehr.
So ein Übersetzer übersetztr nun also das Programm in für den Computer ausführbare Maschinensprache und die Art wie sie dies tun ist ausschlaggebend für die Unterscheidung. Ein Compiler übersetzt den Code ein einziges mal als ganzes in Maschinensprache. Dies dauert meistens eine längere Zeit, je nach Umfang des Programmes, dafür ist der Maschinencode, der am Ende herauskommt sehr schnell. Ein Interpreter hingegen übersetzt den Code während dem Ausführen des Programmes, was zwar dafür sorgt, dass das Programm sofort läuft, aber ebenso Performanceeinbußen mit sich bringt.
Nun gitb es auch Hybriden aus diesen beiden, etwa die Standard-Java-Laufzeitumgebung von Sun oder das .net-Framework, die euren Code ersteinmal durch einen Compiler jagen, der den Code aber nicht direkt zu Maschinencode macht, sondern zu einer Art Zwischencode, der dann wiederum von einem Interpreter übersetzt wird.
Für ein größeres Spieleprojekt ist eine Sprache, für die ein guter Compiler vorliegt silcherlich die beste Wahl.
Papa Justify
23.08.2010, 16:28
Wie bitte?
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?
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. :D
elvissteinjr
23.08.2010, 20:55
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:
-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.
Du bist witzig.
Bau einen Rechner oder zumindest nen Prozessor+Grafikprozessor in deinen Toaster und es wird laufen.
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?
Erweitere deinen Horizont, wir befinden uns nicht mehr in den 80-ern. Professionelle Spiele (wenn du schon derart stark pauschalisierst) nutzen weit mehr als C/C++ und ich rede nicht mal von Indies.
Das heute ausschlaggebende für C/C++ ist zwar tatsächlich das breitgefächerte Angebot an qualitativen Compilern, Entwicklungswerkzeugen und Bibliotheken, aber das muss nicht bedeuten, dass es außerhalb nichts gibt, das mindestens als Gleichwertig betrachtet werden kann. Im letzten Jahrzehnt wurden viele neue Sprachen entwickelt, die performancetechnisch mindestens mit C/C++ gleichziehen, weit weniger komplexe Implementierung haben und mächtiger sind. Sie sind damit für zukünftige und teilweise bereits für heutige (professionelle) Spieleentwickler attraktiv und gewinnen immer mehr an Attraktivität mit jeder neuen unterstützten Plattform, jeder neuen damit geschriebenen Bibliothek und jedem neuen Projekt, das es verwendet. Mindestens für C++ sieht die Zukunft schlecht aus, auch wenn es nie ganz von der Bildfläche verschwinden wird. Die Sprache ist veraltet, zu komplex, schwer zu warten, führt zu fehleranfälligem Code und steht bei vielen (besonders im akademischen Bereich und damit bei denen, die ihre Zukunft in den Händen halten werden) in einem schlechten Licht.
Ach so, ein Industriestandard ist C++ schon länger nicht mehr. C#, Java und andere haben sich längst durchgesetzt.
Bau einen Rechner oder zumindest nen Prozessor+Grafikprozessor in deinen Toaster und es wird laufen.
Das war nichtmal das Witzige.
Es gibt mehrere Engines für 3D Spiele:
http://www.blender.org/
http://www.udk.com/
UDK und Unity sind wohl die besten.
Blender funktioniert auch mit Phyton und mit UDK kenn ich mich nicht richtig aus.
Und nun eine Frage von mir:
Was ist eigentlich besser UDK oder Unity??
keine ahnung welche besser ist hab nur unity getestet... bzw. sie dazu benutzt durch meine 3d kreationen zu schlendern und das geht mit wenigen klicks
Papa Justify
24.08.2010, 15:30
Erweitere deinen Horizont...
Verstehe meine Aussage! Ich behaupte nicht, dass man nur mit C Spiele programmieren kann. Ich weiß selbst, dass es noch ganz viele andere Fische im Meer gibt. Und ich weiß, dass es genug einfachere Alternativen zu C/C++ gibt. Trotzdem ist gerade in der Spieleentwicklung immernoch das Nonplusultra und muss zurzeit höchstens mit Java konkurrieren, dass ich zumindest in Sachen Spieleprogrammierung noch hinten dran sehe (und durch die Geschichte mit Oracle, aber da muss man erstmal schauen).
Letztendlich kann man mit jeder Programmiersprache fast alles realisieren mit mehr oder weniger Aufwand.
Ich bleibe aber bei meiner (scheinbar beschränkten) Meinung, dass man heutzutage C/C++ und Java können muss, als professioneller Programmierer.
elvissteinjr
24.08.2010, 17:15
Ach so, ein Industriestandard ist C++ schon länger nicht mehr. C#, Java und andere haben sich längst durchgesetzt.
Mal sehen...
C# läuft nur im .net Framework, also nur unter Windows und leider nur sehr schlecht mit Mono. Dadurch dass beim .net Framework nur Bytecode, aber kein Maschienencode erzeugt wird, sind die Programme prinzipiell Plattformunabhängig, sind es in der Praxis aber nicht wegen oben genanntem.
Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.
Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
Wie kann C++ kein Industriestandard mehr sein, in einer Industrie wo jedes FPS zählt? Sicher kann man gute Spiele mit den erwähnten Sprachen programmieren, aber die Spieleindustrie muss so viel wie möglich an Leistung rausquetschen können. Da ist eine laufzeitkompilierte Sprache fehl am Platz.
Das war nichtmal das Witzige.
Witzig ist das nur weil es dann wirklich laufen würde.
Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.
Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
Naja, durch den JIT-Compiler kompiliert Java seinen Programmcode zum Teil auch in Maschinencode. Und das unter Umständen sogar effizienter als C/C++, da zur Laufzeit mehr Informationen zur Verfügung stehen.
Mittlerweile ist C++ vielleicht 25%-50% schneller als Java - wenn es effizient programmiert ist. Das ist aber kein nennenswerter Geschwindigkeitsunterschied. Entscheidender ist, wie effizient man seinen Code gestaltet.
Ich halte von Java und C# auch mehr als von C++, aber das ist nur meine persönliche Meinung. Auf jeden Fall sollte man sich mit mehreren Sprachen beschäftigen und sich nicht von vornherein auf eine Sprache festlegen.
Papa Justify
24.08.2010, 20:05
Ich halte von Java und C# auch mehr als von C++, aber das ist nur meine persönliche Meinung. Auf jeden Fall sollte man sich mit mehreren Sprachen beschäftigen und sich nicht von vornherein auf eine Sprache festlegen.
Das ist sowieso das Beste. Java muss sein, genaso wie C und im Endeffekt kann man dann auch schon fast C# , da es im Grunde eine Mischung aus beidem ist.
Eine ganz gute Möglichkeit, sich in das Skripten hineinzusteigern, wären Spiele wie "Clonk" oder "The Battle for Wesnoth". Sie besitzen eine einfache Skriptsprache und viele Skriptbeispiele, aus dessen Teilen man das gewünschte Produkt erzielen kann. Und irgendwann kann man sich an fortgeschrittenere Möglichkeiten und Skriptsprachen hineinwagen und diese sogar einbinden.
Diese Methode zeigt zumindest bei mir eine positive Wirkung :rolleyes:
Mal sehen...
C# läuft nur im .net Framework, also nur unter Windows und leider nur sehr schlecht mit Mono. Dadurch dass beim .net Framework nur Bytecode, aber kein Maschienencode erzeugt wird, sind die Programme prinzipiell Plattformunabhängig, sind es in der Praxis aber nicht wegen oben genanntem.
Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.
Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
Wie kann C++ kein Industriestandard mehr sein, in einer Industrie wo jedes FPS zählt? Sicher kann man gute Spiele mit den erwähnten Sprachen programmieren, aber die Spieleindustrie muss so viel wie möglich an Leistung rausquetschen können. Da ist eine laufzeitkompilierte Sprache fehl am Platz.
Du hast nicht viel Ahnung von Codeoptimierung. Eigentlich hast du so gut wie keine Ahnung von dem, was du hier ansprichst, denn das ist einfach nur zusammengereimt und oberflächlich.
Es wird dich übrigens überraschen, aber es ist relativ schwer in C++ performanten Code zu schreiben und benötigt tiefgehendes Wissen über die Sprache.
Das ist sowieso das Beste. Java muss sein, genaso wie C und im Endeffekt kann man dann auch schon fast C# , da es im Grunde eine Mischung aus beidem ist.
Ich würde eigentlich sagen, D muss sein, damit die Leute endlich aufhören C++ für das nonplusultra zu halten und all die Schwächen und Designfehler, genauso wie man's besser machen kann, vor die Augen gesetzt bekommen.
Bin ich der einzige, der die Performancefrage im Hobbybereich für höchst belanglos hält?
Was programmiert man so hobbymässig? Unreal Engine 4 Kernel, optimiert darauf auch bei 4-Kern Prozessoren keinen unnötigen Takt zu benötigen?
Die Sprache ist doch völlig schnuppe im Grunde und vor allem sollte man keine Sprache die man nicht so mag statt ner Sprache die man sehr mag verwenden nur weil angeblich irgendwo die Performance minimal besser ist.
Die eigentliche Spielperformance ( 5fps oder 60 fps~ das ist doch der Performanceunterschied, an den man da denkt oder? ) hängt eher von der verwendeten Grafikausgabe ab. Die 0815 Grafikausgabe von Java ist für 8Bit okey, 24Bit PNGs mit Alphamap animiert über den Screen schieben kann man dagegen völlig vergessen. Nimmt man statt dessen eine OpenGL-Grafikausgabe, ja sowas gibts für Java, läuft das alles superflüssig.
Papa Justify
26.08.2010, 21:22
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!
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.
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.
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.
makenshi
28.08.2010, 14:29
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:
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.
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 (http://www.blitzbasic.com/Products/blitzmax.php), Phyton(mit Py Game) (http://www.python.org/), Lua
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.
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.
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. :D
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.
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.
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.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.