Nov 22 2009

Zweiter Geburtstag

Tag: AllgemeinPhoscur @ 17:23

Ich kann mir Geburtstage einfach nicht merken. Naja, bei diesem ist eh nicht klar, wann er genau war, jedenfalls im November vor zwei Jahren. (Hab grad nochmal nachgesehn) Interessant, mir kam es so vor, als würde ich schon seit drei Jahren an diesem Projekt arbeiten. Dennoch war dieses Jahr ganz anders wie das letzte.

Lebt UGamela noch? Fragen sich viele. UGamela wird noch sehr lange leben, denn viel zu viele Browsergameprojekte haben den UGamela Source als Basis verwendet. Selbst OpenSource wird ein Zweig von UGamela weiterentwickelt: XNova. Gut, ob das wirklich Entwicklung ist, darüber könnte man sich jetzt streiten…

Für mich, und damit das ganze german UGamela Projekt, war das Jahr von meinem Abitur, Ferien und meinem Studienbeginn bestimmt. Code wurde nicht viel geschrieben, dafür habe ich mich auf professionelles Niveau, was Objektorientierung angeht,  gebildet und einen guten Stil in JavaScript gelernt. Mittlerweile kenne ich auch noch andere Sprachen und weiß Vorteile von PHP und JS zu schätzen. Ich habe auch einige Techniken gelernt was allgemein Softwareentwicklung angeht und hoffe, dass ich in der Lage sein werde ein Opensourceprojekt zu leiten.

Mit einem Release rechne ich trotzdem nicht vor einem Jahr.

Alles weitere weiterhin auf diesem Blog!


Okt 31 2009

News

Tag: AllgemeinPhoscur @ 01:49

In letzter Zeit ist so viel passiert, ich weiß gar nicht wo ich anfangen soll. Vielleicht damit, dass ich zwar wusste, dass mit einem Informatikstudium in Karlsruhe ein Haufen Mathe auf mich zukam und damit rechnete, dann aber doch irgendwie unvorbereitet damit konfrontiert wurde. Mathematik an der Universität lässt sich nicht mit Mathe in der Schule vergleichen. Ich belege Höhere Mathematik und Lineare Algebra mit jeweils zwei Vorlesungen in der Woche (=6h), dazu kommt noch jeweils ein Tutorium und die tollen Übungsblätter mit zugehöriger Vorlesung. Dazu noch eine Vorlesung Objektorientiertes Programmieren in Java und Grundbegriffe der Informatik und dann ist meine Woche auch schon gut gefüllt. Wenn man bedenkt, dass ich bereits programmieren kann und GBI eigentlich auch nur Mathe ist, bin ich also die ganze Woche mit Mathe beschäftigt, daran muss man sich erstmal gewöhnen. Keine anderen Fächer in denen man die verbleibenden Gehirnwindungen motivieren kann, kein Wunder, dass man abends relativ fertig nach Hause kommt weil man zwischen den Vorlesungen noch 4h für die wöchentlichen Übungsblätter gearbeitet hat. Die Dinger haben es wirklich in sich. Leider führt da kein Weg dran vorbei, ansonsten wird man nicht zur Prüfung zugelassen.

Soviel zu meinem Studium, freizeitlich beschäftige ich mich weiter mit UGamela bzw. der Phlame Engine. Nach „Entwurfsmuster“ habe ich „Patterns of Enterprise Application Architecture“ begonnen zu lesen und einige Muster wieder erkannt, auf die ich auch schon gekommen war. So handelt sich meine Idee um einen Mapper für DomainModels (das was ich ursprünglich Phlame genannt hatte, mangels eines beschreibenden Namens [siehe Entwurf Nr.3]), das ganze kann man dann auch „Unit of Work“ nennen. Diagramme dazu kommen irgendwann demnächst, spätestens zum Release für die Dokumentation.

Dazwischen habe ich viel in einer Wiki gelesen und allgemein viel über Softwareentwicklung und Entwurfsmuster gelernt. Zudem habe ich ein wenig in der Abteilung in der Bibliothek gestöbert und einige Bücher überflogen. Nun lese ich gerade ein Buch über Testgetriebene Entwicklung und versuche mir diese Strategie anzueignen, wie auch schon im letzten Post beschrieben.

Wie geht es nun mit dem Code voran? Ich habe gerade Relationen zwischen DomainModels implementiert und werde nun einige Tests durchführen bevor ich mich weiter dem JavaScript-Front-Backend widmen kann um dann endlich Spielinhalt schreiben zu können.


Sep 19 2009

Test Driven Design/Development (TDD)

Tag: Allgemein,EntwicklungPhoscur @ 15:07

Testgetriebene Entwicklung.

Ich habe mich entschieden nach diesem bewährten Schema vorzugehen. Dabei arbeite ich mich gerade in das schreiben solcher Tests ein. Die Schwierigkeit besteht darin, die richtigen Tests zu schreiben. Diese Tests können dann während der Entwicklung immer wieder verwendet werden um den Code zu prüfen. Ich werde dafür Tests mit PHPUnit sowie JSUnit schreiben, denn mittlerweile bin ich mir sicher, dass beide Parts ähnlichgroße Komplexität erreichen werden.

Warum? Weil diese bewährte Strategie mir hilft Fehler früh zu erkennen und spätere Änderungen zu erleichtern. Sobald alle Tests erfolgreich durchlaufen bin ich fertig.

Leider fehlt mir noch die große Vorraussicht alle Tests von vornherein zu schreiben, ich werde Stück für Stück vorgehen müssen. Gleichzeitig überlege ich zuerst ein UML Diagramm anzulegen.


Sep 11 2009

Entwurfsmuster – Buch

Tag: AllgemeinPhoscur @ 19:34

Design Patterns – das Buch, das weit auch als „das GoF Buch“ bekannt ist, gehört nicht zu den neuesten Büchern zum Thema, ist aber das Bekannteste und Altbewährte. Ich habe es die letzten Wochen das erste Mal gelesen bzw. bin es durchgegangen. Mein Fazit:

Ein gutes Buch! Ich bereue keineswegs 50€ dafür ausgegeben zu haben. Werde es aber auch nochmal irgendwann auf englisch in die Hände bekommen müssen, wegen des Vokabulars.

Wie der Name schon sagt, handelt es von Entwurfsmustern. Diese Muster beschreiben wie man Objekte in Beziehung setzen kann, Arten von Beziehungen die gut funktionieren. Es hilft bei Problemlösungen und zeigt auf, wie eine Analyse auszusehen hat. Die Beschreibungen laufen über Vor- und Nachteil und detaillierte Beispiele.

Ich bin immer noch sehr dabei diese Art des Programmierens zu lernen, komme einem guten Niveau aber immer näher. Derweil versuche ich noch die Rolle von Prototypen in JavaScript zu verstehen um dann, selbst in JavaScript, Entwurfsmuster anzuwenden.


Aug 21 2009

Statusbericht

Tag: EntwicklungPhoscur @ 18:15

Ich dachte es wird Zeit für einen Statusbericht, ich bin gerade wieder dabei intensiv zu programmieren und zu lernen.

Leider muss ich zugeben, dass ich in den letzten Wochen nicht wirklich vorwärts gekommen war. Fehlende Motviation und Wissen waren wohl die Gründe. Momentan begreife ich die Objekt-Orientierung in JavaScript, die doch relativ schwierig zu entdecken ist, zumindest war sie das für mich. Wohl einfach aufgrund der größtenteils funktionalen Verwendung von JS. JS OOP programmiert sich zudem ganz anders wie PHP OOP, weil JavaScript vorallem auf Prototypen setzt.

Weiterlesen „Statusbericht“


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.


Mai 10 2009

News

Tag: EntwicklungPhoscur @ 21:56

Nein, ich habe nicht aufgegeben, nur weil ich einen Monat nicht geschrieben habe, auch wenn ich weder Ideen für Blogartikel, noch Zeit fürs Coden hatte. Ich war tief im Abiturstress, erst Donnerstag habe ich meine letzte Prüfung hinter mir gelassen, dass weitere folgen ist unwahrscheinlich. Ich warte nun auf meine Ergebnisse, das kann ein wenig dauern, aber sehr froh bin ich trotzdem. Der ganze Schulstress fällt von mir ab. Ich fahre jetzt (morgen) für zehn Tage nach Spanien – Abifahrt.

Danach geht es richtig los. Ich habe quasi jeden ganzen Tag Zeit mich dem Projekt zu widmen. Auch wenn ich nicht den ganzen Tag vor der Kiste hocken werden, wird sich viel tun. Ich bin gespannt, ob ich es schaffe, dass im Sommer schon etwas steht, aber ankündigen werde ich vorsorglich nichts. UGamela und die Phlame Engine bleiben mein liebstes Hobbyprojekt, so schnell ändert sich da nichts.


Apr 04 2009

JavaScript / AJAX: Callbacks umgehen, Verkettung von Befehlen

Tag: Allgemein,EntwicklungPhoscur @ 15:12

Ich beschäftige mich zur Zeit intensiv mit JavaScript, da es mir clientseitig einige Arbeit abnehmen soll.

Beispiel: JavaScript Templateparser

Ich stehe immer noch zu OOP und auch JavaScript untersützt OOP hochgradig, allerdings in einer für PHPler ungewohnten Form: mit Prototypes, ohne Klassen. Überhaupt ist in JavaScript alles ein Objekt oder – noch besser – eine Funktion! Ich habe hier keine Zeit eine JavaScript Einführung zu geben, ich bitte daher um selbständige Fortbildung um diesen Artikel verstehen zu können.

Weiterlesen „JavaScript / AJAX: Callbacks umgehen, Verkettung von Befehlen“


Mrz 02 2009

Fortschritt der Entwicklung, interessante Fehlermeldungen

Tag: EntwicklungPhoscur @ 22:56

Ich dachte ich notiere einfach mal den letzten Fortschritt und verbundene Pleiten, Pech und Pannen.

Mein Pseudo-Mapper ist quasi fertig, das heißt ein sehr wichtiges Grundgerüst steht. Das hat mich einigen Schweiß gekostet, denn mein lokaler Apache ist derweil kaputt gegangen und hat nicht gerade zu meinem „Ah, jetzt gehts“-Denken beigetragen. Ich war das Wochenende am Debuggen um ein wenig Ordnung in mein Klassengewurschtel zu bekommen. Derweil hat sich nicht selten mein Debugger einfach verabschiedet.

Fatal error: Exception thrown without a stack frame in Unknown on line 0

ist mein Lieblingsfehler, direkt nach dem kompletten Absturz. Das bedeutet soviel wie „Beim Aufräumen und somit in den Destruktoren ist etwas schief gegangen“, aber wo genau, das ist meist das nächste Problem herauszufinden.

Parent: child process exited with status 3221225477 -- Restarting.

War die einzige Fehlermeldung, die mir der Apache gab. Ich habe heute erst verstanden, dass dies nichts mit meinem Destruktorproblem zu tun hatte. Es handelt sich um ein momentanes Problem mit dem MySQL Treiber auf Vista. Ich installiere gerade eine Locale Maschine mit Ubuntu, um solchen Problemen zukünfitig aus dem Weg zu gehen (Apache&PHP laufen grundsätzlich besser auf Linux). Eigentlich will ich schon seit Monaten auf ein Linux umsteigen, hatte aber ein paar Startschwierigkeiten und wollte mein Vista nicht ganz aufgeben.

Soviel für heute. Ich denke ich bin eine gutes Stück weitergekommen, nun folgt die Entwicklung des MVC Modells, vor allem zugehörige JavaScript Algorithmen und mein JS-TemplateParser. Schätzen, wann es fertig wird traue ich mich noch nicht, besonders weil mein Abitur bevorsteht.


« Vorige SeiteNächste Seite »