t-e.dev

Academic Work


Projects Undertaken at University.

PROJECT NAME:

SkillSurf: Mobile


PROJECT TYPE:  

Games Development


PROJECT HOME: 

t-e.dev/skillsurf-mobile


RELATED PAGES: 

t-e.dev/replay-file-compression

GitHub: Code Samples



As part of my dissertation / final project at University, I created a 3D mobile game that imitates the popular mod for Counter-Strike known as ‘Surf’. I intend to develop this project further and release it as a fully-fledged game.


The non-code aspects of the report/dissertation itself were mobile performance optimizations, Unity optimizations, the use of Agile development methodologies in games development, and discussion on the implementation of these techniques within the game.


I am currently in the process of writing articles on each important aspect of the game and its unique optimizations. These can be found on the project home page alongside more recent video content.


Below you can see a short video demonstration of the game that was recorded as part of my dissertation submission.

PROJECT NAME:

Maths for Games & Physics Engine Programming


PROJECT TYPE:  

Maths


PROJECT HOME: 

t-e.dev/physics-and-maths



As part of the course, two maths modules were undertaken. For both of these questions were given in the form of Directed Studies and we had a set amount of time to return them completed.


For the first year, we had the `Maths for Games` module, and in the third year, we had the `Physics Engine Programming` module. In both modules, we experimented in class with efficiently turning equations into C++ functions useful for games development to better understand them and their application.


Maths for Games covered the use of linear and quadratic equations and their applications for 2D collision detection as well as others. Physics Engine programming covered Newton's Equations of motion and forces, and how these can be applied to model complex 3D collisions, rotational forces, projectile motion, energy conservation, friction, and more. 


See the project page for more information.



PROJECT NAME:

Object-Oriented Analysis, Design, & Programming


PROJECT TYPE:  

Object-Oriented Programming


PROJECT HOME: 

GitHub




As a pure programming task I excelled in this second-year assignment wherein I was given a brief and tasked to design & partially implement a software solution for it.


The task was to design an online ticket system for a local theatre group. This would allow managers to create seat layouts, set seat prices, create per-seat discounts, per-show discounts, and more while allowing the customer to reserve and purchase seats via a seating plan.


The systems design had to be object-oriented, and the design document had to be incredibly detailed; showing our ability to fully utilise UML to describe the entire operation of the software & how the different user-types will interact with it. The programming aspect was shorter and focused on showing we could convert some of our UML models into code appropriately. I went above and beyond on this assignment, keen to prove my aptitude in this area, and produced double the amount of work that most students did, while still maintaining a quality standard high enough to award me 92% in the module.


Not only did I design the software in full with Object-Oriented design in mind, but I created complete prototype applications for both the server & client in C#, then created the `required for the module` partial class implementations of the models in C++.


My tutor commended me for this work & has since been using my design documents and prototype applications (server/client) as in-class learning tools & inspiration.


PROJECT NAME:

GPU & A.I. Programming


PROJECT TYPE:  

Programming (CUDA, C++)




Two modules overlapped in subject matter, AI and GPU programming. In class, we looked at how a fighting games A.I. can analyse recorded player action responses to better counter player move combinations and create realistic behaviour. 


This requires bulk-processing of the player’s movement data, a task that is easily parallelizable. This parallelizability makes the program more ideal for the high-core count architectures found in GPU’s rather than a traditional CPU.


To showcase this I created both a GPU version and CPU version of the program. The GPU version ran 27x faster than the CPU equivalent (0.1ms vs. 2.7ms on 100,000 randomized 3-move combinations).


See the project page for more info.


PROJECT NAME:

HungryBoy


PROJECT TYPE:  

2D Platformer (Unity, C#)




This project was created as a group in University, wherein I took the role of programming the character controller, creating the second level, and creating and programming the procedurally generated endless level for Arcade mode. Shown below are videos of the game on the two levels I created plus a video on how I implemented an adjustable difficulty system via Microsoft Excel.


I received an A for my work.

See the project page for more.

PROJECT NAME:

Merlin Engine


PROJECT TYPE:  

Game Engine (C++)


PROJECT HOME: 

GitHub



As a final-year University assignment, I created a flexible game engine from scratch in C++. The engine was designed to handle multiple game genres with high performance and allow for easy prototyping of new architectures and game mechanics across multiple hardware platforms.


I utilised OpenGL for rendering and implemented a GameObject/Component game loop architecture, fairly typical of most modern games. To implement collision physics I utilised the Bullet physics library. To enable faster & easier prototyping for a variety of game genres I integrated a Lua language layer via the LuaBridge library.

PROJECT NAME:

Graphical Programming


PROJECT TYPE:  

OpenGL, GLUT, C++



In this project, the goal was to render an animated 3D Spider in OpenGL via C++ utilising GLUT (glm & glew). We had 1 month to achieve this.  I took an unorthodox approach compared to other students; I created an object renderer within OpenGL that naturally handles .obj format 3D model files.


Using this I could export any animation of any model as individual .obj frames. Then the render engine could compare the data of each frame and only redraw the necessary (changed) parts.


I found my approach far more exciting than the path others took of drawing & animating the spider in code manually and found fulfilment from it despite the many improvements that could be made. I received an A for my work.

PROJECT NAME  

PlanetFall: Orion


PROJECT TYPE:  

Online RTS (Unity. C#)




This project was completed in a mere two months as part of a group university assignment. I worked as the Scrum master and lead programmer for the project, although I was not the creative lead or designer I did influence some decisions in these areas due to time constraints.


I reviewed others code and tied work together. I coded the building system including the placement interactions.


Despite being fully playable in online matches and achieving many desired goals the game never reached beyond the prototype stages in many aspects, especially the visual fidelity and art. This is because the project was not marked on these areas but rather on the ability to work within the agile framework and the quality of the code produced.


This project was marked as a group and we received an A.

PROJECT NAME:

Group Software Design


PROJECT TYPE:  

Agile Software Development




This second-year University group project focused on implementing Agile software design methodology as a team.


Our task was to design a bespoke software solution for a farming consortium that wanted to switch to Just-in-Time stock management & online ordering & delivery tracking for their eggs & chicken meat. We were presented with a case study outlining the day-to-day business operations & tasked with creating software to aide and improve upon it at every stage, replacing pen & paper with computers.


As the most experienced programmer in the team, I was elected as the leader and SCRUM Master. I tasked myself with the most difficult parts of the project and split the workload into easily digestible chunks for the team, allowing us to produce work in parallel teams of two. This was the second time I’d led a programming team and I feel I excelled in my role as SCRUM Master. The entire team left glowing reviews of me in their project evaluations; saying I was influential, organised, and kept them and the team as a whole on-track throughout.



PROJECT NAME:

Character Animation


PROJECT TYPE:  

Animated Character Video (Unity, C#, 3DS Max, Motion Capture)


PROJECT HOME: 

t-e.dev/CharAnim


In this project, the goal was to create a short animated character sequence using dynamic camera angles and music in any software we were comfortable with.


I created a character in 3DS Max, then I imported freely available motion capture data, cleaned it up, and exported it to Unity. In Unity, I created the scene, lighting, camera, soundscape, and footstep noises to match the characters imported motion-captured movements. 


The end result was captured in real-time.

The video portion of the Character Animation assignment.

PROJECT NAME:

Using Unity & Autodesk 3ds Max for Level Design


PROJECT TYPE:  

Level Design




This first-year assignment was designed to showcase our abilities to use Unity and Autodesk 3ds Max to create an interactive level with a playable animated character with a short essay describing the process & technical details of the work and techniques used therein.


The key to success in this assignment was not creating the most beautiful level as the degree is Science-based, not Art based; therefore to achieve the best marks the goal was to showcase proper use of as many techniques and tools possible in as high a quality as possible. The assignment also called for high quality, well-commented code and animations.


I created a sample game/level called ‘Aptitude Testing’ that borrowed heavily from Portal’s art style. The goal was to create a small level that felt as though it were in a simulated computer environment, similar to the training chamber from Perfect Dark on the Nintendo 64. To this end I created the following;

first-person animations for firing an M16 rifle model & hands model, particle effects for the muzzle flash and bullets, particle effects for the ‘generation’ of the simulated environment around the player, the level itself, soundscapes, and scripted ‘mission’ sequence with an A.I. voice similar to GLaDOS, generated with Ivona Text to Speech Engine.



PROJECT NAME:

Computer Architecture


PROJECT TYPE:  

Computer Architecture




In the first year, a lot of focus was put on understanding the fundamentals of computer architecture. We covered a wide range of subjects & I achieved an A grade in the module. Here is a simplified list of the subjects covered in this first-year module:


History of Computing, Binary/Hex/Oct/Dec Maths & Conversions, Floating-Point Values, Assembly Programming Language (ASM), CPU Architecture & Design, Instruction Set Architectures (RISC/CISC), ASM & MIPs Processing, Register Transfer Language (RTL), Representing& Compressing Text, Audio, & Image/Video Data, Logic Gates (AND/NAND/OR/NOR/XOR), Combinational & Boolean Logic, DeMorgan’s Laws, Karnaugh Maps, Error Checking & Parity-Bits, Hamming Codes, Creating Decoder, Multiplexer & Half/Full Adder Logic Circuits.




PROJECT NAME:

Computer Networking


PROJECT TYPE:  

Computer Networking




Computer Networking is a first-year module given to all Computer Science students regardless of specialisation. I already had extensive experience with networking thanks to my previous experience as a server administrator & prior to that my education at Zenos IT College. This module covered a large swathe of computer networking, the subjects of focus are listed below:


Peer-2-Peer (P2P), Multiple Access-Link, and Client/Server Network Architectures, Network Topology Analysis, IEEE Networking Standards, the OSI Reference Model, LAN, WAN, & The Internet, Firewalls, Networking Protocols (IP, DHCP, TCP, UDP, HTTP, ICMP, and ARP), Subnetting, VPNs, IPv4, IPv6, Unicast & Multicast, Hierarchal Addressing & Classful & Classless Addressing, Network Routing (Static & Dynamic), Server Configuration, CISCO Router Configuration.





PROJECT NAME:

ProGameServers


PROJECT TYPE:  

Business Proposal



As part of the course, we undertook a business module that focused on the Games Industry and the business aspects of taking a game to market.


The coursework for this was to produce a business plan relevant to the games industry.


While I soaked in knowledge about the business of game-creation through the class and my classmates I carved my own path and created a business plan outlining how to create and run a successful game-server hosting business; including detailed cost, requirement, and legal analysis.