Boudewijn Witteveen

Gameplay Programmer

Wall Town Wonders

Screenshots

Team SizeEnginePlatformRole
30+Unreal Engine 5Quest, SteamVR, PSVR 2, PicoIntern Gameplay Programmer

Wall Town wonders is a cosy life sim where you build a charming town from the ground up, guide quirky characters through delightful quests, and customize every detail.

Explore, build, and fall in love with your town like never before.

Personal Contribution

The Lizard

During the first semester of my internship at Cyborn, my main task was focused on the lizard character. It lived in one of the islands, referred to as the “lizard nest island”, which the player can create anywhere in its room, allowing players to launch four types of minigames. When a game starts, the lizard emerges from the next and moves along walls, furniture, floors and ceilings, guided by the player’s pointer. After completing the minigames, it crawls back into the wall, and returns to the lizard island.

I inherited a basic prototype and was tasked with rebuilding it for production. This included refactoring the code, removing redundant behaviour, and implementing a robust state machine for movement and animation control.

Navigation

Navigation was one of the toughest parts to get right, mainly due to collision handling and transitioning between walls.

Navigation – Collision Issues

The struggles with collision stemmed from how collision works in Mixed Reality games. There are two primary types of collision data: Complex collision, which is generated from the scanned spatial mesh, Simple collision, which refers to virtual colliders generated around your furniture and ceiling/floor based on the spatial mesh, represented by box colliders.

Initially, we used the complex collision from the spatial mesh to align the lizard and detect obstacles by comparing the distance between the normals of the virtual collider and mesh. If something was too close, the lizard wasn’t allowed to move onto it. This caused glitches and erratic movement on irregular surfaces, like backpacks and heaters, and proved unreliable.

To solve this, we pivoted to using only the virtual colliders for navigation, which in turn made the original collision approach redundant. This not only smoothed out the movement but also set the stage for future VR compatibility.

Navigation – Wall Transitions

Another issue involved wall transitions. When projecting the target point onto a different wall than the lizard is currently walking on, it would unnaturally move towards the nearest corner of the target position first, and only then move in a straight line to the target position. See screenshot below on the left side, in which the red line represents the desired path, and the blue line shows the original, incorrect path.

I resolved this by detecting when the target location lies on a different plane and computing an intermediate point, resulting in more natural, fluid movement. You can see the improvement in a small prototype shown in the GIF below on the right side

Minigames

Besides the navigation of the lizard, I created and worked on three out of the four minigames, the “Find the Seed”, “Find the Mine” and “Catch the Bugs” minigames. For each of these minigames I created the base gameplay loop, implemented custom functionality to generate a point on either the wall or the floor that is not blocked by any structure or blocked by the voxel grids that block of real life object, so no object can spawn there, and added in the animation systems into the lizard required by these minigames. These minigame can be seen down below.

Support for multiple VR headsets

In the second semester of my internship at Cyborn, my focus shifted from the Meta Quest 3 version of Wall Town Wonders to porting the game to SteamVR, Playstation VR2, and Pico, specifically to requiring support for all major VR headset used on these platforms.

Each platform had unique controller offsets and runtime differences, especially in how virtual hands align with the real-world controller positions. Some platforms also lacked native input mapping in Unreal Engine 5.4/5.5, requiring custom integration through their plugins

I built a system that detects the active HMD, controller type, and OpenXR runtime, then applies the correct position and rotation offsets. To support this, I conducted extensive research and created robust debug tools to identify platform details in the build, such as controller paths and types, FOV values and runtime data.

Additionally, I developed tools to log and live-adjust offsets in developer builds while playing VR, dramatically speeding up the tuning process. Using this, I created ~25 accurate profiles, each with their own offsets from MR (Pico and Meta) to VR (Playstation, SteamVR, Meta Link and Vive OpenXR runtime).

Ice Skating Minigame

Right before the Christmas break I worked on the Ice Skating Minigame, which was introduced in the Christmas patch of Wall Town Wonders. I created the core gameplay loop and build a system allowing the designer to adjust the difficulty by enabling or disabling certain skaters (which act as moving obstacles). This system also supported adding or removing snowman obstacles onto the track.

I also implemented skater movement. The skater would always move forward on the spline path, but can change shift their position to the right or the left based on where the player points.

Later, when the minigame was adapted for use outside of the Christmas environment, I ensured the correct texture was applied to the Christmas island (on which the minigame takes place).

The two minigames can be viewed through these two video’s:

Links to store

PHP Code Snippets Powered By : XYZScripts.com