Hi! I'm Eliza, a games programmer in Newcastle, with a Bachelor's in Mathematics and Master's in Computer Game Engineering. I have 5+ years experience using Unreal Engine, and several AA/AAA projects under my belt.
Video games have been a part of my life for a long time. I grew up playing Spyro and Banjo Kazooie with my dad, who bravely took on the levels that were too hard for me. One of my fondest memories was visiting him after school, and finding out he completed Spyro the Dragon and unlocked the secret level for me, and I was ecstatic. I am incredibly honoured to create memories just like that for others.
I spend my free time reading, attempting to rollerskate, and playing too much overwatch. Recently, I have started baking, but I don't bake often because I end up eating it all myself (oops).
Skills
Projects
Sea Of Thieves - Rare
Coconut Lizard
C++, Modified UE4
Multiplayer, PC/Xbox
Worked predominantly on gameplay
Unreleased Title
Coconut Lizard/d3t
C++, UE5
Single player, PC/Xbox/Playstation
Gameplay
Unreleased Title
Coconut Lizard/d3t
C++, UE5
Single player, PC/Xbox/Playstation
Gameplay
Predominantly worked on AI
Minion Blast - Universal
Coconut Lizard/d3t
C++, UE5
Gameplay
Engineering support for a team lacking programmers
Addressed performance issues
A Changing Landscape: Advanced Graphics Coursework
I was tasked with creating a landscape that changed over time, using C++ and OpenGL. I was given a basic graphics framework, which I built on throughout the module. I chose to theme my scene around the given skeletal mesh for the hellknight from Doom.
Terrain:
Heightmap is generated with an index buffer, using a file to read in the heights. It rises over time using a changing uniform passed to the shader.
Terrain has two textures, each with their respective normal/bump map, and they're blended between one another as time passes.
Water is transparent until the heightmap has fully risen, then the alpha component starts to rise so it appears.
Spikes are contained in a scene graph, and employ frustum culling to reduce draw calls.
Lighting:
Point light is used to illuminate the scene, using the Phong reflection model
A spotlight is placed at the rear of the scene, and rotates in a circle using a sine wave in its transform.
Dynamic shadow mapping is used on the hellknights in the scene.
Cubemap has been utilised for the skybox in the background, and the reflections in the water.
Other Features:
Gaussian blur is the main post-processing effect I implemented, using ping-pong texturing.
Included a very basic split-screen effect, that uses the same camera view in both panels.
Basic skeletal animation used with the hellknights.
Unoriginal Goose Game: Advanced Game Technologies Coursework
The project was based around Untitled Goose Game- A player must collect apples in the game to earn points, whilst avoiding the AI who make the goose drop any item it is holding. I implemented the physics and collisions, AI and networking for this project, using C++ and Visual Studio.
Physics:
Linear and angular motion implemented.
AABB and Sphere collision volumes utilised.
Made use of Collision layers to reduce the amount of detection tests.
Quad Tree spatial acceleration structure used for the broad phase detection.
Collisions are resolved by projecting the volumes outwards from collision point along the normal, and then applying an impules in the correct direction to change the velocities.
Basic constraint bridge is used in the back of the level to demonstrate more advanced collision resolution.
AI:
A finite state machine is used for one AI character, which chases the goose if it's within a 10 unit distance, and then transitions to idle state if the goose is further than 15 units away.
Second AI character uses pathfinding to chase the goose if it is holding an item, and if the AI collides with the goose, it drops whatever it was holding.
A* is used for the pathfinding. The world grid is represented with a text file that is read in, and if a path is found, a force is applied to the AI to push it towards the fist node in the list.
Networking:
Player can choose to start the game as a client, or as a server.
Client sends a packet with their position data, which the server receives and updates accordingly.
Client also sends a score packet to the server.
Contact
  LinkedIn
  elizapreston@hotmail.co.uk
  GitHub
Elements
Text
This is bold and this is strong. This is italic and this is emphasized.
This is superscript text and this is subscript text.
This is underlined and this is code: for (;;) { ... }. Finally, this is a link.
Heading Level 2
Heading Level 3
Heading Level 4
Heading Level 5
Heading Level 6
Blockquote
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
Preformatted
i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';