The past several weeks have been pretty crazy. Ashley and I went on Train Jam. We didn’t finish a game, but we had a lot of fun and I think I finished most of a physics engine … so much so, that I decided to turn ƒArt.TS into a game engine specifically built around Verlet physics integration, and 2D physics games. Anyway, I started a dev blog (linked below) and wrote some thoughts about the project and where it might go.
My current plan is to borrow from, merge, and reimplement (in TypeScript) several sources that are pretty close to what I want, but that don’t exactly play nicely together. Also, none of these sources is written in TypeScript, so adding types/learning more about TS in general will be a cool side goal. Anyway, here’s the sources I’m looking at right now (in no particular order):
Why would I do this? These libraries already exist, and ports to web technologies exist for them too (Box2D is ported via Emscripten [source] to WebAssembly). Well, a couple things:
- Learning – it will just plain be cool to build something that integrates the above-mentioned libraries in a cohesive and meaningful way, with types and good unit tests and good test coverage and unified documentation. I feel like, doing this, I can’t help but learn a lot.
- Integrity – these libraries are all cool and interesting, but are all kind of built for their own specific purpose and with their own specific API in mind. An integrated library/API would make it easier to use the conceptual content of these libraries … together.
- The Internet – doing this in a way that is open source, and web-tech-friendly is very appealing to me. Something that exercises Web Workers for complex simulation (probably/mostly physics, integration, and collision detection) and is focused on building PWAs seems like a compelling tool that I don’t think exists yet. If things go well maybe this library also does some server-side and/or networking stuff … WebSockets? WebRTC?
Alright, so, I’m doing this, and this is what I’m doing. Stay tuned for some forthcoming posts covering design goals, integration schemes (Verlet), particle systems, procedural world generation and/or character animation, and rendering/shaders (I have a somewhat complicated relationship with WebGL).