Pharaoh's Tomb HD – A Remake Made in JavaScript with Kaplay

(pt-hd.iocaihost.me)

125 points | by JSLegendDev 17 days ago

16 comments

  • _Misanthrope 17 days ago
    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).

    • _Misanthrope 9 days ago
      Update: Added the pause menu in levels (press Esc). On touch, there is a burger icon to open it. You can restart the level or load the game from there as well now.

      Still a way to go to implement proper start menu and etc. :)

  • JSLegendDev 17 days ago
    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

  • simonw 17 days ago
    Great job making this work intuitively on a mobile touch screen.
    • vunderba 17 days ago
      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 17 days ago
      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 17 days ago
        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.

        • colordrops 16 days ago
          Nice they seem to work really well! The idea of relative movements makes a lot more sense than fixed button locations on touch screens.
      • _Misanthrope 17 days ago
        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. :)

    • pryelluw 17 days ago
      Yes and a bit more difficult but enjoyable. I hope someday we get good touch controls for a video game.
    • _Misanthrope 17 days ago
      Thank you, it means a lot!
  • butz 16 days ago
    HD should imply at least higher resolution graphics and updated audio, but this version seems to be just a direct remake, as far as I see. Unless I missed button that toggles graphics mode?
    • BrenBarn 16 days ago
      The graphics and the audio are both updated. The original didn't have the smoothing and fading in the graphics; it was almost just solid blocky colors. It's still lo-fi but not nearly as lo-fi as the original.
      • InsideOutSanta 16 days ago
        They did a really great job updating the graphics in a way that (in my personal opinion) makes them look more appealing than the original, but still makes them look like a classic videogame.
        • Narishma 16 days ago
          Yes, a trap a lot of HD remakes and fan-made HD mods fall into is that they upgrade sprite or texture resolution but keep animation framerate or geometry the same, which creates a janky/disjointed look that I can't stand.
  • vunderba 17 days ago
    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 17 days ago
      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 17 days ago
        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 17 days ago
          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.

        • ternnoburn 17 days ago
          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.
        • hombre_fatal 17 days ago
          Why would you compare a game framework to wasm?
          • zfg 17 days ago
            Because WebAssembly brings every game framework to the web.
            • hombre_fatal 16 days ago
              No, the game framework would have to be designed for that, or someone would have to put in a lot of work to get something like an emscripten pipeline working.
              • zfg 16 days ago
                They are designed for that.
  • mouse_ 17 days ago
    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 17 days ago
      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.

  • craniumslows 17 days ago
    My inspiration at learning TurboPascal and writing my first little games was this game! How cool. Very fun to see it again! Thanks.
    • _Misanthrope 17 days ago
      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. :)
  • Narishma 16 days ago
    There's some kind of collision detection issue going on as I immediately fell through the pyramid bricks in the first level and got stuck inside them.
  • teruakohatu 17 days ago
    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 17 days ago
      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 17 days ago
    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.

  • algem 16 days ago
    Pretty cool, i liked the touch controls on my phone. They weren’t perfect but were intuitive.
  • Dwedit 17 days ago
    It looks like the hitboxes are a lot tighter than the original version.
    • _Misanthrope 17 days ago
      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.

  • magic_hamster 17 days ago
    Okay, this is pretty cool.
  • BrenBarn 16 days ago
    Awesome. Can we hope for Arctic Adventure next? :-)
  • Geste 17 days ago
    Loaded fast, played nicely, very cool !
  • andrewstuart 17 days ago
    Tough game. Love the atmosphere.