John Wigg

Hobbyist Gamedev // Sci. Comp. Student


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

Planned graduation in 2021.

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).

until 2016 (Kiel, Germany)

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


Basic Advanced Proficient
Programming Languages
C Python C++ 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
Git CMake Catch2

Notable Student Projects

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

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

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

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

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

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 page.

Languages: GDScript
Pocket Operators

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 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)

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++