Sam Horner - C++ Programming Home

Sam Horner - C++ ProgrammingHome

C++ VR Submarine Game

For my final year project, I made a VR game in which the player controls a submarine through underwater trenches, avoiding dangerous creatures and collecting objectives. The aim of the project was to create a tense and creepy atmosphere without relying on story devices or scripted jump-scares. Instead, the atmosphere is created using gameplay.

The player pilots the submarine using simulated levers and buttons that they interact with using the VR controllers. This was done to make a control system that the player must focus on fully to use it effectively, which creates a feeling of vulnerability in dangerous situations. The player cannot see out of the submarine, except for some very small and un-useful windows, and they must understand the environment around the submarine using a series of sensors. This was done so I could fully control the amount of information the player was receiving at any given moment, and I could optimise the 'Fear of the Unknown' effect to the fullest.

C++ Game Engine

As part of my course, I built a game engine that uses a generic components system. I got very positive feedback for this work and I am very proud of it. The video is quite laggy, but that is because of the recording software and not the engine.

Cleaning Game

In this game, the player has three cleaning tools for cleaning a house. One tool sprays balls of sponge that absorbe nearby dirt balls. the player can then use the same tool to absorb the sponge balls back up. This tool has limited ammo and the remaining ammo is shown in the top left hand corer. The second tool is used to remove stains from walls and floors and the third tool is used to remove dust particles in the air. There is an information box in the bottom left hand corner of the screen that informs the player how many of each dirt type is remaining the the current room.

Console Engine Game

This is the base of a game that I have coded using C++. It is based on a piece of code I found that takes input to print 2d triangles and lines on the screen. My code holds information of 3D vectors and triangles from object files to form 3D meshes and projects them to the screen. I use matrices to project, scale, position and rotate the vectors in 3D space and display them on a 2D screen. My code also handles to positions and rotation of different objects and takes input to allow the player to move a ship around the environment and rotate the camera. The ship emits an engine smoke effect as it moves and it will move up and down with the terrain.

Third Person Shooter

In this game, the player can walk around with WASD, look with the mouse, zoom in and shoot (while on the ground), jump, sprint and pickup health. There are enemies that patrol certain areas, become allerted when the player enters their view and attack. The player can escape these enemeis and they will go back to patrolling. There are also turrets that arget the player and fire missiles.

Made with Unreal Made with Unreal Made with Unreal Made with Unreal

Turn Based Strategy

This gameplay was inspired by the Civilisation serise. Like Civilisation, the player controls a team of units with different attack powers, defences and view/movement/attack ranges. the main difference from Civilisation is how movement cost is calculated, instead of certain tiles costing more to move through, moving across tiles on the same level costs 1, whereas moving from one level to another cost additional movement points. Every time a game is started the map is randomly generated and consists of different levels of land, made to look realistic while also providing challenging and varied terrein.

I decided to make this game to practice developing with mechanics that I had not worked on before e.g. mouse controlled movement and turn based combat. The game allows for multiple player controlled teams and multiple AI teams that all take turns independantly. This game also served to help me develop my AI programming skills, the AI has a simple decision making procces that looks at the surrounding tiles and decides what action to take by comparing the strength of enemies around it to its own, as well as looking at surrounding allies that may need guarding. The game is over when one team destroys the other teams base which cannot move.

Made with Unreal Made with Unreal Made with Unreal Made with Unreal