Multiplayer Inventory & Equipment System
Read about the system
Dit systeem maakt onderdeel uit van een multiplayer survival game die momenteel nog in ontwikkeling is. De focus binnen dit systeem ligt op multiplayer synchronization, flexibiliteit en server-authoritative gameplay.
In de video zijn twee clients zichtbaar die verbonden zijn met dezelfde server. Hierin is te zien hoe spelers items kunnen oppakken, verplaatsen en beheren via een volledig replicated inventory systeem. Alle inventory interacties worden server-side gevalideerd en opgeslagen, terwijl client-side prediction wordt gebruikt om interacties soepel en responsief te laten aanvoelen.
Het inventory systeem is gebaseerd op een grid structuur waarbij ieder item fysieke ruimte inneemt binnen de inventory. Items kunnen worden gedraaid en verplaatst om efficiënt gebruik te maken van de beschikbare ruimte. Daarnaast kan ieder item functioneren als een container op zichzelf, waardoor bijvoorbeeld tassen of opslagobjecten weer hun eigen inventory kunnen bevatten.
Ook interacties met items in de wereld zijn volledig geïntegreerd binnen hetzelfde systeem. Hierdoor kunnen spelers direct interacteren met containers of items terwijl deze nog op de grond liggen.
Mocap Project
Read about the project
Dit project is ontstaan vanuit de behoefte om snel en flexibel character animaties te kunnen maken voor mijn eigen games.
In het verleden heb ik geëxperimenteerd met motion capture via een Kinect 2 camera en bestaande softwareoplossingen. Omdat veel van deze software inmiddels verouderd of niet langer ondersteund wordt, heb ik besloten een volledig eigen oplossing te ontwikkelen.
De software is geschreven in Python en maakt gebruik van de Kinect library voor skeletal tracking en OpenGL voor real-time visualisatie van de motion capture data. Daarnaast heb ik een Blender plug-in ontwikkeld waarmee de motion capture data live gekoppeld kan worden aan Blender via een custom LiveLink systeem.
Binnen Blender kan de data direct gebruikt worden op een target armature. Hierdoor kunnen animaties realtime als referentie gebruikt worden of direct toegepast worden op een character rig.
In de video is te zien hoe de motion capture data live wordt doorgestuurd naar Blender terwijl bewegingen realtime worden gevolgd en weergegeven.
Build System
Read about the system
Dit systeem maakt onderdeel uit van een multiplayer survival game die momenteel nog in ontwikkeling is. De focus binnen dit systeem ligt op multiplayer synchronization, modulariteit en interactieve constructie.
Alle building interacties zijn volledig network replicated en worden server-side opgeslagen en gevalideerd.
Het systeem maakt gebruik van zogenaamde buildkits waarmee spelers dynamisch kunnen selecteren welk type constructie zij willen plaatsen. Via een scroll systeem kan gekozen worden tussen verschillende constructies voordat de buildkit geplaatst wordt.
Voordat een constructie geplaatst kan worden controleert het systeem onder andere:
- correcte ondergrond
- collision obstructies
- placement regels
- validatie via de server
Na plaatsing bevat iedere buildkit meerdere constructiestappen waarbij verschillende materialen benodigd zijn. Via drag & drop kunnen spelers zelf bepalen welke materialen gebruikt worden voor iedere stap van het bouwproces.
Wanneer aan alle materiaalkosten voldaan is en de speler het juiste gereedschap gebruikt, kan gestart worden met bouwen. Iedere bouwactie gebruikt een timer-gebaseerd systeem waardoor constructies daadwerkelijk opgebouwd worden in meerdere fases in plaats van direct te verschijnen.
Daarnaast beschikt iedere constructie over een health systeem waardoor gebouwen beschadigd en vernietigd kunnen worden.
In de video is het volledige bouwproces zichtbaar, van plaatsing tot constructie en destructie.
Eye Test Project
Read about the project
Het Eye Test Project is ontwikkeld voor een schoolonderzoek rondom een verkeersongeval. Binnen dit onderzoek werd gekeken naar mogelijke factoren die invloed konden hebben op het reactievermogen van bestuurders, waaronder fel zonlicht.
Voor dit onderzoek heb ik een interactieve test ontwikkeld in Unreal Engine 5 gebaseerd op de Ishihara kleurentest. De software is volledig zelfstandig ontwikkeld, inclusief:
- timer systemen
- statistische verwerking
- kleur- en saturatieaanpassingen
- gebruikersinput verwerking
De test werd gebruikt onder verschillende lichtomstandigheden om te onderzoeken of fel licht invloed had op reactiesnelheid en waarneming. Uit de resultaten bleek dat sterke belichting daadwerkelijk invloed had op de prestaties van deelnemers.
In de video is zichtbaar hoe de test verloopt waarbij gebruikers via het toetsenbord antwoorden invoeren op basis van de weergegeven kleurenpatronen.
Procedural Animations & Bullet Simulation
Read about the system
Dit systeem maakt onderdeel uit van een multiplayer survival game die momenteel nog in ontwikkeling is. De focus van dit project ligt op procedural weapon handling en realistische ballistic simulation.
Om het gebruik van grote hoeveelheden vaste animaties te beperken heb ik een systeem ontwikkeld waarbij weapon behavior grotendeels procedureel wordt gegenereerd. Hiervoor is een modulaire weapon base class ontwikkeld met uitgebreide instellingen per wapen.
Hiermee kunnen eigenschappen zoals recoil, ADS gedrag, sway en handling volledig aangepast worden zodat ieder wapen uniek aanvoelt en reageert.
Daarnaast heb ik een volledig physics-based ballistic systeem ontwikkeld gebaseerd op natuurkundige principes rondom kogelbanen. Hierbij wordt rekening gehouden met onder andere:
- massa van het projectiel
- diameter
- vormtype
- muzzle velocity
- luchtweerstand
- terminal velocity
- zwaartekracht
- windinvloeden
- vloeistofweerstand zoals water
Ook ricochet en penetratie worden fysiek gesimuleerd op basis van:
- impactsnelheid
- impacthoek
- materiaaldikte
- materiaaltype
Hierdoor gedragen projectielen zich verschillend afhankelijk van het oppervlak waarmee zij in contact komen. Zo zal een projectiel sneller penetreren door hout, terwijl staal een grotere kans geeft op ricochet.
In de video wordt zichtbaar hoe projectielen fysiek worden gesimuleerd, inclusief ricochet en penetratiegedrag.
Group AI Movement & Combat
Read about the system
Dit systeem maakt onderdeel uit van een multiplayer survival game die momenteel nog in ontwikkeling is. De focus binnen dit AI systeem ligt op groepsgedrag, formatiebewegingen en dynamische combat interacties.
In de video is te zien hoe AI units een leider volgen binnen een vaste formatie waarbij iedere AI een eigen positie binnen de groep behoudt tijdens beweging.
Wanneer vijandelijke spelers worden gedetecteerd schakelt de AI automatisch over naar combat behavior. Hierbij verspreiden units zich dynamisch over beschikbare coverposities terwijl zij gezamenlijk druk blijven uitoefenen op de speler.
De AI beweegt hierbij actief van cover naar cover en combineert movement met offensieve acties zoals suppressive fire en target tracking.
Het systeem is ontworpen om groepsgedrag geloofwaardiger en tactischer te laten aanvoelen dan standaard individuele AI behavior.
Save System Plugin
Read about the plugin
Dit project betreft een plug-in die ik zelfstandig ontwikkeld heb en publiceer via online marketplaces.
De plug-in breidt de standaard save functionaliteit van Unreal Engine 5 uit met ondersteuning voor meerdere bestandsformaten en vereenvoudigde data workflows.
Standaard ondersteunt Unreal Engine voornamelijk opslag via .sav bestanden. Deze plug-in voegt ondersteuning toe voor onder andere:
- .JSON
- .txt
- .log
Hierdoor wordt het eenvoudiger om bijvoorbeeld:
- server configuraties op te slaan
- logging systemen te gebruiken
- netwerkdata uit te wisselen
- externe tools te koppelen
Daarnaast vereenvoudigt de plug-in verschillende save/load workflows binnen Unreal Engine door veel handmatige stappen te automatiseren.
In de video is zichtbaar hoe data opgeslagen en geladen wordt binnen verschillende bestandsformaten en waar deze bestanden lokaal opgeslagen worden op het systeem.
De plug-in wordt daarnaast ook gebruikt binnen mijn eigen multiplayer projecten voor persistence en server-side opslag van gameplay data.