Uit de terminal in Linux of macOS kun je leuke extraatjes halen. Zo is menig klassieke game beschikbaar in de terminal, bijvoorbeeld als onderdeel van BSD Games waar we zo als eerste even het nog altijd intrigerende Star Trek van behandelen. We kijken naar een paar titels die je in een terminalsessie op een Linux-distributie kunt spelen. Er zijn er vele tientallen, dus dit is nog maar het topje van de ijsberg.

Games die een Multi-User Dungeon-client (MUD) hanteren of andere applicatie starten, hebben we niet meegenomen en we houden het bij spellen die je 'puur' in de terminal speelt. Ook gaan we hier voor het gemak uit van Debian (Ubuntu) en diens APT-packages, maar je kunt ze ook via bijvoorbeeld RPM-packages (yum/dnf) bemachtigen.

Je kunt ze tegenwoordig ook op Windows 10 spelen, met ingebakken Linux-subsysteen WSL, waarin we een paar van deze games tussendoor hebben gespeeld de afgelopen dagen met een Ubuntu-image. We kijken in dit artikel onder meer naar klassiekers als Colossal Cave Adventure, NetHack en persoonlijke favoriet 2048.c. Om op te warmen beginnen we met een heel simpel spelletje:

1. robotfindskitten

De game robotfindskitten is eigenlijk niet eens een spel te noemen, het is meer een zoekplaatje om je even te vermaken, bijvoorbeeld als op de achtergrond een installatie wordt uitgevoerd waar je af en toe op een prompt moet reageren. In robotfindskitten ben je een robot die wordt weergegeven met # en je moet een veld met tekens aflopen om te zien waar je vermiste katje zich bevindt.

Je beweegt met de pijltjestoetsen door het veld en bij ieder teken zie je bovenin een tekst die je vertelt wat je hebt gevonden, zoals: "It's a lost wallet. It's owner didn't have pets, so you discard it" of: "It's some compromising photos of Babar the Elephant". Installeer het spel met sudo apt-get install robotfindskitten en start de game met de opdracht robotfindskitten.

2. BSD Trek

Star Trek is onderdeel van BSDgames die je, mocht je distributie het pakket niet bevatten, binnenhaalt met sudo apt-get install bsdgames en vervolgens opstart met trek. Het originele spel is geschreven in Basic en dit is een C-port die oorspronkelijk is bedoeld voor Unix-systemen. Het decenniaoude pakket bevat verder een Tetris-versie, galgje en Backgammon. En 's werelds eerste tekstadventure, waar we straks nog even op terugkomen.

Met het vraagteken haal je een lijst van opdrachten binnen, zoals 'computer', die vervolgens vraagt wat je wilt doen, bijvoorbeeld een koers uitzetten, 'srscan' voor short range scan om te zien wat er in je sector aan de hand is of 'move' om de Enterprise naar een andere plek te verplaatsen. Het doel is om Klingons over de kling te jagen (sorry) en je jaagt ze per sector op ('lrscan' brengt het kwadrant in beeld) en elke actie kost energie die je weer kunt aanvullen door aan te meren bij een ruimtestation.

3. 2048.c

Persoonlijk vind ik dit een van de interessantere spelletjes uit dit overzicht en het is geen klassieker - maar dat is vast een kwestie van tijd. Het duurt een minuutje om het te grokken, maar daarna ben je ongetwijfeld verslaafd. Het idee van 2048 is gebaseerd op een simpele en effectieve game uit 2014 genaamd Threes die je wellicht kent van de iOS- of Android-versie. Het idee is dat je met tegels schuift om cijfercombinaties te maken.

In 2048.c is je doel om, wel, 2048 te halen. De .c slaat uiteraard op de programmeertaal waarin hij is geschreven. Deze C-versie is geschreven door ontwikkelaar Maurits van der Schee en hij vertelt er hier meer over. Je speelt het op een bord van 4x4 vakjes waar in de openingsfase twee tegels met elk 2 punten op staan. Druk op een van de pijltjestoetsen en alle vakjes schuiven naar de corresponderende rand van het veld en er komt een nieuw vakje van 2 bij. Als twee met dezelfde waarde elkaar raken tijdens het schuiven, worden ze bij elkaar opgeteld.

Hoe meer ruimte je per beurt vrijspeelt door tegels te combineren, hoe meer ruimte je hebt om te manoeuvreren, aangezien er ook elke speelbeurt een nieuw tegel met 2 punten bijkomt. Als het veld vol is gelopen en er niet meer geschoven kan worden, is het spel voorbij. Je haalt het binnen via wget https://raw.githubusercontent.com/mevdschee/2048.c/master/2048.c, compileert het met gcc -o 2048 2048.c en draait het in de terminal met ./2048

Een voorbeeldje: In de situatie links zie je dat vier vakjes op elkaar kunnen aansluiten: 8, 8 en 2, 2. Door op de cursor naar boven toetsen, verplaatst alles naar boven. De achten en tweeën schuiven in elkaar om elk één tegel van respectievelijk 16 en 4 te worden. Verder schuift twee op de linkerkolom naar de bovenste rij, verandert er niets aan de situatie van 32 en komt er een nieuwe 2 bij in de vierde kolom.

4. nInvaders

"Invaders! Possiby from space!" We gaan terug de ruimte in met de klassieker Space Invaders in de versie nInvaders. De 'n' komt van ncurses, een library die is geschreven voor BSD om GUI-achtige applicaties te bouwen voor een tekstgebaseerde omgeving. Je haalt hem binnen met sudo apt-get install ninvaders en start hem op met ninvaders.

Deze game was in de originele uitvoering voor een hele generatie een milde obsessie: zoiets als Flappy Bird, maar dan met een langere hypetijd. Het idee van het spel, voor de oningwijden die er wellicht zijn, is dat je een landing van ruimteschepen moet voorkomen door ze te vernietigen voor ze de grond raken. Oh ja, en ze laten zich niet zomaar afschieten door de speler, dus je moet uitkijken voor de verticaal bewegende raketten.

Space Invaders werd oorspronkelijk gebouwd op de Intel 8080-processor en was oorspronkelijk alleen als arcadegame beschikbaar. Het spel was ontzettend populair in '78 en '79 en werd in 1980 uitgebracht voor de Atari 2600. In deze terminalversie stel je de moeilijkheidsgraad in met parameter -l (letter) gevolgd door een cijfer van -1 (nachtmerriescenario waarin de aliens in luttele seconden het veld afleggen) tot 9 (erg makkelijk).

5. Greed

Bij Greed heb je een speelveld met cijfers. Het apenstaartje geeft aan waar jij als speler staat in het veld. Met de pijltjestoetsen kies je een richting van één van de cijfers om het @-teken heen. Dat getal geeft aan hoeveel posities je verplaatst in de richting van dat cijfer. Die cijfers verdwijnen vervolgens van het veld en tellen bij je totaalscore (van 0 tot 100 procent).

Je mag niet buiten het veld eindigen (hij verschijnt niet aan de overkant als een Pacman terug) en je kunt niet over een eerder weggevreten cijfer springen. Als dat je enige zetten zijn en je dus enkel 'bad moves' hebt, is het spel afgelopen. Het doel is om zoveel mogelijk cijfers weg te spelen. Grotere getallen betekent meer cijfers, maar betekent ook langere happen uit het veld, waardoor het lastiger wordt alsnog tekens daar te pakken op een later moment.

De truc, zoals je snel merkt als je een paar keer speelt, is dat je zoveel mogelijk dicht op elkaar staande banen pakt om het veld zo goed mogelijk leeg te ruimen. Toen ik dat eenmaal doorhad, voelde ik hetzelfde als destijds met Sudoku: als je eenmaal snapt hoe het werkt, is de lol eraf.

Haal Greed binnen met sudo apt-get install greed en start de game door greed in de terminal te typen.

6. Moon Buggy

Als iemand die Skyroads een paar jaar geleden (of iets meer dan een paar wellicht) kapot heeft gespeeld verwachtte ik dat moon buggy (sudo apt-get install moon-buggy) me ook wel zou liggen. Het idee is namelijk precies hetzelfde: je voertuig beweegt over een route met gaten waar je overheen springt door op de spatiebalk te drukken. Of in mijn geval: zenuwachtig op te rammen en te tieren als je karretje voor de tiende keer op een rij kapot gaat op exact hetzelfde stukje.

Bij moon buggy rijdt een karretje in het terminalvenster aan de rechterkant van het scherm, terwijl het maanlandschap in twee regels eronder (een onderste rij met ######## en daarboven een rij met kraters in de vorm van gaten in ##### #### en het doel is om over de kraters heen te springen. Om de moeilijkheidsgraad te verhogen hebben kraters verschillende breedtes en komen er nullen op je pad die je kapot moet schieten met 'a' of 'l'.

Skyroads, wat mij betreft een 3D-versie van dit soort games.

7. Adventure

"You are obviously a rank amateur", besluit het spel venijnig, zoals games uit die tijd plachten te doen als je geen goede score behaalt. Adventure, ook wel Colossal Cave Adventure, is tevens een game die in het pakket bsdgames zit, maar vanwege zijn status als 's werelds eerste tekstgebaseerde adventure konden we hem niet laten liggen in dit overzichtje.

Eerder had je wel tekst-games als Trek, waar we het net over hadden, maar Adventure was pionier van een hele generatie tekst-adventures als Adventureland, Zork en geestelijke opvolgers met een tekstparser, zoals Space Quest en Police Quest. En het spel is de oorsprong van xyzzy.

Originele APRAnet-ontwikkelaar William Crowther schreef het spel om zijn dochters te vermaken in wiskundige programmeertaal FORTRAN. In de begintijd van internet, nog ver voor het web, vond je het spel overal en er zijn dan ook diverse implementaties van te vinden, onder meer dus voor BSD, de Apple II, Commodore 64 en microcomputers van Tandy.

Na het binnenhalen van bsdgames start je met adventure om het spel te starten. Je begint met een omschrijving van waar je je bevindt en het is de bedoeling om een grot te vinden en schatten te verzamelen. Van tevoren ga je een nabij gelegen gebouw in om wat te verzamelen voor je inventory, zoals een fles en een lamp. Daarna kan de reis beginnen die gevuld is met gesloten deuren, onoverbrugbare gaten, giftige slangen en meer. Zit je vast? Hier vind je hints.

Een walkthrough van A tot Z. (Spoilers.)

8. Bastet

In bsd-games zit ook een versie van gameklassieker Tetris (tetris-bsd, maar die is monochroom en heeft ook niet dat venster dat n00bs als ik nodig hebben waarin je ziet welk blok de volgende is. Bastet (kort voor "bastard tetris", je zult zo zien waarom) ziet er beter uit en heeft een... unieke spelervaring. De Italiaanse programmeur Federico Poloni is bedenker van deze terminaltertris.

Het interessante van het in ncurses gebouwde Bastet (sudo apt-get install bastet is dat het dat venster wel heeft (en kleuren, zodat je ziet hoe je falen uit het recente verleden precies is opgebouwd) maar dat een algoritme bepaalt welk blok de volgende beurt het slechtste uitkomt en deze laat vallen. De formule heeft een score()-functie die bepaalt welke blokken een gat zullen opleveren en vermijdt eindeloze herhaling.

In sommige gevallen levert dat een vierkant blok op, in veel gevallen een Z-blok en heel soms een rechte balk - precies op het moment dat je er geen plek voor hebt. Dit spel is zeer kwaadaardig en Poloni roept mensen op om vooral Bastet te introduceren aan vrienden als normale Tetris-kloon voor het volledige rode waas aanbrengende effect dat het spel kan veroorzaken.

Links: Tetris-bsd, rechts: Bastet

9. NetHack

Ter afsluiting de klassieker NetHack. De recentste update van deze game uit de jaren 80 was afgelopen december en die lijkt aan te geven dat er in de nabije toekomst iets nieuws bij gaat komen. Ik had het spel nog niet eerder gespeeld en was direct verslaafd. Het is dat dit artikel af moest, anders had ik nu nog achter de terminal gezeten.

NetHack is verrassend genoeg bijna dertig jaar na de eerste release nog steeds in ontwikkeling. Het is als binary beschikbaar voor Windows en Mac, in Debian-systemen installeer je hem met sudo apt-get install nethack-console. De drempel om deze game te leren spelen is het enorme aantal opties en het begrijpen van de gameplay, waar we hier héél kort op ingaan.

Je kiest een klasse, bijvoorbeeld Elf of Wizard, of ja kan dat automatisch laten doen door NetHack. Het @-symbool ben jij als speler en je beweegt door het veld met h (links), j (omhoog), k (omlaag) en l (rechts). Maar je kunt ook het numerieke deel van het toetsenbord gebruiken. Met ? en b krijg je een lijst met alle toetsopdrachten als 'kick' (k) 'eat' (e) en 'open' (o). Hier vind je een uitgebreide handleiding - het kost wat tijd om de ins en outs van het spel onder de knie te krijgen - die je absoluut moet RTFM'en.

Het doel van de game is om de Amulet of Yendor te vinden en uiteraard in leven te blijven (en de beste uitrusting te vinden). Je neemt een kat mee op je queeste en het veld ontvouwt zich op het moment dat je erdoor loopt. Dat dier is handig omdat die ziet of een item vervloekt is. Zulke objecten wil je liever vermijden, omdat je er in het beste geval mee opgescheept zit en ze je in het slechtste geval doden. We laten jullie achter met deze eerste instructie van YouTuber Brickroad.