A selection of my work

About Me

I'm a game developer, programmer, and designer based in the Seattle Area. By day, I'm a gameplay engineer, and by night, I explore many interests across a wide variety of areas. When I'm not dancing or travelling, the majority of my time is focused on game development, graphics and rendering, 3D modeling and level design, supporting the TF2 competitive scene, and making neat little things on the web. Previously, I graduated with a B.S in Computer Science from Ithaca College with minors in Mathematics and Graphic Design. Check out my portfolio here, my github page linked in the footer, or take a look at my resume below!

Contact Me

Email me and say hello at contact@benjaminwelsh.com

Non-Euclidean Raytracing using Vulkan

A Non-Euclidean raytracing engine and puzzle game demo built in C++ and Vulkan

For my senior project at Ithaca College, I am building a non-euclidean engine and puzzle game demo. I am building the renderer using raytracing with the Vulkan raytracing extension. Raytracing is uniquely good at handling non-euclidean environments gracefully. Instead of needing a series of stencil buffers and render targets in a complex tree structures, rays can simply be "teleported" as they traverse the scene. The power and flexibility of raytracing also allows me to have lights and shadows cast through portals, which I believe to be a first for real-time rendering for games.

The next phase of the project is setting up the game and physics environments. I am leveraging PhysX for physics simulation due to its documentation and openness for modification (which is necessary for handling non-euclidean interactions). The gameplay itself will be a physics puzzler. I will upload more videos as further portions are complete.

Close Project

Graphic Design

A selection of my art and graphic design

City travel brochures
Created for Graphic Design I at Ithaca College NZ Travel Brochures - Full Res
TF2 Promotional Posters
Created for various Competitive Team Fortress 2 orgs TF2 Promo Work
Fall 2019 Process Book
Final Project for Graphic Design I at Ithaca College Process Book

Close Project


A 2d game engine built on libgdx and artemis-odb

EelEngine is a 2d entity-component-system(ECS) based game engine built in java. It uses libgdx for core engine functionalities and artemis-odb as its ECS framework.

I created this over about 8 months starting in the summer of 2017. On the project I originally created it for, I was the principal programmer. Therefore, I focused much of my efforts on the in-engine editing tools. EelEngine has an in-engine level editor with sprite placing and layers, navmesh editing, and a bsp-like physics editor. The rest of my work was focused on developing a robust ECS framework to control all of the rendering, input, physics, sound, game logic, and the coupling between these.

At Ithaca College's 2018 Global Game Jam site, a group of around 6 club members (including me) worked on an untitled steampunk mail-delivery game (shown in the screenshots on this page).

View on github

Close Project


A game made for Ludum Dare 43 in 54kb

Adam Lastowka and I created Omnibar as our entry into the Ludum Dare 43 game jam. I decided to try and make my entry under 64kb, as Adam and I had recently started working on a 4k demo project, and I was particularly excited about the graphics work we had been doing on it. The theme for this jam was "sacrifices must be made". I decided to implement this theme by creating a simple first-person shooter with a single bar that's your health, ammo, and xp bar - sacrifice your health by playing aggressively, or sacrifice your speed to save your health by playing cautiously.

The Tech

Omnibar was created almost entirely using C, C++, and GLSL. All of the rendering takes place in a fragment shader. This shader uses a number of signed distance functions (SDFs) to define the world and its geometry. The rendering is done by raymarching through the SDF field. When appropriate, shadow rays and a reflection ray are also casted from the initial ray hit. The physics is a very lightweight engine simulting spheres in a world defined by the same SDF that defines the world's geometry. Part of this process was defining a lightweight header file defining vec2, vec3, vec4, and a number of glsl builtins. This let me copy and paste the world SDF with minimal tweaks (mostly changing swizzles into function calls). The awesome music was composed by Adam Lastowka using the V2 synthesizer. This produces a pair of assembly files that can be linked in alongside an .obj file to play the music.

View on github View submission on Ludum Dare

Close Project

In-Game Medals for Team Fortress 2

In my 3 years as a competitive TF2 player and community member, I've had the privilege of working with a number of competitive leagues and community events to create medals that are added to Team Fortress 2 as awards for participants and winners. This is a complex process, involving concept art, modeling, rigging, texturing, creating the materials, and packaging to ship to Valve. Below are images and details of a few of my favorites.

TFCL (Team Fortress Competitive League)

The first set of medals I created, these were for TFCL, a startup league.
Created by me, with design and concept art input from Kaiga and ArraySeven.


I created these medals for RGB LAN 3, the largest east-cost TF2 tournament. The design is based off of concept art by Juan Armen. I finalized the design and modeled, textured, and rigged the medals.

View the rest of my works on the steam workshop

Close Project

A 4k Intro

Adam and I are working on creating a 4k intro in our free time. (Demoscene on wikipedia) The project is relatively early in development. However, we have some screenshots of various graphics and procedural generation tests below. Also see Omnibar, the game I created on the same codebase in 72 hours and 54kb for Ludum Dare 43.

Close Project

Visualizing Course Enrollment Data

For the summer of 2018 I worked with Ali Erkan, Professor of Computer Science at Ithaca College, doing research on Ithaca's course enrollment data. I was able to build several network-based models of IC with this data. This gives us a way to understand the big picture and trends as a whole, rather than simple summary statistics. We placed a large emphasis on the visualization aspect of the project. In 2018, Ithaca College is going through a review process of the Integrated Core Curriculum, or ICC, its general education program introduced in 2013. By studying and visualizing how the network of courses changes over time, we can analyse how the introduction of ICC impacted the structure of the college itself.

Throughout the summer, I worked on three separate interactive visuals. Our work also continued into the fall, where I created an additional visual, and we presented our work at Ithaca College's Data Day.

Visualization 1

Course departments to Major departments

View live here
This is a web-based interactive visual that shows the relationship between a student's major (grouped by department) and the courses a student takes (grouped by department). My main goal with this was to get a feel for the data and start working with it. While not surprising, it shows a number of things we'd expect to see. Most majors take writing (WRTG), ocupational therapy (OT) students take tons of ocupational therapy courses (OTBS), but also take a healthy dose of biology), and the music majors, and the strongest connection on the board is between TVR and TVR.

Close Project

Non-Euclidean Spaces in UE4

Close Project