Making a browser game engine because all the existing ones suck

danyburton's picture

Around the time I posted my last post here last year was pretty much the last time I was productive for most of 2020. For some reason after that my brain became totally fried and I couldn't work on anything anymore. Near the end of the year I decided to retire and had a break from trying and failing to work on games until this year and now I am coming out of retirement to make some new good shit.
Right now I am making a new game library for browser games which I am going to call fish-tank or somethign like that. It's closest inspiration is lua löve which I think is just about the perfect game making library. It does stuff and it does it with ease, but it doesn't have much of it's own internal state which forces you to structure your game around state that the library creates (this is the reason I despise all existing browser game libraries and needed to make my own). Having little state from the library is great because it means you can pretty much design your game however you like and create whatever abstractions seem useful.
My library is a fair bit higher level than lua love admittedly, basically anything that I always implement in a game I make I am just implementing into this library which means some features by default are kind of limited to the kind of use case that I have. However, it is also designed so that all of the subsystems like renderer, soundplayer, inputhandler etc can be swapped out with your own version, you just have to implement one or two features that the library actually uses internally, like for example the inputhandler needs to provide functions for the gui system to know when the user presses buttons that control the gui. Since these subsystems are just built on top of web apis it's not that hard to implement your own one (except the graphics one, that was a real bitch).
When I say they are implemented how I use them, for example, the input handler takes all input from the keyboard and any connected gamepads and maps all of it into one virtual game controller, so all you can ask it is 'is the B button pressed' and it checks all of those actual input sources then tells you for the imaginary controller. So if you need 2 player or want to handle the mouse you are gonna have to create your own at the moment. To be honest though 2 player and mouse support should probably be added to the default one later.
Yeah so at this point the library is almost done, I just need to do the necessary stuff to implement the gui system, and then I have an approximately finished game library v1.0.0. Once that is done I am gonna make a metroidvania type game where the whole game is in a house but you have to shrink and then you can talk to rats and stuff and go inside pipes. wahooo.
Also I am gonna bring back my website and I am gonna release a scathing polemnic on why I hate the 'alt-game' label.