A TURTED based real-time thing that I’m proud of…

I recently finished a nice little example of how to use real-time data for an exciting and equally relaxing view:

Blocker Champ Real Time


http://reloaded.karopapier.de/blocker

What’s that?
It shows a list of players and the number of games where it is their turn.
As soon as they make a move, they are moved to the new position with a nice animation.

Interestingly enough, the hardest part was the JQuery/UI animation stuff.
Since it already is based on the components that are soon to become the TURTED project the real time events were already there to be intercepted and used.

So, if you feel stressed, just sit back, relax and watch the squares move – the ZEN of Karopapier

Der Umstellerei nicht genug…

Posted on 2009-11-24

Von symfony 1.0 über 1.1 zu 1.2 zu 1.4 und von propel zu doctrine und von prototype zu jquery

Das ist das, was ich gerade mit meinem Karopier-Code mache. Und irgendwie hab ich das Gefühl, dass kann nicht ewig so weitergehen. Kaum hab ich was fertig, kommt was neues und ich will’s einbauen/anpassen…

Aber ich glaube, mit symfony 1.4 (stable ist ja um die Ecke), doctrine und jquery hab ich jetzt etwas, das länger halten sollte. Von daher machen die Umstellungen jetzt, so früh, glaube ich sogar noch Sinn, auch wenn ich jetzt ein paar Sachen wieder neu machen muss, die vorher schon taten…

Nächster Plan: Karo2.0 auf Doctrine

Posted on 2009-09-25

So, der Plan für die nächste Zeit lautet:

Alles, was ich bisher in Karo2.0 gemacht habe, auf Doctrine umzubauen. Warum? Ganz einfach: Ich will ordentliche Unit Tests machen, um mit den ganzen Funktionen (insbesondere denen zum “aufräumen”) sicher zu sein. Und das macht sich am besten, wenn man nicht die “echte” sondern eine Testdatenbank benutzt.

Und da propel das nicht so gut drauf hat, mehrere Datenbanken gleichzeitig zu bedienen… werde ich wohl doch jetzt auf Doctrine umstellen – und somit nochmal “fast from scratch” neu anfanfen – aber diesmal dabei gleich die Tests schreiben.

Krasses Unterfangen, aber wir schon irgendwie gehen.

Von daher: Heut kommt der große Moment, wo ich mit die “original”-DB nochmal runterziehe und mir daraus dann ein schema erstellen lasse. So der Plan – mal schauen, wie weit ich komme, bis ich verzeifle…

Krasse Java Script Kartendarstellung

Posted on 2009-09-16

Seit gestern gibt’s mal wieder was neues bei Karopapier, das zumindest so auch mal sichtbar ist -wenn auch nur als Prototyp.

Unter Zuhilfenahme der sehr hübschen JavaScript Graphics Library wz_jsgraphics (http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm) hab ich die Karokarten bzw. die Züge der User KOMPLETT in JavaScript zeichnen können.

Die Vision, dass man dem User/Client prinzipiell nur die rohen Zugdaten liefert und er sich seine Kartenansicht selber baut, gibt’s schon länger. Denn Karten Zeichnen braucht ja doch ne gewisse Performance auf dem Webserver.

Mit dieser Library scheint es aber zumindest in gewissem Maße möglich zu sein, dies auszulagern. Einen Prototyp davon hab ich schon seit einem Jahr oder länger schimmelnd rumliegen gehabt, ihn aber gestern wieder ausgegraben und mit meinem etwas gewachsenen JS-Wissen der letzten Monate weiter ausgebaut.

Somit war es dann sogar möglich, pro Spieler eine Ebene mit den Zuglinien (Canvas) zu erzeugen, die dann natürlich auch einfach mal schnell ein- oder ausgeblendet werden können. Somit ließe sich auch ganz praktisch ein “Wo war ich schon” schnell auf der gesamten Karte anzeigen lassen.

Evtl. ließe sich damit auch ein JS-basiertes Replay (à la KaroTools, einfach genial, aber wg. SVG halt nur bedingt populär) umsetzen… aber mit dem window.setTimeout bin ich bisher noch nicht ganz warm geworden bzw. es führt mit der Library zu Problemen (this-bind-Problem)

Wie auch immer, ich hab’s mal eingebunden und als Alpha-Version verlinkt, wenn es auch bei manchen Spielen einfach mal kommentarlos abfackelt… aber is ja Alpha, nich mal Beta 😀

Mein erster Unit Test

Original Date: 2009-09-08

Peinlich, oder??

Da entwickel ich seit Jahren so vor mich hin, aber heut hab ich zum ersten mal bewusst einen Unit Test für symfony mit lime geschrieben. Und das krasse: DAS MACHT SOGAR SPASS.

Es ist echt toll zu sehen, wie schön das ist, wenn ne Funktion das tut was sie soll bzw. kann auch echt hilfreich sein, um Fehler zu finden – wenn etwas nicht so is, wie’s sein sollte.

Albern, oder? Und doch so klar?

Aber ich vermute, ich bin nicht der einzige da draußen, der sich für einen tollen Programmierer hält, aber auch noch nie ordentlich was mit “richtigem” Testen gemacht hat… probieren – und wenn’s tut, tut’s… Denkste…

Wie dem auch sei, ich bin zufrieden. Hab erst mal nur eine Klasse getestet, aber is ja immer so: Erst das Prinzip verstehen, verbessern, und dann geht’s richtig los.

So, und mit dem neugeweonnenen Selbstvertrauen in meine Funktion für den Karo-Chat 2.0 hab ich den jetzt sogar auf das ECHTE Chatfile losgelassen. Und siehe da – es klappt!

Der neue Chat kann jetzt richtig schön AJAXen, neue Nachrichten faden ein, alte raus – herrlich…

Mal sehen, was als nächstes kommt. Vermutlich sollte ich mal eine ganze Ladung an statischen Testdaten für die Karo-Datenbank zusammenstellen, um da auchne zuverlässige basis für Tests zu haben?

Jaa, das sollte mal her.

Ach, nebenbei hab ich den von Quabla gemeldeten Bug gefixt: Bei Spielen “mit Checkpoints” aber keinen Checkpoints auf der Karte konnte man gleich ins Ziel – soll ja nich, geht jetzt auch nich mehr…

Nächste Ziele

Original Date: 2009-09-07

Was mir seit dem Wochenden bzw. dem symfony day in Köln klar geworden ist: Applikationen testen kann man auch einfacher haben, indem man sich halt mal hinsetzt und Unit/Functional tests schreibt.

Das heißt für mich: Bei meinem karopapier 2.0 werde ich jetzt mal ein paar Fälle bzw. Testdaten generieren und mir ein paar ordentliche Tests schreiben. Und wenn die in den verschiedenen Kombinationen das tun, was sie sollen, dann kann ich ja sogar mal die “KaroMAMA” (“Multiple Automatische Müll Aufräumer”) live schalten.

Die tut ja schon seit einiger Zeit, aber ich trau ihr noch nicht so richtig, um sie auf’s Produktivsystem zu lassen. Aber danach vielleicht?

Und das zweite Ziel wird dann evtl. sein, Karo2 von propel auf doctrine umzustellen. Muss ja eh irgendwann…

Ach ja, und den Ajax-Chat für Karo, der unter karo2 schon läuft, müsst ich auch noch fertig machen, so dass man auch mal was eingeben kann. Das Problem, dass mir die RegExp von “Botrix, was verstehst Du” die JSON-Daten zerschießen, werd ich mit ganz viel en- und decoding schon irgendwie hinbekommen *hoff*