Last week I launched nothing in particular. Which was intended to prove out the deployment system, but actually the thing what got launched wasn’t terribly impressive.
Since then, a week has passed, and I’ve managed to cook up a landing page:
Yes, that is WordArt.
This is replacing the old landing page, which was a “single <p> element with a link inside of it”.
This, too, is part of the build, dev, and deploy loop - while it constitutes a totally separate product which has its own build dependencies and lives in its own folder, when I turn on the local dev environment it starts live-updating with the rest of my tools (using nodemon to live-update the node servers, webpack to live-update the react tools, and now 11ty to live-update the website). When I deploy, it gets baked and deployed with the rest of the product.
As I mentioned, each sub-product is a self-contained unit - api (backend), client (frontend), frontpage (marketing website), and static (images and such)- and then the directory holding them contains the nginx-proxy, set-up and deployment automations that glue the project together.
So now there is a website at https://groovelet.com/ ! Forward progress.
I also made some forward progress on the BIOS screen that boots up with the game - here’s what it looked like last week:
And here’s what it looks like now:
It’s also significantly more animated. This is powered by some components I’ve been working on - <Cinematic>, <Play>, and <Typing>. Cinematic simply makes a “tick” available to its children, Play shows or hides elements based on the current tick, and Typing slowly spools out text elements based on the current tick - so I can build a quick animation like this:
The BIOS logo is simply animated in Asesprite, something that I’ve been trying to teach myself as I go:
Past that, I’ve spent some time trying to establish a basic server-side game loop - when a player starts a game, I want to start Doing Stuff To A Game Object on their behest. Much code has erupted of that nature - booting up a worker server, accepting websocket connections - but none of it does anything useful or visible as of yet.
One new test, though: