Thread of Life

A top-down 2D role-playing game

Thread of Life

Last Updated: 11/30/2019

Description

 A top-down 2D role-playing game, Thread of Life will feature a large world comprised of hundreds of maps rich with NPCs, dungeons, random and scripted battles, and hidden secrets.

 Originally, the engine was developed as 32-bit Windows application in C++, and utilized the SDL 2.0 library for input polling and drawing. A custom map editor was also created which supported several map layers and transparency, collision data and NPC scripting. These maps were stored in small (~16 KB) files for easy storage and laoding.

 With the evolution of HTML5 and increasing cross-browser support for modern web features, this game is now being developed to be playable in-browser. The game is now written entirely in Javascript, using native keyup/keydown event polling to support keyboard controls, and making use of the HTML5 canvas element for visually rendering the game world.

Tiled is now used to create the game maps, as opposed to a custom-built map editor. I find its UI easy to work with, it is able to support everything that the main game engine needs (including layers and collision data) and it features out-of-box support for exporting maps to JSON (which is a big plus, since the game is written in Javascript).

 Some of the core functionality of the game (particularily the player-following camera) is inspired by a project developed by myself in Fall 2013 (entitled "Dusty Vent" with a few other SUNY Fredonia students including Nick Freville, Rob Szkutak and Aaron Chan, as a submission in the 24-hour hack-a-thon "Hack Upstate".

 Eventually, the hope is to introduce multiplayer functionality once the game's basic mechanics are finished, so that players from all over can play on the same maps as each other and join forces to take down tough enemies, and chat in realtime as they play.

 Controls: Move - W/A/S/D; Pick Up Item - [,]; Open Inventory - I; Open Character Menu - C; Focus Chat - T; Send Message - [Enter]

 Click on an item in your inventory to select it. Click an empty spot in the inventory to move the item, or click outside the inventory window to drop the item.

Future Plans

  • Create enemy and NPC creation tools for rapid development
  • Add item / gold drop system for mobs
  • Script story events
  • Implement multiplayer using a Node.js back-end and WebSockets (via socket.io)

Back to Projects