Oualid Fauzi · Bonn

I read up.
Then I sink my teeth in.

I build games, 3D web apps and whatever grabs me right now: from browser card games for game night to a castle defence game in Unreal Engine. By day I work in retail sales at Telekom.

  • now Last Arrow · Unreal Engine 5.8
  • projects 14 entries
  • printer Bambu Lab H2S
  1. [ OK ] Coffee brewing.
  2. [ OK ] Curiosity loaded.
  3. [ OK ] 14 projects mounted at ~/projects.
  4. [ WARN ] Goblins spotted at the castle gate.
  5. [ OK ] Bow drawn.
oualid@duckpi:~$ neofetch system info

oualid@duckpi

Name
Oualid Fauzi
Location
Bonn, Germany
Job
Retail sales @ Telekom
Side
Games, AI, 3D printing, cosplay
Printer
Bambu Lab H2S
Project
Last Arrow (Unreal Engine 5.8)
Stack
C++ · Node.js · Three.js · Socket.IO · Docker
Host
Raspberry Pi „duckpi“
Mode
teeth sunk in

01 About cat about.md

I’m Oualid from Bonn. By day I advise customers at Telekom. In the evenings and at weekends I build things.

A big part of that are board and card games I programmed for game nights with friends: with their own server, bots, reconnects and sometimes a 3D table. Everything runs in Docker containers on my Raspberry Pi. Right now I’m working on my first big game in Unreal Engine: Last Arrow.

My pattern is always the same: I come across a topic, read up quickly and then really sink my teeth in until something finished comes out of it. That goes for code as much as for AI, 3D printing or a cosplay I finish myself.

My Mandalorian cosplay is one of those cases: I printed and finished the entire armour myself. Some parts that didn’t exist the way I wanted, I designed myself, for example the grav charge holster. It’s available as my own model on MakerWorld to print yourself, and you can look at it in 3D right next to the photo.

Oualid as a Mandalorian with Grogu in the shoulder bag, armour self-printed and finished
photo Mandalorian, armour entirely self-printed and finished

Loading 3D model …

3d Grav charge holster, my own model · on MakerWorld · drag to rotate, zoom with the mouse wheel or two fingers

02 Featured project man last-arrow

In development

Last Arrow

Defend your castle in a first-person shooter.

“Hold the castle as long as you can: one bow, one treasure, endless goblins, and after every boss your fortress grows.”

First-person castle defence. You stand in your castle courtyard with bow and arrows and hold off wave after wave of goblins trying to loot your treasure chest. After every boss your castle grows. Every run is endless, and the enemies keep getting tougher.

  • UE 5.8Unreal Engine 5.8 in C++
  • 165automated tests for game rules, weapons and systems
  • Server ↔ Clientthe server computes, clients display: clean separation of logic and presentation
  • Offlinefully offline: no account, no server, no internet needed
Trailer coming
mini-last-arrow.js Browser teaser, not the real game

Click or tap the goblins before they reach the chest. After every boss the castle grows.

How it plays

--bow
Draw, aim, hit weak spots for more damage.
--castle
Grows after every boss: more walls, more gates, walkable towers with stairs, bigger corner towers.
--walkable
Walk through your own gates, climb the walls, shoot from the towers.
--treasure
The chest is both target and bank account. If it falls, the run is over.

Weapons & economy

dealer
Buy, upgrade or sell weapons at the stall in the courtyard.
slots
Three weapon slots: the standard bow plus two bought weapons.
crossbow
Draw it with a visible string, load the bolt.
musket
Reload with the ramrod, knock goblins back with the recoil.
secret
An assault rifle with magazine and shell casings, only via a secret code. Meant as a gag.
cards
After every round, pick upgrades that change stats and effects.
goldmine
Build mines in the courtyard. The gold goes into new weapons and towers.
towers
Build and upgrade defence towers via the tower command.

Enemies

Animated goblins of several types, including runners from different directions and heavy enemies like the battering ram. Bosses unlock the next castle expansion. Hits have impact: enemies flinch, fall and get knocked over by the musket.

World

A warm, colourful fairy-tale world with sun, weather, forest, mountains and meadows. A courtyard with a house, market stall, flags, torches and gate banners. The castle, enemies and effects are almost all generated in the game itself. For the market stall, houses, chest, gold mine and bow I used AI-generated 3D models that I prepared for the engine.

03 Projects ls -la ~/projects

Games for friends, tools for everyday life.

Most of them are board and card games for game nights with friends. All run in the browser on phone, tablet or PC, with rooms via a 4-character code, bots for missing players and reconnects after drop-outs. Every project has its own Docker container on the Pi.

  • iPhone comparison: two devices true to scale in the 3D showroom

    iphone-comparison/ live

    iPhone comparison

    Every iPhone since 2007, true to scale in 3D

    Up to four devices side by side, freely rotatable, with pressable buttons, colours and storage options. Prices optionally adjusted for inflation, plus a comparison table with all dimensions and specs.

    • Three.js
    • nginx
  • Liar's Dice: 3D table on the pirate island with bot pirates

    liars-dice/

    Liar's Dice

    Dice bluffing game on a 3D pirate island

    The dice game from Pirates of the Caribbean in first person: you sit at a table on a pirate island with palm trees, a campfire, ships on the horizon and a parrot. With a character editor for your own pirate and a reveal animation that counts every die one by one.

    • Three.js
    • Socket.IO
    • Node.js
  • Monopoly Duckburg in the 3D view

    monopoly/

    Monopoly

    Monopoly in Duckburg, with a 3D view

    Complete rules with auctions, building, mortgages and jail. The streets are a nod to Duckburg: the money bin, the shack, the Beagle Boys’ jail. Tested among other things with 40 automated bot games and invariant checks.

    • Three.js
    • Socket.IO
    • Tests
  • Uno No Mercy on the 3D table

    uno-no-mercy/

    Uno No Mercy

    All 168 cards, 3D table with flying cards

    Uno in its merciless variant: stack draw cards, Wild +10, colour roulette. Either on a 3D wooden table with a free camera or in 2D.

    • Three.js
    • Socket.IO
  • Munchkin: board with hand cards and equipment

    munchkin/

    Munchkin

    355 cards, combat maths, 17 test files

    The card game with the base game and two expansions. The server manages decks, phases, combat, levels and equipment. I prepared the card data from my own game files.

    • Socket.IO
    • Tests
  • Poker table with bots, pot and betting buttons

    poker/

    Poker

    No-limit Texas Hold'em for 2 to 8 players

    Complete betting-round logic with server-side validation, side pots for multiple all-ins and an elimination mode where knocked-out players keep watching as spectators.

    • Socket.IO
    • Node.js
  • Wizard: prediction phase with trump

    wizard/

    Wizard

    Trick-taking game with predictions and trumps

    60 cards, number of rounds depending on player count, automatic trump detection and scoring.

    • Socket.IO
  • The Resistance: voting on a team

    widerstand/

    The Resistance

    Secret roles, votes, missions

    The Resistance for 5 to 10 players. Roles are dealt privately to each device, spies recognise each other at the start.

    • Socket.IO
  • Temple of Horrors (Tempel des Schreckens): the players’ treasure chambers

    tempel-des-schreckens/

    Tempel des Schreckens

    Adventurers vs. guardians, 3 to 10 players

    Secret teams, treasure chambers and fire traps, dealt according to the tables in the official rules.

    • Socket.IO
  • Bluff: round table with a face-down card

    bluff/

    Bluff

    The lying card game, at a round table

    Play cards face down, honest or a lie, and call “Bluff!” at the right moment. With a configurable deck and automatic discarding of sets of four.

    • Socket.IO
  • Game hub: start page with all games

    spielehub/

    Game hub

    One start page for all game servers

    Bundles all games under one address. nginx forwards every path to the right container, including the WebSocket upgrade for the live connections.

    • nginx
    • Docker
  • Monitoring Shop: weekly overview with targets and progress bars, here with sample data

    monitoring-shop/ sample data

    Monitoring Shop

    Sales monitoring for the team, with real-time chat

    Everyone enters their sales per product, on desktop in a weekly grid, on mobile with a big plus/minus stepper. Admins see everything in one place. Plus team chat and direct messages in real time.

    • React
    • TypeScript
    • Tailwind
    • SQLite
  • grav-charge-holster.3mf

    Grav charge holster

    Mandalorian holster, my own design, on MakerWorld

    The grav charge holster from my Mandalorian cosplay as a printable model. To view and print yourself on MakerWorld.

    • 3D printing
    • Bambu Lab H2S
    • Cosplay
    • Three.js
  • der-eiserne-thron/ drwx------

    Der Eiserne Thron

    Board game adaptation for private sessions

    A private project for our own game night.

04 Interests & skills ls ~/interests/

What I sink my teeth into

  • ~/gamedev/

    Game development

    From browser card games to a first-person shooter in Unreal Engine 5. Model the rules cleanly, then test until they hold.

  • ~/ai/

    AI

    AI as a tool for building, learning and experimenting: code, 3D models, ideas. And the question of what becomes possible next.

  • ~/3d-printing/

    3D printing

    From a digital model to a real part: design, print, post-process, finish. Currently on a Bambu Lab H2S. I publish my own models on MakerWorld.

  • ~/cosplay/

    Cosplay

    Costumes and props where the finish makes the difference. Most recently: a fully self-printed Mandalorian armour, with a grav charge holster I designed myself.

  • ~/tinkering/

    Tinkering

    Building, trying things out, plugging together things that don’t really belong together. The Raspberry Pi runs around the clock.

  • ~/board-games/

    Board games

    Game nights with friends and the urge to rebuild our favourite games digitally.

  • $ tech

    Tech

    • C++ · Unreal Engine 5
    • JavaScript · Node.js · Three.js
    • React · TypeScript
    • Docker · nginx · Caddy · Raspberry Pi
  • $ strengths

    Strengths

    • Analytical thinking
    • Problem-oriented thinking
    • Leadership
    • Communication
  • $ languages

    Languages

    • German native
    • English advanced

05 CV git log --graph

Milestones

CV as PDF

  1. ongoinge5a71c0 · feature/side-projects

    Games, 3D web apps and Last Arrow

    Personal · Raspberry Pi

  2. Jan 2022 – presenta3f9c21 · HEAD → main

    Retail Sales Professional

    Telekom · Bonn

    • Customer advice and sales of telecommunications products
    • Customer service and resolving customer issues
    • Stocktaking, inventory management and monitoring sales targets
    • Training on the latest telecommunications technologies
  3. Aug 2021 – Nov 20227be12d0

    Member of the Apprentices’ Council

    Telekom · Bonn

    • Organised team events and team building
    • Held feedback meetings with apprentices
    • HR meetings, committee sessions, improving training processes
  4. Sep 2019 – Jan 20224c8e1f5

    Apprenticeship: Retail Sales Professional

    Telekom · Bonn

    • Merchandising, inventory management and cash reconciliation
    • Customer care and retention through individual advice
  5. 2017 – 201919d0a77

    Studies in Applied Economics

    University of Bonn · Bonn

  6. 2013 – 20170f3b2e9

    Abitur (university entrance qualification)

    Tannenbusch-Gymnasium · Bonn

06 Contact cat contact.json

Let’s talk.