Skip to content

carsonSgit/Lost-Souls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ—ก๏ธ Lost Souls

Welcome to the adventurous world of Lost Souls! In this JavaScript game, you embark on a heroic journey to cleanse a dark cave of menacing monsters, safeguarding nearby villagers. Armed only with a trusty sword, navigate perilous terrain, vanquish foes, and confront the ultimate challenge: the ๐Ÿ”ฅ Fire Demon, in an epic showdown for the realm's tranquility. Lost Souls beckons players to step into the shoes of the hero villagers desperately need.

Note

Lost Souls was developed as a JavaScript game for a final project. It combines immersive gameplay with captivating artwork and audio, providing players with an engaging experience.

๐ŸŒŸ Credits

Developers ๐Ÿง™โ€โ™‚๏ธ

Artwork ๐ŸŽจ

Entities

Map ๐Ÿ—บ๏ธ

Audio ๐ŸŽต

SFX

Music ๐ŸŽถ

Fonts โœ’๏ธ

๐ŸŽฎ Gameplay

Play as the valiant protagonist on a mission to rid the cave of monsters and protect the villagers. Defeat enemies, navigate challenging landscapes, and prepare for the ultimate battle against the fearsome Fire Demon.

Interested in the game but don't really want to download it? This is a demo video for you then :)

lostsouls_demo.mp4

How do I run it?

FIRST OPTION

  1. The link in the about (image below) OR click this link image

SECOND OPTION

  1. Download the repository by whatever means you'd like
  2. Open the ~/Lost-Souls/Lost-Souls directory
  3. Now, simply run the project locally (I suggest using the Live Server extension on Visual Studio Code but however you want to run it works fine!)

The boring stuff

This project was made for my 5th semester Computer Science Game Programming course's final project which got a 94.4% :)

The whole thing was done over the course of 2 weeks, but the actual coding and building was more accurately a week. I had a great time working on this and think it turned out pretty good!

Issues

The game isn't perfect. My friend (NoahGJAC) and I spent a long time trying to work through these bugs but we ultimately had to sacrifice them so that we could focus on getting everything we wanted out.

  • Movement [STILL IN-GAME]
    • Your character's movement feels slippery, almost like you're ice skating. This could be fixed by setting the movement to 0 when you change directions or stop moving
  • Collision detection [STILL IN-GAME]
    • Our teacher mentioned to the class that collision detection is a challenging issue that game devs often struggle with and I can tell why. I honestly spent hours trying to figure out what part of the player hitbox I wasn't checking to no avail :( so if you really try to break it, you can walk through some walls and even sometimes get stuck.
  • Map rendering [RESOLVED]
    • Prior to the project, I had never even thought about how to render or even create a map. To build the map I used tiles from Szadi art which look great! The only issue is I didn't realize that rotating a tile in Tiled's map editor would cause so many problems. Because the tile was not recognized as a sprite in the tilesheet, it essentially corrupted all rotated tiles. The issue here is that I rotated a lot of tiles to build the maps. To fix this, I had to go through each map and modify the .json's to then create a map that made sense. So the end result are essentially maps designed in .json.
  • Hit detection [STILL IN-GAME]
    • When you hit an enemy that is mid attack, they enter their hurt state but once that ends, they go back to their attacking state. This is a problem because if you dodge an attack and slide behind an enemy to attack them, if their attack is still in progress, they'll immediately turn to face you and their attack will go through instantly which can result in your death.

Important

Okay! You made it this far, if you're really that interested, below are all the pre-building blueprinting & planning documentations that we had to write up for our project proposal. While not everything we planned on doing caame out in the end reesult, having it all written and drawn out before starting was a huge help for development!

๐Ÿ“ƒ Requirements

  1. The player appears on screen.
  2. The player can move.
  3. The player can swing their sword.
  4. The player has animations.
  5. The player has a valid hitbox.
  6. The player has a set amount of health.
  7. The village appears on screen.
  8. The village tiles are collideable.
  9. The village has a parallax background.
  10. The village has a heal station.
  11. The village's heal station heals the player.
  12. The village has a path to the cave.
  13. The cave appears on screen.
  14. The cave tiles are collideable.
  15. The cave has a parallax background.
  16. The cave has entities.
  17. The cave has platforms.
  18. The cave entities have health.
  19. The cave entities have sprites.
  20. The cave entities can move.
  21. The cave entities can attack.
  22. The cave entities can die.
  23. The cave entities have animations.
  24. The cave boss can spawn.
  25. The cave boss has more health than other cave entities.
  26. The cave boss deals more damage than other cave entities.
  27. The cave boss has unique animations.
  28. The cave boss can die.
  29. The player can return to the village.

๐Ÿค– State Diagram

PlayStates

Below are the play states for the game Lost Soul

PlayStateDiagram

PlayerStates

Below are the states for the main character of Lost Soul

PlayerStateDiagram

EntityStates

Below are the states for the enemy entities in Lost Soul

EntityStateDiagram

๐Ÿ—บ๏ธ Class Diagram

classDiagram

๐Ÿงต Wireframes

Title Screen

titleScreen

Title screen displays a Play & Credits option.

On "Play" selection, the player stands up and appears in the village (shown below).

On "Credits" selection the credits for Code & Assets will be displayed.

In Village

inVillage

The village is a safe-zone for the player. Music will be playing and the player can wander around without worry of enemies.

There will be a building where the player can go to heal after clearing the cave level.

In Cave

caveWithMonsters

The player will have to fight off all of the enemies. Once the enemies are all dead, a new enemy will appear, initiating the Boss fight.

Boss Fight

bossFight

The boss is a lot more powerful than a normal enemy, he also has more health.

About

Final Game Programming Project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •