Factorians

A screenshot from Factorians showing multiple numbered aliens on the screen
                    and a spaceship firing torpedoes at those that match the factor chosen

Project Details

Project Duration: 1 month
Project Completion Date: August 2023
Development Environment: Unity & C#, Google Sheets
Team Size: Solo Project

My Contributions

Unity Developer
  • Built the entire game in Unity and C#
  • Selected and integrated 3D, sound, and music assets
  • Created visual effects including particle systems and trail renderered
  • Created scripts to load level settings and text from Google Sheets for instant tuning without rebuilding
Game Designer
  • Created and iterated systems & mechanics
  • Balanced gameplay by tuning level settings
  • Collected, prioritized, and acted upon feedback
Analytics Engineer
  • Authored code to send analytics statements to an xAPI Learning Record Store
  • Crafted custom reports to provide insights about play patterns

Summary

Factorians is a space shooter (SHMUP) learning game which builds fluency in recognizing the prime factors of numbers. Similar to the classic arcade games Galaga or Galaxians, the player pilots a spaceship and shoots down aliens which dive down the screen, but these aliens are labeled with numbers and the player shoots them with prime factors. When an alien is hit its value is divided by that factor, and when its value reaches 1 it explodes. A heat mechanic forces players to be selective in the factors they friend to keep up with ever-larger waves of aliens, engaging the player in not just recognizing factors quickly but making strategic decisions.

I created this game as a challenge to see how much I could get done in one month of part-time work on a game, advance I presented it for feedback at both IGDA Detroit and IGDA Ann Arbor chapter meetings.

Programming: Level Settings from Google Sheets

To make this game easily tunable, I created a Google sheet with various settings for each level.

  • At startup, the game downloads and parses the sheet as Comma Separated Values, so it's easy to change settings and test immediately.
  • Settings include game variables like enemy spawn rate, how many factors an enemy can have, and which numbers are used as factors in this level.
  • The spreadsheet also includes intro text and tip for the level's start screen for easy updating.

An excerpt from the live Factorians spreadsheet

Programming: Learning Analytics

I also built this game to store anonymous performance data using the xAPI learning data standard. At the end of each level, xAPI statements are sent to a Learning Record Store allowing analysis of questions such as:

  • How long did this level take?
  • What was the learner's accuracy? (How many factors matched no enemies? How many factors matched multiple enemies?
  • Are particular numbers giving a player difficulty?
  • What levels are players successful/unsuccessful at?
Custom reports built on the Watershed platform allow for quick and easy analysis.

The analytics dashboard showing a summary of some of the data collected

Mechanic: Factor Torpedos

The moment-to-moment action in the core game loop has players practicing the key skill: quickly identifying factors.

  • When the player presses a prime number or clicks one of the primes on the right side, their ship fires a shot at every enemy that has that as a factor.
  • The shot tracks the alien it was initially fired at, and when it hits it reduces that alien by its own value. (If an alien has 105 as its value and is hit by a 5, it reduces to 21.)
  • Repetition builds recognition of factors. Tips at the start of the level provide shortcuts to recognizing factors as well (e.g. if a number's digits add up to a multiple of 3, it's divisible by 3).

The player's ship is firing multiple torpedoes at enemies with 5 as a factor on the screen

Mechanic: Heat

With no limit on ammunition, a player's best strategy could be to constantly hit all the numbers. To get the player to focus on identifying factors -- ideally common factors across multiple numbers on the screen -- every shot raises the ship's heat level, shown in a bar in the lower left which goes from red to green.

  • Heat rises whether a shot is a valid factor on the screen or not, but rises the same amount whether a factor targets one enemy or multiple, encouraging strategic play
  • Heat constantly cools slowly
  • If the heat gets too high, the system locks down and can't fire. The screen pulses red and an alarm sounds until heat is low enough again
  • After playtesting, I added a "coolant flush" to bring heat down more quickly after it locks, getting the player back in the game quickly
  • While firing is locked by high heat, the player can continue to fly and dodge enemies

High heat has temporarily locked this player's firing

Mechanic: Prime Bomb

Part of identifying factors of a number is recognizing when a number is prime, which is to say its only factors are 1 and itself. To aid gameplay and allow for aliens with higher prime values, the game includes a Prime Bomb.

  • This weapon is unlocked only at higher levels when higher prime aliens are also introduced
  • Prime Bombs take time to charge -- they can't be fired constantly or right at the start of a level
  • When fired, the bomb flies out in front of the ship and then sends out four streams of energy which rotate around it
  • The energy streams destroy any alien they touch with a prime value (including enemies who have been reduced to prime values) but don't affect aliens with multiple other factors
At higher levels, the action can get fast and furious and the Prime Bomb allows the player to not only clear out large prime numbers, but allows strategic play where the player reduces other enemies to primes and then clears all of them out.

A prime bomb is obliterating enemies with prime values on the screen, while leaving
                    others untouched (21 isn't prime, so it's unaffected)

Future Ideas

I would like to return to Factorians and:

  • Craft an upgrade system where players can spend points to improve their ship's speed, firing rate, cooling rate, etc.
  • Create additional types of levels including bombing runs and boss fights
  • Build the game for Android tablets and iOS