Bjarno Oeyen

De gevaren van random bij online games

Nog een blogpost die ik een tijdje op hold had staan, en helemaal uit het oog verloren was. Enjoy mijn rant over random, gokwebsite's en tegenwoordig het grote deel van mobiele apps...

Ik vermoed dat ik geen voorbeeld moet halen, want ik ben er zeker van dat je ooit al een spel gespeeld heeft waar random een onderdeel is van de ervaring: willekeurige damage bij spelers, willekeurige verrassingen of vijanden, of een willekeurige selectie van namen die je aan je karakter kan geven.

Of we hebben ook de onschuldige random in games: een wereldgenerator (bijvoorbeeld die van Minecraft), of een willekeurig gegenereerde dungeon.

Het enige probleem is dat random niet echt bestaat, daarom dat ik bij computers vaak spreek over pseudo-willekeurige getallen (er zijn zeker technieken die random goed willekeurig maken, maar het blijft vaak berekenbaar of afhankelijk van factoren, in plaats van écht random te zijn). Pseudo-willekeurige getallen zijn getallen die schijnbaar willekeurig lijken, maar in feite is het niet meer dan een berekenbare reeks. Echt random bestaat natuurlijk wel, maar het is hartstikke moeilijk om zoiets te doen bij computers (computers blijven natuurlijk gewoon dure, uit de hand gelopen, rekenmachines).

Wat lijkt op een reeks willekeurige getallen, is eigenlijk prima berekenbaar, er komt een wiskunde rij uit deze procedure die met dezelfde seed steeds hetzelfde is. Daarom is het belangrijk om een goede seed af te leiden uit gegevens.

De meest eenvoudige (waar de gebruiker controle over heeft, maar meestal met negatieve impact op de rest van zijn systeem) is als seed de huidige tijd te nemen, hiervoor zijn in vele programmeertalen voldoende calls voor om de systeemtijd (al dan niet de Unix Timestamp uiteraard) op te vragen, en vervolgens als seed te nemen uit vorige procedure.

Iets wat random.org dan weer doet is random generen aan de hand van atmosferische ruis. Hier is geen controle op te krijgen, maar deze stroom van data is natuurlijk niet op elk apparaat te verkrijgen.

Op tablets en smartphones zou je misschien zelfs de accelorometer(s) (en/of andere sensors) kunnen gebruiken, deze sensors zijn vaak niet precies (maar precies genoeg voor wat ze gebruikt worden) en geven kleine afrondingsfouten. Dat maakt ze ideaal om deels te gebruiken als seed.

Maar zelfs als we seeds combineren blijft de uiteindelijke reeks van getallen een reeks gebaseerd op enkele wiskundige bewerkingen, in combinatie met enkele variabele getallen die in het geheugen zitten.

Echt random, bestaat niet. En al zeker niet als je oplet om erachter te komen dat niet elke random generator even eerlijk is.

Een aantal maanden geleden speelde ik wel eens Simpsons: Tapped Out. Het is een mobiel spel voor Android en iOS en het is zeker leuk om eens af en toe te spelen. Echter is het spel na een tijdje vrij saai "je verzamelt keer op keer geld met gebouwen, je bouwt iets nieuws, je krijgt meer geld". Alleen, net zoals bij een té groot aantal van dit soort spellen, is de fun er snel uit (alhoewel dit bij Tiny Death Star bijvoorbeeld nog erger was).

In het spel kan je donuts gebruiken voor premium items te bouwen: een speciale locatie uit de Simpsons-wereld, of een gewone appelsienboom. Deze kunnen enkel gekocht worden met de virtuele eenheid donuts (die kunnen ook gebruikt worden voor bouwtijden sneller te late nverlopen).

Wat dit allemaal te maken heeft met random? Dat is eigenlijk vrij eenvoudig...

Je hebt echter in dit spel de mogelijkheid voor wat donuts te besteden aan een een willekeurig item uit de hele lijst van premium spellen... en hier zit het probleem: "wat is random?". Hoe groot is de kans dat ik met 5 donuts een gebouw krijg van 80 donuts (dat toch al wat enkele euro's waard is)? Heb je bij n objecten echt 100/n% kans om een specifiek object te krijgen, of is dit gebasseerd op de kostprijs?

Maar we kunnen het misschien ook eens anders bekijken... wat als de kans niet alleen afhankelijk was van de random generator, maar dat de random generator gewoon nooit de grote premium items geeft? Maar dat zou na een tijdje misschien opvallen, dus was er misschien wel iets anders nodig...

Wat als iemand nu eens een code heeft geschreven die de duurdere premium items unlockt bij het willekeurig kiezen, als de persoon voor minstens €75 aan echt geld gespendeerd heeft aan het spel? We willen toch niet dat iemand van de eerste keer al meteen een groot item vrijspeeld? Daar zit niet genoeg winst aan.

Dergelijke systemen kunnen overal gebruikt worden om zo winst te vergroten, ik heb geen statistieken van gokwebsite's maar als zij ook maar 3% van de kans wijzigen in hun voordeel, stijgt hun winst met minstens 3%, en 3% is waarschijnlijk verwaarloosbaar genoeg om opgemerkt te worden. We vertrouwen op systemen dat ze iedereen even eerlijk behandelen, maar afhankelijk van de code van de programmeur(s) kan er toch een andere uitkomst uitrollen.

Begrijp mij niet verkeerd: er is helemaal niets mis met zo'n dingen in te bouwen. Maar vaak wordt het woord random niet altijd even correct gebruikt. Wat is de definitie van random? Uit welke data wordt willekeurig iets gekozen, en op welke manier? Er moet gewoon een manier zijn om weer te geven hoe dit werkt, maar dit zie ik niet meteen gebeuren bij systemen die gebouwd zijn om winst op te leveren.

We zijn zo vertrouwd met een dobbelsteen en dat deze altijd 1/6 kans heeft voor een bepaalde zijde, je kan oneindig veel keer spelen met een dobbelsteen en nakijken hoevaak alles gegooid is Als je ziet dat 5 bijna voor 40% gegooid wordt, en 2 amper 5%, dan weet je dat er iets mis is. Maar met een computerdobbelsteen is dit anders: Wat als we onze "aangepast" dobbelsteen ook deze statistieken laten bijhouden? Als we merken dat we de laatste tijd weinig een twee gegooid hebben waarom verhogen we niet tijdelijk de kans? Of waarom maken we niet onmiddelijk een twee van? Als we dit consequent doen, en ervoor zorgen dat we hierdoor geen reeks gaan generen na een bepaald aantal keer gegooid te hebben, dan zouden we iets hebben dat random (en eerlijk) lijkt, maar het niet is.

Reacties op "De gevaren van random bij online games"

Nog geen reacties, waarom laat je er geen achter?

Laat een reactie achter

Naam: Bericht: Bewijs dat je geen robot bent: