Giles Penfold

Giles Penfold

Writer, TTRPG Designer, and Gameplay Programmer


Enter

About Me

Welcome to my portfolio! I design RPG universes, write stories and sometimes even program games! If you are interested, you can see many examples below.

I'm available at giles@gilespenfold.com

My Personal Interests

When I am not coding or working on my personal projects, I enjoy spending my time doing the following:

  • Writing immersive stories and developing my D&D universe

  • Co-ordinating a team of illustrators, cartographers, editors, playtesters, and studios for my D&D 5th Edition publication

  • Attending tech conferences such as SIGGRAPH and expanding my network

  • Playing some of my favourite story driven games

Technical Skills

I have worked with a large number of programming languages. When I work with game engines, I use C# in Unity and C++ with Cobra and Unreal. For my personal projects, I tend to prefer C# for prototyping and Python for machine learning related research.

C++

C#

Python

Blueprint

Familiar Software and Tools

Engines and APIs

  • Unreal 4 and 5
  • Cobra
  • Unity
  • OpenGL

Tools

  • Visual Studio
  • Maya
  • Jira
  • Perforce

Education

Bournemouth University

Master of Science Computer Animation and Visual Effects

I studied a MSc for Computer Animation and Visual Effects. Here I gained a strong knowledge of many subjects including modern C++, game development pipelines, simulations and artist collaboration.

Graduated in: Late 2018

University of East Anglia

Master of Computer Science Computing Graphics Software Development

I studied a 4 year integrated Master of Computing in Computer Graphics at UEA. This course gave me a solid understanding of computational graphics, real-time applications, machine learning and programming.

Graduated in: Mid 2017

Work Experience

Intermediate Gameplay Programmer

Game Development C++Gameplay ProgrammingUnreal

I have worked with Firesprite as a gameplay programmer on Horizon Call of the Mountain and an unannounced AAA narrative adventure title. This has involved creating and managing game-wide systems, collaborating with multiple disciplines, and supporting many other smaller systems, alongside mentoring junior programmers.

Period: Nov 2021 - Current

Company: Firesprite, Sony

Projects: Horizon Call of the Mountain; Unannounced AAA title

Animation Programmer (Gameplay, Engine)

Game Development C++Animation ProgrammingTech Art

I was promoted to Full Programmer in 2020. Up until June 2021 I maintained a large number of animation systems within the Elite Dangerous codebase, as well as providing on-going support to the animation team on Elite Dangerous: Odyssey. I have recently moved to the Shared Technology Group Animation team(STG Anim) where I support the company's core animation systems and wider ranging animation teams across other projects. Since joining this team I have begun work with lower level multi-threaded systems.

Period: Nov 2020 - Nov 2021

Company: Frontier Developments

Projects: Elite Dangerous: Odyssey; Core Animation Technology (Engine)

Graduate Animation Programmer (Gameplay)

Game Development C++Animation ProgrammingEngine Code

I worked as a Graduate Gameplay Programmer for Frontier Developments with a focus on animation and animation systems during 2019 and 2020. I mainly wrote C++, but also used XML and Lua as part of my day to day job. I worked closely with the animation, design and engine teams to help support the creative vision of the up and coming games at Frontier, and creating systems within both the local and company-wide codebase to further enchance the range of options available to our artists. This involved working within a small team on specific areas of the codebase, as well as contributing to the larger gameplay team as a whole with significant changes to the engine and game code.

Period: May 2019 - Oct 2020

Company: Frontier Developments

Creative Lead & Designer

TTRPG Game DesignNarrative DesignWriting

I currently manage a large team of creative folk from across the globe in the production of the Vynestra branded 5th Edition 3rd party publications. This involves a huge amount of scheduling as well as taking lead on the writing, system design, narrative design, and overall flow of the publications. I regularly work alongside other game designers and writers to construct design documents, to go over feedback on gameplay systems, and to tweak or construct values to create an immersive, balanced experience for players.

Period: March 2019 - Current

Brand: Vynestra

Software Developer Intern

Machine Learning Game TechUnity

My passion for machine learning and games landed me an internship with Dr Taylor at UEA. I assisted with the implementation of a real-time speech-to-animation plugin for Unity, creating a custom neural network library within Unity.

Period: June - Sept 2017

Company: UEA

Associate Tutor

Computer Graphics Game Engine DevelopmentTeaching

During my Masters year at UEA, I helped teach the Undergraduate students in the Graphics modules. This tested my understanding of Computer Graphics, C++ and OpenGL and allowed me to further cement the knowledge of game engine development that I had already learnt throughout my undergraduate years.

Period: Sept 2016 - June 2017

Company: UEA

Summer Associate Tutor

Animation Teaching

I helped teach the Summer Animation course at UEA. This involved teaching students 3DSMax, which was very close to my knowledge base in Maya. I assisted the students in learning animation techniques, as well as 3D modeling, texturing and rendering.

Period: July 2016 - Aug 2016

Company: UEA

Portfolio and Current Work

Wands: Deep Learning and Unreal, Oh My! (Oct 2018 - March 2019)

Machine Learning Game TechUnreal

Head to this page right here if you want to see the full project.

I decided to work on some feedback from various game studios that I applied to last year. I wanted to especially get some experience in Unreal and using external APIs, while also focusing on my C++ skills and core programming. The project was a success and I have since started work on a second stage to the project, due to be completed by June this year.

Indie Development

Head to this page over here if you want to see updates on this game.

Three things I enjoy immensely: D&D, coding games and pixel art. I've been running my D&D group for 2 years now, and have spend countless hours developing the lore of the universe that my players enjoy. I had been playing a few Roguelike games between writing my thesis, and became curious about how the a lot of these games were made. After a bit of research, I realised I had a lot of skills already to begin working on something in that vein, not necessarily for commercial release but more out of a curiosity of how it all functioned. So I decided to combine my players guild: The Dawn Deviants, with a dungeon crawler Roguelike game.

DD&D is created using Unity and C#. This project has encapsulated everything I enjoy within making a game, from the gratification of that function you've been working on for hours finally passing all the tests, to delving into more complex algorithms and trying to understand how they work and how to implement them, to working closely with artists to craft a fun and enjoyable experience. I plan to work on more features to the game as I get time to, and look forward to seeing each of my players characters implemented into the game. For more details on the game, I've started a progression page over here.

Dungeons, Dawns & Deviants

Game Development Indie DevUnity

Traversing Sparse Voxel Octrees

Research Game TechOptimization

Masters Thesis 2018

Branching from my previous research on Deep Learning, I became curious about the use of Voxel Octrees as inputs into a neural network. Realising I understood very little about octrees, voxels and compact data structures, I decided to take these on as my Masters thesis. The goal, ultimately, was to be able to create a Sparse Voxel Octree(SVO) out of a 3D mesh and to then compress the data using common compression formats, optimizing for compression size. SVOs were originally constructed by NVIDIA in 2010 for use in volumetric rendering and have been developed further in the past few years for greater optimization.

I worked within C++ and QT to create a piece of software that would turn any mesh into a SVO, and then provide options for compression. Usually, voxels create huge files which are unwieldy to store, so an interest for compressing these files was born. Optimization was key, first to reduce the file size overall and second, to speed up the read and write times of the compression so that it could be used in real-time applications.

Throughout the project, I learnt a lot about voxels, storage datasets and compression algorithms, especially towards practical use of all these within real-time. The project was successful and I scored a distinction overall.

Masters Game Development

The task for this assignment was to create a unique 3D game of our choosing. Taking inspiration from games such as Rust, The Forest and Don't Starve, I chose to create a surreal, infinite survival game. The player would be able to travel to an alternate fractal dimension to escape enemies and to search of permanent upgrades.

The game was written within C# in the Unity engine. The core algorithm implementations included terrain generation, fractal genration and A* pathfinding.

Included features: Infinite terrain with optimization and custom shader, inventory management, player equipment, foraging, crafting, building, combat, enemy AI and pathfinding, a morphing day/night cycle, and an alternate universe based on fractal systems.

Fractus

Game Development AIProcedural

SpeakEasy

Game Tech AnimationMachine Learning

Summer Internship 2017

I was hired to work with Dr. Sarah Taylor at UEA in the production of a Unity package based on her SIGGRAPH research paper. The research focused on the automation of turning audio speech into realistic facial animations.

The project involved heavy work within Python and C#, as well as C++ and C libraries. I found my skills being pushed beyond what I had learnt through my degree and was able to learn to adapt to working in a graphical software development environment for a real product.

Throughout the project I developed skills within audio processing, deep learning and blendshape animation coding and found myself constantly challenged in making these algorithms work within the limited framework of Unity C#.

Research Project

After attending SIGGRAPH 2017, during which I spoke with some technical artists from DNeg Vancouver, I became interested in the idea of using Deep Learning to solve a number of issues they had been experiencing. The most predominant of which was the fast and efficient creation of Level of Detail (LOD) meshes, which are used to display 3D objects at various complexities. These are used both in film and games to conserve polygon counts in scenes for rendering, and as such is a crucial area of research.

The idea was born from my work with Dr.Taylor, which used a Deep Neural Network to generate automated speech. In simple terms, there was a signal which could be processed quickly by a DNN in real-time. In the same vein, I realised that if you 'unravelled' a 3D mesh around a plane, you could, in essence, describe the entire 3D mesh as a signal. It would then be possible to train a DNN to perform reduction on the signal and to generate LOD meshes, which could then be reconstructed.

For my research project, I decided to perform a trial run of this system using Lasagne, Theano and Python, which proved promising but would require further research to be considered viable in a real-time application. The logic of the theory was sound, as confirmed by a number of researchers during my presentation, but carrying it further would have delved into PhD territory. Ultimately, the project was successful and I learnt a lot about deep learning and mesh reduction. To see the full poster you can go here.

Mesh Reduction Using Deep Learning

Game Tech ResearchMachine Learning

Traffic Simulator 2017

Graphics AISimulation

Group Masters Project

We were tasked with creating a graphical program that implemented several mathematical algorithms within it to operate some complex task. Our group settled upon a traffic simulator, that could randomly generate, populate and operate a simulated grid-based town full of vehicles.

My contributions to the project focused on: Engine development, optimization, rendering, asset management, UI development and troubleshooting.

The project was a C++ application built from scratch within the OpenGL framework. Implemented algorithms included A* pathfinding, random maze generator and city population.

The project source code can be found here.

Genetic Flocking Algorithm using NumPy

I was curious about the interactions of flocking systems and decided to implement one myself, though instead using a genetic algorithm to aide in the movement and decision making of the boids within the flock. I eventually wish to carry this on using a Deep Neural Network to calculate the movement patterns of the flock instead.

The project was written within Python using the NGL and NumPy libraries as a foundation, taking from the YABI flocking simulation as inspiration.

Flocking Sim

Game Tech AISimulation

The Jaguar

Technical Art FilmRigging

Technical Artist & Rigging

As part of the MSc at Bournemouth, I took part in a 6 person group project working on a short 30 second animation. My roles included rigging, pipeline management and assisting artists within various tasks, as well as render wrangling. This was a great opportunity for me to step into the shoes of a Technical Artist for the 5 weeks we had to produce the short.

This project really stretched the limits of my knowledge of technical rigging, and pushed me to work efficiently within a 5 week timeframe. The final piece was considered a success by both the group and faculty, with future work taking place on improving the quality of the short after the deadline had finished. I really enjoyed working on this project, as it gave me a great opportunity to work with artists in the same fields and to use my technical knowledge to help in forwarding the progress of our production.