Het was kerstfeest van het werk — begonnen om 13u, dan allemaal spelletjes te spelen, en dan bar open en hapjes vanaf enige tijd later. Ik kan mij de exacte tijdstippen niet zo enorm goed meer herinneren, maar er waren onder meer uitstekende Thai-achtige mossels, en dat ik me de bedenking maakte dat de volgorde van drank en hapjes mogelijk ook anders had gekund wegens wel rédelijk veel cava voorhanden.
En dan was er uitstekend eten, en dan was er muziek en babbelen, en a splendid time was had by all. 23u40 of zo weer thuis, een volslagen redelijk uur.
Ik ben ook dingen te weten gekomen die ik eigenlijk liever niet was te weten gekomen, maar hey, zo gebeurt dat nu eenmaal soms. Starring role ook voor het polyester schapenvelleken dat ik op mijn knieën heb gelegd om niet op te branden vóór de vuurkorf.
dat afspelen terwijl de gegevens uit de .scr op de geëigende manier op het scherm getoond wordt (per lijn van elke 8×8, in drie stukken, en dan de kleur erbovenop) — met de rand die bij het laden getoond werd
Oh, en wat prutsen met WebGL om een beeldscherm na te doen.
Er zit een ingenieus algoritme achter de generatie van de wereld in Elite — moest ook wel, om meer dan tweeduizend planeten met naam, locatie, omschrijving, producten en prijzen te genereren op computers die bijna géén geheugen hadden.
Het is een compleet deterministisch systeem, dat met een vast set startgetallen altijd hetzelfde genereert. Namen, bijvoorbeeld: eerst op basis van de startcode kijken of het een lange of een korte naam wordt, dan sets van twee letters kiezen uit een lijst met letterparen, en dan de startcode een beetje aanpassen voor de volgende naam. En min of meer hetzelfde voor alle andere gegevens.
Ik dacht: ik maak dat eens in javascript, om het hele universum van Elite te kunnen verkennen. De relevante code van Elite is beschikbaar op ’t internet, dus zo gezegd, zo gedaan.
Nee, niet onze verbouwingen natuurlijk, daar blijven de laatste loodjes al jaren dezelfde lmaatste loodjes. Zelfs nu we al de binnendeuren gekocht hebben, geraken ze nog niet geïnstalleer: voor één van de deuren moet er nog een deuropening rechtgetrokken worden, en de aannemer zegt nu al een tijd dat hij zeer binnenkort langskomt.
’t Zijn de laatste loodjes in het huis waar Zelie en Anna gaan wonen: de vloeren liggen er , de electriciteit en het water is gedaan, de plafonds, de muren, de trap in het achterhuis, de badkamers, allerlei. Alleen de buitenisolatie van het achterhuis moet nog gebeuren (maar daar moet er op beter weer gewacht worden, blijkbaar), en er moet ook nog geschilderd worden.
Ik heb vandaar primer gezet in het bureau beneden, maar dan was de emmer primer op. ’t Was ook alleen maar twee en een halve muur en een plafond, want de andere anderhalve muur moet het pleisterwerk nog uitdrogen:
En voor een aantal andere kamers moet er blijkbaar primer in kleur gezet worden omdat de muren ook in kleur komen en dat spaart werk uit. Hier, bijvoorbeeld, op het gelijkvloers van het achterhuis:
En dan kunnen, hopelijk, de dochters nog deze maand verhuizen. Het was even de hoop dat ze vóór september gingen kunnen verhuizen, het zal drie-vier maand worden. (Hoop ik.)
Ik kijk ernaar uit om ergens in de loop van december een inhaalbeweging opkuis van ons huis te doen. Te beginnen met de keuken, waar nu een Mewaf-dossierkast en een frigo in de weg staat, en waar we hopelijk een schrijfbord weg kunnen krijgen.
En dan eens iets doen aan de boeken. En aan ons achterhuis.
Scratching that itch. Ik heb een tijd geleden mijn overblijvende boeken geklasseerd en dat was van het meest therapeutische dat ik in lange tijd gedan had.
Spelers beginnen met 200 punten en de drie minst gebruikte letters al ingevuld, in dit geval V, K en F.
Op een vakje klikken, toont waar die letter nog gebruikt wordt in het kruiswoordraadsel:
Hier zie ik dat die letter in het geel niet zo veel (maar ook niet zo weinig) gebruikt wordt, en dat ze twee keer als een paar voorkomt, één keer op het einde van een woord en één keer in het midden ergerns. O, E, S zou kunnen, in combinatie met die K. Ik ga nog niets invullen, want een letter gokken kost 2 punten.
Eens kijken naar onderaan, waar er F_K_ staat. Ik denk direct aan FAKE, en als ik op die laatste letter klik, staan er enorm veel vakjes aangeduid:
A en E dus maar, om te zien. Dat geeft mij bovenaan _A_A:
PAPA en MAMA lijken voor de hand liggend, maar ze zijn maar 5 vakjes met die letters, en ik denk gelijk dat M en P meer dan dat zouden voorkomen. GAGA? Dat geeft mij onder meer G_A_E, waar ik GRAPE achter vermoed. Of GRADE, of GRATE.
Ik kies GRADE, en dat geeft mij dit:
Waar ik D_D_ zie staan, en dat zou wel eens DODO kunnen zijn:
Nog geen echt onmogelijke woorden, denk ik, dus met wat geluk zit ik op het juist spoor. Onderaan rechts staat ODD_, dat zeer misschien ODDY is, maar wellicht ODDS.
…en dan is SKE_ rechtsbovenaan wellicht SKEW. En dan wordt daaronder eigenlijk ook meteen iets duidelijk:
O__O en KA__D_D zijn ongetwijfeld OTTO en KATYDID:
…en dan is _AI_S zeker MAIMS:
…en dan denk ik dat die _EMIT daarboven niets anders dan REMIT kan zijn — maar ik heb de R al ergens gebruikt! Aha — GRADE moet gewoon GLADE zijn, en dan kan ik de R gebruiken:
W_ORLS bovenaan rechts is WHORLS, _RASS_O__ER is duidelijk GRASSHOPPER zelfs zonder die H in te vullen (GLADE was fout en zal dus wel CLADE zijn) en dan hebben we dit:
Ik zie onderaan HO_EYLO__ST staan en ik denk HONEYLOCUST, maar dan is het niet CLADE maar BLADE en BABA in de plaats van PAPA of MAMA!
En hey presto!
Er zit geen database of server-side scripting achter, maar het gebruikt wel enkele tienduizenden bestaande kruistwoordraadsels. En caveat: het werkt maar matig op een klein scherm, en bijzonder matig op een telefoon. Het onthoudt uw scores, maar alleen in uw browser.
Jaja, ik zou er met minimale moeite een écht spel van kunnen maken met leaderboard en watnog, maar ’t is vakantie hé.
Ik had het pas tegen de middag door: vandaag was mijn laatste werkdag dit jaar!
De reden: ik had te weinig vakantie genomen door het jaar, en ik had dat maar door in september, en ik zat nog met dagen die ik van vorig jaar had doorgeschoven, en dan had ik een heel plan van “ik ga elke week een beetje vrijaf nemen”, maar dan waren er telkens dingen die ertussen kwamen en verschoof ik dan die dag naa rergens laat in december en bon goed, lang verhaal kort, ik ben dus de rest van de maand thuis.
Ik heb een paar fantastisch wijze boeken gekocht, van het genre dat ik enorm graag heb — dingen om in te balderen en te kijken en van weg te dromen, van retrofuturisme en van Rare Mensen en Rare Boeken en beesten en planten.
Het enige is: ik heb al zó enorm vele andere dingen die ik doe en wil doen, dat ik gewoon geen tijd mee vind om gewoon niets te doen en boeken te doorbladeren. Zou ik een soort kalender moeten bijhouden met tijdslots van “doe nu dit nutteloos ding” en “do nu dit ander nutteloos ding”?
Contra-intuïtief, mezelf verplichten allemaal andere nutteloze dingen te doen in plaats van zomaar nutteloze dingen.
Maar boeken doorbladeren zou er eigenlijk toch wel in moeten zitten, in mijn tijdsbesteding.
Ik ben al lang een fan van dithering, van in de tijd dat ik het zelf moest doen om iets min of meer teerbaar te maken op een ZX Spectrum, en dan later als het prutswerk en manuele anti-aliasing was op mijn Atari ST, en dan helemaal als ik een Mac kon emuleren op diezelfde Atari.
…maar ik houd het niet op zwartwit. Omzetten naar kleuren zoals ze zouden zijn op pakweg een Commodore 64, of een Gameboy, of een Game Boy Color, of een Apple II hi-res of een resem andere (dit allemaal met gradient-based dither):
Of naar duotone en tritone en quadtone gaan, en helemaal wilde dingen doen:
Oh, en ik heb er ook een levels-editor in gestoken, wat wil zeggen dat er nóg meer creativiteit ge gedaan worden:
Uw innerlijke Warhol is nooit ver weg met die multitonen:
…en ik heb er, omdat ik het niet kon laten, ook een speciale ZX Spectrum-modus ingestoken. Twee kleuren per blok van 8 pixels, eventueel bright (maar dan wel voor zowel voor- als achtergrond). Dat geeft meestal de lelijkste colour clash die ge u kunt inbeelden, maar voor zeer specifieke beelden werkt het wél, en dat maakt me helemaal blij:
Veel mensen vonden het maar niets, ik vond het echt wel wijs.
En ja, ook dit is alweer veel te veel jaar geleden. Ik ben een oude mens en iedereen mag het weten. Maak hier ook zelf uw Adobe CS3-iconen! Helemaal correct is het niet — sommige iconen zoals InDesign en AfterEffect hadden in plaats van lowercase een small cap tweede letter, mijn ding maakt automatisch de letters zwart als ze te weinig contrast zouden hebben, het font is Ubuntu in plaats van het interne Adobe-font dat Slimbach toen aan het maken was — maar het is goed genoeg om mijn itch te scratchen, en meer dan dat moet het niet zijn.
Duizend jaar Bijna twintig jaar geleden maakte grapefrukt een –vond ik toen ook al– veel te moeilijk spelletje, Fungus. Doel was om zoveel mogelijk dingen te laten groeien, door geconnecteerde bollen te verplaatsen en al dan niet met elkaar te verbinden. De regels leken een beetje op die van Life: te weinig of te veel buren = dood, een bepaald aantal buren = blijven leven, een ander aantal buren = groeien en kleintjes maken.
Ge kunt zelf eten plaatsen door ergens te klikken, en als ge dat niet doet, wordt er automatisch om de zoveel tijd eten geplaatst. Er zijn drie soorten beesten die alledrie een eigen gedrag hebben, maar die ook in colonies (tot op zekere hoogte) samen kunnen leven.
Er zijn wat regels om ervoor te zorgen dat niet één soort alle overheerst, of dat er teveel op het scherm komt. Ik zou er wat meer tijd in kunnen steken om het ofwel meer meditatief te maken, ofwel een andere atmosfeer — ik dacht aan iets in de ruimte, met een soort langzaam bewegende nebulositeiten — maar dan was de dag om en moesten er nog duizend andere dingen gedaan worden!
Ik ben een fundamenteel luie mens. Maar gelijk, écht een luie mens. Ik speel wel eens graag een spelletje, maar ik vind ook: spelletjes die zichzelf spelen zijn ook wel wijs.
Dat zou, zeker met AI, maar ook zonder, natuurlijk op een half uur maximum klaar zijn, en dan komt mijn andere kant naar boven. Naast fundamenteel lui kan ik ook tot in het absurde perfectionistisch zijn.
En dus dacht ik: ik maak eens een Snake-spelletje na zoals dat op een oude oude Nokia eruitzag. Tot op de pixel.
Cue opzoekwerk: hoeveel pixels op zo’n scherm? (84 x 48 pixels) Hoe zien die pixels eruit? Vierkant? (Nee, een verhouding van 7×9.) Hoe zag die slang er eigenlijk uit? (Gewoon een lijn in de eerste versie, dat vond ik niet goed genoeg — maar een gestreepte slang in latere versies, en dat vond ik dan weer te druk.) Hoe werd die slang getekend? (Met bouwstenen van 4×4 blokken, als ik screenshots aandachtig bekijk.)
Screenshots en afbeeldingen in Figma gedumpt, en klikety klik dingen tekenen:
Dat bracht mij uiteindelijk op de 19 sprites die ik nodig heb om alle slangen te tekenen die ik wil tekenen — eigenlijk zijn het er meer, maar ik wou dus die gestreepte slang niet, en bij nader inzien wou ik ook niet de bulge die aangeeft waar een slang eten heeft opgegeten. (Met die dingen erbij zou het 23 sprites geweest zijn.)
Met de bovenstaande elementen is elke slang te maken, in welke richting ze zich ook aan het bewegen is:
En dat dan op een veld zetten dat kleuren van een LCD-scherm heeft, en dat wat geblurd is, en het verschil tussen de achtergrond en niet-actieve LCD, een score erbij en hopla:
Ah, en die twee icoontje?
Het concept van deze snake is dat de snake zichzelf speelt, en dat de speler het eten kan plaatsen. De slang proberen zichzelf dood te doen is een optie (ik heb het expres niet optimaal gemaakt, het is mogelijk het beest in de val te lokken maar het is niet gemakkelijk).
Het rechtericoontje laat ook dat werk vallen, en dumpt zelf eten op random plaatsen op het speelveld.
En het linkericoontje is nuttig op een telefoon. Daarop klikken verandert het van een standaard-Nokia 3310-resolutie naar een meer moderne resolutie (in de hoogte):
Ik heb er ook een beetje geluid bijgestoken, voor de leutigheid. Er is dan toch wat meer tijd in gekropen dan strikt gezien nodig was, ja.
Het is binnenkort weer Advent of Code, maar met AI is dat allemaal bijna geen challenge meer natuurlijk.
Dus geef ik mezelf challenges. Ik had al een uurwerk gemaakt, ik heb nu ook een simulatie van bosbranden gemaakt. (Voor “gemaakt”, lees natuurlijk “gemaakt in een conversatie en in smaenwerking met de dichtsbijzijnde AI wegens we zijn 2025 en dom werk is voor de machines dedju!”)
De les is, maar dat wisten we natuurlijk al: blus niet té rap bosbranden, want als ge dat doet, staan er op een ik en een gij veel te veel bomen, zodat als er dan een echte brosbrand is, het direkt dramatisch erg is.
En oh ja: het werkt op mijn computer en het werkt op mijn telefoon, en verder heb ik het allemaal niet getest, ’t is niet alsof ik geen andere ideeën te maken heb. Het draait ook allemaal client-side, met een view source kutn ge in principe alles zelf downloaden en verder aanpassen.