I have not touched the code for Warning Call in a few years. However, I have been thinking about it quite a bit. One problem I ran into is that the complexity of the codebase outstripped my ability for quick "jump in / jump out" coding sessions. A lot of this was due to my inexperience with TypeScript when I first started the project. (I also didn't know anything about Promises at the time)
In the years since, I've done one 7-Day Roguelike Challenge entry, but that's about it for large projects.
To make projects like my 7DRL easier, I've been tinkering with some "bare bones" roguelike games using ROT.js and a very small codebase I've coalesced around. Just don't call it an engine.
There is a very lightweight repo called bare bones, which basically gives you the stereotypical "@ on a map" experience, but with a streamlined engine to handle user interface and basic animations in a browser.
The next level up is called basic bones and does a bit more. The point here is to make the most boring game possible – really just a skeleton of a game. But one that makes it easy to extend. It leaves you to fill out the interesting parts, but avoid having to re-engineer things like asynchronous input, gamepad support, menus, targeting interfaces, and a core "game loop" to easily expand events and actions on.
I've spent some time filling out basic bones and have a few more changes left before it is (re)settled:
- Start Menu
- Gracefully handling animation (nearly done)
- Gracefully handle events that trigger other events (same)
- Streamline directory structure and *.ts file
- Footer bar with auto-update
- Basic "examine at" functionality with mouse and gamepad stick support
So far the basics feel really good. By starting with the annoying things that tripped me up in the Warning Call (targeting, animation, complex event-chaining, menus) I can start re-building Warning Call by copying more and more modular chunks into the basic bones.