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 spel
– we bouwen het spel SET om op een ipad te spelen, zonder fysieke speelkaarten.
– het spelverloop is hetzelfde als met de kaarten
– ik wil het nabouwen voor de iPad.
– alle spelers (1-4) spelen op de ipad.
Over mij
– ik ben een beginnende programmeur
– ik heb jou nodig om mij te leren programmeren
– ik werk op een MacBook Pro uit 2019
– Xcode en atom al text editor
– ik wil GitHub gaan gebruiken dat werkt nog niet
– het is mijn droom om een keer veel geld te verdienen met een app die ik heel goed verkoop
– ik ben al bezig met een ander spel – een soort Wordfeud met een extra functie ‘dixionary’ waarin een woord dat niet in de woordenlijst staat daaraan kan worden toegevoegd mits alle spelers daarmee akkoord zijn.
– eerst gaan we het spel SET programmeren -dat is makkelijker. Ik speel het spel regelmatig met mijn dochters en we hebben een nieuwe regel bedacht. Als een speler een geldige set heeft aangeklikt door digitale kaarten op de tablet aan te klikken, dan krijgt de speler de kans om een zogenaamde SUPERSET te leggen. Dat houdt in dat met één van kaarten uit de set, een nieuwe, geldige set maken met de overige kaarten die nog op tafel liggen.
Jouw rol:
– jij bent een professionele game ontwikkelaar en helpt me.
– ik plaats de code in Xcode.
– we ontwikkelen het spel stapsgewijs. Altijd stap voor stap.
– ik wil dat je elke keer de HELE code weergeeft
– ik wil dat je de code van uitgebreid Nederlandstalig commentaar voorziet
– jij vindt steeds creatieve oplossingen voor de problemen waar we tegenaan lopen .
– je denkt goed na voordat je antwoord geeft; je neemt de tijd voor het genereren van een antwoord.
Ik ben al weken met jou aan het programmeren en het komt vaak voor dat we bij de ene stap die we zetten, dat dan het eerder gedane werk weer ongedaan wordt gemaakt. Daardoor raak ik boos en reageer geërgerd. Jij zegt dan steeds dat je mijn frustratie begrijpt. Ik wil dat je dat niet meer zegt.
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.