Portable Escape Game

Portable Escape Game (part 4): Gameplay & Niveau/Moeilijkheidsgraad

Een heel ander hoofdstuk, maar net zo belangrijk als de hardware en software is de gameplay.
Welk thema wil ik gebruiken. En wat ga ik doen met het niveau van de puzzels.

Ik bouw de koffer uiteraard in eerste instantie voor mezelf. Maar in mijn achterhoofd ga ik er vanuit dat meer mensen dit willen spelen en uitproberen. Daarom moet de koffer ook weer aan een aantal eisen voldoen als het gaat om het spel zelf.

Moeilijkheidsgraad

Als eerste moet het vooral een leuke ervaring zijn. Als de puzzels heel erg moeilijk zijn en je loopt echt vast. Dan zal de gemiddelde mens misschien opgeven. En een groot deel van het plezier gaat dan verloren omdat het TE moeilijk is.
Aan de andere kant. De puzzels mogen ook niet te makkelijk zijn. Een echte puzzelfanaat die vind het dan te makkelijk en snel saai worden. En beleefd op die manier ook niet de optimale ervaring.

Hier heb ik lang over nagedacht. En meerdere oplossingen voor verzonnen.

Het spel gaat bestaan uit verschillende fases.  Elke fase wordt het spel een grote stap moeilijker. En na elke fase kan de speler kiezen of hij/zij de volgende fase wilt spelen. Of dat je het spel beëindigd.

In elke fase zal een puzzel in de meest complexe vorm worden gestart. En als mensen er niet uitkomen. Kunnen ze bijvoorbeeld na een bepaalde tijd gebruik maken van een hint. Een hint gaat ten koste van je score.
Bijvoorbeeld:  de totale score is 100 punten.

  • Hint 1 (75% score over) geeft je inspiratie naar richting waar je moet gaan zoeken of waar je aan moet denken.
  • Hint 2 (50% score over) geeft je een duidelijke richting wat er van je verwacht wordt.
  • Hint 3 (25% score over) geeft bijna een voorbeeld met wat je zou moeten doen.
  • Deze puzzel overslaan (0% score over)  De puzzel wordt niet opgelost en het spel gaat verder.

Elke hint kun je pas unlocken bijvoorbeeld na een bepaalde tijd dat de vorige hint beschikbaar is. Of met een extra code die je nodig hebt. Dus het skippen van een puzzel kan pas als Hint 3 nog steeds niet leidt naar de oplossing.

Highscore

Vroeger in de bekende Arcade games had je altijd aan het einde van het spel en soms aan het begin een Highscore lijst. Daarop stonden de namen of nicknames van de spelers en degene met de hoogste score staat dan bovenaan.
Ik wil zo’n zelfde lijst gaan toepassen. Zodat het spelers uitdaagt hun best te doen om zover mogelijk bovenaan deze lijst te komen.

En ik zou deze lijst nog kunnen splitsen in 3 delen. Voor de 3 verschillende fases/moeilijkheidsgraden.
De die hard puzzelaars zullen van goede huize moeten komen om fase 3 uit te spelen.

Thema

Ik heb me laten inspireren door de serie Mr. Robot op Amazon Prime. Het mooie van deze serie is dat het ook verschillende fases en dus verhaallijnen heeft die ik kan toepassen in de verschillende fases van het spel.

Wat ook een heel leuk aspect is is dat ze in de serie terugblikken op de jaren 80 en verwijzen naar films als “Back to the future” en “Fightclub”. Die ik zelf vele malen gezien heb. Ik wil niet perse alles letterlijk gebruiken. Maar als leidraad en verhaallijn kan ik wel wat clips en stukje gebruiken om zo mijn eigen verhaal en thema te maken.

Extra spelers

Wat ook echt op mijn lijstje staat is de mogelijkheid om met extra spelers te spelen. Ik wil op een bepaalde manier puzzels en opdrachten verwerken die je remote kunt doen. Denk hierbij aan puzzels via een website. En dat de koffer een database uitleest of real-time connectie maakt met de andere speler.

Via WhatsApp ben ik op basis van een old school real time text based strategy game een puzzel aan het maken. Hierbij zul je naar een nummer moeten appen die gekoppeld is aan een chatbot die ik via Google Dialogflow in elkaar heb gezet. Het lijkt een standaard chatbot. Maar bij de juiste vragen kom je terecht in een game waarbij je moet uitvogelen wat de bedoeling is. En als je dit doorstaan hebt unlock je een ander gedeelte van het spel.

Dit kan natuurlijk iedereen doen. Ook degene die de koffer bediend. Maar door een factor tijd toe te voegen zal het slimmer zijn om een 2e speler dit te laten doen zodat je als team meer punten overhoudt. Plus dat de mogelijkheid bestaat dat de speler van de koffer tegelijkertijd moet connecten met een lokaal wifi netwerk om op die manier de ander te helpen.

De mogelijkheid voor een 2e en misschien wel 3e speler is op deze manier praktisch goed haalbaar.

Mocht je zelf nog een idee hebben dan kun je dat altijd in de reacties hieronder laten weten. Of me direct benaderen.

Ik laat me graag inspireren 🙂

Portable Escape Game (part 3): Wat moet de koffer allemaal kunnen?

Oke, de koffer kan nu netjes open en dicht. En zelfs met het scherm gemonteerd in de klep!

Uiteraard heb ik een heel idee in mijn hoofd. Maar het is wel slim om dat af en toe eens op te schrijven.
Wat is er allemaal mogelijk. En wat moet de koffer eigenlijk kunnen. En past dat allemaal in de koffer.
En hoe ga ik dat alles aansturen.

Sensoren

Ik had bij Ali Express een starters kit besteld met een Arduino Uno en daarbij zaten ook wat bruikbare sensoren.
De volgende dingen had ik op mijn lijstje staan wat de koffer zou moeten kunnen:

  • De koffer moet automatisch kunnen openen. En een elektrisch slot hebben.
  • Beeld en geluid weergeven d.m.v. laptopscherm en een oude SoundBlaster als audio versterker.
  • 2 Analoge VU meters.
  • Led matrix module in het midden waarop ik bijv. resterende tijd kan afbeelden of codes.
  • Led ring ook in het midden met RGB leds, Om zo de status van een spel of countdown of klok etc. visueel weer te geven.
  • TFT scherm voor bijv. het weergeven van een QR code of een symbool.
  • RF-ID zodat je ook met pasjes etc. een code kunt invoeren
  • 5 Witte Arcade knoppen omgebouwd met een RGB led waardoor deze met elke kleur kunnen oplichten.
  • 4 Extra arcade knoppen met vaste kleuren
  • 20 Banaanstekker bussen. Zodat je doorverbindingen kunt maken tussen deze 20 bussen.
  • 8 tuimelschakelaars met 3 standen. Zodat je bijvoorbeeld een binair woord kunt instellen.
  • Een ruim LCD display om tekst weer te geven
  • 14 keer een 10 slagen potmeter. Zodat je bijv. een coördinaat kunt laten invoeren. 7 potmeters voor de lengtegraad en 7 potmeters voor de breedtegraad
  • 2 digitale potmeters
  • en dan uiteraard de frontplaat met de display en de 4 knoppen aan de buitenkant van de koffer.
  • XYZ Sensor om de positie van de koffer te bepalen
  • GSM module
  • GPS module
  • WIFI
  • Bluetooth
  • FM
  • En een hele berg RGB leds bij elke knop of gedeelte om zo een indicatie of hint te kunnen geven.

Zoals je ziet kun je met al deze sensoren en mogelijkheden wel een oneindig aantal puzzles verzinnen.
Zelfs geocaches hierin te verwerken.

Aansturing

De aansturing daar was ik grotendeels snel uit. De Raspberry Pi is de hoofdcontroller. Daarop draait het spel.
Ik had een tijdje geleden het idee om op de Pi gebruik te maken van Node Red als besturing. Node red is een visuele programmeertaal. Veel professionele escaperooms gebruiken ook Node Red omdat het zo flexibel is.
Later kwam ik daarop terug. Want 1 van de uitdagingen was dat ik weer wilde programmeren en wel in code en daar weer beter in zou worden en kennis te maken met Python.

De Raspberry Pi communiceert zoveel mogelijk via de I2C bus met de andere controllers.
Zo kan deze steeds de status van alle knoppen laten uitlezen door een andere controller en deze data komt dan binnen.

Hier kwam voor mij iets nieuws om de hoek. De Raspberry Pi heeft 3.3 Volt IO poorten. En een ESP32 heeft dat ook. Maar Arduino werkt met 5 Volt IO poorten.
En zo lang de master 3.3Volt stuurt is er niks aan de  hand. Maar als een ander device Master wordt en data stuurt naar de Pi of naar de ESP dan kan het zijn dat deze defect gaat.

En om er zeker van te zijn dat dat niet gebeurt heb ik een zogenaamde bi-directionele level shifter gebruikt.

Hierboven zie je er 1. Wat deze doet is eigenlijk heel simpel.  Als er op de lage ingang een 1 komt met dus een spanning van 3.3 volt dan zet hij deze om op de hoge kant in een 1 van 5 Volt. En andersom. Als er een 1 op de hoge kant komt dan zet hij deze om naar een 1 van 3.3 Volt.  En zo hou je deze 2 spanningen netjes gescheiden en kan er niks kapot gaan.

Deze level shifter heeft dus 4 lage en 4 hoge aansluitingen en verder moet je dan nog 3.3V, 5 V en Ground aanbieden.
En zoals je misschien kunt zien zijn ze zelfs al voorzien van Pull Up resistors van 10 Kohm.

Tot zover de theorie. Ik heb dit getest en het werkt. Maar tot welke snelheid dit goed gaat weet ik niet.
Op zich heb ik ook geen super snelle datasnelheden nodig. Dus als het zou moeten zou ik hier nog iets aan kunnen tweaken.

Mijn eerste idee was om elk deel van de koffer aan te sturen met een Arduino Nano. En deze allemaal via I2C met de Pi te laten communiceren. Maar in het kader van de flexibiliteit EN vooral het stroomverbruik van zoveel controllers ben ik overgestapt op het gebruik van de Arduino Mega. Deze heeft heel veel analoge en digitale IO poorten waardoor het nu mogelijk is om met 2 van deze controllers alles uit te lezen. En dan blijft de I2C bus ook een heel stuk minder bezet.

Portable Escape Game (part 2) : Het automatische openen van de koffer.

 

Een tijdje geleden heb ik een hele oude Medion laptop uit elkaar gehaald. Deze lag al jaren stof te happen, maar ik kan slecht dingen weggooien. Er zit altijd nog best veel leuk spul in een laptop. Allerlei sensoren, de harde schijf, geheugen, speakers, de microfoon, de webcam, cd-rom speler met daarop stappenmotoren etc.

En natuurlijk het scherm zelf. Mijn idee was om het scherm eruit te halen en een display-controller aan te schaffen. Dit is een klein printje waar je dit scherm op kunt aansluiten. En je die bijv. met HDMI of VGA kunt aansturen. Deze controller kostte ongeveer 18 euro. Dus best schappelijk als je daarna dat scherm mooi kunt gebruiken.

Ik wil hem namelijk aansluiten op mijn Raspberry Pi 2B. Zodat ik een deel van het spel ook gebruik kan maken van een scherm.
Eenmaal binnen was het eigenlijk heel simpel. Connector aansluiten, 12 Volt erop en het werkte in één keer.

Dit scherm heb ik d.m.v. een aluminium frame in de klep van de koffer gemonteerd. Hierdoor werd de klep wel een stuk zwaarder. Waardoor het openen van de koffer moeilijker werd voor de servo’s

Wat ik ontdekte was dat de hoek waarin de scharnieren stonden als de koffer dicht was heel veel uitmaakte.
Dus met wat experimenteren en klooien kwam ik erachter dat hoe groter de hoek is tussen de 2 benen van het scharnier, des te makkelijker konden de servos de klep openen. Maar in een koffer heb je natuurlijk maar beperkt ruimte van binnen om deze hoek te vergroten. Uiteindelijk heb ik het scharnier zowel in de koffer als in de klep verplaatst om zo de grootst mogelijke hoek te krijgen.

Leuk waar je misschien niet meteen aan denkt. Maar als de linker servo linksom draait moet de rechter servo rechtsom draaien. Anders draaien ze tegen elkaar in. (kwam ik ook achter tijdens de test. Maar toen waren ze nog niet gemonteerd. Het belangrijke was dat stappenmotor dus als begin stand de eindstand van de andere stappenmotor heeft. Dus je moet vooraf bepalen wat de eindstand is van 1 motor. Vandaar dat ik in bovenstaande video even een potmeter heb gebruikt om hem te openen. Zodat ik kon bekijken hoever de stappenmotor moet draaien zodat ie in de meest open stand staat.

Daarna stuitte ik op het volgende probleem. De servo’s waren wel sterk genoeg. Maar doordat het dode punt waar hij bij het openen van de klep dus de meeste kracht nodig had. Gebruikten de servo’s ook meer stroom. En power banks hebben een USB aansluiting welke begrenst zijn op 2 a 3 Ampere. Hierdoor kregen de servo’s niet genoeg stroom om de klep te openen.

Gelukkig kwam mijn collega met een geniaal plan. Om een grote Elco over de voedingslijn te zetten die dan even voor deze piek de benodigde stroom zou kunnen leveren. En na het bouwen van een mini Elco bank zat ik op zo’n 14000uF aan capaciteit.
Het werkte perfect. Probleem opgelost en de servo’s kunnen de klep met gemak openen.

Wel ging dit nog heel schokkerig en met horten en stoten. Dus dit heb ik in de software opgelost door de eerste hoek full power de servo’s te draaien En als hij eenmaal over het dode punt was de snelheid steeds te vertragen zodat ie nu heel mooi smooth opent.

Portable Escape Game (part 1) :Hoe het begon

Ergens eind vorig jaar kwam ik op het idee om mezelf eens flink uit te dagen. Na het bekijken van diverse YouTube video’s over hacking en pen testing wilde ik me daar eens meer in gaan verdiepen. En zo liep ik tegen de serie “Mr. Robot” aan op Amazon Prime. Een goede serie met aparte wendingen en relatief realistische weergave van hacking zowel social engineering als in Kali Linux. Maar vooral vermakelijk waar een serie ook voor bedoeld is.

Sinds mijn jeugd ben ik al druk met elektronica en programmeren. Maar een beetje door werk en andere hobbies etc. niks meer mee gedaan. Dus het perfecte moment om het weer eens op te pakken.

Mijn doel is om veel te leren op vlakken waar ik al een tijd interesse in heb of al een tijd niks mee gedaan heb.
En dat zijn de volgende punten

  • Elektronica / Microcontrollers
  • Programmeren / Python
  • Hacking / Pen testing / Darkweb / Coding / Decoding
  • Lockpicking
  • Game Design /  Escape rooms / Puzzels / Geocaching
  • Linux / Kali Linux

Al deze punten bij elkaar EN het feit dat we met Corona te maken hebben zorgden ervoor dat een leuk winter project als een Portable Escape Room in een Koffer ontstond.  Hierin kan ik namelijk helemaal los en alles combineren zodat ik super veel leer op diverse gebieden. En als resultaat hou ik een leuk spel over wat ik kan uitlenen aan vrienden die hem ook graag willen spelen.

TOP IDEE!  Nu de uitwerking nog.
Als eerste heb ik met mezelf afgesproken om het echt als hobby te gaan bouwen en dus zonder deadline.

Ik heb bij bol.com eerst maar eens een mooie koffer uitgezocht waar het allemaal in moet gebeuren.
Tevens heb ik een starter set gekocht van Arduino op Ali express. Was ongeveer 18 euro. Voor een fake Arduino Uno en een berg sensoren etc.

Daarna ben ik gaan denken wat hij allemaal zou moeten kunnen.
Al snel wilde ik dat de koffer een display zou krijgen bij het handvat. Waar je de eerste code al moet invoeren. En als die correct is gaat de koffer vanzelf open.

kofferEen koffer vanzelf laten openen is al meteen een leuke mechanische uitdaging. Want de originele scharnieren van de koffer hadden een soort klik nokje waarbij bij openen hij zeg maar vastklikt en open blijft staan. Wat je normaal ook graag zou willen.

Dus ik dacht dat met 2 sterke servo’s het wel goed zou komen en een nieuw scharnier.
Wat  ik ook echt graag wilde was een oud laptop scherm gebruiken. Ik had een oude Medion laptop uit elkaar gehaald en het scherm en de speakers en alle andere nog bruikbare onderdelen gestript.

Daarna heb ik uitgezocht welke controller past bij dit type display en deze ook besteld. Dit scherm wilde ik in de klep van de koffer. Zodat ik mijn oude Raspberry Pi 2B kon inzetten als hoofdcontroller waar uiteindelijk de game software op draait en die dus informatie op het beeld kan laten zien.

Dit geeft wel flink wat extra gewicht aan de klep van de koffer. Waardoor de servo’s die hem moeten openen een flinke klus hebben om over het dode punt heen te komen. Op het scharnier komt aardig wat kracht te staan. Vooral in het begin als de klep dicht zit is er erg veel kracht nodig om hem te openen. Eenmaal in beweging  lukt het wel.

Voor de zekerheid heb ik daarom 2 servo’s besteld met elk 35Kg aan kracht. Hoe dat precies gemeten wordt zag ik ergens op een YouTube video. En ze schijnen echt 35 Kg aan gewicht te kunnen tillen.

Het derde punt wat ik perse wilde met deze koffer is dat ie portable is. En dus ook zo te gebruiken. En dus kwam ik op het idee om als voeding een powerbank te gebruiken.  Misschien voel je hem al aankomen.  Maar daar ontstonden al wat issues. Als eerste gebruiken de servo’s veel meer stroom dan er standaard uit een USB poort van een powerbank komt. Dus het openen van de koffer lukte niet als het scherm in de klep gemonteerd zat.  En het 2e punt was dat de controller van het scherm op 12V werkt. Dus ik had naast 5 Volt ook 12 Volt nodig.

Uitdagingen genoeg.
Ik heb toen de binnenkant van de koffer mooi mat zwart gespoten. Ik had nog wat bussen van de Action liggen. Dus dat zag er al meteen wat beter uit.

 \