Een Unity-game testen zonder Unity-licentie: dotnet-stubs in CI
Unity Build Server is duur. Voor een in eigen beheer gebouwde indie-runner als ORBYX werkt het ook anders: dotnet-stubs in plaats van Unity, een vier-staps quality-gate in Bitbucket Pipelines, en een groen vinkje binnen 2 minuten.
Een Unity-game testen zonder Unity-licentie: dotnet-stubs in CI
Het indie-CI-probleem
Een Unity-licentie voor CI vereist Unity Build Server of een gelijkwaardige seat — voor kleine indiestudio's al snel een paar honderd euro per maand. Voor een gratis-te-spelen mobile arcade-runner als ORBYX is dat een onevenredig grote vaste kost. Tegelijk wil iedere developer dezelfde basis-garantie: een PR die rood loopt voordat hij gemerged wordt.
De aanpak: dotnet test tegen Unity-stubs
De keuze die in ORBYX is gemaakt, is om de Unity-laag te abstraheren waar dat zinvol is en alle pure logica tegen dotnet test te draaien — zonder Unity in de pipeline. Concreet gebeurt dat door drie scherpe lagen:
- Unity-stub-interfaces — voor klassen die zwaar leunen op Unity (MainMenu, GameOverScreen, GameHUD) zijn stubs gedefinieerd die het Unity-deel vervangen door een testbare interface.
- Pure-logic-modules — game-balans, scoring, mode-detectie, achievements en theme-difficulty leven in pure C#-modules zonder Unity-types in hun publieke API.
- dotnet test in pipeline — de pipeline draait
dotnet testop een PHP-Apache + ext-redis image (geen Unity) en krijgt binnen twee minuten een rood/groen-resultaat.
De vier-staps quality-gate
Naast de unit-tests draait elke ORBYX-build vier statische gates voordat een PR groen kan zijn:
quality-gate.sh— brace-balans, namespace-integriteit, dubbele klassen, oude Input API-aanroepen, achtergebleven TODO-markers.- Project-validatie — vereiste bestanden zijn er, scene-GUIDs kloppen, geen orphaned
.meta-files. - Asset-validatie — vereiste textures aanwezig, meta-completeness, geen oversized files.
- Pure-logic unit-tests —
dotnet testtegen de Unity-stubs.
Wat er buiten beschouwing blijft
Deze aanpak vervangt geen integration-tests in een echte Unity-omgeving. Wat moeilijk te testen blijft zonder licentie: scene-loading, camera-paden, input-systemen, fysieke collisions met Rigidbody. Dat soort tests draait nog steeds lokaal in de Unity-editor, niet in CI. Dat is een bewuste verdeling: de pipeline geeft wat hij goedkoop kan geven (snelle structurele en logische signalen), de editor geeft wat hij wel moet geven (integratie en visuele bevestiging).
Wanneer dit te kopiëren is
Het patroon werkt voor Unity-projecten waar het grootste deel van de spel-logica buiten de Unity-types kan leven. Voor ORBYX betekent dat: rubber-banding voor de VS Computer-modus, drafting AI, theme-difficulty curves, daily-challenge seed-rotatie, achievement-state — allemaal pure C#. Voor een 3D action-RPG met diepe MonoBehaviour-koppelingen is hetzelfde patroon minder rendabel. Voor een indie arcade-runner van een indiestudio is het de juiste verhouding: Unity Build Server bespaard, twee minuten CI-feedback, en een test-suite die alleen groeit naarmate de logica groeit.
Dit artikel delen
Benieuwd wat er mogelijk is?
Eén gesprek is vaak genoeg om te weten of het past. Binnen 24 uur een reactie, en zonder tussenpersonen.