Skip to content

danialjivraj/firedog

Repository files navigation

firedog

Firedog is a 2D game built from scratch with over 65k lines of code (+39k for tests) and over 1275 different assets (987 images and 288 audio files).

This game was created by using HTML Canvas and pure JavaScript without relying on external frameworks except for Electron, which was utilized to transform it into a Desktop application.

Story and Objective

Embark on a thrilling quest as Firedog to recover the stolen Cryptic Token, pilfered by an enigmatic thief!

This story-driven game features 10 maps (7 main story maps + 3 bonus maps), over 92 different enemies, and 3 bosses.
Your objective on each map is to eliminate as many enemies as you can, gathering sufficient coins to advance to the next stage of your journey!

Your progress, unlocks, and settings are saved automatically.

Preview

all maps

Videos
menuPreview.mp4
gameplayPreview.mp4
Images (171)

Menus (44)

Main Menu (1)

main menu

Map (5)

map map map map map

Enemy Lore (5)

enemy lore enemy lore enemy lore enemy lore enemy lore

Wardrobe (11)

wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe wardrobe

Records (3)

records records records

How to Play (4)

how to play how to play how to play how to play

Settings (1)

settings

Audio (3)

audio audio audio

Controls (3)

controls controls controls

Difficulty (1)

difficulty

Interface (1)

interface

Delete Progress (2)

delete progress delete progress

Pause (2)

pause pause

Game Over (2)

game over game over

Cutscenes (70)

Map 1 (7)
Chapter (1)

chapter 1

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 2 (7)
Chapter (1)

chapter 2

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 3 (7)
Chapter (1)

chapter 3

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 4 (7)
Chapter (1)

chapter 4

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 5 (7)
Chapter (1)

chapter 5

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 6 (7)
Chapter (1)

chapter 6

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Map 7 (7)
Chapter (1)

chapter 7

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Bonus Map 1 (7)
Chapter (1)

bonus chapter 1

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Bonus Map 2 (7)
Chapter (1)

bonus chapter 2

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Bonus Map 3 (7)
Chapter (1)

bonus chapter 3

Start Cutscene (3)

start cutscene start cutscene start cutscene

End Cutscene (3)

end cutscene end cutscene end cutscene

Maps (40)

Map 1 (4)

map 1 map 1 map 1 map 1

Map 2 (4)

map 2 map 2 map 2 map 2

Map 3 (4)

map 3 map 3 map 3 map 3

Map 4 (4)

map 4 map 4 map 4 map 4

Map 5 (4)

map 5 map 5 map 5 map 5

Map 6 (4)

map 6 map 6 map 6 map 6

Map 7 (4)

map 7 map 7 map 7 map 7

Bonus Map 1 (4)

bonus map 1 bonus map 1 bonus map 1 bonus map 1

Bonus Map 2 (4)

bonus map 2 bonus map 2 bonus map 2 bonus map 2

Bonus Map 3 (4)

bonus map 3 bonus map 3 bonus map 3 bonus map 3

Final Bosses (17)

Glacikal (5)

glacikal glacikal glacikal glacikal glacikal

Elyvorg (5)

elyvorg elyvorg elyvorg elyvorg elyvorg

N'Tharax (7)

n'tharax n'tharax n'tharax n'tharax n'tharax n'tharax n'tharax

Controls

  • Menus

    • Arrow Up / Scroll Wheel Up: Move Up
    • Arrow Down / Scroll Wheel Down: Move Down
    • Arrow Right: Move Right
    • Arrow Left: Move Left
    • Enter / Left Click: Select Option
    • Tab: Open/Close Enemy Lore
    • Esc / Right Click: Return to Previous Menu
  • Cutscenes

    • Enter / Left Click: Advance to the next dialogue/Skip dialogue animation
    • Tab: Skip entire cutscene
  • Gameplay

    • Movement:

      • W: Jump
      • A: Move Backward
      • S: Sit
      • D: Move Forward
    • Special Moves:

      • Enter / Right Click: Roll Attack
      • S (while in the air): Dive Attack
      • Q / Left Click: Fireball Attack
      • E / Scroll Wheel Click: Invisible Defense
      • Shift / Mouse Button 4: Dash Attack
    • Esc: Pause/Unpause Game

    • F1: Tips

Download

You can download the game by clicking one of the following links:

For Windows

For macOS

For Linux


The game isn't code-signed, so your OS may warn you on first launch.
  • Windows: on the "Windows protected your PC" popup, click More info → Run anyway.
  • macOS: on the "The application 'Firedog' can't be opened", run chmod +x /Applications/Firedog.app/Contents/MacOS/Firedog in Terminal.
  • Linux: if the binary won't launch, run chmod +x Firedog in the extracted folder.

Run from Source

Alternatively to downloading the game, you can clone the project and run it locally.
You'll need to run the following command in the root folder:

  • Electron
npm install electron

Then you can run the game by using the following prompt:

npm run start

Note: Make sure you have Node.js installed to be able to run the game locally.

Tests

The project is thoroughly tested using Jest, with over 3k+ tests and and average of 61% test coverage across all files.
You need to install the testing dependencies before being able to run all tests.

  1. Install all dependencies by running in the root folder:
npm install
  1. To run all tests use:
npm test

Diagrams

ARCHITECTURE.md
firedog.drawio (outdated)

Credits

CREDITS.md

Disclaimer

DISCLAIMER.md

About

a oop vanilla javascript story-based 2d game using html canvas, wrapped in electron

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors