Shard
'Shard' is a work-in-progress 3D, first-person RPG video game and game engine, written in C, C++, and GLSL.
It loads .obj and .mtl, and it (forward) renders in OpenGL.
The engine has features such as serialization/deserialization, albedo/specular/normal mapping, fog, an easily-toggleable editor mode with 3d manipulation widgets (gizmos), point/direction/spot light sources, text rendering, billboards and 2d images, water rendering, asset hot-reloading, and more.
Board Game
'Board Game', which is a pseudonym, is a work-in-progress digital web-application-based implementation of an existing physical board game, for solo play, or 2-5 person online multiplayer. It is closed source. It consists of:
- a front-end built using Angular13
- a backend consisting of a Golang HTTP and Websocket Server which serves the main application, and is the api for the app.
- a MongoDB database which hosts static game data, as well as user data
- a discord.js chat bot, which acts as a query interface to the MongoDB instance via message commands
The web application has features such as:
- a separate-to-the-main-game simple search interface to query cards that exist in the board game by their relevant properties
- replays, allowing completed games to be viewed again and arbitrarily scrubbed
- post-game analysis via a few hand-implemented charts (no charting library, just manual geometry calculations and svg)
- IndexedDB caching of static data (reducing # of network calls on refresh), and some user data, like replays, or current local single player game progress, enabling offline solo play
- PWA - uses web workers to enable offline usage
- depends on less npm packages than the default initialized workspace of an Angular project, by manually auditing which we need and removing those deemed unnecessary, and rewriting our own simpler and more performant verisons when appropriate.
Hexyz
Hexyz is a open source, tower defense game for Mac, Windows, Linux, and HTML5.
It's written using Lua, and the Amulet game engine. The game is single player, hexagonal-grid, with a few tower types and mob types, and scaling difficulty. The project began as an attempt to develop a library which could generate hexagonal grids, and perform common operations involving them such as:
- translating mouse coordinates to hex coordinate space and back
- generating useful Perlin and Simplex noise maps over the grids for procedural terrain generation
- pathfinding/searching via BFS, Dijkstra, and A*
In testing the library, eventually something resembling a full game was born. It now supports:
- procedural levels
- hand-drawn sprites
- self-composed soundtrack, and sound-fx
- single game save and load
- seeded maps and randomness (playing the same map twice has the same enemy spawns, for example)
Play In Browser
hexyz source code repository
Shuttlecock Armaggedon - Ludum Dare 50
For Ludum Dare 50, a large organized game jam, an event where many people by themselves and in small teams aim to make a video game in 48-72 hours, Nick Hayashi worked with Nick Saulnier to create Shuttlecock Armaggedon, a game about delaying the inevitable. Perhaps 20-24 hours of raw programming time was invested into this, between two days (one of the three that were technically allowed by the jam's rules did not fit into Nick Hayashi's schedule)
ldjam.com link (playable in browser)
Fertilization Frency - Ludum Dare 52
For Ludum Dare 52, a large organized game jam, an event where many people by themselves and in small teams aim to make a video game in 48-72 hours, Nick Hayashi worked with Nick Saulnier to create Fertilization Frenzy, a tower defense game played on an isometric grid surrounding the theme of 'Harvest'.
ldjam.com link (playable in browser)
Text Twist I Love You - Trijam #212
For Trijam #212, a small game jam that has the brutal limitation of only 3 hours of available development time, Nick Hayashi made Text Twist I Love You, a masochistic word game inspired by an old flash game called 'Text Twist'.
itch.io page (playable in browser)
Kings Cup Web Application
'Kings Cup' is a social drinking game. In the midst of covid, Nick Hayashi wrote a digital implementation of Kings Cup for friends to socialize and play with eachother over the internet while social distancing.
This project is a multiplayer real-time web application frontend and backend. There have been past versions written using Lua which would export to html5 canvas using emscripten. Current verions use Angular13 on the frontend and NodeJS + ExpressJS + SocketIO for the backend.