>>> "Programmieren - wie fange ich an?" aka "Lies' mich zuerst" <<< LESEN!
*********************************************************************
HINWEIS!
Versuche nicht, ein MMORPG zu machen. Es wird nicht funktionieren; MMORPGs sind so ziemlich das Komplizierteste, was man überhaupt entwickeln kann. Wenn du keine Spielefirma mit einem Kapital von mehreren Millionen Euro bist LASS' ES SEIN!
Wenn du gerade erst mit der Spieleprogrammierung (und erst recht überhaupt mit dem Programmieren) anfängst wird selbst ein Tetris-Klon schon eine Herausforderung sein! Ohne jahrelange Programmiererfahrung mit einer Sprache wie C oder C++ solltest du über MMPOGs gar nicht erst nachdenken!
*********************************************************************
Weitere Hinweise:
- Das Programmierforum hat einen IRC-Channel, und zwar #progforum auf irc.euirc.net.
- Wenn du ein Projekt hast und Leute suchst, dann lies' Punkt 5 dieses Posts.
Du willst also Programmieren lernen.
Wahrscheinlich willst du Spiele programmieren, vielleicht sogar einen neuen RPG Maker. Das ist ganz nett, aber du hast keine Ahnung, was du alles brauchst, um dein Ziel zu erreichen.
Das soll dieser Artikel ändern. Er soll dir vermitteln, was du alles brauchst, um Spiele oder was auch immer zu programmieren.
1. Kreativität und Zeit. Viel Zeit.
Das Thema der Kreativität lassen wir erst mal aussen vor.
Ohne Kenntnis einer Programmiersprache muss man sich noch keine Gedanken um Spielprinzip oder ähnliches machen.
Worüber man sich Gedanken machen muß ist das Programmieren des Spiels selber. Sprich: Du mußt eine Programmiersprache beherrschen, bevor du ein Spiel programmieren kannst.
Was brauchst du, um eine Programmiersprache zu lernen? Nun, zuerst brauchst du ein paar Programme, aber darauf kommen wir später zurück. Du brauchst auch und vor allem Geduld. Eine Programmiersprache muß man lernen wie eine normale Fremdsprache und das dauert. Syntax, Methoden und Techniken einer Programmiersprache müssen sitzen, bevor man ein derartig komplexes Projekt wie ein Spiel angehen kann.
Es ist nicht damit getan, zu sagen "Zeit? Hab ich... Ich bin zwar jeden Tag nach der Arbeit/Uni/Schule ziemlich fertig, habe aber so 2 Stunden Zeit um mich damit auseinander zu setzen. Das wird reichen." - Tut es nicht! So lange wird es bei komplexen Projekten alleine dauern, dich erst mal warm zu machen und dich in deinen Code einzulesen.
Die wichtigste Ressource, die ein Programmierer hat ist ununterbrochene Programmierzeit.
Noch wichtiger: Eine Programmiersprache lernt man nicht in drei Wochen, und um anspruchsvolle Spiele zu schreiben mußt du gut mit deiner Sprache umgehen können. Es kann Monate dauern, bis du soweit bist, dein erstes ernsthaftes Spiel in Angriff zu nehmen.
Du brauchst also eine Menge Zeit und Geduld.
2. Eine Programmiersprache
Ohne eine Programmiersprache kannst du nicht programmieren, logisch.
Die Wahl der Sprache ist nicht leicht, und jeder wird dir was anderes empfehlen. Für Anfänger ist eine IDE (Integrated Development Environment; Entwicklungsumgebung) empfehlenswert. Damit erleichterst du dir das Entwerfen deines Programms (und einen Teil des Programmierens selbst).
Gut, wir beschränken uns also auf die Sprachen, zu denen es IDEs gibt. Es gibt grundsätzlich zwei Arten von Sprachen: Compilersprachen und Interpretersprachen. Bei Compilersprachen wird deine Quellcode in ein Programm verwandelt, das so für sich lauffähig ist. Bei Interpretersprachen wird der Code einfach verpackt und später von einem andere Programm ausgeführt.
Interpretetsprachen neigen dazu, langsamer als Compilersprachen zu sein.
Hier einige der bekannteren Sprachen und IDEs:
Code:
IDE Sprache Typ
--------------------------------------------------
Bloodshed Dev-C++ C++ Compiler
Borland C++ C++ Compiler
Microsoft Visual C++ C++ Compiler
Microsoft Visual C# (.net) C# Compiler
Borland Delphi Delphi Compiler
Microsoft Visual Basic Basic Interpreter
Eclipse Java Interpreter
Borland JBuilder Java Interpreter
NetBeans Java Interpreter
Welche dieser Sprachen/IDEs du wählen solltest werden wir dir nicht sagen - da hat jeder eine andere Meinung, und deine Wahl sollte sich nach deinen Ansprüchen und nach nichts anderem richten. Am besten ist es wohl, wenn du mehrere Meinungen einholst und dir eigene Gedanken machst.
3. Also, ich habe freie Zeit und einen Compiler. Zeit, mein Spiel zu schreiben!
Hey hey, immer ruhig mit den jungen Pferden. Wie schon gesagt ist Spieleprogrammierung eine komplexe Angelegenheit. Eine 3D-Engine oder eine komplette Spiele-IDE (wie den RPG Maker) kann man nicht ohne Erfahrung aus dem Ärmel schütteln.
Am Besten besorgst du dir ein Buch zur Sprache und ein paar Tutorials und machst ein paar kleine Projekte... Kreuzen und Nullen. Tetris. Pac Man. Super Mario Bros. Am Besten in dieser Reihenfolge, denn sie sind nach Schwierigkeit sortiert.
Lies' Tutorials. Bau' Beispielcode nach und schreibe ihn dann um. Erweitere ihn. Welche Techniken du zuerst lernst hängt vom Buch/Tutorial ab.
4. Konzept: (v. Malakai)
Bevor ihr anfangt ein Spiel o.Ä. zu programmieren, solltet ihr vorher eine grössere Konzeptphase machen. Es bringt nichts, mit ein, zwei Ideen einfach drauflos zu programmieren und dann nach 2 Monaten keine Ideen mehr zu haben. In dem Konzept sollten (auf Spiele bezogen) Dinge wie Storyboard, einheitliche Programmierstile, Möglichkeiten und Grenzen des Projekts etc. besprochen werden. Joah, das wollte ich nur dazu sagen. Ohne ein gutes Konzept ist IMHO ein (Spiele)Projekt zum Scheitern verurteilt.
5. "Ich suche Leute für mein Projekt, es ist ein Browsergame, meldet euch unter mail@domain.tld"
Wenn du ein Projekt hast und merkst, daß du es alleine nicht packst, dann solltest du dir die Frage stellen, ob es nicht sinnvoll ist, wenn du dich erst mal an was kleineres setzt. Wahrscheinlich lautet die Antwort "nein, ich will das jetzt machen", also lies' weiter.
Wenn du jemanden für dein Projekt begeistern willst, dann brauchst du vor Allem zwei Dinge:
Informationen - Wenn die User nichts über dein Projekt wissen, dann interessiert es sie auch nicht. Gib' so viele Informationen wie möglich - Art des Projektes, Programmiersprache(n), Betriebssystem(e), verwendete Bibliotheken, Konzept, Aufbau... Alles, was du über dein Projekt sagen kannst, hilft den Usern hier dabei, sich ein Bild vom Projekt zu machen. Wenn du nichts sagst nimmt automatisch jeder an, daß du auch nichts geplant hast - und dann will dir auch niemand helfen.
Ergebnisse - Ein Projekt, an dem schon gearbeitet wurde, ist viel attraktiver als eins, das nur auf dem Papier existiert. Geleistete Vorarbeit zeigt den Usern, daß du es mit deinem Projekt ernst meinst und daß du auch Arbeit investieren willst.
Stell' dir den Thread, in dem du nach Mitarbeitern fragst, wie ein Vorstellungsgespräch vor: Du mußt dein Projekt präsentieren und den Leuten vermitteln, warum sie gerade bei dir mitarbeiten sollen. Hier haben alle ihre eigenen Sachen laufen und niemand macht bei einem ihm unbekannten Projekt mit, nur weil es da ist. Du bist ein Bittsteller und du mußt die Leute überzeugen, deiner Bitte nachzukommen - also zeig' dein Projekt von seiner besten Seite und du könntest vielleicht Glück haben.
Nun weißt du, daß es kein kleiner Schritt ist, ein Spiel zu programmieren. Wenn du wirklich eins machen willst mußt du eine Menge Zeit, Geduld und Nerven investieren. Dafür bietet dir die Programmierung das, was alle schweren Unterfangen bieten: Ein verdammt gutes Gefühl wenn du erst mal fertig bist.
Falls wir dich mit diesem Artikel nicht abgeschreckt haben wünschen wir dir viel Spaß in der bunten Wunderwelt der (Spiele)programmierung.
-- Freezy und Jeez
Kleines Programmier-Lexikon, rev. 2
Ich stelle in diesem Post ein kleines Lexikon mit Begriffen zusammen, die einem in diesem Forum früher oder später über den Weg laufen könnten.
Erweiterungen und Änderungsvorschläge bitte nicht posten, sondern per PM an mich schicken; das spart Platz. Generelle Fragen und ommentare können gepostet werden, allerdings werden alle Informationen in diesem Post bleiben.
Der "rev. *"-Zusatz hinter dem Threadnamen wird immer um einen erhöht, wenn ich das Lexikon erweitere oder ändere.
Einträge sind mit dieser Farbe gekennzeichnet.
- API (Application Program(ming) Interface; Schnittstelle für Anwendungsentwicklung) - Offengelegte Programmierschnittstelle einer Anwendung oder eines Betriebssystems. Ermöglicht es, eigene Funktionen zu integrieren und mit dem Betriebssystem/dem Programm zu kommunizieren
- App (abk.: application) - Anwendung. Die englische Version von Prog
- Binary (pl. Binaries) - Ein fertig kompiliertes Programm
- Bug - Ein Fehler in einem Programm
- Code (alias Sourcecode, Quellcode) - Das, was man schreibt, um ein Programm zu erstellen
- coden (alias proggen) - Code schreiben; programmieren
- Compiler - Ein Programm, das Code in ausführbare Programme umsetzt
- Debugger - Ein Programm, das dem Anwender hilft, Bugs in seiner Software zu finden und zu entfernen
- Dotnet (alias .Net) - Software-Framework von Microsoft, die einfach zu erstellende und angeblich irgendwann portable Programme erlaubt, im Moment aber nicht mal auf Windows wirklich gut funktioniert. Wird oft mit Java verglichen
- Framework - Ein Framework ist ein System, welches auf Basis eines Grundgerüsts verschiedene Komponenten für ein bestimmtes Anwendungsgebiet bereitstellt
- GUI (Graphical User Interface, Grafische Benutzerschnittstelle) - Eine grafische Anwendungsoberfläche eines Programmes
- IDE (Integrated Development Environment; Integrierte Entwicklungsumgebung) - Entwicklungsumgebung für Programmiersprachen, normalerweise mit einer GUI. Enthält für gewöhnlich Editor, Compiler und Debugger, aber auch zahlreichen Tools zur Erstellung eigener Programme
- kompilieren - Mit einem Compiler aus Code ein Programm erstellen
- Open Source - Open Source-Software (OSS) zeichnet sich dadurch aus, daß jeder Zugriff auf den Sourcecode hat. OSS entwickelt sich für gewöhnlich schneller als normale ("Closed Source"-)Software und paßt sich schneller an. Das bekannteste Beispiel für OSS ist Linux. Die Open Source-Initiative hat eine genauere Definition
- portabel - Ein portables Programm kann auf mehreren Betriebssystemen kompiliert werden und ist dort lauffähig
- Prog (abk.) - Programm. Bezieht sich auf Programme in allen Entwicklungsstufen, ob kompiliert oder nicht
- proprietär - Das Gegenteil von Open Source. Proprietärer Code gehört einem Unternehmen, bzw. einer Person; Andere haben keinen Zugriff
- RAD (Rapid Appliaction Development; Schnelle Anwendungsentwicklung) - Ein Konzept zur schnellen Erstellung von Applikationen, welche u.A. auf Wiederverwendung von Softwarekomponenten und Mehrentwicklerbetrieb baut
- SourceForge (alias SF) - Die Website www.sourceforge.net, eine Sammelstelle für Open Source-Projekte
Mit Erweiterungen von MuadDib