Ella C Tucker

&The Rest

Hello!

My name is Ella! I'm a software developer with a primary focus on simulation and graphics. I love working with lower-level code that transforms lots of data, fast. Mostly that means I know more than my fair share of C++ tricks.

While I do plenty of that professionally, this site mostly showcases my personal projects. I've been making games for almost 10 years now, starting with my first Ludum Dare entry in 2015 (they got better; I swear). I always have a side project or two going, and I'll be posting about them on my blog.

Outside of the computer, I dabble in electronic music, Magic the Gathering, and obscure rules-light tabletop RPGs. I'm based out of Kansas. I'm 23 years old. Oh, and I'm a proudly-visible trans woman!

If any of that sounds like something you'd like to chat about, feel free to reach out on Mastodon! You can also follow the Atom Feed of this site's blog.

Below you can find some of my favorite projects I've worked on. There's a slightly more expansive list here, though I still haven't copied over everything from my itch.io or Ludum Dare page.

Recent Posts

Featured Projects

PipeDoll

2023 - 2023

PipeDoll is a 2D motion capture animation addon for the Godot Game Engine. It uses Google's MediaPipe library to capture motion data using a standard webcam. This creates something like a paper doll animation.

The project originated at a Hackathon where my team developed a game using MediaPipe to record animations. That version was a cobbled together as most Hackathon code is, and required running a Python webserver to provide data from MediaPipe. But the results were good enough to inspire me to put together a much more usable Godot extension.

Read More

This project is a real-time voxel raytracing renderer which I unfortunately never got around to giving a creative name. It uses the Vulkan rendering API and provides features such as directional shadows, reflections, ambient occulsion, image based lighting, and FSR upscaling/antialiasing. The renderer was developed as my senior capstone project at K-State!

As with any renderer there's a lot that I'd like to have added such as global illumination, better denoising, and support for larger scenes. But it's not bad for my first experience with Vulkan!

Read More

ectert

2020 - 2021

ectert is a CPU raytracer, based on James Buck's The Ray Tracer Challenge. It's written in C++, and has features including Blinn-Phong lighting, shadows, reflection, refraction and anti-aliasing. It also has a very naive implementation of multi-bounce indirect lighting.

ectert isn't the most advanced renderer, but it sparked my interest in graphics programming, specifically lighting. It was also my first foray into C++, which has since become one of my main languages.

Read More

CIS536 Caustics

2021 - 2021

CIS536 Caustics was a course project for a Computer Graphics class at K-State. The goal of the project was to render geometrically-accurate caustics using photon mapping, in Unity. The project was inspired by the idea of a "caustic map" in Yaobin Ouyang and Xueqing Yang's "Generating Ray-Traced Caustic Effects in Unreal Engine 4, Part 2." However, my project computed the caustic map ahead of time and stored it to disk to be reused.

The implementation unfortunately suffers from several issues. Ray-tracing shaders were far out of scope for the class, so the implementation uses raycasting in Unity's physics engine instead. This doesn't provide enough accuracy or performance as would be desired for this application. It did, however, allow for some very interesting visualizations of the caustic map generation.

Read More

Outline Runner

2020 - 2021

Outline Runner is a parkour shooter with a time slowdown mechanic. It's one of my longer-term game projects, developer with a friend over several months.

The most interesting technical component is the outline shader that gives the game its distinct look. This works by comparing the normals and depth values in screen space, and setting the color to black if the difference is large enough.

Read More

The Ouroboros Labyrinth is a puzzle game about a snake eating it's own tail. It was the 1st Place winner of the 2021 K-State Spring Game Jam.

The game is programmed with the Godot game engine. The most complicated component by far was the computation of shrinking the snake as it ate. That system faced several rewrites over the weekend to account for new scenarios and improve performance. Some of the puzzles stumped me as the creator — my teammates were pretty devious coming up with them.

Read More

My CIS115 included a data science research project applying various text analysis metrics to US congressional speeches. These metrics include basic calculations such number of words and frequency of words in different categories as well as more advanced metrics such as the Coleman-Liau Index and sentiment analysis. My teammate and I decided that the most interesting way to examine this was to chart changes in these numerical metrics over time. After filtering, the dataset included 959,237 speeches over a timespan of 138 years.

This yielded many interesting results — the graphs were much less noisy than would normally be expected in data science. Our professor, Dr. Shamir, was impressed and worked with us after the course to publish the research. With his help, we were able to publish the work in Heliyon as "A Data Science Approach to 138 Years of Congressional Speeches" (doi:10.1016/j.heliyon.2020.e04417). It also received some media attention with commentators drawing conclusions of varying rigor from the work.

Read More

cobblestone

2016 - 2020

cobblestone was my own mid-level game development framework. It's written in Dart and uses the WebGL and WebAL APIs for rendering and audio respectively. The overall design of the framework is strongly inspired by LibGDX, with abstractions like SpriteBatch, Texture, etc.

I created cobblestone to solve the problem of creating lightweight web games. Being web-based and easy to load helps imensely for getting ratings in game jams like Ludum Dare. My prior engine of choice, LibGDX, has a web exporter but I found it hard to use, and the exported games were large due to transpiling Java code.

Read More