The Rabbit Hole by NuclearRedeye

[raw]
made by NuclearRedeye for Ludum Dare 48 (JAM)

"The rabbits have raided the village again, and they've cleaned us out! Get down there and find where they've taken our stuff!"

How deep will you dare go, as you make your way deep into The Rabbit Hole...

Overall, I think that I bit off more than I could chew with this, but I've achieved my goal of submitting something that works to the Jam, albiet the gameplay is hardly going to set the world on fire. I technically learnt a lot though, and it was fun building a Raycasting engine in TypeScript which consumed almost all my time.

Time permitting, I would've... - Used a maze generation algorithm to generate levels, and hence truely made the game infinate and befitting of the 'Deeper and deeper' theme. - Add some NPC's, raging rabbits of course, to battle as you traversed the depths of the rabbit hole. - Better Artwork! - Added more collectables. I just didn't have the time to draw more artwork. - Added more sprites, as the starting area is just a barren island. - More random events, e.g. certain levels filled with gas, etc. - Mechanics that require you to return to the surface, e.g. limited inventory weight. - Probably loads more that realistically, I would never have finished in time.

What I learnt... - RayCasting is hard, as in the maths is hard and a little beyond my expertise. - How slow single pixel operations are on the HTML Canvas. It took me ages to get the floor casting to an acceptable performance level by rendering on the CPU rather than GPU. - eslint can be a real pain at times, especially when trying to code fast.

Ratings

Overall 1845th 2.625⭐ 22🧑‍⚖️
Fun 1908th 2.025⭐ 22🧑‍⚖️
Innovation 1863th 2.2⭐ 22🧑‍⚖️
Theme 1432th 3.2⭐ 22🧑‍⚖️
Graphics 1718th 2.5⭐ 22🧑‍⚖️
Humor 1422th 1.737⭐ 21🧑‍⚖️
Mood 1749th 2.45⭐ 22🧑‍⚖️
Given 13🗳️ 15🗨️

Feedback

uboretsky
27. Apr 2021 · 22:58 UTC
Painful experience ...
AhSpike
01. May 2021 · 06:03 UTC
Good job. It's neat that the game is infinite. I like the look and feel of the game. Reminds me of pre doom 3d games. Would have been cool to see all the other things you wanted to implement, but that's just how jams go sometimes. keep up the good work.
ukra174
01. May 2021 · 12:15 UTC
OK, i totally like it! cool engine! Have you written it by yourself?
Mighty Mufflon Games
01. May 2021 · 15:02 UTC
"... , but I’ve achieved my goal of submitting something that works to the Jam,..."

I'm fine with that. I hope we see us at the next jam. :)
🎤 NuclearRedeye
02. May 2021 · 08:22 UTC
@ukra174 I did write it from scratch for the Jam, but the maths and specifics of the RayCasting code itself is derived from some tutorials that I studied earlier this year.
Kszaku
02. May 2021 · 08:43 UTC
>building a Raycasting engine in TypeScript

that is a respectable amount of dedication. I mean, LDJAM kinda is about testing your creativity and skills as a game developer. Some people did their best in areas like game design, graphics and level design, you did something incredible with engine programming and optimization.
Holly
02. May 2021 · 08:47 UTC
Nice game! Good job. I would only suggest to make the movement slower because It was very hard to navigate in the maze and sometimes it was more confusing not because of the maze but because of i didn't know where I've ended up with my movement.
progdamn
02. May 2021 · 09:45 UTC
I liked the game, but I would like to rotate myself with mouse
Jordgubben
02. May 2021 · 10:30 UTC
I got to the "brown" level, but then I got lost and could not find the next passage. The coins help a bit when trying to understand where I've already been, but a mini-map is desperately needed.
FloGames
02. May 2021 · 12:16 UTC
Turning around was very quick, I would have preferred using the mouse for looking around. Gameplay was also a bit barren, not much to do except walking around and collecting coins (also I think you can get a bit too close to the walls), but as you said, this can be the base for extending greatly and make a much bigger game. I like how every hole has a different name, gives a little sense of space / worldbuilding.
reheated
02. May 2021 · 13:03 UTC
I don't know why you say it's beyond your expertise - you did it! Well done implementing this algorithm.

It's a pity there isn't a "technical impressiveness" category in the ratings, because I think you would fare well... as it is, the gameplay has nothing special to it, the graphics is basic (though not unpleasant) and there's no sound.
Gargantus
03. May 2021 · 12:30 UTC
There's not much to the game apart from collecting coins. Wandering around a maze where everything looks the same and searching for an exit isn't really fun. Also there's no music and sound effects. It's cool that you learned a lot but the game itself is very barebones.
ToxicComputer
03. May 2021 · 12:40 UTC
Heyo! Fantastic job on creating a raycaster engine in just 72 hours, I myself am creating a raycaster engine and have everything working (well not everything, but the basics), but literally cannot do floor casting. If you have some messaging service, discord etc. Would you mind helping me out? Since its insane you wrote that floor castings in JS, and making it run amazingly.
Hexa3
03. May 2021 · 15:25 UTC
Congrats on your first entry and well done submitting it! It would have been awesome if you could control the direction with the mouse, as now it feels a bit clunky.
🎤 NuclearRedeye
04. May 2021 · 12:21 UTC
@toxiccomputer Thanks for the feedback. It was hard to get it working in a playable framerate when using any of the canvas drawing API's as drawing a pixel at a time was incredibly slow, hence I switched to using a memory buffer and then pushing that to the canvas in a single draw operation, got things performant (with some bugs which i've since fixed).

Did you notice that the code is Open Source? That might be a good place to start if you want to see exactly how I did it. The specific code that you're after is [here](https://github.com/NuclearRedeye/ludumdare48/blob/master/src/ts/raycaster.ts#L128-L218). I've since the submission tweaked it further fixing some bugs I had but I still have some further improvements planned to try and squeeze a little more out of it.

I'm not really active on any platforms, but happy if you want to start a [new discussion on GitHub](https://github.com/NuclearRedeye/ludumdare48/discussions) and I'll do my best to help you out.
thecoconutdream
04. May 2021 · 21:14 UTC
Good job. I definetely agree that it would be cool to change the perspective with the mouse as well.
LDJam user 240168
04. May 2021 · 21:36 UTC
Nice to see minecraft-style textures and doom-style raycasting, but it really doesn't fit the labyrinth idea, it's pretty hard to navigate here (small screen escalates it even more). Anyway, good job writing your own raycasting engine, that's a nice experience!
VixenMink
06. May 2021 · 04:29 UTC
First look: It reminded me of Doom and then I started to move around the cabin. Definitely could use some extra controls so you can strafe from side to side or use the mouse to aim where you are looking. This brought me back to old school plane controls of Resident evil or even the old Windows screen saver with the brick maze.

I like what you did combining the minecraft dirt bricks to make you feel you are going deeper underground
OadT
08. May 2021 · 10:47 UTC
The movement is painfully slow (maybe my computer just can't keep up with the computation :sweat_smile:) but reminds me of the game King's Field. I like that the fouth level is just a straight corridor after being stuck in the maze level for ages :smile: It's a bit unsatisfying to just be in a trap at the end though. But impressive work on building a raycasting engine!