Dungeon of Souls by GullynGames

Controls:
WASD or arrow keys to move
Click to shoot
Press M for Map
Explore the Dungeon of Souls and try to find the pieces of your soul, fragmented many years ago by the King of Souls. Beware of the empty souls guarding the dungeon.
About
Dungeon of Souls is a roguelike top-down dungeon shooter where your goal is to find the fragments of your soul by defeating bosses guarding three other fragments of your soul.
Development
I made this game for the Jam, in three days. It was made with HTML5 Canvas, and plain Javascript.
| Youtube | https://gullyngames.itch.io/dungeon-of-souls |
| Original URL | https://ldjam.com/events/ludum-dare/45/dungeon-of-souls |
Ratings
| Overall | 886th | 3.087⭐ | 25🧑⚖️ |
| Fun | 772th | 3⭐ | 25🧑⚖️ |
| Innovation | 878th | 2.761⭐ | 25🧑⚖️ |
| Theme | 814th | 2.957⭐ | 25🧑⚖️ |
| Graphics | 969th | 2.652⭐ | 25🧑⚖️ |
| Audio | 571th | 2.881⭐ | 23🧑⚖️ |
| Humor | 669th | 2.472⭐ | 20🧑⚖️ |
| Mood | 950th | 2.763⭐ | 21🧑⚖️ |
| Given | 20🗳️ | 19🗨️ |
To the game, it's really cool you were able to make it into a dungeon-like. Although the trick simply became "circle them and shoot"
Big question though...
### How do you do rotations! :open_mouth: Are you using images, or HTML5's built in drawRect to your advantage?
## Regardless, nice game! (And that's NOT because of my bias since you made it with plain JS :eyes:)
I do rotations with:
var x = mouse.x;
var y = mouse.y;
player.rotation = Math.atan2(y - player.y, x - player.x) - Math.PI / 2;
That's to get the player's rotation whenever the mouse is moved.
I do use context.drawImage to render the images on the screen.
I used Threejs this time, so not sure if that counts as pure anymore haha

I Beat it!
Nice score lol
### Design-wise,
The starting shooting speed and enemy health / number of enemies made the game feel really slow starting off.
The mechanics of adding fragments was pretty cool
I think the map in the top right could be more helpful if it showed more than just your current room, and the full map would be Way more helpful if it showed untraveled adjacent rooms so I know where I need to check next or where the dead ends are.
After killing the boss I got
```Uncaught ReferenceError: enemies is not defined
at Player.update (player.js:106)
at update```
in the console, you are also still console logging color information about transitions :P
### Overall,
Props for proc gen!
The music is nice. Love that you made everything yourself, if you made the music too.
Adjusting the attack speed and move speed could really help a lot.
btw @itsdanidre if u are asking about canvas rotations u want to save, translate, rotate, restore,
just google js canvas rotations https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/rotate
I had initially googled it, and all the translate and restore stuff brought a bad taste to me from a previous tutorial attempt (the player would rotate, but the axis would be skewed), so it'd also move off screen :sweat_smile:
However, after looking at the source code from @gullyngames's game :eyes: I understood the actual process; I originally thought I would have had to draw a rotated image on an empty invisible canvas, then send the pixeldata to the main canvas to be displayed..which deterred me, since I'm not sure if that'll slow down or speed up rendering (constantly sending new pixel datas)
Now though, after creating my own vcam and rendering system, I think I know a way to easily incorporate rotations into my game, which I'll definitely use for future updates. The only question now, is if all those *save, translate, rotate, restore* calls would slow down the game or not. :thinking:
I was logging the transitions because they were the last thing I did... Forgot to remove the console.log
@igoreshka That's what I was planning to do next. I only had a few hours left and thought I wouldn't have enough time.
Here's how I've done so far :confetti_ball:
