Nathan Duck

Junior Programmer

I am a junior programmer that has studied C#, C++ and Python. I've made many projects varying, some individually and others within a team. My skills can be applied in a variety of projects and applications.


Velocitas / C#

Velocitas was my first major project I worked on with a group. I was assigned to work on the Main Menu, the Options UI and the A.I. for the game. This was a really fulfilling and rewarding learning experience.While working on the A.I. I attempted to implement the feature in a non-standard practice. The intention was to use Unity's animator as a state machine. When I presented this option to my team, they had concerns that it might not be the best approach. As development of the game continued, I grew concerned that this might not be the best approach after all.I eventually changed from the Animator to writing the code in C#, it allowed me to learn and understand both methodologies of how to create A.I. Using C# greatly helped as I progressed, adding, and fixing enemy states became easier. This then allowed me to refocus on implementing my other task, such as doing the options and Main Menu UI.

Technical Skills Gained

  • Familiarity with Unity's Animator System

  • Basic AI in C# for the player to avoid/attack

  • Unity's UI for Options and Main menu for a game


Physics Engine / C++

During my second year, our first assignment was making a 2D physics engine in C++. We were provided a base renderer to display the objects, but it was up to us to implement the mathematical equations to them. As part of this I learned fixed timestep, linear motion, collision detection and resolution in a 2D environment.For my project, I learnt how to make spheres, planes, boxes, and springs which was an enjoyable learning experience. A specific example of this was learning how to implement collisions in a Function array.Collisions could be stored in an array so that they could be referenced more efficiently. This implementation involved using Enums and defining fn to be a pointer, so that when two objects collided, it found the function based on the array of the of the objects in question.I also enjoyed implementing springs. I learnt how to make 3 functions that made different ropes based on what the springs were connected to. the first to make squares attached to springs, second to make spheres attached to springs and third to make the spring that connects between two game objects.

Technical Skills Gained

  • A further in-depth understand of C++

  • Applying physics to in game objects via code

  • Springs and strings and how that applies in physics


Graphics Engine / C++

I made a 3D graphics engine in C++. I learnt the core principles of graphics engines, rendering, light and shadows on objects in 3D environments.I enjoyed developing particle systems (see above). Implementing these systems helped me to better understand particle systems in games. Through this process, I worked on using the shader graph and making the spawning of the particles and also how to program it to change colour over a lifetime.

Technical Skills Gained

  • Learned the difference between vertex and fragment shader code and how to make it

  • Making partical systems and different steps to make it


Complex RPG System / C#

This assessable task required me to create modular RPG system from scratch. I learned to create RPG elements such as health and attack for example. This had to build in such a way so I could output it to an asset pack anyone could put into their game.The initial work on this was to flesh out the RPG elements. I created both a player character and enemy units that could interact with given scripts. I made a combat system where enemies could be locked onto by the player, able to avoid the attacks while also allowing the player to counter.I then worked on making the entire project modular. This required implementing limitations on the combat system needed while allowing for changes to be made for future developers. I learnt how to refactor code and make it more usable and accessible. In the asset package, I was able develop a combat system for units and enemies in a 2D game environment while also providing that could be testable and ready for further construction by future programmers.

Technical Skills Gained

  • Making of a modular kit

  • Making of RPG elements and interations


Foreign Body / C#

As part of my most recent project, I was part of a team that included artists, designers, and programmers to develop a full playable game. This gave me valuable experience working in a multi-talented group.As the lead developer, I worked on many of the major elements of the game. These included creating the player characters, the game map, and utilities. During early stages of the game, I worked on the character interactions and movements. This was interpolated with the player map, as the game was based on controlling where player characters were assigned to on the map.While working on the utilities, my primary focus was on that of the unit manager and turn manager. The unit managers job was to select which character the players was allowed to set the actions for. The turn manager, sets the sequence of these actions and plays them out.

Technical Skills Gained

  • Making a flexible turn based combat system

  • Proper Unit and enemy implementation

  • Hex Grid and the mathamatics behind it