explorers

Personal Project

Platform: Mobile (Android/iOS) & PC

Tools Used: C#, Unity

Duration: on and off for 6 months

Team Size: self

Role: everything (for now)

Due to conflicting interests by working at EA and Google, this project is on indefinite hold until there is no such conflict.

Although I learn a lot from my professional projects, I try to stay active as a coder and game designer by also working on my own personal projects. Explorers is one such project. A fast paced dungeon crawler, Explorers serves as my playground for designing modular gameplay, testing quirky game mechanics, and ultimately, designing new ways of doing game AI. The game is a constant work in progress, so the look, feel, and concept is always changing. Currently the game has functioning:

  • Mobile and PC controls

  • Pathfinding/NavMesh movement

  • Interactions with objects in the scene (ex: turning torches/candle lights on and off)

  • Melee & Ranged attacking

  • Specialized attacking based on weapon type (i.e. bow vs one handed axe vs staff)

  • Weapon auto-sheathing

  • Attack/Wander state machine based AI

  • Simple UI for attacking/health

For an android build of the game, click here.

For a PC build of the game, click here.

For a sampling of some of the codebase of the game, click here. 

Android build has been tested on Google Pixel C tablet. Currently no optimization for mobile has been done, as the gameplay is still being built out. Eventually mobile will have optimized models, graphics, etc... Additionally the game is not currently guaranteed to run on older Android devices due to graphics API dependencies.

Builds last updated on 5/23/2017

Code last updated on 6/22/2017

Programming Choices:

With any video game project, it doesn't matter how thought out the design of the game is, any good programmer knows that the design will change during production, sometimes going a complete 180. With this in mind, I set out to make my code modular enough so that if I had to add on or remove components of the game it would be simple. 

The hallmark of this choice comes in the modular components that are attached to game objects to describe how they behave in the world, and how others can behave with them. Instead of having one big character class that contains movement, attacking, spell casting, and so on, these are now split up into different components. Having an object in the scene attack, be attacked, be interacted with, or be allowed to move is all done by just attaching the appropriate module to the object, and then setting the high level parameters such as movement speed, attack type, and so on.

Of course, this does have a downside that when objects interact with each other they have to go through an extra "module manager" layer in order to interact. But this additional layer is a small price to pay when I can easily remove or add components to an object to define its role, instead of having one giant class where i'd have to toggle components on and off.