Portfolio


About Me


I'm a game developer, programmer, and designer studying computer science and graphic design at Ithaca College. I have many interests across a wide variety of areas, but the majority of my time is focused on game development, 3D rendering and modeling, data visualization, and making neat little things on the web. Check out my portfolio here, my github page, or take a look at my resume below!

Contact Me


Email me and say hello at hello@benjaminwelsh.com

EelEngine


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

Omnibar


A game made for Ludum Dare 43 in 54kb

Omnibar was mine and Adam's 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 githubView 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.

RGB LAN 3

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