EmuMan

Home Programming Music About

Programming Projects

A series of projects that I've worked on over the years, both for hobby and for school.




Cal Poly Esports Website

A full-stack web application designed to serve as the main hub for Cal Poly Esports. Features include an event calendar, news feed, club information, roster management, and more. The website was built using SvelteKit and is hosted on Azure, with a MongoDB database. There is also a user authentication system in place, allowing for administrators to manage their club's content.

The website can be found here.


Live Scoreboard

An application written in Rust that allows for the easy creation of live scoreboards and overlays for various games. The program runs a web server asynchronously in the background, but also presents a GUI in which values can be updated in real-time, like teams, scores, and more. The UI is written in gtk4-rs, and the web server is built using Axum.

The source code can be found here.


EGT Simulator

A web-based application to simulate the complex game mechanics behind Genshin Impact's elemental reaction system (EGT = Elemental Gauge Theory). This project was the first time I really felt comfortable with frontend development and styling. The simulation itself is correct for almost all scenarios, but there are a couple of edge cases I'm still working to cover.

The website can be found here.


corn

One of my primary passion projects, corn is a leaderboards-style Discord chat bot that I have been slowly adding to for the past few years. It started in Python as I was learning how to interact with different frameworks. Recently, in pursuit of a more robust structure, I migrated it to C# with the .NET framework, and also moved the data storage from JSON to SQLite. Today, corn is in 46 different servers and has many enthusiastic fans.

There are quite a few things you can do with corn, including ranking up on the server-wide leaderboards and generating images of corn with custom captions. I am working on getting it up on more public channels, but for now, you can either add it to your server here or click the Discord icon down below to join the official server.


Reddit Sheets

Reddit Sheets is a Reddit client built to run in Google Sheets using multiple different API interactions through a Python script. It was conceived when I wanted a good unblocked Reddit client for school use, but it ended up just being a fun project when virtual classes came about.

Unfortunately, since Reddit Sheets uses both the Reddit and Google APIs, both of which have limits (and would give you basic access to my account), it's not a document I can simply make publicly accessible. However, if you would like to set this up for yourself, you can find the source code here. There are also instructions to help you get started.


CPE-123 Coursework

I had a lot of fun messing around in this class (within reason of course), which was supposed to be an introduction to programming concepts using p5.js (Processing 5 in JavaScript). I ended up writing a small engine that wraps around p5.js, which I continually added to throughout the quarter. Eventually, it became a functional 2D/3D game engine with rudimentary axis-aligned bounding box collisions/physics.

I was going to upload the work onto here, but I figured it would be better to just link to the website hosted on GitHub since it's easier to both publish and maintain. So, you can find a list of the labs and projects here.


NPR Face Shader

A Blender addon that automatically generates smooth cel shading for non-photorealistic (NPR) characters. It offers a one-click solution to a process that has previously been notoriously tedious and time-consuming to work through: making complex 3D geometry look good with stylized shading edges in various angles.

There are a number of features built into the addon, including multiprocessing for performance improvements, automatic node group/material generation, multiple UV map support, and easy driver creation. You can find a link to the GitHub page and download here.


Blender MIDI Utils

If you've ever heard of Animusic, you probably have a pretty good idea of what this does. It basically allows you to take MIDI input and convert it into Blender keyframes, allowing you to easily create Animusic-like animations. Here is a small demo showcasing its capabilities.

If you want to try it out for yourself, you can find the source code and documentation here. It's been a long time since I updated it and made sure it still works, but I'm planning to revisit it soon.


C++ Wireframe Renderer

I actually made this during a summer camp at DigiPen back around 2016 (I think?). It was some sort of introduction to computer graphics course, and I had a lot of fun learning about how everything worked. The summer camp lasted, if I remember correctly, about 2 weeks, and I was very proud about what I was able to accomplish in such a short time from almost no C++ knowledge.

The application uses OpenGL, and everything down to the line-drawing algorithm is custom made. It also includes a simple .OBJ parser, which is how I loaded the models you see to the side from Blender. Because I wrote it so long ago, it is very buggy and probably packed with memory leaks, but I have it on my to-do list to clean it up and put it on GitHub for showcase. I will update here when that happens.