Dylan Foss;

About Me

Hi, I'm Dylan, a first-class computer science graduate. I enjoy programming and regularly work on small projects for fun, and to further my understanding in topics that pique my interest.

As of late my projects have been working on simulations in C++ with OpenGL for graphics. I enjoy the challange of optimising these and the research rabbit holes that come from it.

I also enjoy learning about computer graphics, with my foray into OpenGL requiring me to write things such as a batch renderer to display these simulations.

Portfolio

Card image
A 2D predator and prey simulation within Unity.

"Experience the vicious rigors of nature from the comfort of your home!"

A group project by two friends and myself for our 'Advanced Programing' course at University. A simple Plant/Prey/Predator simulation that takes an inital user defined state (terrain, population, breeding speed etc.). Each 'day' has it's information stored and can be looked over via a graph.

I specifically worked on the procedual terrain generation, heatmaps, and optimisting the pathfinding. I also drew the cute little guys in the image.

  • Keywords: C#, Unity.
Card image

Boids, with an Entity-Component-System

A boids flocking simulation, alongside a home rolled Entity-Component-System (ECS).

The classic boids flocking algorithm, made to attempt an implementation but also to work alognide my ECS implementation. Currently works well up to 5,000 boids, having a ~6 ms frame time. With further profiling, tuning the grid space patition and using aproximate trig functions should push this a fair bit more forward.

Since this simulation requires the transformation of similar data constantly, data-orientated ideas are applicable allow for both more performant code and a nicer organisational structure to work with.

GitHub links soon!

  • Keywords: C++, OpenGL.
Card image
Procedual Animation of multilegged creatures using the FABRIK algorithm.

My undergraduate dissertation project. Using the 'Fowards-and-Backwards-Reaching-Inverse-Kinematics' (FABRIK) algorithm to simulate limb leg placements, and interpolationg them in order to produce a convincing animation. Also has support for 'pole points' which inform the limb what direction to bend towards.

Project was very interesting as it required me to get comfortable with 3D mathematics, aswell as to reseach various aspects of computer and traditional animation, and how their application can affect the observers perceptions.

  • Keywords: C#, Unity.
Card image
An attempt to create a reusable 2D physics solver.

A foray into 2D physics via creating a solver to use in other projects. Trial and error lead me to take a more data oriented approach that lead to a system more performant, even without optimisation strategies.

I plan to add further features and combine this with my in progress ECS project to create some small physics games to test them out together, and spot any obvious additions.

  • Keywords: C++, OpenGL, physics.
Card image
An implementation of John Conway's Game Of Life using C++ and GLSL.

'John Conway's Game of Life', implemented in OpenGL with C++ and the OpenGL shader language (GLSL). This project relies on fragment shaders to update state storing textures to simulate each epoch. The advantage of this is large numbers of cells can be updated in parallel on the GPU, allowing for large simulations.

This project allowed me to work and get comfortable with shaders, and by extension working with the modern OpenGL render pipeline.

  • Keywords: C++, OpenGL, GLSL, shaders.
Card image
A Tertis clone using C++ in OpenGL.

A simple game clone originally started to get comfortable with OpenGL. In the making of this, I played various versions of Tetris and looked up standard rulesets to try and get a relatively close imitation.

The game has features such as using the standardised rotation system, allowing for T-spins; scoring systems that count combos, back-to-backs and T-spins; and a leveling system based on how well you perform.

  • Keywords: C++, OpenGL.
Card image
An ascii raycaster in the Windows console.

An attempt of creating a raycaster, using the windows console and ascii characters to display the world. Uses a DDA algorthim improve raycasting performance.

Inspired by games such as Wolfenstein 3D and Ultima Underworld, and was a fun path to look at the technology the developers utilized to get these to run on machines of the time.

  • Keywords: C++.

Contact

  • LinkedIn:
  • Email: foss.dylan.00@gmail.com
>
>