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