Who am I?

Hi, I'm Noah Emke. I'm a game developer and programmer who recently graduated from the Rochester Institute of Technology (RIT). I love tinkering with just about everything and figuring out how things work. I also enjoy working on projects incorporating the concepts I learn in my free time. I am currently seeking a full-time position in game development, software engineering, or IT given my prior co-op experience.

What do I work with?

Languages: C# C++ Rust Java HTML CSS Javascript
Frameworks: MonoGame Bevy P5.js
Tools: Unity Godot Visual Studio Maya Git Gimp

What have I done?

Hover/tap for details.

A custom arcade cabinet built for developers, by developers.

Devcade is an entirely custom arcade system platform in Computer Science House(CSH) at RIT, started and led by me and worked on by several members of the organization. The project is built entirely from scratch with a custom cabinet design, custom menu and launcher, custom website, and custom api. All of these work together to play custom games made by the community.

At this point over 20 of these games have been made for the project. They range from small and simple casual games, to recreations of classics, and even some larger games with significant development time. Most of them are made by a mix of people already otherwise involved in the project and others within the organization but a handful have been a result of a university wide game jam we organized.

It's been shown off at multiple exhibitions, the first of which was Rochester Makerfaire 2022. At that point we had just barely put together the cabinet and painted it but since then it has been brought to Imagine RIT 2023, Rochester Makerfaire 2023, and soon Imagine RIT 2024. Additionally it has been shown at several smaller club events within RIT and we are working on building a second cabinet in one of the academic buildings on campus.

The project has been open source from the beginning with everything being public under the Computer Science House GitHub and more information available on the project website.

The Devcade arcade cabinet.

A roguelike, wave-based, platformer built in C# with MonoGame.

BankShot was built with a team of myself, Machi Dimps, Michael Robinson, and Aidan Vanburger initially as a class project over the spring semester of 2021. Over the course of this project, the team brainstormed several ideas before landing on this one and producing a planned outline of the program. Once we had a loose plan down we started building the various systems.

The core gameplay loop we ended up with was worked on a bit by everyone and consists of starting at the menu screen, spawning into a randomly selected wave, fighting 3 waves, shopping for upgrades during the break, starting the next set of waves, repeat until death and then repeat from the menu.

Speaking of which, the wave system was built to read a text file with a list of wave compositions and then randomly select from that list for each wave spawned. These wave compositions are similar to the map files but instead of a tile id at every spot, its a number representing one of the enemy types: chaser, pacer, ranged, and flying types, where they all behave as their name would suggest. According to git, this was mostly developed by me with misc additions from everyone.

Similarly, the shop system for upgrades also reads in a file with a list of possible upgrades and displays three random selections in each shop. Those upgrades that it selects from were built to be as flexible as possible, being able to change any stat we could think of, any number of them at once, and in either a flat added value or a multiplicative one. This was also mostly done by me with some foundation by others.

Maps were planned to be randomly selected from a folder of tile based map files every so many waves but due to time constraints we only ended up having one map loaded. The system to randomly select them is mostly finished so this may be added in the future as I come back to this project.

To manage and manipulate all of these files, I made an external tool to edit and make maps, waves, and upgrades. This tool is made with windows forms, unlike the rest of the project, and allows the team to easily make changes to several of the games' core systems. It was also planned to be able to edit the stats of each enemy class and of the base player but due to time constraints, this didn't get added along with some other bugfixes that just weren't priorities at the time.

The source for the project can be found here on GitHub . A video demo and downloadable exe may be coming soon.

The start of a new game.
The shop available after every third wave.

Asteroids-inspired arcade game, now built in Rust!

Void Break is an arcade style game based heavily off of Asteroids with some inspiration from Nova Drift and Bosconian. It's now built in Rust using the Bevy engine but was originally made in JavaScript with PixiJS and later using Canvas and some React.

Originally, the project was built for a class project using PixiJS for the first time. For this first iteration, the development was time constrained to 2 weeks and further limited by other classwork. What came out after those 2 weeks was a good base for hopefully something much bigger as I planned to expand and build on this as I find myself with time to work on it.

Soon after this, another class provided the opportunity to continue working on it in Canvas. So for that project I rewrote the core of the games rendering while learning the new framework but due to similar time constraints, didn't get much further with features. Later on, React was also added in to the surrounding web page.

Finally, in this past year, I had a desire to both learn Rust and work more on the Void Break project so once again, the project was rewritten using the Bevy engine. This time wasn't just learning a new engine or framework though, it was learning a whole new language and still in a relatively short period. At the point where this burst of work finished and other projects and school work took over again, the codebase is set up to expand significantly and, with some growing pains from the transition, running again.

At this point he game plays very similar to Asteroids in the basic concepts and objective but varies in several ways. The first of which is the movement style, where in Asteroids there is no friction whatsoever, here there is a good bit of friction. This produces a very floaty movement system that is a bit more comfortable to control while still placing emphasis on the movement and thinking a step ahead of where the character is.

Another deviation is the camera and world. In both Asteroids and Nova Drift the world is confined to the edges of the view and upon hitting the edge, the character is warped to the other side. In Void Break, the world is much larger with the camera staying centered on the player but it still keeps the ability to wrap around the world seamlessly by using a looping background and showing the other side of the world over the edges.

In the original implementations the asteroids were spawned with a size and frequency dependant on the current score and the number of asteroids already in existence. The shape was randomly generated for each asteroid and velocity as well as initial placement are random. Upon breaking an asteroid, it will fragment into others if it is large enough and increment the score. In the newer rust implementation, some other aspects were prioritized and due to the way the new engine works, procedural shapes were more involved to draw. Workarounds have been explored however and will be implemented along with much more as more free time becomes available to work on it.

Since the original was a web game made in JavaScript, you can try it out right here in your browser!

An asteroid after fragmenting.
A game in progress.

If the game appears cutoff with scrollbars, try opening the game in a new window here: Void Break.
Or if you are interested, the original project is on GitHub here and the latest iteration can be found here.

A web app for sharing, finding, using, or browsing factorio blueprints or blueprint books

The Factorio Library project is a work in progress webapp to share, find, use, or browse blueprints from the game Factorio. This involves the building of a frontend utilizing bulma and a mongoDB database, and a custom API built in NodeJS for accessing the database and managing accounts.

This project is currently hosted at factorio-library.noahemke.com/app.html and the api at factorio-library.noahemke.com/api .

If you'd like to follow the project, check it out on GitHub here .