Spiele programmieren lernen

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[gesichtete Version][gesichtete Version]
(SDL Dokulink korrigiert, da dieser zu einer nicht existenten Seite verbindet (dasselbe wie bei korrigierten Allegrolinks))
 
(12 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 92: Zeile 92:
 
[[Datei:Screenshot Visual Studio 2008 CSharp.png|thumb|right|Screenshot der Entwicklungsumgebung ''Microsoft Visual Studio 2008'' mit einem C#-Projekt.]]
 
[[Datei:Screenshot Visual Studio 2008 CSharp.png|thumb|right|Screenshot der Entwicklungsumgebung ''Microsoft Visual Studio 2008'' mit einem C#-Projekt.]]
  
C# (ausgesprochen "C Sharp") ist mit C++ verwandt und erlaubt ein komfortableres Programmieren. Es handelt sich bei C# um eine ".NET-Sprache" (wenn du irgendwo etwas von .NET liest, dann ist damit unter Anderem auch C# gemeint). Das Angebot an Bibliotheken und Werkzeugen ist nicht so umfangreich wie das für C++, was auch daran liegt, dass die Sprache viel jünger ist. Die erreichbare Geschwindigkeit reicht zwar nicht an die von C++-Programmen heran, sollte jedoch auch für ambitioniertere Spieleprojekte kein Problem darstellen. Wenn du eine Xbox besitzt und für diese eigene Spiele programmieren möchtest, dann solltest du C# lernen.
+
C# (ausgesprochen "C Sharp") ist mit C++ verwandt und erlaubt ein komfortableres Programmieren. Es handelt sich bei C# um eine ".NET-Sprache" (wenn du irgendwo etwas von .NET liest, dann ist damit unter Anderem auch C# gemeint). Das Angebot an Bibliotheken und Werkzeugen ist nicht so umfangreich wie das für C++, was auch daran liegt, dass die Sprache viel jünger ist. Die erreichbare Geschwindigkeit reicht zwar nicht an die von C++-Programmen heran, sollte jedoch auch für ambitioniertere Spieleprojekte kein Problem darstellen. Wenn du eine Xbox besitzt und für diese eigene Spiele programmieren möchtest, dann solltest du C# lernen. Zudem ist C# die Programmiersprache der Wahl für die Spieleentwicklungsumgebung ("Engine") [http://unity3d.com/ Unity], die man ambitionierten Anfängern oft empfiehlt.
  
 
<sourcecode lang="csharp">
 
<sourcecode lang="csharp">
Zeile 145: Zeile 145:
 
[[Datei:Screenshot Eclipse Java.png|thumb|right|Screenshot der Entwicklungsumgebung ''Eclipse'' mit einem Java-Projekt.]]
 
[[Datei:Screenshot Eclipse Java.png|thumb|right|Screenshot der Entwicklungsumgebung ''Eclipse'' mit einem Java-Projekt.]]
  
Die schon etwas ältere Programmiersprache Java hat C# maßgeblich beeinflusst. Die beiden Sprachen sind sich daher recht ähnlich. Während Java für die Entwicklung von betrieblichen Anwendungen sehr populär geworden ist, kann man die Sprache bezüglich Spieleentwicklung eher als Außenseiter bezeichnen. Möchtest du für Android-Smartphones deine eigenen Apps oder Spiele programmieren? Dann führt kein Weg an Java vorbei, da Android-Apps fast ausschließlich in dieser Sprache programmiert werden.
+
Die schon etwas ältere Programmiersprache Java hat C# maßgeblich beeinflusst. Die beiden Sprachen sind sich daher recht ähnlich. Während Java für die Entwicklung von betrieblichen Anwendungen sehr populär geworden ist, kann man die Sprache bezüglich Spieleentwicklung für den PC eher als Außenseiter bezeichnen. Möchtest du jedoch für Android-Smartphones deine eigenen Apps oder Spiele programmieren, dann führt kaum ein Weg an Java vorbei, da Android-Apps fast ausschließlich in dieser Sprache programmiert werden.
  
 
<sourcecode lang="java" tab="4">
 
<sourcecode lang="java" tab="4">
Zeile 240: Zeile 240:
 
<xh4>C++-Bücher</xh4>
 
<xh4>C++-Bücher</xh4>
  
* {{Amazon|3446421408|"C++ für Spieleprogrammierer" von Heiko Kalista}}: Dieses Buch vermittelt die wichtigsten Grundlagen der Programmiersprache C++ und richtet sich dabei speziell an angehende Spieleprogrammierer. Im Buch wird nach der Vermittlung der C++-Grundlagen ein einfaches 2D-Spiel Schritt für Schritt entwickelt. Am Ende erhält der Leser noch einige Tipps, wie er nach der Lektüre dieses Buches weitermachen sollte, und wie er die Angebote des Internets wie Communitys/Foren richtig nutzen kann.
+
* {{Amazon|3446446443|"C++ für Spieleprogrammierer" von Heiko Kalista}}: Dieses Buch vermittelt die wichtigsten Grundlagen der Programmiersprache C++ und richtet sich dabei speziell an angehende Spieleprogrammierer. Im Buch wird nach der Vermittlung der C++-Grundlagen ein einfaches 2D-Spiel Schritt für Schritt entwickelt. Am Ende erhält der Leser noch einige Tipps, wie er nach der Lektüre dieses Buches weitermachen sollte, und wie er die Angebote des Internets wie Communitys/Foren richtig nutzen kann.
 
+
* {{Amazon|3827245818|"From Zero2Hero: C++" von Dirk Louis}}: Am Anfang steht die Frage, was eigentlich ein Programm ist, und wie der Rechner mit Daten und Zahlen umgeht. Anschließend wird der Leser Schritt für Schritt an die Programmiersprache C++ herangeführt. Dieses Buch geht ausführlicher auf C++ ein als das von Heiko Kalista, deckt andererseits aber keine Spieleprogrammierung ab.
+
  
 
<xh4>C++-Tutorials</xh4>
 
<xh4>C++-Tutorials</xh4>
Zeile 256: Zeile 254:
 
<xh4>C#-Bücher</xh4>
 
<xh4>C#-Bücher</xh4>
  
* {{Amazon|3836216116|"Einstieg in Visual C# 2010" von Thomas Theis}}: Der Leser erlernt auf mehr als 450 Seiten den Umgang mit der Programmiersprache C# und Windows Forms, mit dem man grafische Windows-Anwendungen entwickeln kann.
+
* {{Amazon|3836228149|"Einstieg in Visual C# 2013: Ideal für Programmieranfänger geeignet" von Thomas Theis}}: Der Leser erlernt auf 580 Seiten den Umgang mit der Programmiersprache C# und der Windows Presentation Foundation (WPF), mit dem man grafische Windows-Anwendungen entwickeln kann.
  
 
<xh4>C#-Tutorials</xh4>
 
<xh4>C#-Tutorials</xh4>
Zeile 268: Zeile 266:
 
<xh4>Java-Bücher</xh4>
 
<xh4>Java-Bücher</xh4>
  
* {{Amazon|3897214482|"Java von Kopf bis Fuß" von Kathy Sierra und Bert Bates}}: Dieses Buch ist einfach anders als das gewöhnliche Einsteigerbuch. Durch ein neues Konzept der Wissensvermittlung wird der Leser auf gut 700 Seiten auf unterhaltsame und abwechslungsreiche Weise an die Programmierung in Java herangeführt.
+
* {{Amazon|3836228629|"Programmieren lernen mit Java: Aktuell zu Java 8 - Keine Vorkenntnisse erforderlich" von Hans-Peter Habelitz}}: Dieses Buch richtet sich an Einsteiger ohne jegliche Programmiererfahrung. Im Buch gibt es viele Übungsaufgaben sowie Musterlösungen.
  
 
* [http://openbook.galileocomputing.de/javainsel/ "Java ist auch eine Insel" von Christian Ullenboom]: Ein populäres, auch kostenlos online lesbares Buch für Java-Einsteiger und Fortgeschrittene gleichermaßen. Neben der Behandlung der Sprache Java gibt es kompakte Einführungen in Spezialthemen.
 
* [http://openbook.galileocomputing.de/javainsel/ "Java ist auch eine Insel" von Christian Ullenboom]: Ein populäres, auch kostenlos online lesbares Buch für Java-Einsteiger und Fortgeschrittene gleichermaßen. Neben der Behandlung der Sprache Java gibt es kompakte Einführungen in Spezialthemen.
Zeile 282: Zeile 280:
 
<xh4>Python-Bücher</xh4>
 
<xh4>Python-Bücher</xh4>
  
* {{Amazon|3836217384|"Einstieg in Python" von Thomas Theis}}: Ein relativ kompaktes Buch für Einsteiger, das die Grundlagen, aber auch fortgeschrittene Themen wie Benutzeroberflächen und Datenbanken unter Python abdeckt.
+
* {{Amazon|3836228610|"Einstieg in Python: Ideal für Programmieranfänger geeignet" von Thomas Theis}}: Ein relativ kompaktes Buch für Einsteiger, das die Grundlagen, aber auch fortgeschrittene Themen wie Benutzeroberflächen und Datenbanken unter Python abdeckt.
  
 
<xh4>Python-Tutorials</xh4>
 
<xh4>Python-Tutorials</xh4>
Zeile 288: Zeile 286:
 
* [http://docs.python.org/tutorial/ "The Python Tutorial"]: Das offizielle, sehr umfangreiche Python-Tutorial.
 
* [http://docs.python.org/tutorial/ "The Python Tutorial"]: Das offizielle, sehr umfangreiche Python-Tutorial.
  
* [http://tutorial.pocoo.org/ "Das Python-Tutorial"]: Eine deutsche Übersetzung des offiziellen Python-Tutorials.
+
* [https://py-tutorial-de.readthedocs.org/de/python-3.3/ "Das Python-Tutorial"]: Eine deutsche Übersetzung des offiziellen Python-Tutorials.
  
 
== Auswahl einer passenden Bibliothek ==
 
== Auswahl einer passenden Bibliothek ==
Zeile 307: Zeile 305:
 
* [http://www.sfml-dev.org/tutorials/ Tutorials]
 
* [http://www.sfml-dev.org/tutorials/ Tutorials]
 
* [http://www.sfml-dev.org/documentation/ Dokumentation]
 
* [http://www.sfml-dev.org/documentation/ Dokumentation]
 +
* [https://www.spieleprogrammierer.de/wiki/SFML_Einsteiger-Tipps SFML Einsteiger-Tipps]
 
|-
 
|-
 
| [http://www.libsdl.org/ SDL] (Simple DirectMedia Layer) || C++, C#, Java, Python || Eine Bibliothek, die grundlegende Funktionalität wie Grafikausgabe, Audio, Eingabe und Netzwerk bereitstellt. ||
 
| [http://www.libsdl.org/ SDL] (Simple DirectMedia Layer) || C++, C#, Java, Python || Eine Bibliothek, die grundlegende Funktionalität wie Grafikausgabe, Audio, Eingabe und Netzwerk bereitstellt. ||
 
* [[SDL-Tutorial]]
 
* [[SDL-Tutorial]]
 
* [http://wiki.libsdl.org/moin.cgi/SDL1.2Tutorials Weitere Tutorials]
 
* [http://wiki.libsdl.org/moin.cgi/SDL1.2Tutorials Weitere Tutorials]
* [http://www.libsdl.org/cgi/docwiki.cgi Dokumentation]
+
* [http://wiki.libsdl.org/FrontPage Dokumentation]
 
|-
 
|-
 
| [http://pygame.org/ Pygame] || Python || Pygame basiert auf SDL, bietet aber noch zusätzliche Funktionalität. ||
 
| [http://pygame.org/ Pygame] || Python || Pygame basiert auf SDL, bietet aber noch zusätzliche Funktionalität. ||
Zeile 318: Zeile 317:
 
|-
 
|-
 
| [http://alleg.sourceforge.net/ Allegro] || C++, C#, Python || Eine robuste Bibliothek für die Spieleprogrammierung, die noch aus der MS-DOS-Zeit stammt, aber mittlerweile stark modernisiert wurde. ||
 
| [http://alleg.sourceforge.net/ Allegro] || C++, C#, Python || Eine robuste Bibliothek für die Spieleprogrammierung, die noch aus der MS-DOS-Zeit stammt, aber mittlerweile stark modernisiert wurde. ||
* [http://alleg.sourceforge.net/docs.html Tutorials]
+
* [https://liballeg.org/docs.html Tutorials]
* [http://alleg.sourceforge.net/api.html Dokumentation]
+
* [https://liballeg.org/a5docs/trunk/ Dokumentation]
 
|-
 
|-
 
| [http://msdn.microsoft.com/en-us/aa937791.aspx XNA] || C# || XNA ist eine umfangreiche Bibliothek für C#, mit der man sowohl PC- und Windows Phone 7- als auch Xbox-Spiele programmieren kann. ||
 
| [http://msdn.microsoft.com/en-us/aa937791.aspx XNA] || C# || XNA ist eine umfangreiche Bibliothek für C#, mit der man sowohl PC- und Windows Phone 7- als auch Xbox-Spiele programmieren kann. ||
Zeile 350: Zeile 349:
 
Solch ein Projekt (oder etwas Vergleichbares) ist zwar nicht besonders innovativ, aber als erstes eigenes kleines Spiel eignet es sich hervorragend. Der technische Anspruch ist gering, und am Ende wirst du mit Sicherheit sehr stolz auf dich und dein Spiel sein. Jeder Spieleprogrammierer erinnert sich sicherlich noch an sein erstes Spiel und an das damit verbundene gute Gefühl, etwas eigenes erschaffen zu haben. Auch wenn so ein erstes Spiel andere Spieler vermutlich "nicht gerade vom Hocker reißt" – lass dich davon nicht verunsichern. Jeder hat einmal klein angefangen, und der gewöhnliche Spieler hat gar keine Vorstellung davon, wie viel Aufwand es bedeutet, ein Spiel zu programmieren.
 
Solch ein Projekt (oder etwas Vergleichbares) ist zwar nicht besonders innovativ, aber als erstes eigenes kleines Spiel eignet es sich hervorragend. Der technische Anspruch ist gering, und am Ende wirst du mit Sicherheit sehr stolz auf dich und dein Spiel sein. Jeder Spieleprogrammierer erinnert sich sicherlich noch an sein erstes Spiel und an das damit verbundene gute Gefühl, etwas eigenes erschaffen zu haben. Auch wenn so ein erstes Spiel andere Spieler vermutlich "nicht gerade vom Hocker reißt" – lass dich davon nicht verunsichern. Jeder hat einmal klein angefangen, und der gewöhnliche Spieler hat gar keine Vorstellung davon, wie viel Aufwand es bedeutet, ein Spiel zu programmieren.
  
Eine gute Idee ist es, dein erstes Spiel der Spieleprogrammierer-Community ([http://www.spieleprogrammierer.de/12-projekte-workshops/ Forum zur Projektvorstellung]) vorzustellen. Die Community-Mitglieder sind sowohl Spieler als auch Programmierer/Entwickler. Sie können dir daher sehr wertvolles Feedback geben: einerseits zum Spiel an sich (Gameplay, Grafik, Sound, Steuerung, Schwierigkeitsgrad, ...), andererseits zur programmiertechnischen Umsetzung. Damit Letzteres möglich ist, solltest du auch den Quellcode veröffentlichen. Hier solltest du dich ''kritikfähig'' zeigen, denn es ist nicht unwahrscheinlich, dass buchstäblich jede Zeile deines Codes auseinander genommen wird. Das ist jedoch völlig normal, denn Programmieren ist hauptsächlich eine Erfahrungssache. Je mehr du programmierst, desto mehr wirst du erkennen, wie du gewisse Dinge schöner, kürzer, schneller und eleganter lösen kannst. Die erfahreneren Programmierer werden darum sehr viele Stellen in deinem Code erkennen, die du besser machen könntest, und dich darauf hinweisen. Es ist wichtig, dass du diese Kritik nicht persönlich nimmst, sondern versuchst daraus etwas zu lernen, so dass du es im nächsten Spiel besser machen kannst.
+
Eine gute Idee ist es, dein erstes Spiel der Spieleprogrammierer-Community ([https://www.spieleprogrammierer.de/12-projektvorstellungen-und-stellenangebote/ Forum zur Projektvorstellung]) vorzustellen. Die Community-Mitglieder sind sowohl Spieler als auch Programmierer/Entwickler. Sie können dir daher sehr wertvolles Feedback geben: einerseits zum Spiel an sich (Gameplay, Grafik, Sound, Steuerung, Schwierigkeitsgrad, ...), andererseits zur programmiertechnischen Umsetzung. Damit Letzteres möglich ist, solltest du auch den Quellcode veröffentlichen. Hier solltest du dich ''kritikfähig'' zeigen, denn es ist nicht unwahrscheinlich, dass buchstäblich jede Zeile deines Codes auseinander genommen wird. Das ist jedoch völlig normal, denn Programmieren ist hauptsächlich eine Erfahrungssache. Je mehr du programmierst, desto mehr wirst du erkennen, wie du gewisse Dinge schöner, kürzer, schneller und eleganter lösen kannst. Die erfahreneren Programmierer werden darum sehr viele Stellen in deinem Code erkennen, die du besser machen könntest, und dich darauf hinweisen. Es ist wichtig, dass du diese Kritik nicht persönlich nimmst, sondern versuchst daraus etwas zu lernen, so dass du es im nächsten Spiel besser machen kannst.
  
 
=== Kritischer Rückblick und die nächsten Spiele ===
 
=== Kritischer Rückblick und die nächsten Spiele ===

Aktuelle Version vom 3. März 2019, 20:19 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge