John Wigg


Hobbyist Gamedev // Render Programmer // Sci. Comp. MSc and Physics BSc

Work Experience

Full Render Programmer
since 2022 (Frontier Developments, Cambridge, UK)
Graduate Render Programmer
2021–2022 (Frontier Developments, Cambridge, UK)

Enhancing and delivering graphical features for Frontier’s in-house game engine Cobra.

Technical Assistant
Juli–September 2021 (University of Oxford, UK)

Development of a visualisation tool for pan-ExM data as part of my master thesis which was done together with the Department of Engineering Science.

Education

M.Sc. Computational and Data Science
2019–2021 (FSU Jena, Germany)

Master thesis on the topic Design and Implementation of a Web-based Visualisation Tool for Pan-ExM Data.

B.Sc. Physics
2016–2019 (FSU Jena, Germany)

Bachelor thesis on the topic The dynamics of circumstellar dust grains under consideration of the radiative forces.

Graduation with final grade 1.6 (ECTS Grade B).

School
until 2016 (Kiel, Germany)

Graduation from high school with major subject physics. DMV-Abiturpreis 2016 for outstanding performance in the high school subject mathematics.

Skills

Programming Languages
C C++ Python CUDA GLSL JavaScript C# Julia R Matlab
IDEs and Editors
VS Code Visual Studio Eclipse
Game Engines
Godot Unity
Asset Creation
Inkscape Paint Tool SAI Blender Audacity
Tools
Git CMake Catch2
Misc
LaTeX HTML CSS Sass

Notable Student Projects

Implementing a Finite Element Solver to Simulate Elastic Deformation in a Game Engine
2020

Project work done for a computational physics university course. I implemented a Delaunay triangulator using the Bowyer-Watson algorithm and Ruppert’s algorithm as well as a finite element method solver to triangulate and elastically deform arbitrary, non self-intersecting polygons in the Godot Engine. The implementation adds a new node, ElasticBody2D, which can be attached to Polygon2D or CollisionPolygon2D nodes. The completed project also contains a small example game utilizing ElasticBody2D for its gameplay. The C++ source can be added to the Godot engine as a module or a prebuilt binary downloaded from the project page.

Languages: C++, GDScript
Bachelor Thesis
2019

Numerical simulation of the dynamics of circumstellar dust under the influence of the central star’s radiation. Main goal of the thesis was to find out whether the so-called Differential Doppler Effect, a force which had not been taken into account in most previous publications, had a notable influence on dust grain trajectories. At least two other publications on this topic where available but yielded conflicting results. The thesis backed one of those publications, whilst conflicting with another by determining that the influence was negligible for most stars.

Languages: C
Solving the Navier Stokes equations using finite differences
2019

Project done for a lab work course. The goal was to implement a finite differencing method from scratch in order to solve the Navier-Stokes equations in two dimensions and simulate a lid-driven cavity.

MNIST from scratch
2019

Project work for a computational physics university course. The goal was to write a neural network without using existing machine learning libraries and to train it using data from the MNIST dataset. I expanded the project by creating a Python module from the C++ source as well as collecting handwritten data from students on digits and basic mathematical operators which I then used to program a calculator with handwriting recognition.

Languages: C, Python

Notable Personal Projects

A complete portfolio of all my personal projects is available at https://john-wigg.dev.

Godot Demos and Tutorials
since 2020

After I had gotten a bit more comfortable using the Godot Engine, I started working on a series of open-source demos and tutorials made in the Godot Engine. Until now, I’ve done a Bottled Liquid Shader, Dynamic Water using finite differences and a fragment shader, a simple dynamic 2D Grass Shader, a Sky Aquarium using dynamic water mapped to a sphere and a small tutorial on 2D Metaballs. All of these have the source code openly available under the MIT license at my GitHub and most of these come with a detailed explanation of the implementation.

Languages: GDScript
Game Jam Participation
since 2020

To hone my (game) programming skills, I decided to start participating in game jams. So far, I’ve participated in 5 different jams: Quarantine Jam, Ludum Dare 46, Godot Wild Jam #25, Ludum Dare 47 and Ubisoft Game Jam 2020 with very encouraging results. Many jam entries are open source and all of them can be played at my itch.io page.

Languages: GDScript
Pocket Operators
2019–2020

My most successfull and largest game project to date. Inspired by Rainbow Six: Siege fanart that I had done in the past, I decided to create a heavily Pokémon-inspired game in which the player could let operators (the characters in Rainbow Six: Siege) battle against each other. After very positive feedback (and even a retweet by the official Rainbow Six: Siege Twitter account) I added more operators, attacks, and a pass-and-play versus mode. I also did some (sadly to this date unfinished) work on a relay server for implementing online-lobbies.

Languages: GDScript (Server: C++)
TESSA
2019

TESSA is short for The Expanse Solar System Astrometrics and a web application I created for GMing the The Expanse pen-and-paper RPG. It displays a map of the solar system based on orbital data I extracted from NASA JPL’s HORIZONS system and allows the game master to plot routes between different planets and settings of The Expanse.

Languages: JavaScript
SlowMoMod (+ Flash Mode)
2015

One of my earliest proper programming projects and probably my first successfull one. This GTA V mod allows adjustable slow motion although it peaked in popularity when I added the “flash mode” which allows running at superhuman speeds, even while in slow motion. With over 60,000 downloads, I am still very proud of this project (and it even was featured in a small video showcase by IGN once).

Languages: C++