Ooble is a 2.5D side scrolling rail shooter, set inside an underwater cave system. The goal of the game is to search for a gigantic pearl, while at the same time avoiding any dangers and obstacles on the way. To the players help they have a flashlight to navigate dark areas and the ability to shoot small missiles to remove obstacles. 

Production Time:
Team Size:

Unreal Engine 4
C# – Blueprints
9 Days
4 Designers & 5 Artists


During the game project, I was a Scripter and Designer. My main scripting responsibilities were:

I also worked on other Additional tasks, such as the aim rotation, UI- and sound implementation. A Post-Mortem of the project can be found at the bottom of the page.

Submarine Movement

The game is focused around moving around, so we didn’t just want the movement to work, we wanted it to feel like you where underwater. To imitate underwater physics, I made custom Velocity and Friction for the player. Then to make it look like you were driving underwater, a slight rotation is added to the submarine, pointing it towards the direction you are going.

Camera System
Rail Camera

Ooble being a rail shooter meant that the player and camera should move independently from each other, and that the players movement is limited to what the camera sees.  We had the idead that the cameras movement should mimic an underwater current, and that it should be able to flow in different directions. To make it easy for Level Designers to alter the cameras path, and to make it flow forward smoothly, I made the camera follow along a spline.

Screen Edges

And to keep the player within the screen, I made screen edges that stop the players movement in that direction if the player goes outside them.

Aim Rotation

Both the direction of the flashlight and the aim of the missiles are guided by the mouse cursor. To rotate both I simply get the point of the cursor on the screen, then rotate the aim towards it.


Energy is what the player has as health and they lose some of it whenever they run into a wall or runs into a obstacle. They also lose it slowly over time and has to collect energy pickups to regain in and keep exploring.


I learned a lot about collaborating with people of different specializations and roles. I had many discussing with other designers about mechanics and solving scripting problems. Making scripts easy for others to both use and edit became relevant to improve the workflow. I also communicated with the artists how meshes and other graphical elements should be constructed to fit in with already created scripts and assets.