Inspiration

We went into the hackathon wanting to create a game of some sort. Once we decided on a dungeon crawler, we saw the opportunity for an ingenious way to improve your typing speed through a fun, dungeon based game.

What it does

Sorcerer's Ambition is a dungeon crawler that features a protagonist Jaysun, travelling through a dungeon searching for more power, and ultimately more runes. He battles different opponents and meets the enigmatic Zygas who advises against entering the dungeon. Upon collecting more powerful runes the typing complexity increases, yet so does the power of the spell. Because the player acquires more runes, the typing difficulty increases, and helps them to practice gradually.

How we built it

We had a object based file structure that was tied together in our index.js file. We had six folders: /assets /libs /scripts /drawing /misc /utilities assets holds all of the images in the project, libs holds the libraries (only one in this case), drawing is a folder that contains a plugin to draw basic shapes, utilities holds useful utilities such as a tool to create a 60FPS timer and detect / wait for keypresses

The miscellaneous folder was all of our class declarations. These classes are as follow:

encounter.js This extremely complex class ran the that pitted the player (player.js) against an enemy (enemy.js), allowing the player to cast spells (spell.js) and displaying the GUI in statistic bars (statbar.js). The encounter class sequences the interaction by methodically incrementing a value called "obj.counter" to operate different parts of the code. enemy.js

  • this more simple class was used to detail the:
    • location of the enemy
    • battle / map textures player.js
  • this class was used to detail the:
    • motion of the player
    • positioning of the player
    • possible wall collisions of the player
    • spells the player could use (uses spell.js) spell.js
  • this class was used to detail the:
    • names
    • required runes
    • effect of the spell
    • amount of time the player was granted to cast the spell
    • amount of possible runes that the player could use
    • the mana cost
    • the name of the animation the corresponds to the spell
    • the amount of frames in that animation The spell class also handles the spellcasting interface and helps to deal damage to the enemies or to heal the protagonist. statbar.js
  • this class handled the GUI for the player's health and mana, and the enemy's corresponding health as well. ## Challenges we ran into delusion ## Accomplishments that we're proud of We were proud of the smoothness in rounding in character motion. We were also proud of the animation of the character, the transitions between battle and the map, and elegance of the stat bars. ## What we learned Splitting objects into separate classes definitely helps to organize them, you need to plan code before going in or else you'll have to redesign it. Slight typing errors cause tremendous pain.

What's next for Sorcerer's Ambition

In our planning we had ideas for more runes, spells, monsters, shop / spell configuration, new combat system, an overarching plot, and an eventual final boss.

Built With

Share this project:

Updates