Hallo alle zusammen,
es ist schön zu lesen, dass immer mehr Leute den Willen zeigen eigene (für Spieler kostenfreie) Browsergames zu entwickeln und zu betreiben. Dies bereichert aus meiner Sicht den Markt an Computerspielen ungemein, da Spielerwünsche meist nicht zuletzt auf einer Roadmap stehen.
Aber dennoch muss ich sagen, so hart und gemein, rücksichtslos und unwissend, vor allem im meiner Position als Gast in diesem Forum, es klingen mag, dass ihr scheinbar nicht alle wirklich eine Ahnung davon habt wie aufwendig die Entwicklung selbst eines relativ einfachen Click-and-Raid-Browsergames ist.
Als Referenz meiner Person nenne ich einfach Mal Informatikunterricht seit knapp 5 Jahren, teils in der Oberstufe, im Abitur als Prüfungsfach und in meiner IT-Ausbildung. Auch ich habe vor ein eigenes Browsergame zu entwickeln.
Leider ist es oft genug zu lesen, dass Personen ein Browsergame schreiben möchten, dann aber Fragen stellen die anderen offenbaren, dass scheinbar kein nötiges Wissen zur Entwicklung einer Webanwendung vorhanden ist. Entsprechende oft fallen dann auch Anworten sich mit HTML, CSS, Javascript und PHP auseinanderzusetzen; dann könne man das Browsergame programmieren. Aus meiner Sicht ist das aber eine der fatalsten Antworten die man einem, nennen wir sie Einsteiger, geben kann.
Viel eher sollte man meines Erachtens nach darauf eingehen ob bereits grundlegende Kenntnisse der Softwareentwicklungstheorie vorhanden sind. Denn ein Einsteiger der PHP-Skripte fehlerfrei schreiben und parsen kann, aber nicht weiß das er gerade ein prozedurale Skriptsprache mit der Möglichkeit zur objektorientierten Programmierung verwendet, hat aus meiner Sicht nur eine falsche Ahnung der Materie.
Ich denke, dass es elementar für ein solches Projekt ist, zu wissen welche unterschiedlichen Entwicklungsmodelle für Software, Programmierparadigmen, Sprachtypen, u.a. es bspw. gibt.
Andersherum ist es genauso falsch mit null Ahnung-Posts in Foren um die Entwicklung eines Browsergames zu bitten, wenn man die Ideen dazu liefere und anbietet das Ganze zu managen und zu administrieren.
Das Entwickeln eines Browsergames ist kein Kaffeklatsch von ein paar Wochen, sondern beansprucht idealerweise mehrere Monate/Jahre Zeit. Sicherlich lassen sich die benötigten Zeilen Code auch in ein paar Wochen schreiben, dabei beachte man allerdings, dass erst ein paar Wochen/Monate Vorabeit dies ermöglichen.
Diese Vorarbeit sollte aus dem Erarbeiten eines Konzept- und Designdokuments bestehen, in dem alle Ideen zum Browsergame niedergeschrieben werden. Noch bevor überhaupt eine einzige Zeile Code geschrieben wird sollte das gesamte Spiel mit all seinen Features, Funktionen, Zuständen, Inhalten, usw. im genannten Konzept- und Designdokument niedergeschrieben sein. Dies umfasst auch Layout-Dummies des zukünftigen Frontends in allen möglichen Zuständen, genauso wie eine detailierte Beschreibung der technischen Implementation des Problems.
Um ein mögliches Beispiel zu liefern zeige ich euch die Gliederung meines Konzept- und Designdokuments. Extra für dieses Dokument habe ich begonnen mich mit dem Textsatzsystem LaTeX auseinanderzusetzen. Dies kann ich sehr empfehlen, das es sehr gut geeignet ist größere Dokumente mit 300 Seiten und mehr zu verarbeiten (besser als klassische DTP-Software, wie bspw. Office und OpenOffice es sind). Mein Dokument umfasst bereits knapp 30 Seiten, bei einer investierten Menge von schätzungsweise 50 Arbeitsstunden, welche auch das Erlernen von LaTeX und das schreiben/zeichnen von handschriftlichen Teilen des Konzepts einschliessen. Das gesamte Dokument wird am Ende schätzungsweise 300 bis 500 Seiten umfassen, die verwendeten RFCs (der W3C) mit ca. 200 Seiten eingeschlossen.
Die grobe Gliederung sieht bei mir wie folgt aus:
* Einleitung
- Projektidee
- Projektziel
- Projekttitel
* Spiel
- Spielidee
- Spieltitel
- Genre
- Setting
- Spielfluss
- Features
- Spieler
- Accounts
* Inhalte
- Charaktere
- Gegenstände, Gebäude, etc....
...
* Spielwelt
- Beschreibung
- Aufbau
...
* Grafik
- Stil und Artwork
- Layout
...
* Projektmanagement
- Arbeitsmodule
- Arbeitspakete
- Meilensteine
- Roadmap
- Budgetplanung
- Teamplanung
...
* Tabellen
* Technik/Implementation
- Problembeschreibung
- Anforderungsdefinition(en)
- Pflichtenheft
- Sprachen
- Werkzeuge
- Architektur
- Modelle, Diagramme
...
* Stichwortverzeichnis
* Tabellen- und Abbildungsverzeichnis
* Quellenverzeichnis
Ich werde das Ganze so handhaben, dass bevor das Konzept- und Designdokument nicht vollständig abgeschlossen ist, ich keine einzige Zeile Code schreiben werden.
Welchen Inhalt soll man denn programmieren, wenn kein umsetzbarer Inhalt da ist?
Für Einsteiger ist es also zu empfehlen ebenfalls diesen Schritt noch vor der Programmierung zu tun. Während dieses Dokument verfasst wird können auch die benötigten Grundlagen der Softwareentwicklungstheorie parallel dazu angeeignet werden, sowie folgend nach der Auswahl einer passenden Programmiersprache eben diese gelernt werden. Erst wenn das Dokument vollständig ist und die gewählte Programmiersprache beherrst wird, sollte mit dem Programmieren begonnen werden.
Das Dokument hat den Sinn als eine Art Regelwerk zu dienen, an welches man sich während des Programmierens hält. Es soll davor bewahren, dass während der Programmierung Ideen verworfen und neue hinzugefügt werden. Dadurch das man im Dokument niedergeschriebene UML-Diagramme, ER-Modelle und PAPs, etc. umsetzt ist ein einfacher auch bei mehreren Tausend Zeilen Code den Überblick zu bewahren. Arbeitet man im Team sind auch die Programmierparadigemen, Notationen von Quellcode (bspw. Ungarische Notation im camelCase), etc. über alle Teammitglieder und deren Rollenverteilung einheitlich geregelt.
Aber welche Programmiersprache soll man verwenden? Für diese Frage gibt es keine einheitliche Antwort. Welche PS man verwenden sollte hängt in erster Linie davon ab ob die PS das Problem lösen kann. Klassischerweise verwendet man für Browsergames wohl die Auszeichnungssprachen HTML mit CSS für die Ausgabe, den in C/C++ geschriebenen Apache als Webserver mit dem Modul für die Skriptsprache PHP für die Rechenlogik und das RDBMS MySQL als Datenerhaltungsschicht. Es ist also erkennbar das nur Kombinationen von PS für Browsergames verwendet werden, nie eine PS einzeln; wobei zu bemerken ist, das man als Entwickler nicht alle beherrschen muss, da man ja den Apache in der Regel für das eigene Browsergame nicht verändern muss.
Alternativ zu PHP ließen sich auch Perl, Python oder Ruby als Skriptsprache verwenden, PostgresQL als Datebankalternative zu MySQL, oder sogar XML als Ersatz für eine Lösung mit Datenbank. Möchte man einen auch das Browsergame spezialisierten Webserver sind Kenntnisse über C/C++ unabdingbar, um bestehende Webserver (Apache, lighttpd, tnt) zu verändern (OpenSource!) oder gar einen eigenen zu schreiben.
Auf alle Fälle sollte man sich nicht davon abschrecken lassen, dass man eine Menge lernen muss, wenn man ein Browsergame schreiben möchte. Auch Antworten in Foren wie alleine ist das nicht machbar oder viel zu schwierig sind aus meiner Sicht unpassend; man braucht alleine vielleicht länger kann es aber mit entsprechender Vorbereitung auch schaffen, denn die ist alles.
FG roka
Am Ende noch ein paar passende Links zum Thema
Werkzeuge, Tools, Software, Dokumentationen
LaTeX
LaTeX-Distribution
LaTeX-Editor für Windows
RFCs
genialer GN-Artikel zur BG-Entwicklung
schöner GN-Artikel zum Thema BG-Hosting
Begrifflichkeiten der Programmierung
Programmierspache
Compiler
Interpreter
Software-Lebenszyklus
gut ersichtliche Gliederung in der SW-Entwicklung
Das Wasserfallmodell
Das Spiralmodell
Objekorientierung
XP-Programmierung
Interpreter- und Compilersprachen
PHP
offizielle PHP-Dokumentation
Perl
Python
Ruby
JavaScript
C++