Pharaoh's Tomb HD – A Remake Made in JavaScript with Kaplay
31 comments
·January 18, 2025_Misanthrope
Controls hint! ↓
You can press R to reset the level. And L to load the latest autosave. I didn't expect game to be shared this early so there is missing info about these controls :). (Also, touch users would be out of luck in this one, sorry..)
Btw, there are just 5 levels so far (original has 60).
simonw
Great job making this work intuitively on a mobile touch screen.
pryelluw
Yes and a bit more difficult but enjoyable. I hope someday we get good touch controls for a video game.
vunderba
Works fine on a PC but I found that the jump is measurably delayed (at least on iOS Safari) which makes it about 10x more difficult, anyone else experiencing this?
Hoping this is an implementation detail and not something inherent to the Kaplay engine.
colordrops
I was thinking that I haven't yet experienced this particular control mechanic for a video game. It's not perfect but it works on a mobile touch screen.
modeless
I faced a similar problem when porting Cave Story to the web with mobile support, and I like the solution I came up with: https://thelongestyard.link/cave-story/
Cave Story is not a simple or easy platformer and clearly not designed with touch controls in mind, but I've been able to finish the game with touch controls alone.
_Misanthrope
Yeah, I wanted minimal approach like make it just work without adding anything on top. Although, overlay buttons would have been much easier to implement, heh. Also, jump or shoot (at least) as buttons would be more accessible and I might do that as option once I focus on touch later on.
I'm also toying with the idea of zooming it in with a follow cam, but I'm getting much ahead of myself now. :)
_Misanthrope
Thank you, it means a lot!
vunderba
Nice. I didn't detect any measurable input lag - which is good because these old-school games can be tough as nails.
I briefly flipped through the docs - it seems like Kaplay shares a lot in common with PhaserJS. I'd be interested in a comparison between the two frameworks.
JSLegendDev
I made a video explaining why I prefer to use Kaplay. It's 12 min long.
It's not a direct comparison with Phaser but I think it could give you a clear picture of where Kaplay stands and what it offers compared to Phaser.
Link here : https://www.youtube.com/watch?v=o8a6jXRnYfc
zfg
Why is it better than just doing it in WebAssembly?
With WebAssembly you'll get native builds as well as web builds, higher performance, and you're not restricted in the language you use.
JSLegendDev
Without going into the Web/WebAssembly debate, KAPLAY is just too good as a library to pass up. It's intuitive, easy and comes with a lot built-in. It makes making games actually fun with it's ECS-like API.
If KAPLAY existed as a WASM runtime or in another language, I would use it.
hombre_fatal
Why would you compare a game framework to wasm?
ternnoburn
Use the technology you know and move quickly in. For a game like this, personal preference is way more important than optimal language/technology choice.
craniumslows
My inspiration at learning TurboPascal and writing my first little games was this game! How cool. Very fun to see it again! Thanks.
_Misanthrope
Nice! I was learning Pascal waay back at school. And this is my first game that I'm dabbing into game dev with, as well. What a small world. :)
teruakohatu
Games back then were brutal. I am not sure if there is a bug but I got stuck on the third level with no way to continue nor anyway to die. Just stuck.
_Misanthrope
Yess, the old games did have softlocks like in this one! You can press R to reset the level. And L to load the latest autosave. I didn't expect game to be shared this early so there is a missing info about these controls. :)
pavel_lishin
I wonder if anyone's remade Dangerous Dave.
I've never beaten it! I'm not even sure if I've watched a video of the game being beaten.
zfg
A Dangerous Dave remake:
https://www.maizure.org/projects/lets-make-dangerous-dave/in...
https://github.com/MaiZure/lmdave
Deadly Dave, based on MaiZure's remake:
https://github.com/skoperst/deadly-dave
Another one compiled to WebAssembly:
Geste
Loaded fast, played nicely, very cool !
Dwedit
It looks like the hitboxes are a lot tighter than the original version.
_Misanthrope
Yes they are! They copy the actual object dimensions, more or less.
In the original, hitboxes were of tile size (16x16). It made the game much harder to play, especially nowadays when even knowing this fact, it felt very unfair or deceiving at times. There are many quirks that were happening in the background because of it and it was fun remaking that.
Although, this change is one of those that are meant to refresh it and bring closer to today's standards.
mouse_
Mobile controls could potentially be improved by anchoring first touch position
I touch and drag right to move to the right, but I find the character sometimes starts to move to the left simply because my thumb jitters naturally, even though I'm still holding to the right of first press.
I also find it hard to anticipate if my taps are going to jump or throw a spear.
Awesome job!! I remember when HTML5 was first pushed as the replacement for flash based webapps, the input latency was always terrible and I mourned the death of Flash. I'm glad that this seems to be a mostly solved issue, most of the recent web games I've tried have felt as good as native or flash.
_Misanthrope
It is actually implemented as you mention, there is just some weird thing going on with that, not necessarily tied with touch itself. There is a threshold in place as well to prevent that, yet it happens at times. Will have to investigate more at some point.
Jump is a single tap or tap and hold for continuous jump until direction changed (translated to some point from original). Spear is a double tap (which means jump is slightly delayed and double has to be quick). Yeah, it is not optimal setup, check other comments about this topic. :)
And thank you very much for your words! I feel you with Flash vs HTML5 Canvas debacle, heh.
magic_hamster
Okay, this is pretty cool.
andrewstuart
Tough game. Love the atmosphere.
This was made with the JavaScript Library Kaplay. Check it out here : https://kaplayjs.com
Game was made by Misanthrope. His twitter can be found here : https://x.com/petergencur