SuperSet

als kind al, wilde ik programmeren. Op mijn Commodore64 krabbelde ik wat Basic, maar ik heb daar nooit voldoening uit gehaald. Later haalde ik veel voldoening uit Unix shell scripting. (Nog steeds trouwens; ik ben in die zin toch wel een ‘echte’ nerd die van de knipperende prompt houd.)

Vorig jaar heb ik eerst zelfstandig pogingen ondernomen om Python te leren programmeren. Ik hou van Python. Maar mijn leercurve is vlak. Te vlak en ik verloor allengs mijn belangstelling. Maar toen kwam AI – ChatGPT in het bijzonder. Daar hoort ook de uitspraak bij van Andrej Karpathy dat Engels de nieuwe programmeertaal is.

Ik ben met Chat begonnen met het maken van een spel. Dat liep na een paar maanden vast op de beperking die Chat had bij het genereren van output. Ook in de betaalde versie. Toen hoorde ik bij de podcast PoKi dat Claude sympathieker is. En later, dat er een mooie interactie is met Cursor. In Cursor kun je makkelijker documenten meegeven in de context. Eigenlijk een rijkere en meer gestructureerde prompt.

En het spel had ik werkend zoals ik het wilde, maar het werkte alleen op de desktop, in Python. En ik wilde juist een mobiele versie; daarom moest het op een platform als Kivy overgezet worden. En in dat proces kreeg ik te maken met eindeloze hallucinaties en hij maakte eerder geschreven kapot.

Ik ben toen overgestapt op Xcode. En dat samen met Cursor werkt goed. Ik heb nu mijn eerste werkende versie van Superset. Een next-gen digitale versie van Set. Set is een fantastisch spel.

De prompt

Het toevoegen van een remote multiplayer-functie aan je SET-spel voor Apple-apparaten maakt het project inderdaad complexer, maar het is zeker mogelijk. Hier zijn enkele overwegingen:

1. Netwerkarchitectuur: Je zult een client-server model moeten implementeren. Apple biedt hiervoor verschillende opties:

– GameKit: Geschikt voor eenvoudige peer-to-peer verbindingen.

– Multipeer Connectivity: Voor lokale netwerken zonder internet.

– Custom server: Voor meer controle en schaalbaarheid, maar complexer.

2. Realtime communicatie: Je moet een systeem opzetten voor het synchroniseren van spelstatus, acties van spelers, en kaarten op het speelveld.

3. Gebruikersauthenticatie: Je moet een manier implementeren om spelers te identificeren en te koppelen.

4. Latency: Je moet rekening houden met netwerkvertraging en hoe dit het spel beïnvloedt.

5. Foutafhandeling: Je moet omgaan met situaties zoals verbindingsverlies of ongelijke spelstatus.

6. UI-aanpassingen: De interface moet worden aangepast voor zowel lokaal als remote spel.

7. Testing: Het testen wordt complexer omdat je verschillende netwerksituaties moet simuleren.

Hoewel het toevoegen van remote multiplayer het project complexer maakt, biedt het ook kansen:

1. Grotere doelgroep: Mensen kunnen spelen met vrienden en familie op afstand.

2. Meer engagement: Online functionaliteit kan leiden tot meer speeltijd.

3. Leermogelijkheden: Het is een uitstekende kans om meer te leren over netwerkcommunicatie en app-ontwikkeling.

Als je besluit om deze functie toe te voegen, raad ik aan om eerst de basis van het spel goed werkend te krijgen en daarna stap voor stap de online functionaliteit toe te voegen. Begin bijvoorbeeld met GameKit voor een eenvoudige implementatie en breid dit later uit indien nodig.