ASCII Game Engine

C++, Ncurses, Entity Component System, MVC

A terminal ASCII game engine and two accompanying games created with C++. The game engine provides to the client the necessary tools with which that can extend with their own game logic to create games.

My game engine follows the Entity Component System. It provides abstract Entities which are holders of abstract Components which are raw data (such as position, velocity, health, etc...). It also provides abstract Systems which act on Entities with certain Components (for example, a movement system would act on entities with position and velocity and move the entity).

The client game programmer can then extend the engine with new Components or Systems to create different games. I created two games in the engine which can be seen in the accompanying images.

Manipulation of the terminal uses the NCurses library and the Model View Controller Framework to accept user input, calculate the next game state and display the state to the screen.

I used a UML diagram to help plan out and implement this project.

This code is private. Available upon request.

GIF displaying two games made using the game engine.

Personal Website

Svelte, SvelteKit, TypeScript, JavaScript

My personal website (this site) made with primarily Svelte and SvelteKit.

I was watching a Fireship video about Svelte and SveltKit and thought it was an interesting framework. I had been planning on updating my old Ruby/Ruby on Rails website to a JS framework so I decided to use Svelte.

Svelte and SvelteKit has been a pretty fun experience so far!

Etch-A-Sketch

HTML, CSS, JavaScript

This is among the first projects I made that I felt were "polished." Thus it holds a special place in my heart. The last commit for this was March 24, 2020.

This is a browser version of an Etch-A-Sketch board or a sketchboard. There is a canvas made up of pixels with which the user can draw by hovering over a pixel. The board can be cleared and resized as desired.

The functionality was all acheived using vanilla JS and the document Web API.

Old Personal Site

Ruby on Rails, PostgreSQL, JavaScript, HTML/CSS/SASS, DigitalOcean

My old personal site using Ruby on Rails.

Other than the information viewable from my current site, this was a dynamic site where users could create accounts to comment on my blog posts. User authentication used the Devise gem. Blog posts and comments were handled with their own Models, Views and Controllers to allow for CRUD actions. Also used partials to adhere to DRY principles.

Discord Timer Bot

Ruby, SQLite3, Google Cloud Platform

A Discord bot coded in Ruby and utilizing the discordrb API library to create server timers

Users could create timers in their servers which would be saved to an SQLite3 database. These timers would display as locked voice channels and update periodically. I hosted this bot through a Google Cloud Platform's VM instance.

See More