Jun 26 2009

DotA – Defense of the Ancients

Tag: AllgemeinPhoscur @ 19:21

Ich spiele seit langer Zeit dieses Spiel, es hat mich dauerbegeistert. Mittlerweile dürften es fünf Jahre sein, seit ich es das erste Mal gespielt habe.

Blizzard stellt für WarCraft3 und andere Spiele ein herrliches Online-Netzwerk zum Spielen bereit, es nennt sich Battle.net. Gepaart mit einem sehr guten Mapeditor ergibt das eine Vielfalt von sogenannten Funmaps, die man online gegen andere menschliche! Spieler spielen kann. Als Browsergamespieler kennt ihr den Reiz gegen menschliche Spieler zu spielen; ich mag sehr gerne Strategie.

DotA ist eine dieser Funmaps, die permanent entwickelt wird. Ich wage zu schätzen, dass weltweit eine Millionen Spieler diese Karte für WarCraft3 TFT aktiv spielen oder bereits aktiv gespielt haben.

Anstatt weiter auf das Spiel selbst einzugehen, möchte ich ein wenig analysieren, was das Spiel so attraktiv macht. Wer sich interessiert sollte mal bei Freunden nach einem WarCraft3+Erweiterung Serial fragen oder sich das Spiel zulegen, zusammen kostet das immer noch 26€ glaube ich. Ein wenig mehr über das Spiel: Wikipedia DotA Allstars. Seit knapp zwei Wochen ist die Karte sogar auf Deutsch verfügbar, wenn auch ein wenig verbuggt. Es wird sich zudem darum bemüht, das Spiel einsteigerfreundlicher zu machen.

Ich sinne auch schon seit Jahren an einer Browsergame-Umsetzung von DotA, aber das ist wahrscheinlich unmöglich. Stattdessen könnte man versuchen sehr gute Aspekte des Spiels wiederzuverwenden. -Keine Angst, ich werde jetzt nicht die Entwicklung von UGamela abbrechen, aber wer weiß, was man alles in ein Weltraumspiel miteinfließen lassen kann, oder ob sich das Spiel nicht doch hervorragend modden lässt…-

Der attraktivste Punkt an DotA ist wohl die permanente Entwicklung und Erweiterung (bereits mind. 7 Jahre) und die einhergehende Vielfalt. Das Spiel umfasst mehr als 95 Helden und eine schiere Fülle von Gegenständen („Items“). Das Balancing ist fast perfekt und wird immer wieder verbessert. Zum Gewinnen kommt es natürlich auf das persönliche Können jedes Spielers an, doch wichtiger ist noch das Zusammenspiel des Teams. Trotz einer Rollenverteilung ist DotA kein RPG.

Leider ist Teamplay nur sehr begrenzt im Browsergame umzusetzen, doch ständige Weiterentwicklung und Vielfalt sind auf alle Fälle möglich. Ich habe an einen unendlichen Technologiebaum gedacht. Aktive Fähigkeiten von Helden erfordern die Anwesenheit des Spielers und direkte Kommunikation mit dem Server. Bisher laufen Kämpfe im Galaxiebrowsergame eher sehr selbstständig ab, das würde ich gerne behalten, denn für etwas anderes ist das Browser-Server-System ungeeignet. Doch einige Helden und Items in DotA besitzen passive Fähigkeiten, die man in einem ähnlichen Stil übertragen könnte.

Beispiel: Lifeleech (Lebensraub) ist eine Fähigkeit, die einen Prozentsatz des verursachten Schadens als Leben zurückgewinnt. Natürlich müsste man für Raumschiffe einen anderen Namen und eine bessere Beschreibung für diese Fähigkeit finden, aber spannender würde es mit soetwas auf jeden Fall werden. Besonders, wenn sich diese Fähigkeiten auch noch ausbauen oder verschmelzen lassen.

Auch das ist ein wichtiger Aspekt bei DotA: ein Held hat eine begrenzte Anzahl Slots für die Items, kleinere Items lassen sich mit Rezepten zu größeren zusammenbauen. So könnte man die Anzahl der Schiffe im Kampf natürlich senken, indem sie sich effektiv ausbauen lassen. Das macht die Kampfberechnung zwar teils komplexer, aber auch einfacher, weil weniger Schiffe berechnet werden müssen.

Ich hoffe das klang nun alles nicht zu sehr weit hergeholt, aber ich versuche sowieso ein wenig Richtung Fantasy zu gehen. Zum Beispiel mit einer weiteren Rasse und einer anderen Energiesorte (Mana). Spannend wäre es beide Energiesorten gleichzeitig zu nutzen…


Jun 23 2009

Fortschritt, PHP und JavaScript, OOP

Tag: EntwicklungPhoscur @ 11:12

Die Entwicklung des (PHP-)Codes schleicht eher voran, als dass es wirklich vorwärts geht. Dafür formt sich eine Idee, die mehr und mehr auf die browserseitige Scriptsprache JavaScript setzt. Ich habe bereits geschrieben, dass ich Templates mit JavaScript parse, nun sollen ganze Inhalte nur mit JavaScript generiert werden. Views des MVC werden in dieser Sprache geschrieben. Dabei muss man aber extrem auf die Sicherheit aufpassen. Clientseitig darf man nur mit Daten arbeiten, die sowieso öffentlich sind. Ein gewisser Arbeitsaufwand bleibt deshalb immer auf der Serverseite hängen, die bei diesem Projekt mit PHP gebaut ist.

Nun verwende ich zu großen Anteilen die zwei verbreitetsten Websprachen, die beide von vielen Leuten verachtet werden, weil sie vor allem von Amateuren verwendet werden.

Besonders JavaScript scheint eine interessante Vorgeschichte zu haben. Vor einigen Monaten, als ich anfing JS zu lernen, kam ich auf D. Crockford und habe mir seine Videovorträge angesehn. Ich habe JS somit direkt OOP gelernt, wie es sich eigentlich gehört. JS ist sehr objekt-orientiert, Crockford nennt sie „ausdrucksstark“. Die genau Übersetzung ist mir unklar, ist aber auch egal, denke ich.

Ich kann diesen Artikel nur empfehlen, notfalls auch übersetzt, für diejenigen die weniger gut Englisch können. Um Englisch kommt man aber beim Programmieren kaum herum und Crockford schreibt und redet eigentlich ein sehr gut verständliches und deutliches Englisch. Auch seine Videos kann ich nur weiterempfehlen, es lohnt sich!

Ich entwerfe also ein kleines Grundgerüst in JavaScript, das mit dem serverseitigen Teil, den ich in PHP geschrieben habe, zusammenarbeitet. Dabei ist vor allem der ganze AJAX-Kram sehr nervig. Da alles asyncron ist, muss man ständig mit Callbacks arbeiten (Man übergibt die Funktion, die ausgeführt wird, sobald der Request abgeschlossen ist und die Daten zur Verfügung stehen), was ständig zu Verschachtelungen führt, die ich eigentlich umgehen möchte.

Derweil feiere ich mein Abi und mache ein wenig Urlaub mit Freunden. Ich werde also nicht permanent hieran arbeiten, aber hoffentlich dennoch vorwärts kommen.