PROCES VOOR HET DIGITALISEREN VAN EEN BESTAAND ANALOOG SPEL STAGEPLAATS: CARTAMUNDI DIGITAL, DEINSESTEENWEG 108B, 9031 DRONGEN | STAGEMENTOR: MH ANDY VERDOODT| STAGEBEGELEIDER: MH STEVEN VERBORGH PROJECT AANGEBODEN DOOR
KEVIN AELTERMAN VOOR HET BEHALEN VAN DE GRAAD VAN BACHELOR IN DE
NEW MEDIA AND COMMUNICATION TECHNOLOGY HOWEST | ACADEMIEJAAR 2014-2015
PROCES VOOR HET DIGITALISEREN VAN EEN BESTAAND ANALOOG SPEL STAGEPLAATS: CARTAMUNDI DIGITAL, DEINSESTEENWEG 108B, 9031 DRONGEN | STAGEMENTOR: MH ANDY VERDOODT| STAGEBEGELEIDER: MH STEVEN VERBORGH PROJECT AANGEBODEN DOOR
KEVIN AELTERMAN VOOR HET BEHALEN VAN DE GRAAD VAN BACHELOR IN DE
NEW MEDIA AND COMMUNICATION TECHNOLOGY HOWEST | ACADEMIEJAAR 2014-2015
Woord vooraf Ik ben al enkele jaren geïnteresseerd in game ontwikkeling. Hierdoor heb ik gekozen om mijn stage bij Cartamundi Digital te lopen. Hier heb ik een zeer mooie en leerrijke stage gekregen. Daarom zou ik graag de mensen van Cartamundi Digital willen bedanken en dan vooral Andy Verdoodt en Kris Carron voor het begeleiden van mijn stage. Ook zou ik graag mijn begeleiders van school uit, Steven Verborgh en Ann Deraedt willen bedanken. Zonder hen zou ik deze bachelorproef niet kunnen geschreven hebben.
Samenvatting Het digitaliseren van een spel is een vrij grote en complexe taak. Hier kruipt een hoop tijd in. Hierdoor is het digitaliseren enkel aan te raden wanneer je al een goede studie hebt gedaan en je zeker bent dat het interessant en rendabel is om te maken. Voordelen voor het digitaliseren van een spel zijn: een groter marktaandeel krijgen, het is gemakkelijker voor de klant, er zijn meer manieren om het spel te verspreiden en het kan voor reclame voor het originele spel zorgen. De nadelen zijn: het sociale element van het spelen van een spel gaat verloren, het kost veel om een digitaal spel te maken, de authenticiteit gaat verloren en het spel kan afhankelijk worden van een bepaald platform. Wanneer je beslist om het project toch uit te voeren, dan is het belangrijk dat je eerst een analyse doet van de spelregels en het project in het algemeen. Dit komt overeen met de Plan fase van de PDCA cyclus. Dit doe je door eerst de spelregels op te zoeken van het spel en de varianten. Vervolgens moet je deze uitleggen aan andere mensen. Hierna kan je het spel beginnen spelen. Dan kan je strategieën beginnen ontwikkelen. En uiteindelijk kan je dan een flowchart en WBS opstellen. Eenmaal de analyse fase voorbij is moet je een game engine kiezen. Hierna kan je dan beginnen met het programmeren. Deze stap komt overeen met de Do fase van de PDCA cyclus. Bij het programmeren, moet je eerst beginnen met de basis logica. Als je hiermee klaar bent, kan je dan beginnen met het programmeren van de AI. Tijdens het programmeren van deze stukken, zal je aan debugging moeten doen. Deze stap komt overeen met de Check fase van de PDCA cyclus. Het debuggen doe je door je spel in verschillende situaties te zetten, waaronder ook situaties waar er hardware matige problemen zijn. Debuggen wordt vereenvoudigd door onder andere gebruik te maken van breakpoints en log berichten. Ook zorgt het gebruik van test klasses ervoor dat je gemakkelijker kan testen. Voordat je naar de laatste stap gaat, zal je voldoende tijd moeten nemen om het spel nog eens goed te testen om zeker te zijn dat alles naar behoren werkt. Als laatste stap kan je ook nog het spel wat optimaliseren. Dit is te vergelijken met de Act fase in het PDCA proces. Het is belangrijk dat je dit niet te vroeg in het ontwikkelingsproces doet, want anders kan je hierdoor later nog problemen creëren. Het is natuurlijk cruciaal dat je tijdens en na deze stap het spel opnieuw grondig uittest en debugt zodat een foutloos product wordt afgeleverd.
Verklarende woordenlijst − − − − −
AI: CMDI: PDCA: MMO: WBS:
Artificiële Intelligentie Cartamundi Digital Plan Do Check Act Massively Multiplayer Online Work Breakdown Structure
Figuurlijst Figuur 1 - Logo Cartamundi Digital Figuur 2 - Plan Do Check Act ...................................................................................................................................... 4 Figuur 3 - Plan .................................................................................................................................................................... 4 Figuur 4 - Do ....................................................................................................................................................................... 6 Figuur 5 - Check................................................................................................................................................................. 7 Figuur 6 - Act ...................................................................................................................................................................... 7
Inhoudsopgave 1 2
Context problematiek ............................................................................................................................................ 1 Voor- en nadelen van het digitaliseringsproces ...................................................................................... 2 2.1 Voordelen .......................................................................................................................................................... 2 2.1.1 Groter marktaandeel.......................................................................................................................... 2 2.1.2 Gemakkelijker voor de klant.......................................................................................................... 2 2.1.3 Gemakkelijk te verdelen................................................................................................................... 2 2.1.4 Reclame..................................................................................................................................................... 2 2.2 Nadelen .............................................................................................................................................................. 3 2.2.1 Sociale element gaat verloren ....................................................................................................... 3 2.2.2 Kostprijs .................................................................................................................................................... 3 2.2.3 Verlies van authenticiteit ................................................................................................................ 3 2.2.4 Platform afhankelijk........................................................................................................................... 3 3 Digitaliseringsproces.............................................................................................................................................. 4 3.1 Analyse van het bestaande spel ............................................................................................................. 4 3.1.1 Spelregels ................................................................................................................................................. 4 3.1.2 Uitleggen .................................................................................................................................................. 4 3.1.3 Spelen......................................................................................................................................................... 5 3.1.4 Strategieën .............................................................................................................................................. 5 3.1.5 Flowchart ................................................................................................................................................. 5 3.1.6 Work Breakdown Structure ........................................................................................................... 5 3.2 Spel logica programmeren ....................................................................................................................... 6 3.2.1 Game engine...........................................................................................................................................6 3.2.2 Basis logica .............................................................................................................................................. 6 3.2.3 Extra features ......................................................................................................................................... 6 3.3 Artificiële intelligentie maken ................................................................................................................ 6 3.3.1 Basis ............................................................................................................................................................ 7 3.3.2 Strategieën .............................................................................................................................................. 7 3.4 Testen van het spel....................................................................................................................................... 7 3.4.1 Debuggen ................................................................................................................................................. 7 3.4.2 Test klasse ............................................................................................................................................... 7 3.5 Optimaliseren van het spel ...................................................................................................................... 7 4 Voorbeelden ...............................................................................................................................................................9 4.1 Analyse van het bestaande spel ............................................................................................................. 9 4.1.1 Spelregels ................................................................................................................................................. 9 4.1.2 Uitleggen .................................................................................................................................................. 9 4.1.3 Spelen......................................................................................................................................................... 9 4.1.4 Strategieën ............................................................................................................................................ 10 4.1.5 Flowchart ............................................................................................................................................... 10 4.2 Programmeren .............................................................................................................................................. 10 4.2.1 Game engine......................................................................................................................................... 10 4.2.2 Basis logica ............................................................................................................................................ 10 4.2.3 Extra features ........................................................................................................................................ 11 4.3 Artificiële intelligentie ............................................................................................................................... 11 4.3.1 Basis ........................................................................................................................................................... 11 4.3.2 Strategieën ............................................................................................................................................. 11 4.4 Testen ................................................................................................................................................................. 11 4.4.1 Debuggen ................................................................................................................................................ 11 4.4.2 Test klasse .............................................................................................................................................. 11 4.5 Optimaliseren .................................................................................................................................................12 5 Conclusie ....................................................................................................................................................................13
Inleiding Op dit moment is het heel moeilijk om de digitale wereld nog weg te denken uit onze samenleving. Iedereen heeft namelijk wel een computer of een smartphone. Hierdoor is er een nieuwe manier om spellen te spelen ontstaan, namelijk de computerspellen. Deze markt kan ook interessant zijn voor bedrijven die zich tot nu toe louter focusten op zuiver analoge spelen. In deze bachelorproef kan je mijn bevindingen terugvinden over het namaken van een analoog spel in deze digitale wereld. Ik heb mijn stage gelopen bij Cartamundi Digital (CMDi). Dit bedrijf was vroeger gekend als PLAYLANE en is sinds 2013 een dochteronderneming geworden van de speelkaarten fabrikant Cartamundi. Dit bedrijf maakt content voor digitale en Figuur 1 - Logo Cartamundi Digital hybride spellen. Hybride spellen zijn spellen waarbij fysieke materialen zoals kaarten gecombineerd worden met digitale spellen. Ze werken vooral aan opdrachten die binnen entertainment vallen, maar soms hebben deze ook een educatieve insteek. Bij CMDi heb ik vooral gewerkt aan het digitaliseren van enkele kaartspellen. Dit vond ik een interessante uitdaging en dit was ook mijn belangrijkste inspiratie voor deze bachelorproef. Door deze opdrachten heb ik redelijk veel inzicht gekregen in het digitaliseren van kaartspellen.
1 Context problematiek Het digitaliseren van een bestaand spel kan een interessant voordeel geven voor bedrijven die het originele spel maken. Hierdoor kunnen ze op de nieuwe, steeds groeiende digitale markt meespelen. Dit kan de bekendheid van een spel vergroten waardoor niet enkel de digitale variant meer kan verkopen, maar dat ook het originele spel een betere verkoop kan kennen. Maar het digitaliseren van een spel kan nogal uitdagend zijn, vooral als je dit nog nooit hebt gedaan of niemand kent die hier al ervaring mee heeft. Er zijn namelijk vele mogelijke aanpakken om een spel te analyseren en om te zetten naar zijn digitale variant. Zo kan het een uitdaging zijn om te bepalen wat de vrijheid van de speler moet zijn. Je moet namelijk juist die vrijheid bepalen, die het spel vlot laat spelen, maar toch niet te veel vrijheid wegneemt. In het volgende hoofdstuk wordt er verklaard waarom het een goed idee is om een spel te digitaliseren of waarom juist niet. Elk bedrijf en elk spel is namelijk anders en hierdoor zullen sommige spellen meer in aanmerking komen dan anderen om al dan niet te digitaliseren.
1
2 Voor- en nadelen van het digitaliseringsproces In dit hoofdstuk gaan de voor- en nadelen van het digitaliseren van een analoog spel besproken worden. Om deze te bepalen, wordt het product bekeken vanuit het financiële aspect. Ook zal de bruikbaarheid voor het bedrijf bekeken worden. Uiteindelijk wordt het ook vanuit het standpunt van de klant geanalyseerd.
2.1 Voordelen 2.1.1 Groter marktaandeel Een van de belangrijkste en duidelijkste voordelen van het digitaliseren van een analoog spel is dat je een grotere markt kan aanspreken. Tegenwoordig is de digitale markt namelijk vrij populair en zorgt deze voor meer inkomsten dan de traditionele spellen. Het is dus een logische stap om je spel ook op deze markt aan te bieden en zo dus je afzetmarkt te vergroten.
2.1.2 Gemakkelijker voor de klant Een digitaal spel is veel gemakkelijker voor de eindgebruiker. Eenmaal het spel geïnstalleerd is, is men klaar om het spel te beginnen. Een analoog spel moet echter keer op keer klaar worden gezet en dit kost elke keer tijd. Eenmaal dat het analoge spel klaarstaat, kan de speler ook nog fouten maken waardoor het spel niet goed gespeeld wordt. Dit kan het ook moeilijker maken om echt te kunnen spelen en dit kan ook nog extra tijd kosten. Bij een digitale variant is dit iets dat niet kan gebeuren, indien het spel goed gemaakt is. Indien je meerdere keren een analoog spel na elkaar wilt spelen, zal je ook elke keer wat tijd nodig hebben om het volgende spel klaar te zetten. Bij sommige spellen kan dit behoorlijk wat tijd in beslag nemen. Een digitaal spel daarentegen staat direct terug klaar. Uiteindelijk heb je ook nog de tijd die nodig is om het spel op te ruimen. Dit is een stap die de meeste mensen helemaal niet leuk vinden, maar het is nodig om het spel de volgende keer vlot te kunnen opzetten en snel te kunnen beginnen spelen. Afhankelijk van spel tot spel kan hier een behoorlijke tijd in kruipen. Bij een digitaal spel is er geen nood aan opruimen. Zodra je het spel afsluit, ben je ermee klaar. Bij een digitaal spel hoeven de gebruikers ook niet altijd samen te zitten. Men kan het spel immers zo ontwikkelen dat men online tegen elkaar kan spelen. Bovendien is het dan ook gemakkelijker om andere spelers te vinden wanneer je vrienden eens geen tijd hebben. Je kan het spel ook voorzien zodat spelers wat kunnen oefenen tegen een Artificiële Intelligentie (AI).
2.1.3 Gemakkelijk te verdelen De opties om een digitaal spel te verdelen zijn veel uitgebreider en het is gemakkelijker om de spellen bij de klanten te krijgen. Je kan het spel namelijk verkopen via je site of via services zoals Steam, App Store of Google Play. Steam is een online winkel voor computer spellen; via deze service kan je ook de spellen downloaden. App Store en Google Play zijn de officiële kanalen voor respectievelijk Apple en Android producten. Via deze services kan je spellen en apps voor deze apparaten downloaden. Je kan het ook op een fysiek medium via de normale wegen van een analoog spel verspreiden. Dit is ook handig voor de klanten, want zij kunnen het spel op ieder moment kopen en direct beginnen spelen, vanuit het comfort van de woonkamer.
2.1.4 Reclame Wanneer men een digitale variant van een spel heeft kan dit als promotie gebruiken worden. Wanneer je bijvoorbeeld al je klanten ook een digitale variant van je spel aanbiedt, kan dit 2
positieve reclame zijn voor het bedrijf. Hierdoor kan je je zowel positioneren op de digitale markt en kan de verkoop van je analoge spel ook een groei kennen. Dit is vooral een goede strategie om het bedrijf uit te kunnen breiden naar de digitale markt toe, voordat je al echt puur digitale spellen ontwikkeld hebt.
2.2 Nadelen 2.2.1 Sociale element gaat verloren Een van de grootste voordelen van het spelen van een analoog spel, is de sociale interactie die ontstaat tijdens het spelen. Bij de meeste digitale spellen kan deze interactie grotendeels verloren gaan, aangezien men niet altijd verplicht is in dezelfde ruimte samen te zitten. Men moet zelfs in het algemeen minder communiceren met de mensen waar men mee speelt, aangezien het spel vaak de basis communicatie op zich neemt. Dit wil niet zeggen dat het sociale element helemaal verloren gaat, maar deze zal zeker van lagere kwaliteit zijn dan bij een analoog spel. Bij een analoog spel ga je met de andere spelers aan tafel zitten en kan je ondertussen gesprekken voeren. Het is namelijk gemakkelijker om met mensen te spreken wanneer je ze echt kan zien. Meestal zijn bij een analoog spel de deelnemers ook bekenden wat het voeren van gesprekken eveneens vergemakkelijkt. Bij een digitaal spel daarentegen ga je vaak niet eens in dezelfde ruimte zitten. Je medespelers zijn wel vaak mensen, maar je focus ligt vaak meer op het spelen van het spel, dan het leren kennen van je medespelers. Hierdoor zullen de meesten veel minder communiceren tijdens het spelen van een digitaal spel en dus ook moeilijker vrienden maken.
2.2.2 Kostprijs Een digitaal spel laten ontwikkelen kost behoorlijk wat tijd. En zoals algemeen geweten is: “time is money”. Het is dus zeer belangrijk dat voordat men aan de productie van een digitaal spel begint, men eerst goed bestudeert of dit wel een rendabel idee is. Indien bijvoorbeeld de markt al verzadigd is met spellen die identiek of zo goed als identiek zijn aan het spel dat je wilt maken, is het waarschijnlijk niet zo een goed idee. Als je daarentegen de eerste aanbieder voor dit spel bent, kan je nog al de geïnteresseerden in dit spel aantrekken. Een goed marktonderzoek is een noodzaak.
2.2.3 Verlies van authenticiteit Een ander nadeel is dat bij het maken van het digitale spel bepaalde aspecten van het originele spel verloren kunnen gaan. Bij het digitaliseren gaan er geregeld elementen zijn die je, om het spel vlotter te laten verlopen, niet meer door de speler wilt laten uitvoeren. . Het nadeel hiervan is dat wanneer je te veel uit handen neemt van de speler, deze het spel misschien niet meer interessant gaat vinden. Het is dus cruciaal om het juiste evenwicht te vinden.
2.2.4 Platform afhankelijk Elk platform heeft zijn voor- en nadelen. Het is niet gemakkelijk om elk platform ten volle te gebruiken. Hierdoor zal je ofwel moeten kiezen om het spel maar op enkele platformen uit te brengen of de platformen niet ten volle te benutten. Indien je ervoor kiest om het maar op enkele platformen uit te brengen, is het ook belangrijk dat je weet wat het populairste platform voor je doelgroep is. De kans is namelijk heel klein dat je klanten speciaal een bepaald platform gaan kopen enkel om jouw spel te kunnen spelen. Het platform kan ook een nadeel zijn op het vlak van het verdelen van het digitale spel. Wanneer je bijvoorbeeld niet in de top 50 staat in de App Store, springt het spel niet in het oog bij de massa. Hierdoor zal je dus extra marketing moeten voorzien om ervoor te zorgen dat de mensen je spel gaan vinden tussen alle andere apps.
3
3 Digitaliseringsproces In dit hoofdstuk gaat het digitaliseringsproces uitgelegd worden dat in de praktijk gebruikt is om kaartspellen te digitaliseren. Dit proces is wat veralgemeend zodat dit toe te passen is op andere soorten van analoge spellen. Op het einde van dit hoofdstuk zal er voor elke stap een concreet voorbeeld gegeven worden op basis van mijn ervaring. Het gebruikte proces is te vergelijken met het Plan Do Check Act (PDCA) model. Eerst zal je een analyse moeten maken van het spel dat je wilt digitaliseren. Vervolgens zal je kunnen beginnen aan het maken van Figuur 2 - Plan Do Check A de basis spel logica. Daarna zal je de Artificiële Intelligentie kunnen programmeren. Nadat deze stappen doorlopen zijn, zullen er nog grondige testen moeten gedaan worden. Als laatste stap kan je ook nog wat optimaliseren. Hieronder zijn deze verschillende stappen in detail toegelicht.
3.1 Analyse van het bestaande spel De eerste stap om een bestaand spel om te kunnen zetten naar een digitale variant is natuurlijk het perfect leren kennen van het bestaande spel. Het is dus enorm belangrijk dat alle programmeurs en de personen die instaan voor kwaliteitscontrole het spel door en door kennen. De analyse komt overeen met het Plan gedeelte uit het PDCA model. Deze analyse zal in verschillende stappen gebeuren. Eerst moet je de spelregels leren kennen en vervolgens zal je deze moeten kunnen uitleggen aan andere personen. Wanneer je deze stappen doorlopen hebt, kan je het spel enkele keren spelen. Daarna moet je enkele strategieën ontwikkelen. Uit al deze vorige stappen ga je dan uiteindelijk een flowchart opstellen en deze kan je dan gebruiken om een Work Breakdown Structure op te stellen. Figuur 3 - Plan
3.1.1 Spelregels Om een spel te kunnen analyseren, moet je allereerst de spelregels goed onderzoeken. Niet alleen moet je ze allemaal opzoeken en in een document verzamelen, je moet ze ook perfect vanbuiten kennen. Indien er meerdere varianten van het spel bestaan, moet je in deze fase al bepalen welke variant je het best kan maken. Het is wel handig om in dit geval enkele varianten in het document te verzamelen. Moest er na de feedback dan toch blijken dat je misschien beter een andere variant maakt of bijmaakt, heb je de informatie al bij de hand. Toch is het wel belangrijk dat je na deze stap weet welke variant je verder gaat uitwerken.
3.1.2 Uitleggen De volgende stap is dan dat je deze spelregels gaat uitleggen aan personen die het spel ook kennen. Hierdoor kan je gemakkelijk aftoetsen of beide partijen het spel al dan niet goed begrijpen. Eenmaal je zeker bent dat je de spelregels juist uit kan leggen aan iemand die het spel al kent, kan je het spel proberen uitleggen aan iemand die het spel totaal niet kent. Indien deze persoon ook je uitleg vlot snapt, dan ben je zeker dat je niets vergeten bent en dat je analyse goed is. Het zou namelijk kunnen dat er zaken zijn die voor jou misschien al vanzelfsprekend zouden zijn. Hierdoor zou het kunnen dat je deze zaken vergeet uit te leggen. Wanneer er meerdere varianten van het spel bestaan, kan je best eerst de focus leggen op de variant dat jij het belangrijkste vindt. Vervolgens kan je dan de andere varianten uitleggen. Hierdoor kan je zien of de andere partij ook vindt dat je voor de goede variant hebt gekozen. Het zou dus kunnen dat je na deze stap tot de conclusie komt dat je best een andere variant 4
uitwerkt. Indien dit het geval zou zijn, zal je waarschijnlijk nog wat extra onderzoek moeten doen over deze nieuwe variant. Je kan je nieuwe bevindingen dan best onmiddellijk toevoegen aan je document met de uitleg.
3.1.3 Spelen Eenmaal je zeker bent dat je het spel volledig snapt en je het spel goed kan uitleggen, moet je het eens proberen spelen. Hierdoor zal je nog een beter inzicht krijgen in het spel. De flow van het spel zal je hierdoor zeer goed leren kennen. Wanneer je een al bestaande digitale variant van het spel hebt gevonden, kan je deze best ook eens proberen spelen. Hierdoor kan je al zien wat de concurrentie inhoudt. Indien er een AI in het spel zit, kan je hier best ook wat tegen spelen. Dit zal je helpen om wat meer inzicht te krijgen in wat de spelers minstens van je spel zullen verwachten. Dit zal je dus een idee geven van wat je spel minimaal gaat moeten kunnen. Na het spelen zal je ook al een veel beter idee hebben van welke elementen het belangrijkste zijn om het spel te kunnen spelen. Hierdoor kan je al bepalen welke elementen je de hoogste prioriteit zal moeten geven. Het kan je ook helpen om wat strategieën voor het spel te ontwikkelen. Dit zal voor later zeer handig zijn wanneer je de AI voor het spel wil maken.
3.1.4 Strategieën Nadat je enkele keren het spel gespeeld hebt, zal je al wat meer inzicht in het spel ontwikkeld hebben. Hierdoor zal je waarschijnlijk wel al enkele strategieën bedacht hebben. Deze zullen echter nog niet zo goed zijn als die van experts of ervaren spelers. Daarom kan je best op dit moment een studie beginnen naar de typische strategieën. Dit zal enorm belangrijk worden eenmaal je aan de AI begint te werken. Voor deze studie kan je best een afspraak maken met enkele experts. Je kan ook nog meer informatie inwinnen via artikels in gespecialiseerde pers en werken of via het internet.
3.1.5 Flowchart Uiteindelijk zal je na deze uitgebreide studie kunnen beginnen met het maken van een flowchart voor het spel. Deze zal je helpen om de flow van het spel gemakkelijker mee te delen aan alle betrokken partijen. Ook zal deze flowchart ervoor zorgen dat je gemakkelijker en beter de verschillende delen van het project kan afbakenen. Hierdoor kan je het project gemakkelijker opdelen en kan je er gemakkelijker een goede structuur in houden. Deze goede structuur zal er dan ook voor zorgen dat het project goed onderhoudbaar en overzichtelijk blijft. Een goede flowchart zal dus de kost van het project wat kunnen drukken op de langere termijn.
3.1.6 Work Breakdown Structure Ten slotte kan je na het maken van een flowchart beginnen met het maken van een Work Breakdown Structure (WBS). Dit is vooral belangrijk om gemakkelijker de benodigde tijd voor het project te kunnen inschatten. Hierdoor kan je ook zien welke onderdelen op welk moment nodig zullen zijn. Ook is het duidelijker om te zien wat het volgende onderdeel is waar je aan moet werken. Wanneer er met meerdere mensen aan hetzelfde spel gewerkt wordt, ga je er nog veel meer voordeel uit kunnen halen. Hierdoor kan je namelijk precies bepalen wie wat en op welk moment moet maken en opleveren. Dit zorgt er ook voor dat je manager mensen perfect op elkaar kan laten inspelen en dat de tijd optimaal gebruikt wordt. Je kan ook veel gemakkelijker problemen detecteren en oplossen aangezien je een planning hebt per persoon. Het is belangrijk dat je bij het opstellen van de WBS deadlines oplegt per onderdeel. Hierdoor kan je sneller en efficiënter ingrijpen wanneer er problemen zouden opduiken.
5
3.2 Spel logica programmeren Nadat het onderzoek volledig voltooid is, kan je beginnen met de volgende stap. In deze stap ga je de spel logica maken. Dit zal gebeuren door eerst te kiezen welke game engine je gaat gebruiken. Vervolgens kan je de basis logica maken. Uiteindelijk kan je nog extra features toevoegen. Deze stap is te vergelijken met de Do stap in het PDCA model.
3.2.1 Game engine
Figuur 4 - Do
Voordat je kan beginnen aan het programmeren, zal je eerst moeten kiezen in welke game engine het spel gemaakt gaat worden. Er is een zeer groot aanbod van game engines, dus zal je een goede keuze moeten maken. Enkele belangrijke aspecten bij deze keuze zijn: − − − −
Platformen Licentie kost Mogelijkheden Ervaring van de programmeurs
Je kan natuurlijk ook een soort van hulp engine schrijven binnenin een bestaande game engine. Hierdoor kan je deze engine aanpassen zodat deze beter geschikt is voor je huidige project. Het zou natuurlijk ook kunnen dat je helemaal niet tevreden bent met de mogelijkheden. Dan zou je ervoor kunnen kiezen om een eigen game engine te schrijven. Dit is echter een zeer grote taak, die zeker niet onderschat mag worden. Indien toch voor deze piste gekozen wordt, moet je deze beslissing goed kunnen staven.
3.2.2 Basis logica Nadat je gekozen hebt welke game engine je gaat gebruiken, kan je beginnen met de basis logica te programmeren. Om deze te ontwikkelen, kan je best kleine delen per keer maken. Hierdoor kan je geregeld laten zien welke stukken al afgewerkt zijn. Zo kunnen de andere betrokken partijen gemakkelijker zien wat de status van het project is. Tevens is het een leuk gevoel om de vooruitgang in het spel te zien verschijnen, waardoor je extra gemotiveerd kan worden om het project zo snel mogelijk af te werken. Elk van deze kleinere delen is een PDCA cyclus op zich. Je zal namelijk elke keer moeten kijken wat je precies gaat uitwerken (Plan), het programmeren (Do), het debuggen en testen (Check) en daarna kan je het eventueel nog wat optimaliseren (Act).
3.2.3 Extra features Nadat de basis logica volledig geïmplementeerd is, kan je enkele kleine features beginnen toevoegen. Deze kunnen het spel een meerwaarde geven. Hierdoor kan je het verschil maken met de concurrentie. Deze features kunnen er ook voor zorgen dat het spel vlotter speelt. Deze extra features moeten ook deel per deel worden toegevoegd.
3.3 Artificiële intelligentie maken Artificiële intelligentie is bijna niet meer weg te denken in computerspellen. Het spel moet op zijn minst een vrij eenvoudige AI hebben, zodat de speler geen fouten kan maken in het spel of dat deze fouten minstens gedetecteerd kunnen worden. De AI kan echter ook vrij ingewikkeld worden waarbij de computer een functie van een speler kan invullen en samen met menselijke spelers kan spelen. Bij het schrijven van AI kan je ook best de verschillende functionaliteiten in kleinere blokken opsplitsen. Hierdoor krijg je ook tijdens het programmeren van de AI een PDCA cyclus per onderdeel. Het voordeel hiervan is dat je elk stukje gaat testen op het moment dat je het aan het spel gaat toevoegen.
6
3.3.1 Basis Het is belangrijk dat je bij het begin begint. Daarom moet je eerst een vrij simpele AI schrijven. Deze moet in staat zijn om geldige acties te ondernemen zodat deze al op een heel basis manier met de speler kan spelen. Eenmaal je zeker bent dat dit perfect werkt, kan je naar de volgende stap overgaan.
3.3.2 Strategieën Zodra er een basis AI geschreven is, begint de echte uitdaging maar pas. Nu is de tijd aangebroken dat je moet beginnen aan het programmeren van de strategieën voor de AI. Dit kan je best progressief doen. Je kiest de eerste strategie die je wilt uitwerken en maakt deze helemaal af. Zodra deze perfect werkt, begin je aan de volgende. Dit doe je totdat alle strategieën gemaakt zijn. Elk van deze strategieën volgen dus ook een volledige PDCA cyclus op zich.
3.4 Testen van het spel
Figuur 5 - Check
Het testen en debuggen zal zowel gebeuren tijdens het maken van een kleiner stuk logica als op het einde van het spel. Dit is een van de belangrijkste stappen tijdens het ontwikkelen van een spel. Tevens wordt deze stap ook geregeld wat onderschat. Gemiddeld moet je ongeveer 30% van de tijd die je nodig hebt om een spel te ontwikkelen, besteden aan het debuggen ervan. Deze stap komt overeen met de Check fase van het PDCA model.
3.4.1 Debuggen Tijdens deze stap moeten alle elementen zo goed mogelijk getest worden. Dit is de enige manier om zeker te zijn dat het spel goed werkt. Het is belangrijk dat tijdens het debuggen zoveel mogelijk situaties getest worden. Hierbij moet men ook het spel proberen misbruiken. Dit kan men bijvoorbeeld doen door continu willekeurig op alles te proberen klikken. Het is ook belangrijk dat men het spel op verschillende machines test, aangezien sommige bugs soms enkel op bepaalde apparaten voorkomen. Tijdens deze tests ga je ook speciale hardwarematige situaties moeten testen. Het kan bijvoorbeeld gebeuren dat het internet wegvalt tijdens een online sessie. Dit kan ongewenste effecten opleveren voor je spel. Als een apparaat crasht of uitvalt, kan dit ook problemen opleveren voor je spel. Dit zijn dus situaties waarbij je rekening moet houden tijdens je tests.
3.4.2 Test klasse Een goede manier om te debuggen is het aanmaken van een test klasse. Deze laat je toe om verschillende situaties te testen op de verschillende elementen van je spel. Een test klasse zal namelijk alle functies van een bepaalde klasse in verschillende situaties testen. Het beste wordt deze testklasse gelijktijdig met de effectieve klasse geschreven. Belangrijk hierbij is dat je de testklasse ook aanpast naarmate de klasse uitgebreid wordt. Hierdoor heb je al enige zekerheid dat de klasse werkt of dat de aanpassingen aan de klasse niets teniet gedaan hebben.
3.5 Optimaliseren van het spel Zodra het spel werkt, kan je beginnen met het optimaliseren ervan. Het is wel belangrijk dat je hier enkel aan begint wanneer je weet dat alles werkt. Het heeft namelijk geen zin om te optimaliseren indien dit niet het geval zou zijn. Het is beter dat je een werkend geheel hebt, dan dat je niet samenwerkende, iets beter geoptimaliseerde delen hebt. Hierdoor komt dit ook als de laatste stap in de cyclus: de Act stap. Figuur 6 - Act
7
Om te kunnen optimaliseren zal je goed moeten kijken naar je code en zo bepalen waar er nog ruimte voor verbetering is. Het kan ook helpen om in je debugging tool de tijden op te vragen wanneer en hoelang elke functie gewerkt heeft. Stack traces kunnen ook wat meer inzicht geven welke functies vaak of misschien zelfs te vaak aangeroepen worden. Stack traces laten je toe om te zien welke functies op welk moment aangeroepen worden. Wanneer je al deze data combineert, kan je bepalen waar je best begint met optimaliseren. Je moet namelijk niet te veel tijd steken om functies te optimaliseren die, in processortijd, sowieso al nauwelijks uitgevoerd worden. Een functie die veel processortijd vraagt daarentegen is wel heel interessant en de moeite waard om te optimaliseren.
8
4 Voorbeelden Ik zal dit proces nu verduidelijken aan de hand van enkele voorbeelden. De voorbeelden die ik gekozen heb komen uit het project waar ik aan meegeholpen heb tijdens mijn stage bij CDMi. Ik heb hier namelijk meegewerkt aan een Massively Multiplayer Online (MMO) kaartspel dat gemaakt is in Unity3D. Dit is een spel dat je dus met vele spelers tegelijk via internet kan spelen. In dit spel heb ik enkele verschillende kaartspellen geprogrammeerd. De spellen die ik ontwikkeld heb zijn Klaverjassen, Jass en Kingen, in deze volgorde.
4.1 Analyse van het bestaande spel 4.1.1 Spelregels Vooraleer ik aan deze spellen kon beginnen, moest ik steeds een studie starten. Vrij snel viel me al op dat oude spellen zoals de kaartspellen die ik moest namaken, over de jaren heen vaak verschillende varianten gekregen hebben. Dit was telkens de eerste grote uitdaging. Ik moest namelijk eerst een groot onderzoek starten om de verschillende varianten van de spellen te leren kennen. Vervolgens kon ik dan bepalen welke de interessantste en de meest gespeelde variant is en deze kon ik dan verder uitwerken. Bij Klaverjassen heb ik voor de Amsterdamse variant gekozen. Dit heb ik gedaan omdat deze de meest gespeelde variant is in het grootste deel van de Benelux. Voor het kiezen van de troef heb ik gekozen voor een combinatie van het klassieke troef kiezen en de Utrechtse manier. Dit heb ik gedaan om te voorkomen dat het spel vast zou lopen wanneer alle spelers de troef blijven passen. Ik heb dit opgelost door de Utrechtse manier van troef kiezen toe te passen wanneer de verschillende kaartkleuren gepast zijn. Hierdoor zal de eerste speler verplicht een troef moeten kiezen. Dit zorgt er dan voor dat het spel niet in een eindeloze biedronde vast kan komen te zitten.
4.1.2 Uitleggen In de volgende stap heb ik dan de spelregels van deze variant zo duidelijk mogelijk op geschreven. Dit moet geen extreem lang document worden, maar het belangrijkste is dat er geen onduidelijkheden meer mogelijk zijn. Het voordeel hiervan is dat indien er nog onderhoud moet gebeuren aan het project er direct een duidelijk document beschikbaar is waarin de regels van het spel perfect uitgelegd staan. Het zou namelijk goed kunnen dat jij of iemand anders dit project binnen enkele maanden nog eens gaat moeten bekijken en dat je de regels dan niet of niet perfect meer kent. Een bijkomend voordeel van dit goed documenteren is dat je dit document dan ook op het einde van het project gemakkelijker kan omzetten naar een handleiding of tutorial.
4.1.3 Spelen Na het documenteren heb ik enkele keren het spel proberen uitleggen aan andere mensen. Dit bleek moeilijker dan verwacht. Dit kan verschillende redenen hebben. Ten eerste is de kans groot dat je toch een deeltje van het spel zelf toch nog niet goed genoeg snapt. Hierdoor kan het zijn dat je nog enkele onzekerheden zal krijgen terwijl je het aan het uitleggen bent. Dit is zeer goed aangezien je nu weet wat je nog wat beter moet onderzoeken. Anderzijds kan het ook zijn dat je in het begin nog niet de juiste structuur gevonden hebt om het spel op een logische manier uit te leggen. Dit is ook waardevolle informatie aangezien je met deze kennis je document een betere indeling kan geven, waardoor je later al onmiddellijk een goede structuur hebt voor je handleiding of tutorial. Vervolgens heb ik mijn verworven kennis toegepast op het beginnen spelen van het spel. Om zeker te zijn dat ik geen fouten kon maken die tegen de regels van het spel ingaan en dat ik de punten juist telde, heb ik het eerst op de computer gespeeld. Ik had namelijk enkele spellen op internet gevonden, waarvan sommige zelfs over artificiële intelligentie beschikten. Dit maakte het gemakkelijker om de flow van het spel goed te leren kennen. Ook gaf dit me 9
al wat meer inzicht in de logica achter het spel. Hierdoor begin je al wat strategieën te ontwikkelen. Na het spelen van het spel op de computer, had ik genoeg vertrouwen in mijn kunnen om het eens met echte mensen en fysieke kaarten te spelen. Dit is ook een belangrijke stap, aangezien je hierbij ook kan zien hoe beginnende spelers reageren en hoe deze best begeleid worden.
4.1.4 Strategieën Uiteindelijk kon ik dan beginnen om een studie te maken naar de verschillende strategieën die typisch door de professionele spelers van het spel gebruikt worden. Dit is goed om eens te bekijken en dit om verschillende redenen. Je zal hier namelijk meer inzicht in het spel door kweken. Dit maakt het gemakkelijker om het spel volledig te doorgronden en hierdoor wordt het gemakkelijker om het spel na te maken. Anderzijds kan het al een mooie bron van inspiratie zijn wanneer je eenmaal begint aan het schrijven van de Artificiële Intelligentie. Hierdoor kan je best je bevindingen over deze strategieën bij in je document schrijven waarin je je spel uitlegt. Op deze manier blijft al je documentatie mooi verzameld en kan een andere persoon sneller dit project opnemen, indien dit nodig zou zijn.
4.1.5 Flowchart De laatste voorbereidende stap die ik genomen heb, is het maken van een ruwe flowchart. Dit heeft ervoor gezorgd dat ik in latere stadia gemakkelijker de verschillende onderdelen van het spel zag. En dit zorgde er dan voor dat ik veel gemakkelijker kon debuggen en dat ik een goede structuur in mijn project kon houden. In deze flowchart heb ik gewoon het spelverloop uitgewerkt. Dit hield in dat ik de troef kiesronde, een spel ronde en score berekening al getekend had. Dit zorgde ervoor dat ik heel vlot aan deze verschillende onderdelen kon beginnen werken. Voor elk spel heb ik ook een flowchart voor de AI gemaakt.
4.2 Programmeren Eenmaal de analyse gebeurd was, kon ik beginnen met het programmeren van de spellen.
4.2.1 Game engine Aangezien de spellen die ik geschreven heb onderdeel zijn van een ander spel, had ik geen keuze voor de game engine. CMDi gebruikt namelijk vooral Unity3D. Binnen deze engine hadden ze ook al een card game engine voorzien. Deze zorgde voor de basis functionaliteit zoals kaarten inladen, verplaatsen en weergeven. Ook was er al een systeem voor spelers en multiplayer in voorzien. Hierdoor konden wij ons focussen op het programmeren van de spellogica en de AI.
4.2.2 Basis logica Kingen is een kaartspel dat met verschillende contracten werkt. Deze contracten dicteren de regels van een bepaalde ronde. Hierdoor had ik een heel mooie kans om deze contracten perfect uitwisselbaar te maken. Het gevolg is dat het mogelijk is om snel en gemakkelijk nieuwe contracten aan te maken. Ik heb dit gedaan door eerst een interface te maken voor de contracten. Een interface is een klasse die de functies bevat die door alle klasses die van de interface overerven geïmplementeerd moeten worden. Alle contracten implementeren vervolgens de interface waardoor ik in het spel enkel deze interface kon aanroepen. Hierdoor kon ik gemakkelijk zeggen welk contract ik in welke ronde wou gebruiken. Klaverjassen en Jass hebben een heel speciaal en ingewikkeld punten systeem. Hierdoor moest ik een deel van de engine aanpassen, zodat ik deze speciale manier van punten berekenen kon implementeren. De punten en kaartvolgorde waren namelijk verschillend tussen de normale kaarten en de troefkaarten. Bij Jass was dit zelfs nog wat moeilijker, aangezien ze ook nog eens verschilde tussen enkele modes. Hierdoor heb ik een hoop nieuwe parameters moeten toevoegen aan de JSON bestanden waarin het deck beschreven staat. JSON staat voor JavaScript Object Notation en is een bestandsformaat waarin je compact, 10
maar leesbaar data in kan opslaan. Ik heb eveneens de JSON-parsers moeten uitbreiden zodat deze parsers de nieuwe bestanden kunnen inlezen. Een parser is namelijk een klasse die data uit een bestand kan inlezen.
4.2.3 Extra features Zowel voor Klaverjassen als in Jass heb ik een score venstertje toegevoegd aan de rechter onderkant van de speeltafel. Hierdoor kan de speler gemakkelijk op elk moment de huidige troef en de score van de vorige spellen zien. Bij Kingen heb ik wat tekst toegevoegd tijdens het delen van de kaarten. Hierdoor kan de speler gemakkelijk zien wat de regels zijn voor de ronde die hij aan het spelen is.
4.3 Artificiële intelligentie 4.3.1 Basis Nadat ik de basislogica geprogrammeerd had, begon ik steeds aan het programmeren van de basis AI. Dit was een heel simpele AI zodat ik tenminste al een volledig spel kon testen. In deze basis AI zat telkens een manier om een troef te kiezen en om een kaart te spelen. De troef werd willekeurig bepaald, maar bij een kaart spelen werd er wel eerst een lijst van kaarten opgesteld die mochten gespeeld worden. Vervolgens werd er willekeurig uit deze lijst een kaart gekozen. Bij Jass moesten er ook in het begin van de ronde extra punten gekozen worden. Hiervoor ben ik begonnen met alle AI 0 punten te laten declareren. Eenmaal dat het spel dan werkte, heb ik dit systeem veranderd in een systeem dat de kaarten voor extra punten kon herkennen en deze dan ook juist kon spelen. Dit was dan ook het eerste stuk van de AI van dit spel dat volledig werkte.
4.3.2 Strategieën Vervolgens kon ik de AI dan langzamerhand beginnen verbeteren. Dit hield in dat ik elke strategie die ik voor een spel gevonden had, moest implementeren om ervoor te zorgen dat de AI slimme keuzes zou maken. De ingewikkeldste AI was die van Klaverjassen, want deze had bovenop een goede kaart kiezen ook een heel seinsysteem. Hierdoor kreeg bijna elke kaart een betekenis en moest je dus goed elke kaart analyseren om te kunnen zien of je medespeler met of zonder seinen speelt. Bij Kingen vond ik echter geen typische strategieên, hierdoor moest ik zelf een slimme zet bepalen. Ik heb dus verschillende keren Kingen gespeeld en zo gekeken wat volgens mij de beste zet zou kunnen zijn in bepaalde situaties. Idealiter zou ik nog wel eens een professionele Kingen speler moeten vinden om mijn strategieën tegen af te toetsen.
4.4 Testen 4.4.1 Debuggen Tijdens het schrijven van de logica en AI, moet je ook continu debuggen. Ik gebruik normaal gezien vooral breakpoints tijdens het debuggen. Deze maken het mogelijk om een punt in de code te plaatsen waarop de uitvoering van het programma gestopt wordt. Vervolgens kan je van op dit punt stap voor stap door de code stappen. Ik heb dit echter tijdens dit project niet zo veel gebruikt, aangezien ik vind dat het breakpoint systeem van Unity niet zo goed werkt. Ik heb dus vooral gebruik gemaakt van log berichten. Hierdoor kon ik tamelijk gemakkelijk enkele variabelen vlot opvolgen en zien welke functies wanneer opgeroepen worden.
4.4.2 Test klasse Voor de functionaliteiten die ik veel gebruik en de AI heb ik telkens test klasses geschreven. Hierdoor kon ik heel snel en consistent deze stukken code laten testen door de computer. Eerst heb ik een basis klasse geschreven, zodat ik gemakkelijk verschillende tests kon laten 11
uitvoeren. In deze klasse heb ik ook een manier voorzien om variabelen en lijsten gemakkelijk met elkaar te kunnen vergelijken. Vervolgens heb ik verschillende test klasses geschreven die gebruik maakten van deze basis klasse. Deze test klasses moesten dan nog enkel de eigenlijke tests bevatten. Bij het schrijven van deze tests was de grootste uitdaging alle verschillende situaties te bedenken die een bepaalde functie zou moeten verwerken. Hierdoor heb ik soms dagen later nog steeds extra tests toegevoegd aan de test klasses waarvan ik dacht dat ik er al klaar mee was. Door deze test klasses te gebruiken heb ik enkele keren ontdekt dat een deel van het spel dat perfect werkte, door een update niet meer juist werkte. Hierdoor wist ik onmiddellijk wanneer er iets misliep met een van de functies en kon ik er heel snel op inspelen.
4.5 Optimaliseren De beste optimalisaties die ik in de AI van Klaverjassen en Jass kon maken, waren vooral voor de master speler. Ik heb namelijk de code zo kunnen optimaliseren dat de AI maar 1 keer kaarten moet registreren en kijken of er een kaart geseind werd. Dit kon ik doen door gebruik te maken van statische variabelen. Deze variabelen worden gedeeld tussen alle objecten van een bepaalde klasse. Dit laat je dus toe om gemakkelijk data te delen tussen alle objecten van die bepaalde klasse. Dit is een simpele optimalisatie, maar het had toch al vrij veel effect op de performantie.
12
5 Conclusie De projecten die ik tijdens mijn stage in CMDi heb mogen uitvoeren, waren leuke en leerrijke ervaringen. Hierdoor heb ik beter kunnen leren wat de uitdagingen zijn tijdens het digitaliseren van een kaartspel. Ik heb namelijk mijn bevindingen tamelijk gemakkelijk kunnen uitbreiden naar een algemeen proces dat voor elk analoog spel dat men wil digitaliseren, gebruikt kan worden. Het volledig analyseren van het spel vond ik op zich niet zo leuk, maar heeft het programmeergedeelte veel eenvoudiger gemaakt. Het was namelijk enorm handig dat wanneer ik even iets niet meer goed wist, ik direct een document met alle uitleg kon openen. Hierdoor ben ik wel blij dat ik telkens met een serieuze analyse begonnen ben. De plezantste stap vond ik het programmeren zelf. Tijdens het programmeren vond ik het leuk dat je het spel enorm snel vooruit zag gaan. Dit kwam door de goede voorafgaande analyse. Het tofste deel van het programmeren vond ik de AI. Dit was vooral omdat deze stap enkel gelimiteerd is tot je vindingrijkheid. Je kan hier continu aan blijven verbeteren en aanpassen, je zal namelijk nooit de perfecte AI kunnen schrijven. Het debuggen was een interessante stap, maar niet altijd even leuk. Het kan namelijk vrij frustrerend zijn als je de oorzaak van een probleem niet kan vinden. Gelukkig kan een gestructureerde aanpak in combinatie met wat doorzettingsvermogen ervoor zorgen dat je elk probleem kan oplossen. Uiteindelijk vond ik het optimaliseren ook een leuke en interessante stap, aangezien je hierbij nog eens heel goed kan nadenken over de code die je al geschreven hebt. Ik vind het interessant en leerrijk dat je een telkens een andere aanpak kan uitproberen om hetzelfde probleem op te lossen, maar dan efficiënter.
13
Referentielijst Hill R. (maart 2015): Plan-Do-Check-Act (PDCA): http://www.mindtools.com/pages/article/newPPM_89.htm Management Start (24 februari 2008): De Deming-cirkel: Plan, Do, Check, Act (PDCA): http://www.managementstart.nl/artikelen/s55.html Wikipedia (28 mei 2015): PDCA: http://en.wikipedia.org/wiki/PDCA
Bijlagen 1. 2. 3. 4. 5. 6.
Klaverjassen algemene documentatie Jass algemene documentatie Kingen algemene documentatie Klaverjassen AI flowchart Jass AI flowchart Kingen AI flowchart
Klaverjassen (Amsterdamse variant) Algemeen • • • •
Aantal spelers: 4 (2 teams van 2 spelers) Gebruikte kaarten: 32 kaarten (7 en hoger, inclusief azen) Deelmanier: 3-2-3 (8 kaarten per speler) Wedstrijd: 16 spellen (boompje)
Spel • •
8 rondes. In het begin moet een troef gekozen worden.
Rondes Start • • • •
De mensen tegenover elkaar vormen een team. Eerste ronde: Speler links van de deler begint. Andere rondes: winnaar vorige ronde begint. Ronde wordt met de wijzers van de klok mee gespeeld.
Einde •
Iedere speler heeft een kaart gespeeld.
Troef kiezen Klassieke manier Kaart van de niet gebruikte stapel trekken. Iedereen kan dan een voor een kiezen of ze deze troef willen. Anders wordt een nieuwe kaart getrokken.
Utrechtse manier De eerste speler moet een troef kiezen.
Bijlage 1 - Klaverjassen algemene documentatie
Kaart spelen • • •
Eerste speler kiest kaart “kleur” De rest moet volgen, tenzij je geen van deze kleur hebt: o Als je teamgenoot (“maat”) aan slag ligt, mag je kiezen o Anders moet je troeven (tenzij je geen troeven meer hebt) Ondertroeven mag enkel als je enkel lagere troeven hebt.
Punten Basis De punten worden op het einde van een spel berekend. Elke kaart heeft een specifieke waarde, deze waardes kan je in de onderstaande tabel terug vinden. Deze tabel bevat ook de kaart volgorde om slagen te winnen spelen. De som van de punten van alle kaarten zal dus ook altijd 152 zijn. Troef Niet-troef Boer (jas) 20 Aas 11 Negen (nel) 14 Tien 10 Aas 11 Heer 4 Tien 10 Vrouw 3 Heer 4 Boer 2 Vrouw 3 Negen 0 Acht 0 Acht 0 Zeven 0 Zeven 0
Roem (Extra punten) • •
• •
Laatste slag: 10 Roem (in één slag te behalen) o Driekaart (3 kaarten op een rij van dezelfde kleur): 20 roem o Vierkaart (4 kaarten op een rij van dezelfde kleur): 50 roem o Vier gelijke kaarten (aas, 10, heer of vrouw = 100 roem) 4 boeren = 200 roem o Stuk (vrouw en heer van troef): 20 roem o De volgorde voor driekaart en vierkaart is de normale kaart volgorde. Pit Als men alle slagen haalt met de teamgenoot, terwijl men zelf troef gekozen heeft: +100 roem. Tegenpit Als men alle slagen haalt met de teamgenoot, terwijl de tegenstanders troef hebben gekozen: tegenpit. Men krijgt dan 162 punten. Soms, verschillend per regio, krijgt men 100 punten of meer extra.
Bijlage 1 - Klaverjassen algemene documentatie
Nat / Beet Totaal punten van degene die troefkleur heeft bepaald < (Totaal punten / 2) +1 = nat: 0 punten voor diegene die troefkleur bepaald heeft en het andere team 162 punten plus het door beide partijen behaalde roem. • •
Team A: 44 punten + 20 roem = 64 Team B: 118 punten + 20 roem = 138
Wanneer Team A troefkleur heeft bepaald zijn ze nat en ontvangen dus 0 punten. Team B ontvangt deze ronde 162 punten + 40 roem wat een totaal van 202 punten geeft.
Strategieën Aanseinen Je wilt aan je maat laten weten of je een aas van een bepaalde kleur hebt. (Je kan dit ook gebruiken om een hoge kaart van je maat in te troeven.) • • • •
Je hebt niet de kleur waarmee je maat uitkomt. De tegenpartij legt een lagere kaart. Jij gooit een lage kaart (7 tot 9) van de kleur waarvan je een aas hebt. De volgende ronde komt je maat met een hoge van de kleur dat jij gelegd hebt uit.
Afseinen Je wilt aan je maat laten weten dat je geen aas van een bepaalde kleur hebt. • • •
Je hebt niet de kleur waarmee je maat uitkomt. De tegenpartij legt een lagere kaart. Jij gooit een hoge kaart (vrouw of heer) van de kleur waarvan je geen aas hebt.
Aas of tien spekken Een aas of tien op de slag van je maat gooien als je zeker bent dat deze de slag gaat winnen. Je kan geen slag halen met de tien als: • • • •
Je deze kaal hebt (geen andere kaarten in deze kleur). De tegenstanders veel troeven hebben. Je tien gesneden is (er is al een slag gevallen in die kleur, maar niet met de aas). Als je veel kaarten van die kleur hebt, behalve de aas.
Jas of nel uitkomen Als je de jas en de nel hebt, kan je met de nel uitkomen. Zo weet je maat dat je ook de jas hebt. Hierdoor kan hij rustig spelen om zoveel mogelijk roem te halen. Als je enkel de jas hebt (of als deze beter uitkomt voor roem te halen), kan je hiermee uitkomen. Dan weet je maat minder. Je opent nooit met de nel als je de jas niet hebt!
Bijlage 1 - Klaverjassen algemene documentatie
Achterommetje Als je een jas hebt en een hoge troef (maar geen nel). Kan je proberen zeggen aan je medespeler dat hij een hoge troef moet gooien. Hierdoor zal de tegenstander nog een hogere troef moeten gooien. Deze kan je dan pakken met je jas. Hierdoor kan je proberen je hoge troef de hoogste maken. Om dit te doen kom je met een kleine niet-troef (7 of 8) uit. Als je geen kleine hebt of je maat komt niet aan zet, kan je beter gewoon direct met de jas uitkomen. Dit moet wel afgesproken worden met je maat om misverstanden te vermijden.
Kleintje boer De eerste kaart dat een speler van een team legt wordt gebruikt om te seinen. Als deze een niet-troef kleintje (7, 8 of 9) is wil dit zeggen dat hij de jas heeft en dat de medespeler met een hoge, liefst roemgevoelige troef (vrouw, 10) moet uitkomen.
Kleintje boer, kleintje terug Dit is een antwoord op kleintje boer. Als je kleintje boer hebt geseind en de teamgenoot met een lage niet-troef uit komt, wilt dit zeggen dat deze enkel de nel heeft. Dit wil zeggen dat je als je terug aan slag komt met een hoge troef (niet de boer) uit moet komen.
Pas of speel (troef kiezen) Speel: Als je 3 of meer van de troefkleur hebt met de jas en/of de nel. Pas: Als je aas en tien hebt in de troefkleur, zonder jas en/of nel.
Links • • • • •
http://nl.wikipedia.org/wiki/Klaverjassen http://www.pagat.com/jass/klaverjassen.html http://www.patiencespelen.nl/klaverjassen.php http://www.gamesquare.nl/doc/help/games/klaverjas/course/teach_klaver_d.php http://www.klaverjasunie.nl/het_spel.htm
Bijlage 1 - Klaverjassen algemene documentatie
Jass (Schieber) Algemeen • • • • •
4 Spelers 2 teams (teamgenoten zitten tegenover elkaar) Tegenwijzerzin 36 kaarten (A – 6) Wordt met Zwitserse-Duitse of Zwitserse-Franse kaarten gespeeld
Start van een spel • •
Eldest (de houder van Harten of Rozen 7) mag de eerste keer beginnen. Daarna mag elke keer de volgende (tegen de wijzers van de klok) beginnen.
Ronde verloop 1. 2. 3. 4.
Delen van de kaarten Kiezen van de troef Spelen tot de kaarten op zijn Begin volgende ronde
Delen van de kaarten De kaarten worden per 3 gedeeld.
Kiezen van de troef • • • •
De eerste speler van de ronde moet troef kiezen, als deze echt niet kan kiezen, kan hij dit ook door zijn teamgenoot laten doen. De teamgenoot kan dan wel niet anders dan zelf te kiezen. Je kan elke kleur kiezen, maar bij de Schoppen of Schilden en de Klaveren of Bellen worden vaak de punten verdubbeld. Je kan ook kiezen voor Oben-abe (“tops-down”) en Unden-ufe (“bottoms-up”), hierbij wordt er geen troef gekozen, maar worden de achten, acht punten waard. Bij Obenabe worden de punten verdrievoudigd en bij Unden-ufe verviervoudigd. Bij Unden-ufe wordt ook de volgorde van de kaarten omgewisseld. (6 wordt de hoogste en de aas wordt de laagste waarde). De punten blijven zoals bij Oben-abe, behalve dat ook de punten van de aas en de 6 omgewisselt worden. Dit omwisselen heeft ook effect op de roem van gelijke lengte, behalve op de 4 boeren. Deze blijven de hoogste waarde hebben.
Bijlage 2 - Jass algemene documentatie
Kaarten spelen Eerste kaart De eerste kaart kan gelijk welke kaart zijn.
Volgende kaarten De volgende kaarten moeten de kleur van de eerst kaart volgen of ze mogen ook een troef zijn. Als er een troef gespeeld wordt moet deze hoger zijn dan alle andere troeven die al gespeeld zijn. Als er begonnen wordt met een troef moet je dit ook volgen, tenzij als je enkel de troef boer hebt, dan mag je gelijk welke kaart in de plaats leggen. Alleen als je niet kan volgen kan je tegen deze regels ingaan.
Kaartvolgorde Er zijn verschillende kaart volgordes voor verschillende manieren van spelen. Normale kaarten / Obenabe Troefkaarten Unden-ufe
A
K
Q
J
10
9
8
7
6
J 6
9 7
A 8
K 9
Q 10
10 J
8 Q
7 K
6 A
Puntentelling Basis punten Deze punten worden bepaald door alle gewonnen kaarten. De laatste slag krijgt 5 punten erbij. Normale kaarten Troefkaarten Oben-abe Unden-ufe
A 11
K 4
Q 3
J 2
10 10
9 0
8 0
7 0
6 0
11 11 0
4 4 4
3 3 3
20 2 2
10 10 10
14 0 0
0 8 8
0 0 0
0 0 11
Extra punten Je kan extra punten krijgen voor de kaarten die je in je hand hebt. Elke kaart kan enkel in een enkele combinatie gebruikt worden. Enkel de persoon met de hoogste extra punten kan deze opeisen. Dit wordt gedaan als elke speler zijn eerste kaart legt. De eerste speler zegt eerst de waarde van zijn beste extra punten. Vervolgens moet de volgende een betere combinatie zeggen, als deze kan. Hij doet dit door de waarde te zeggen en te zeggen hoe lang de combinatie is. Elke keer als de volgende een betere combinatie zegt, moet de vorige “not good” zeggen als hij deze kan verslagen, “good” als hij deze niet kan verslagen of “equal” als het dezelfde waarde heeft. Als het gelijk is kan de huidige speler enkel de extra punten verdienen als deze van troeven is. Anders blijft de vorige speler diegene met de hoogste extra punten. De volgorde voor deze extra punten is waarde, lengte, hoogste kaart, troef en positie. De volgorde van de kaarten is zoals de normale kaarten, behalve als men unden-ufe speelt, dan is het deze volgorde. Bijlage 2 - Jass algemene documentatie
• • • • • • • • • • •
4 of a kind van boeren: +200 4 of a kind van negens: +150 4 of a kind van azen, koningen, koninginnen: +100 (4 of a kind van 6, 7, 8 in nieuwe regels: +100) 3 opeenvolgende kaarten van dezelfde kleur: +20 4 opeenvolgende kaarten van dezelfde kleur: +50 5 opeenvolgende kaarten van dezelfde kleur: +100 6 opeenvolgende kaarten van dezelfde kleur: +150 7 opeenvolgende kaarten van dezelfde kleur: +200 8 opeenvolgende kaarten van dezelfde kleur: +250 9 opeenvolgende kaarten van dezelfde kleur: +300
Trouwen Als je een koning en koningin van troef hebt, kan je 20 extra punten krijgen. Deze extra punten moet je aangeven nadat alle extra punten berekend zijn. Deze punten krijg je sowieso en worden bij de andere geteld.
Strategieën Troef Als eerste kiezen 1. Kies een troef waarmee je zeker 4 rondes kan winnen. (J, 9, other trump, A) 2. Geef voorkeur aan andere troeven dan de rode, deze zijn meer punten waard. 3. Pas liever niet als je maar 3 kleuren hebt, tenzij als dit een rode is (veiliger)
Als tweede kiezen 1. Kies je beste troef 2. Als je niets hebt, kies een rode troef.
Eerste kaart op tafel 1. Speel je hoogste troef 2. Stop hiermee als: a. Beide tegenspelers geen troef meer hebben. b. Als je denkt dat je partner de andere troeven heeft.
Overtroeven 1.
Bijna nooit op een hand dat je partner gaat winnen, tenzij als je zeker bent dat je alle andere slagen kan winnen. 2. Als je veel zekere kaarten hebt.
Geen troef 1. Speel een lage kaart, maar geen zekere kaart (er zijn nog veel troeven). 2. Probeer je goede kaarten te seinen (met lage kaarten).
Geen zekere kaarten, maar wel nog troeven 1. Probeer je goede kaarten te seinen (met hoge kaarten) 2. Als jouw team veel troeven heeft (genoeg om aan slag te blijven), probeer alle betere kaarten van de tegenstanders in te troeven. 3. Anders moet je je focussen op kaarten met veel waarde. Bijlage 2 - Jass algemene documentatie
Seinen Eerste kaart op tafel 1.
Speel een lage kaart van een kleur waarvan je zeker bent dat je bijna de beste kaart hebt.
Volgende kaarten 1.
Speel de omgekeerde kaart kleur waarvan je zeker bent dat je de beste kaart hebt als je de gespeelde kleur niet kan volgen. a. Harten <-> Ruiten b. Schoppen <-> Klaveren c. 10 is vaak enkel voor punten
Omgekeerd spelen 1.
Als je de beste kaarten hebt in 3 van de 4 kleuren, speel dan een lage van diegene waar je niet de beste van hebt.
Bescherm bijna beste kaarten 1.
Als je niet kan volgen, leg niet zomaar een lage kaart van een bijna beste kaart. Anders ga je misschien later je bijna beste kaart moeten gebruiken, als je dit nog niet wilt.
Links • • • • • •
http://www.pagat.com/jass/swjass.html http://www.pagat.com/jass/schieber.html http://en.wikipedia.org/wiki/Jass http://www.qcsalon.net/en/jass http://www.jassinfo.ch/index_.html http://earthli.com/jass/manual.php?page=strategies
Bijlage 2 - Jass algemene documentatie
Kingen Algemeen • • • • •
Aantal spelers: 3-4 (meestal met 4) Gebruikte kaarten: 52 kaarten voor 4 spelers, 51 kaarten voor 3 spelers (geen schoppen 2) Deelmanier: 4-5-4 (13 kaarten/speler met 4 spelers) 6-5-6 (17 kaarten/speler met 3 spelers) Kaartvolgorde: A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2 Spel: 10 rondes
Rondes 1e spel: minste slagen •
Gewonnen slag = 1 strafpunt.
2e spel: minste harten • •
Harten = 1 strafpunt Enkel met Harten uitkomen als men enkel harten heeft. Als je niet kan volgen, moeten eerst de hoogste Harten gespeeld worden. Als je geen Harten hebt, kan je een andere kleur kiezen.
3e spel: Geen heren en boeren • •
Heer / Boer = 1 strafpunt Mag met een Heer of een Boer uitkomen. Als je niet kan volgen, moet je een kaart van een andere soort worden gespeeld, maar Heren of Boeren moeten wel eerst gespeeld worden.
4e spel: minste dames • •
Vrouw = 2 strafpunten (bij 3 spelers 1 strafpunt) Regels zoals bij geen heren en boeren.
5e spel: geen harten heer • •
Harten Heer = 5 strafpunten. (bij 3 spelers 4 strafpunten) Enkel met Harten uitkomen als men enkel Harten in de hand heeft. Als je niet kan volgen, moet je de harten heer leggen, als je deze hebt. Harten heer gespeeld = einde van de ronde.
6e spel: geen 7de en 13e slag (of geen 10e en 17e slag) • •
7e slag gewonnen (bij 3 spelers is dit de 10e slag) = 3 strafpunten 13e slag gewonnen (bij 3 spelers is dit de 17e slag) = 2 strafpunten
Bijlage 3 - Kingen algemene documentatie
Laatste 4 spellen (3 spellen bij 3 spelers): troef • • •
Gewonnen slag = 1 punt Eerste speler kiest troef Overtroeven verplicht
Links • • • •
http://nl.wikipedia.org/wiki/Kingen http://nl.wikibooks.org/wiki/Kaartspel/Kingen http://users.skynet.be/homepage.rudy/kingen.htm http://www.spelensite.be/spel/kingen
Bijlage 3 - Kingen algemene documentatie
Bijlage 4 - Klaverjassen AI flowchart
Bijlage 4 - Klaverjassen AI flowchart
Bijlage 5 - Jass AI flowchart
Bijlage 5 - Jass AI flowchart
Bijlage 6 - Kingen AI flowchart
Bijlage 6 - Kingen AI flowchart
Bijlage 6 - Kingen AI flowchart
Bijlage 6 - Kingen AI flowchart