top of page
Techniek
Technische artikelen over Unity, multiplayer, servers, self-hosting, open source, builds en ontwikkeltools.
Waarom de nieuwe versie 2026.7.19 heet en niet 0.9.2 🗓️
Wie vandaag bijwerkt, springt van versie 0.9.1 naar 2026.7.19. Het lijkt een typfout en is een bewuste beslissing: we hebben ons versieschema veranderd, van “semantische” versies naar versies op basis van de datum (jaar.maand.teller). Dit is waarom. Het oude schema beantwoordde vragen die niemand stelt. Semantisch versiebeheer (0.9.1, 1.2.3 …) komt uit de wereld van softwarebibliotheken. Daar is het geweldig: het eerste getal belooft “niets gaat kapot”, het tweede “alleen toe
Marcel Dütscher
28 jul2 minuten om te lezen
Opgeruimd: zo gebruiken we de cache van GitHub eindelijk goed 🧹
In de vorige techniekpost hebben we gemeten wat onze bouw-en-controle-pijplijn echt kost, en we ontdekten: geen geld, maar wachttijd en opslagruimte. Dat artikel eindigde met “het opruimwerk is gepland maar nog niet gedaan”. Het ging sneller dan verwacht: sinds vanmiddag staat het op de hoofdtak. Hier zijn de cijfers. Eerst het resultaat. Het cachegebruik van onze repository is gedaald van 5,32 GB in 63 items naar 2,46 GB in 13. De C#-beveiligingsanalyse die bij elke pull req
Marcel Dütscher
27 jul4 minuten om te lezen
Duizend buildruns per maand, en geen enkele kost iets ⚙️
Eerst een correctie. De eerste versie van dit artikel beweerde dat onze GitHub-buildminuten op waren en dat dit ons dwong tot een Pro-account. Dat klopte niet, op een manier die één blik in de documentatie had opgehelderd: voor openbare repositories zijn GitHub-buildminuten gratis. Artifacts en caches ook. Onze repository is sinds eind mei openbaar, dus we hebben nooit een minuut betaald en dat zullen we ook nooit doen. In plaats van de tekst stilletjes te corrigeren, schrijv
Marcel Dütscher
26 jul3 minuten om te lezen
SignPath zei nee: onze Windows-builds blijven voorlopig ongetekend
Een paar dagen geleden vertelden we jullie op de blog dat we een aanvraag hadden ingediend bij het gratis open-sourceprogramma van de SignPath Foundation voor een code-ondertekeningscertificaat voor onze Windows-installers. Nu is het antwoord er, en het is nee. Omdat dit devblog niet alleen draait om het vieren van successen maar ook om eerlijk vertellen hoe zo'n project echt verloopt, hoort dit nieuws er ook bij. Even herinneren: waar ging het om? Ongetekende Windows-program
Marcel Dütscher
15 jul2 minuten om te lezen
Onze GitHub praat nu: de automatische ontwikkelaarspodcast 🎙️
De ontwikkeling van Blocks Beyond The Stars gebeurt volledig in het openbaar op GitHub: elke commit, elke pull request, elke release is te lezen. Maar eerlijk is eerlijk: wie scrolt er 's avonds nou door een lijst met commits? Vanaf nu is er een gemakkelijker alternatief: je kunt het projectnieuws gewoon laten voorlezen. Onze GitHub heeft nu een eigen podcast. Wat is Podlog? Podlog is een dienst die een GitHub-repository in de gaten houdt en er automatisch een audiopodcast va
Marcel Dütscher
13 jul2 minuten om te lezen
Gratis code-ondertekening voor open source: onze aanvraag bij SignPath 🔏
Wie ons spel op Windows installeert, kent het moment misschien: “Windows heeft uw pc beveiligd”. SmartScreen waarschuwt voor een “onbekende uitgever” en je moet eerst op “Meer info → Toch uitvoeren” klikken. Dat is geen virus, het komt gewoon doordat onze installers nog niet ondertekend zijn. Die waarschuwing willen we kwijt, zonder een duur certificaat te hoeven kopen. Het probleem met code-ondertekeningscertificaten. Een Windows-uitgeverscertificaat (OV of EV) kost elk jaar
Marcel Dütscher
12 jul2 minuten om te lezen
Van git-tag naar live server: onze releasepijplijn
Een release van Blocks Beyond The Stars bestaat vandaag uit één commando: een git-tag pushen. Alles daarna doet de machine. In dit artikel laat ik onze CI/CD-pijplijn zien — en waarom de moeite zich zelfs voor een hobbyproject loont. De releaseworkflow. Zodra een tag zoals v0.7.4 is gepusht, bouwt GitHub Actions het complete pakket: Windows-installers (setup, portable, MSI), een Linux-build, een WebGL-build voor de browser en een Docker-image voor de server — zes artefacten u
Marcel Dütscher
7 jul1 minuten om te lezen
Serveronderhoud zonder spelers eruit te gooien
Wat gebeurt er eigenlijk met de spelers als we de server moeten updaten? Het simpele antwoord zou zijn: stekker eruit. Wij bouwden het betere antwoord — en het is een van mijn favoriete functies, ook al merk je er idealiter bijna niets van. De aankondiging. De server kan een onderhoudsbericht naar elke draaiende wereld sturen. In het spel verschijnt dan een banner met aftelling: “Serverherstart over 10 minuten.” Het bericht moet actief worden weggeklikt — maar pas na een paar
Marcel Dütscher
6 jul1 minuten om te lezen
Wachtwoorden, aanvraaglimieten en accounts zonder e-mail
Blocks Beyond The Stars wordt ook door kinderen gespeeld. Dat bepaalt niet alleen het gameontwerp, maar ook de beveiligingstechniek erachter. Drie voorbeelden. Accounts zonder e-mail — met opzet. Een spelersaccount bij ons vraagt geen e-mailadres. Dat is geen ontbrekende functie, maar een besluit: we willen zo min mogelijk persoonsgegevens, zeker van jonge spelers. Wat we niet opslaan, kan niet kwijtraken. (De eerlijke keerzijde: er is daardoor geen “wachtwoord vergeten” via
Marcel Dütscher
6 jul1 minuten om te lezen
Een kleine VPS als gameserverpark
Al onze online werelden — het portaal, de officiële werelden, de door spelers gemaakte werelden — draaien op één gehuurde Linux-server (VPS). Geen datacenter, geen cloudrekening van vijf cijfers. In dit artikel laat ik zien hoe de server is opgezet en wat we onderweg leerden. Eerst beveiligen. Voordat het spel op de server mocht, ging eerst de basisbeveiliging erop: een firewall (ufw) die alleen de nodige poorten opent, fail2ban tegen geautomatiseerde inlogpogingen en SSH all
Marcel Dütscher
5 jul1 minuten om te lezen
Zo werken onze gehoste werelden
Je eigen wereld op internet waar vrienden op elk moment in kunnen stappen — zonder dat iemand een server hoeft op te zetten. Dat is het idee achter onze gehoste werelden, en in dit artikel laat ik je zien wat er echt gebeurt achter de “Spelen”-knop in het portaal. Het hart van alles is de WorldHost: een kleine service op onze server die werelden beheert. Elke wereld draait in een eigen Docker-container — volledig geïsoleerd, met een eigen opslagbestand, een eigen geheugenlimi
Marcel Dütscher
5 jul2 minuten om te lezen
Achter de schermen: hoe we in 30 minuten 28 YouTube-video's maakten 🎬
Hoe een vader, een kind en een AI een berg ruwe gameplay-opnames veranderden in twee complete afspeellijsten — zonder ook maar één uur in een videoprogramma. We hebben eindelijk een YouTube-kanaal voor Blocks Beyond the Stars — 22 Shorts en 6 langere Let's Play- en tutorialvideo's. En eerlijk? Hoe ze gemaakt zijn is een verhaal dat de moeite waard is, want het echte “monteren” duurde ongeveer een half uur. Hier is de hele werkwijze. Stap 1: Justus drukt op opnemen 🎮 Elke goe
Marcel Dütscher
2 jul3 minuten om te lezen
Meer dan 1000 tests voor een hobbyspel – overbodig?
Ons project heeft inmiddels ruim duizend geautomatiseerde tests: zo'n 990 aan de serverkant, ongeveer 120 in de Unity-client. Voor een gezinsproject klinkt dat als overkill. Het is juist het tegenovergestelde – en dit is waarom. Tests zijn onze tweede ontwikkelaar. Bij een solo-project is er niemand die in de code review zegt: “Wacht, dit breekt het craften.” De tests zijn die collega. Elke spelmechaniek – recepten, zuurstof, honger, gedrag van wezens, wereldwachtwoorden – he
Marcel Dütscher
2 jul1 minuten om te lezen
Een voxelspel in de browser
Blocks Beyond The Stars draait niet alleen als Windows- en Linux-programma, maar ook direct in de browser – geen installatie, één klik in het portaal is genoeg. De weg ernaartoe was leerzamer dan verwacht. Unity WebGL is een wereld op zich. Unity kan al lang naar het web exporteren, maar de duivel zit in de details. Onze grootste struikelblok: in de browser zijn geen echte achtergrondthreads zoals in de native build. Ons terreinsysteem bouwt de landschapsmeshes normaal asynch
Marcel Dütscher
30 jun1 minuten om te lezen
De dag dat onze shaders uit de build verdwenen
In de Unity-editor zag alles er perfect uit. In de afgewerkte build: roze oppervlakken en ontbrekende effecten. Welkom bij een van de gemeenste Unity-valkuilen – en een paar verwanten. Shader stripping. Bij het bouwen gooit Unity alles weg wat blijkbaar niet nodig is – ook shaders. Het probleem: als je shaders tijdens runtime laadt via Shader.Find() (zoals wij doen met onze ruim 20 eigen shaders voor water, atmosfeer, hologrammen en meer), ziet Unity in geen enkele scene een
Marcel Dütscher
27 jun1 minuten om te lezen
Licht in een voxelwereld: echte lampen of flood fill?
Een speler zet een gloeilamp in zijn basis. Wat gebeurt er technisch? Deze onschuldige vraag leidde tot een fundamentele keuze – en het antwoord is een mooi voorbeeld van hoe de “modernere” oplossing niet altijd de betere is. Optie A: echte Unity-lichten. Elk gloeiend blok wordt een puntlichtbron, de engine rekent alles uit. Ziet er geweldig uit – maar schaalt niet. In een voxelwereld kunnen honderden gloeiende blokken in beeld zijn; realtime puntlichten in zulke aantallen la
Marcel Dütscher
27 jun1 minuten om te lezen
100% door AI gemaakt: onze workflow met Unity 6, .NET 8 en Python
Een van de meest gestelde vragen is: Hoe bouw je precies een complex multiplayer-voxelspel helemaal met AI? Het korte antwoord: met heel strikte richtlijnen. De AI is fantastisch in code schrijven, maar verliest snel het architectuuroverzicht uit het oog. Daarom heb ik vanaf dag één een strikte client/server-architectuur afgedwongen. Onze techstack in een oogopslag: Client: Unity 6 voor rendering, invoer en voxel-meshing. Server: .NET 8 Dedicated Server voor chunkgeneratie en
Marcel Dütscher
26 jun1 minuten om te lezen
De graphics-opknapbeurt: meer look zonder van engine te wisselen
Op een gegeven moment lag de eerlijke diagnose op tafel: het spel speelde goed maar zag eruit als een prototype. In plaats van te kijken naar een andere renderpipeline of zelfs een andere engine, stelden we onszelf één vraag: hoeveel look zit er nog verborgen in Unity's URP als je het echt tot het uiterste drijft? Het antwoord: verbazingwekkend veel. Anti-aliasing (SMAA). Blokwerelden bestaan uit randen – en flikkerende randen verpesten elke screenshot. SMAA maakt ze glad zon
Marcel Dütscher
26 jun1 minuten om te lezen
Van MIT naar AGPL: waarom we de licentie veranderden
Blocks Beyond The Stars is open source – dat is het vanaf het begin. Maar onder welke licentie, dat hebben we onderweg fundamenteel veranderd: van de permissieve MIT-licentie naar AGPL-3.0. Hier lees je waarom. Wat MIT zou hebben betekend: Met MIT mag iedereen onze code nemen, aanpassen en als gesloten product doorverkopen – zonder iets terug te geven. Voor bibliotheken is dat vaak precies goed. Voor een compleet spel met servers voelde het verkeerd: iemand had ons werk kunne
Marcel Dütscher
25 jun1 minuten om te lezen
AI-texturen en AI-geluiden in de asset-pipeline
Blocks Beyond The Stars heeft geen grafisch ontwerper en geen geluidsontwerper. Toch krijgt elk nieuw blok zijn eigen textuur en elke nieuwe functie zijn eigen geluid. Ons gereedschap daarvoor: generatieve AI – met een duidelijke werkwijze eromheen. Texturen. Nieuwe bloktegels maken we met OpenAI-beeldmodellen. De prompt beschrijft materiaal, stijl en de voxel-esthetiek van het spel; het resultaat wordt teruggebracht tot tegelformaat en gesorteerd in ons bloktextuur-atlas – é
Marcel Dütscher
23 jun1 minuten om te lezen
bottom of page