top of page
Technology
Technical posts about Unity, multiplayer, servers, self-hosting, open source, builds, and development tools.
Why the new version is called 2026.7.19 — and not 0.9.2 🗓️
Anyone updating today jumps from version 0.9.1 to 2026.7.19. It looks like a typo and is a deliberate decision: we changed our versioning scheme — from "semantic" versions to date-based versions (year.month.counter). Here's why. The old scheme answered questions nobody asks. Semantic versioning (0.9.1, 1.2.3 …) comes from the world of software libraries. There it's great: the first number promises "nothing breaks", the second "only additions", the third "only repairs". A game
Marcel Dütscher
Jul 282 min read
Tidied Up: How We Finally Use GitHub's Cache Properly 🧹
In the last technology post we measured what our build-and-check pipeline really costs — and found: not money, but waiting time and storage. That article ended with "the clean-up work is planned but not done yet". It turned out to go faster than expected: as of midday today it's on the main branch. Here are the numbers. The result first. Our repository's cache usage has dropped from 5.32 GB across 63 entries to 2.46 GB across 13. The C# security analysis that used to run on e
Marcel Dütscher
Jul 274 min read
A Thousand Build Runs a Month — and Not One of Them Costs Anything ⚙️
A correction first. The first version of this article claimed our GitHub build minutes had run out and that this forced an upgrade to a Pro account. That was wrong, in a way a single glance at the documentation would have cleared up: for public repositories, GitHub build minutes are free. Artifacts and caches too. Our repository has been public since the end of May — so we have never paid for a minute, and we never will. Rather than quietly fixing the text, we'd rather rewrit
Marcel Dütscher
Jul 263 min read
SignPath Said No: Our Windows Builds Stay Unsigned for Now
A few days ago we told you here on the blog that we had applied to the SignPath Foundation's free open-source program for a code-signing certificate for our Windows installers. Now the answer has arrived — and it's a no. Since this devblog isn't just about celebrating wins but about honestly telling how a project like this really goes, this news belongs here too. A quick reminder: what was this about? Unsigned Windows programs trigger the SmartScreen warning "Windows protecte
Marcel Dütscher
Jul 152 min read
Our GitHub Speaks Now: The Automatic Developer Podcast 🎙️
The development of Blocks Beyond The Stars happens completely in the open on GitHub — every commit, every pull request, every release is there to read. But let's be honest: who scrolls through a commit list in the evening? From now on there's a more comfortable option: you can simply have the project news read out to you. Our GitHub now has its own podcast. What is Podlog? Podlog is a service that watches a GitHub repository and automatically turns it into an audio podcast. Y
Marcel Dütscher
Jul 132 min read
Free Code Signing for Open Source: Our SignPath Application 🔏
Anyone who installs our game on Windows may know the moment: "Windows protected your PC" — SmartScreen warns about an "unknown publisher," and you have to click "More info → Run anyway" first. That's not a virus; it's simply because our installers aren't signed yet. We want that warning gone — without having to buy an expensive certificate. The problem with code-signing certificates. A Windows publisher certificate (OV or EV) costs money every year, often tied to company veri
Marcel Dütscher
Jul 122 min read
From Git Tag to Live Server: Our Release Pipeline
A release of Blocks Beyond The Stars today consists of a single command: pushing a git tag. Everything after that is done by the machine. In this article I'll show our CI/CD pipeline — and why the effort pays off even for a hobby project. The release workflow. As soon as a tag like v0.7.4 is pushed, GitHub Actions builds the complete package: Windows installers (setup, portable, MSI), a Linux build, a WebGL build for the browser, and a Docker image for the server — six artifa
Marcel Dütscher
Jul 72 min read
Server Maintenance Without Kicking Players Out
What actually happens to the players when we need to update the server? The simple answer would be: pull the plug. We built the better answer — and it's one of my favorite features, even though ideally you barely notice it. The announcement. The server can send a maintenance message to every running world. In the game, a banner with a countdown then appears: "Server restart in 10 minutes." The message has to be actively dismissed — but only after a few seconds, so nobody acci
Marcel Dütscher
Jul 61 min read
Passwords, Rate Limits, and Accounts Without Email
Blocks Beyond The Stars is also played by children. That shapes not only the game design, but also the security engineering behind it. Three examples. Accounts without email — on purpose. A player account with us doesn't require an email address. That's not a missing feature, it's a decision: we want as little personal data as possible, especially from young players. What we don't store can't get lost. (The honest flip side: there is no "forgot password" via email as a result
Marcel Dütscher
Jul 61 min read
A Small VPS as a Game Server Fleet
All our online worlds — the portal, the official worlds, the worlds created by players — run on a single rented Linux server (VPS). No data center, no five-figure cloud bill. In this article I'll show how the server is set up and what we learned along the way. Hardening first. Before the game was allowed onto the server, the basic security came first: a firewall (ufw) that only opens the necessary ports, fail2ban against automated login attempts, and SSH with keys only. Caddy
Marcel Dütscher
Jul 52 min read
How Our Hosted Worlds Work
Your own world on the internet that friends can join at any time — without anyone having to set up a server. That's the idea behind our Hosted Worlds, and in this article I'll show you what really happens behind the "Play" button in the portal. The heart of it all is the WorldHost: a small service on our server that manages worlds. Each world runs in its own Docker container — fully isolated, with its own save file, its own memory limit and its own CPU cap. When nobody is pla
Marcel Dütscher
Jul 52 min read
Behind the Scenes: How We Made 28 YouTube Videos in 30 Minutes 🎬
How a dad, a kid, and an AI turned a pile of raw gameplay footage into two full playlists — without a single hour in a video editor. We finally have a YouTube presence for Blocks Beyond the Stars — 22 Shorts and 6 longer Let's Play / tutorial videos. And honestly? The way they got made is a story worth telling, because the actual "editing" took about half an hour. Here's the full pipeline. Step 1: Justus hits record 🎮 Every good gaming video starts with someone actually play
Marcel Dütscher
Jul 23 min read
Over 1000 Tests for a Hobby Game — a Waste?
Our project now has well over a thousand automated tests: around 990 on the server side, about 120 in the Unity client. For a family project, that sounds like overkill. It's the opposite — and here's why. Tests are our second developer. As a solo project, there's nobody who says in code review: "Wait, that breaks the crafting." The tests are that colleague. Every game mechanic — recipes, oxygen, hunger, creature behavior, world passwords — has tests that run with every change
Marcel Dütscher
Jul 21 min read
A Voxel Game in the Browser
Blocks Beyond The Stars doesn't just run as a Windows and Linux program, but also directly in the browser — no installation, one click in the portal is enough. The road there was more instructive than expected. Unity WebGL is a world of its own. Unity has been able to export to the web for a long time, but the devil is in the details. Our biggest stumbling block: in the browser there are no real background threads like in the native build. Our terrain system normally builds t
Marcel Dütscher
Jun 301 min read
The Day Our Shaders Went Missing From the Build
In the Unity editor, everything looked perfect. In the finished build: pink surfaces and missing effects. Welcome to one of the nastiest Unity traps — and a few of its relatives. Shader stripping. When building, Unity throws out everything that apparently isn't needed — including shaders. The problem: if you load shaders at runtime via Shader.Find() (like we do with our more than 20 custom shaders for water, atmosphere, holograms, and more), Unity sees no reference to them in
Marcel Dütscher
Jun 271 min read
Light in a Voxel World: Real Lights or Flood Fill?
A player places a glow lamp in their base. What happens technically? This innocent question triggered a fundamental decision for us — and the answer is a nice example of how the "more modern" solution isn't always the better one. Option A: real Unity lights. Every glowing block becomes a point light source, the engine computes everything. Looks great — but doesn't scale. A voxel world can have hundreds of glowing blocks in view; real-time point lights in that quantity make an
Marcel Dütscher
Jun 271 min read
100% AI-generated: Our workflow with Unity 6, .NET 8 and Python
One of the most frequent questions we receive is: How exactly do you build a complex multiplayer voxel game entirely with AI? The short answer: With very strict guidelines. The AI is fantastic at writing code, but it quickly loses sight of the architectural perspective. That's why I enforced a strict client/server architecture from day one. Our tech stack at a glance: Client: Unity 6 for rendering, input, and voxel meshing. Server: .NET 8 Dedicated Server for chunk generation
Marcel Dütscher
Jun 261 min read
The Graphics Overhaul: More Look Without Switching Engines
At some point the honest diagnosis was on the table: the game played well but looked like a prototype. Instead of eyeing a different render pipeline or even a different engine, we asked ourselves one question: how much look is still hiding in Unity's URP if you really push it to its limits? The answer: astonishingly much. Anti-aliasing (SMAA). Block worlds are made of edges — and flickering edges ruin every screenshot. SMAA smooths them without making the image mushy. Ambient
Marcel Dütscher
Jun 261 min read
From MIT to AGPL: Why We Changed the License
Blocks Beyond The Stars is open source — it has been from the start. But under which license, that's something we fundamentally changed along the way: from the permissive MIT license to AGPL-3.0. Here's the why. What MIT would have meant: With MIT, anyone may take our code, modify it, and resell it as a closed product — without giving anything back. For libraries that's often exactly right. For a complete game with servers, it felt wrong: someone could have taken our work, bu
Marcel Dütscher
Jun 251 min read
AI Textures and AI Sounds in the Asset Pipeline
Blocks Beyond The Stars has no graphic artist and no sound designer. Still, every new block gets its own texture and every new feature its sound. Our tool for that: generative AI — with a clear workflow around it. Textures. New block tiles are created with OpenAI image models. The prompt describes material, style, and the game's voxel aesthetic; the result is brought down to tile size and sorted into our block atlas — one big texture in which every block type has its fixed ti
Marcel Dütscher
Jun 231 min read
bottom of page