Castle Game Engine: Web target – big progress, first 3 demos to try

(castle-engine.io)

97 points | by zfg 3 days ago ago

21 comments

  • flohofwoe 8 hours ago

    Interesting that it is written in Pascal:

    https://github.com/castle-engine/castle-engine

    The minimal demos are still surprisingly big though (same ballpark as Unity web builds for similar simple demos).

    For a language without runtime I would expect a couple hundred kilobytes at most for those simple demos (but the download is 6.4 MB compressed and decompresses to 43 MByte, and takes significant time after the download is finished to start). Would be interesting to figure out why dead code doesn't seem to be removed by the compiler (e.g. is it because of the engine design, or because the Pascal-to-WASM compiler doesn't support dead code elimination). Also why is the compressed to uncompressed ratio so big, there seems to be a lot of duplicate code or data in those WASM files.

  • azakai 15 hours ago

    Very cool!

    The wasm file here could be optimized more. It looks like a 43 MB wasm is downloaded, and wasm-opt -O3 shrinks that to just 14 MB. It might also be faster that way (due to inlining and other optimizations). Startup will definitely be faster.

  • thih9 2 hours ago

    Protip: in the "2d invaders game" - press a movement key ("w" or "d"), hold it and then press fire ("w"), holding it too. After the initial shot the key repetition will start and you'll spam a series of bullets across the screen.

    This is how I won on hard mode and it still took me a couple of attempts.

  • andsoitis 2 hours ago

    Author articulates why he programs in Pascal: https://castle-engine.io/why_pascal

  • nicholasmoser 12 hours ago

    It's kind of crazy to see this project posted here on hackernews just now. I've been trying to compile an open source Delphi 7 project and have been having issues sourcing a dependency called OpenGLLib. Through my searches I actually bumped into the Castle Game Engine a bunch! Unfortunately it looks like the usage of opengl doesn't exactly line up.

  • jbverschoor 6 hours ago

    Never understood why cocos doesn't get more love.

    • flohofwoe 4 hours ago

      We evaluated Cocos about 2 years ago and frankly when comparing it to Unity on one side and small and specialized web engines like PixiJS, Three.js, PlayCanvas or Babylon.js on the other side, it's just not all that great, starting from tooling and ending with the engine architecture.

      • orkasi 3 hours ago

        What did you end up using for the web?

  • tomovo 17 hours ago

    Nice 90s vibe. Web target is cool. The invaders demo though... I have to say AD+W is not a good set of key bindings for that game.

    • spartanatreyu 16 hours ago

      WASD are the normal commands for movement in games.

      Pressing forwards to shoot feels wrong though.

      This feels like it would be better with double keybinds. Arrows + Space for non-gamers, WASD + space for gamers.

      Don't just change it to arrows though, that's going to be painful for laptop users who don't have those crappy half sized arrow keys (see macbook, framework, etc...).

      • vunderba 15 hours ago

        > WASD are the normal commands for movement in games

        Maybe for first-person shooters, but not for shmups, and definitely not for classic arcade style games.

        To your second point the reason it feels unnatural is because mapping movement + actions to a single hand is usually not a good idea if you have the opportunity to distribute them.

        • justmedep 14 hours ago

          It’s also the default in Factorio

      • lazycog512 15 hours ago

        WASD is more of a mouse+keyboard thing since in a standard desk layout you can't extend your arms nicely

        ZXCV(ASDF)+arrows I would say is more standard for non-mouse games with keyboard bindings, cave story and touhou both go this route.

        • technion 4 hours ago

          It's always been interesting as a left handed person using mouse on the left side then pushing the keyboard over to use wasd.

          • ordu an hour ago

            I wonder, hand't any left-handed nerd tried to make a left-handed keyboard? I'd definitely try that, if for some magical reason my handedness was changed.

            I searched and found some left-handed keyboards, but they are missing important things. Like they use qwerty-layout instead of ][poiu. The worse, they keep Enter on the right side and CAPS on the left. So you cannot remap Control key onto CAPS and use it with your pinky without twisting your right hand uncomfortably, when your left hand is on the mouse.

    • OccamsMirror 9 hours ago

      Even the language is a 90s vibe.

  • 999900000999 12 hours ago

    Love it, I'd prefer a more popular language, but this is really cool.

    Docs aren't great yet, but that's probably not a priority yet.

  • mathgladiator 17 hours ago

    Cool. I love to see progress for any new engine.

  • wizzwizz4 16 hours ago

    If you press Ctrl+Alt+Delete, it thinks you're still holding Ctrl+Alt afterwards, even if you're not. The same for Alt+Tab. The web exposes whether modifiers are pressed in the keydown event, but the game engine is trying to keep track of this information separately for some reason. (I'm not sure whether this is a Castle Game Engine, pas2js, or fpc library bug.)