Photo of me

Jianwen Ding

Gameplay Programmer

About me

Hello! I'm Jianwen Ding, a programmer, game developer, and senior BSCS student at the University of Virginia.

I love seeing how software allows interesting ideas to come to life, especially in game engine and graphics work.

I have experience making low level systems in C++, games in Unity and C#, and webserver backends in Java.

Experience

Associate Game Engineer

Storm Flag Games · Time Worked: Jan 2025 - June 2025

  • Worked on the C++ game client for a large scale MMO.
  • Debugged the animation system of the client.
    • Patched transparency handling, removing crashes and animation spasms.
    • Adjusted mousepicking to work with animated models.
    • Implemented a dirty flagging system for animating previously static objects.
  • Patched an SQLite save corruption bug and implemented save repair functionality.
  • Added Lua functions exposing more of the client's graphics engine to scripters.

Summer Game Design Intern

IndieCade · Time Worked: June 2025 - July 2025

Trailer by my teammate Micah Ballard
  • Interns took part in the 2024 IndieCade Climate Jam, alongside work like drafting plans for how a game can push environmental causes.
  • Formed a team of 8 within the jam to build Frogology, a conservation simulator made in Unity and C# with two other programmers.
  • Owned the animal behavior and the quest system, in a loop that has you learning about nearby animals while catching them.
  • Animals traverse the map toward points of interest, moving toward prey and away from predators.
  • They detect each other within a field of view or a radius, emulating sight and hearing, and avoid collisions as they move.
  • Out of range and out of sight, animals dematerialize, so the map keeps living without paying for the physics.
Out of view animal AI
Editor view of the overarching quest flow
  • Built the overarching branching quest system, plus a Unity editor tool laying out quest connections and contents visually.
  • An editor tool for dialogue that branches on completed quests came out of the same work.
  • Gated most progression behind it: sleeping, dialogue branches and catching certain animals, with saving for quest and species progress.

Projects

Skyline EngineScreen shot of the Skyline engineC++ game engine with Vulkan and WebGPU renderers.

Time Span: Nov 2024 - Current

Team Size: 4 people

Flying around a loaded map
  • A general purpose engine in the long run, and for now a place for the team to dig into whatever each of us finds interesting.
  • Worked on the WebGPU backend of the renderer and the entity component system.
  • Using Dawn WebGPU, implemented cascaded shadow mapping that drops shadow resolution for objects further away.
  • Used dynamically scaling buffers and instanced rendering to improve performance.
  • Organized a shared interface between the Vulkan and WebGPU renderers, and the CMake system for building against either.
  • Created the initial draft of the entity component system that the team later expanded on.
A loaded scene in the engine
The Last CupScreen shot of The Last CupA 3D puzzle platformer made with UVA SGD.

Time Span: Fall 2025

Team Size: 5 people

  • Made with UVA SGD over Fall 2025, one of five developers on a 3D puzzle platformer built in Unity 6.
  • Programmed the straw squirt mechanic: water projectiles fired from the straw tip, their impacts, and the layer rules that keep them from colliding with each other.
  • Wrote the rat hazard: rats walk a pipe node to node and reverse at the ends, and a water projectile stuns them, so the squirt mechanic is what counters them.
  • Split the pipe routes out into their own component, so a level can lay out new paths without touching the rat code.
  • Built the death screen fade and wired it to the checkpoint respawn.
  • Extended the starter third person controller and added pitch variation to the projectile audio.
Flight Render ProjectScreen shot of the flight render projectC++ and OpenGL project made to learn rendering.

Time Span: Sept 2024 - Nov 2024

Team Size: Personal project

Flying around a loaded map
  • A learning exercise in C++ and rendering as a whole: the program loads models and lets you insert lights of different types.
  • Built with Visual Studio Code, OpenGL, GLSL and C++, using SDL and Assimp. Models were pulled from The Models Resource.
An overhead view of a loaded map
  • Learned the basics of vertex specification, and implemented lights of different types and fields through GLSL.
  • Used Assimp to process 3D models into usable vertices and textures, and texture arrays to load several textures onto one mesh.
  • Built a cube map texture for the skybox, and applied quaternions and linear algebra for transform matrices.
  • Wrote a render manager that simplifies loading many instances of a model and different light types.
  • A UV system automatically generates custom UVs for texture arrays, offsetting whatever padding is required.
  • A transform class homogenizes moving, rotating and scaling, with parent transforms for relative placement, and specular maps vary reflection across a model.
Multiple lights and models loaded at once
StrandTitle of the game StrandA survival roguelike about fending off zombies.

Time Span: 2022 - 2024

Team Size: 9 people, then personal from 2023

A clip of me playing Strand
  • Started as a project of a game development club I founded, worked on during meetings by about 9 people, and continued solo after my graduation.
  • Made in Unity and C# with GitHub for source control. The loop is collecting scrap while fending off zombies.
  • Acted as project lead and directed art and music, and drew a good share of the pixel art myself in Piskel.
An example of a generated map
  • Programmed the randomly generating map: a grid of rooms, each assigned a difficulty, function and set of opening directions.
  • Wrote a text processor that turns values in a .txt file into room layouts, which rooms are then assigned at random to match their openings, function and difficulty.
  • Designed a resource room system that places them at dead ends to stop aimless wandering.
  • Handled enemy behavior design and development: 5 unique types on a shared base class giving them finite hp, a stun state and the ability to be grabbed.
  • Their movement ranges from walking at the player to flying around them and firing projectiles.
  • Programmed weapon behavior, split between normal scrap and golden scrap, the latter with unusual properties like teleportation or projectiles.
Every enemy in the game

Game Jams

Riptide GardensTitle of the game Riptide GardensA farming game with a constantly shifting base.

Time Span: 1 week in 2024

Team Size: 3 people

  • Made for the Spring 2D Jam '24 in Unity and C#: escape starvation by planting a garden on an ever-shifting island.
  • Built 10 plants sharing a base of timed food production and no water placement, from plain producers to ones that help or sabotage their neighbours.
Remanent of Davy's CrewTitle of the game Remanent of Davy's CrewA horror game based around fending off ghosts.

Time Span: 2 days in 2024

Team Size: 3 people

  • Made for the 2024 Husky Jam on the theme "Lighthouse", in Unity and C# with two other programmers.
  • Wrote the ship, sea monster and ghost ship AI.
  • Designed level system and enemy spawn rates.
Checking InTitle of the game Checking InA satirical hospital clerk simulator.

Time Span: 2 days in 2023

Team Size: 6 people

  • Made for Ludum Dare 54 on the theme "Limited Space".
  • Created functionality to admit, waitlist or reject a queue of patients.
  • Built the patient generator on top of a teammate's data, and the room vacancy and waitlist system deciding who can be admitted.
Combo InfinityTitle of the game Combo InfinityA fighting game based on maintaining a combo.

Time Span: 2 days in 2024

Team Size: Personal project

  • Made for Ludum Dare on the theme "Keep it Alive", in Unity and C#.
  • Implemented main mechanic centered around keeping a combo alive until a target hit count.
  • Designed six levels based on perpetuating a combo while dodging moving hazards.