Ik heb een game geschreven

Eigenlijk een hele tijd terug al, maar het was er nog niet echt van gekomen om daar hier wat over te schrijven. Nu met een klein beetje extra tijd is het wel aardig om eens wat inzage te geven over hoe ik het schrijven van een web-based spel nu eigenlijk aangepakt heb. Niet op de laatste plaats omdat ik daar 0 ervaring mee had, en als ik het kan dan kan jij het ook.

Het gaat hier om clickfarm.nl een simpele web game die uiteindelijk draait om het verzamelen van zo veel mogelijk geld met een zo goed mogelijk gebalanceerd en geautomatiseerd productie proces.

Clickfarm landbouw knop
Dit zou ik niet handmatig blijven doen šŸ˜‰

Waarom heb ik een game geschreven?

Ik vroeg me af of ik mezelf iets helemaal nieuws kon leren, alhoewel ik in het verleden wat PHP geschreven heb in in mijn werk de nodige scripts schreef wilde ik graag weten of ik ook HTML, CSS en Javascript kon leren.

Wat begon met een knop die simpelweg een teller liet oplopen mondde uit in een volledig spel met meer dan 2.000 regels code (dat had vast efficiƫnter gekund). Ik heb veel geleerd over JavaScript en ook het nodige over HTML en CSS, maar daar ligt voor mij toch minder de focus.

Random clickfarm broncode
Random clikcfarm code (game geschreven)

Mijn doel was dus het leren van een nieuwe taal, en dit is de eerste keer geweest dat er voor mij ook echt wat geklikt heeft waarbij ik het gebruik van objecten, functions en al dergelijke zaken ook heb kunnen plaatsen. Alles wat ik hierna geschreven heb voelt aanzienlijk eenvoudiger omdat er blijkbaar wat op zijn plek gevallen is.

Hoe heb ik de game geschreven?

Excessief gebruik van Google en heel veel proberen. De aanpak was heel iteratief en ik heb niet vooraf een groot plan gemaakt over hoe de bouw er uit zou gaan zien, sterker nog, de meeste functionaliteit is on the fly bedacht terwijl ik het aan het schrijven was. In dat opzicht is het een klein wonder dat het spel zo goed werkt als dat het doet.

Verder heb ik zeker in de latere stadia van de ontwikkeling veel input gebruikt vanuit onder andere het forum op Tweakers.net om het nodige in balans te brengen.

Ik denk wel dat dit een mooi voorbeeld is van hoe je als je enige affiniteit hebt met scripting vrij eenvoudig je kennis steeds verder kan uitbreiden. Begin met een klein projectje en bouw daar op door, probeer niet meteen de lat te hoog te leggen en accepteer dat het een zeer iteratief proces gaat zijn.

Learn krijtbord

Wat is er van gekomen?

Los van dat ik er een hoop van geleerd heeft hebben een hoop mensen veel tijd van hun leven verloren met het spelen van het spel. Op de piek waren er 400+ gelijktijdige spelers met een paar duizend bezoekers per dag op de site. Ik heb nooit reclame op de site gehad, maar wel de mogelijkheid geboden om donaties te doen, en wonderwel ook daadwerkelijk voor een aardig bedrag aan donaties ontvangen (dat had ik niet verwacht).

Voor mezelf is het voornaamste doel bereikt, ik heb weer een nieuwe taal geleerd waar ik comfortabel mee aan de slag kan. De stap naar NodeJS is inmiddels ook gezet dus ook daar ben ik inmiddels de nodige kennis van op aan het doen.

Tot slot

Alhoewel ik niet uitsluit dat ik later nog een klein stukje verder schrijf aan het spel en mogelijk het een en ander zal moderniseren acht ik dit ook weer niet heel waarschijnlijk. Het is een mooi project geweest en ik heb er een hoop van geleerd, maar het verder onderhouden zou wel aardig wat tijd gaan kosten waar voor mijzelf eigenlijk niets meer tegenover staat.

De code van het spel is beschikbaar op Github, mocht iemand nog goede toevoegingen aanbieden via die route zal ik die waarschijnlijk nog wel implementeren.

GitHub – HermanRonk/Clickfarm: Clickfarm webgame

Duh Websites

Dat de CampZone inschrijvingen open zijn gegaan zal niet veel van de lezers van mijn website zijn ontgaan, maar wat moet er nou allemaal gebeuren voordat zo’n website online kan en de kaartverkoop kan starten?

Tot dit jaar hebben we altijd gebruik gemaakt van een custom build systeem van GameParty.net maar na bijna 10 jaar hebben we besloten om voor een flexibelere oplossing te kiezen en zijn we dus op zoek gegaan naar een goed alternatief. En dat dat best een zoekwerk geworden is moeten jullie maar van me aannemen, maar volgens mij zijn er bijna net zo veel cms’en als er websites zijn, dus dat is een aardige vergelijking geworden. Uiteindelijk is dan de keuze voor een platform gemaakt (WordPress).

Op dat moment heb je dus een platform, maar ongetwijfeld wil je toch nog net een paar dingen die standaard niet kunnen, in ons geval heeft daar vooral veel tijd in gezeten, om vervolgens na lang testen toch voor de standaardoplossing van een WordPress Netwerk te kiezen voor het koppelen van als onze websites (TP, CZ, Shop, CZBBQ enzovoorts). Op backend gebied ben je er voor de event websites dan bijna, je installeerd de plugins die je wil hebben, voert de configs in, kiest te beheerders enzovoorts. Gelijktijdig laat je de theme’s ontwikkelen die gebruikt worden voor de layout van de pagina’s, dit is iets wat veel mensen onderschatten, maar wat dus een hoop tijd kost.

Een ander team mensen schrijft ondertussen de content voor de websites, die vervolgens weer door andere nagelezen en aangepast worden. Wanneer dat gedaan is wordt alle content op de juiste plaats op de website gezet, worden de koppelingen met Facebook, Twitter enzovoorts gemaakt en begint het grote testwerk.

Ondertussen op een heel ander traject moest er gewerkt worden aan een webshop, een iDeal implementatie, PayPal accounts enzovoorts. Het is vooral dit traject dat veel tijd kost, alles moet herhaaldelijk getest worden, de shop moet zo aangepast worden dat hij geschikt is voor de verkoop en verhuur van tickets en artikelen en er moet een goede registratie achter die weer dienst kan doen als inchecksysteem op de evenementen. Uiteraard veranderen de wensen en verwachtingen tijdens dit traject een aantal keer (we gaan immers iets voor ons nieuws doen) waardoor sommige dingen last minute toch nog aangepast moeten worden, hoort er allemaal bij en was te verwachten, dus geen probleem, maar wel veel werk.

Als je dan eindelijk live kunt na al dat testen en de eerste tickets verkocht worden geeft het wel een super voldaan gevoel :), uiteraard stromen meteen ook de eerste foutjes die je toch nog gemist hebt, wensen die je onderschat hebt of zaken waar je niet duidelijk genoeg over was meteen binnen, maar dat hoort er een beetje bij. Bijkomend voordeel is ook dat je ziet dat je community met je mee denkt en ook vaak met echt leuke ideeen komt, waar we dan later, als we zijn bijgekomen, tijd in kunnen steken om het te implementeren in onze websites.

Kortom, het is allemaal veel werk, maar zeker de moeite waard en alhoewel het nu nog even wennen zal zijn voor onze vaste The Party en CampZone bezoekers gaan we er vanuit dat iedereen uiteindelijk het nut van alle wijzigingen in gaat zien en de nieuwe opzet kan waarderen, of anders in ieder geval constructief mee kan denken aan hoe we alles voor iedereen zo optimaal mogelijk in kunnen richten.