3 ms·
What would be interesting is if there were a language-agnostic library that handles the annoying and complicated game engine things like optimizing the list of
by nonbirithm 7y ago
What would be interesting is if there were a language-agnostic library that handles the annoying and complicated game engine things like optimizing the list of OpenGL draw calls or pooling audio resources, which would take forever to buggily reimplement - then have people write bindings to it in whatever arbitrary language they want.
For example there is a version of the LOVE game engine that targets ChaiScript instead of Lua[1].
What I really want is a version of LOVE that targets a lightweight LISP like Janet.
(I know, fennel exists. But imagine having a battle-tested game engine like LOVE in any LISP at all.)
And yeah, I'm implying LOVE should be that library. They have pretty much everything you'd ever need for a gamejam. I'll never touch GL.h again.
As for what the author of DOME says on exposing fewer abstractions than LOVE, I found I didn't have to muck around with low-level details like window resolution that much. LOVE provides the functions wrapping all that and preventing undefined behavior while benefiting ergonomics. The process of resizing the window which took far longer than it should have for me to get right in C++ is handled by a single call to love.window.setMode - and it handles hidpi and fullscreen and stencil buffers and MSAA and a bunch of other things[2]. Imagine implementing all that yourself, supposing that yes, you really do need that stencil buffer in the future. The work has been done already.
Where LOVE's very large standard library becomes useful is when I code myself into a corner with some inefficiency or wrong drawing output, then I look at the wiki and discover this neat feature I never knew existed that solves the problem. As an example, I wanted to control the size of a sprite batch, but drawing it ignores width and height. Then I found there's a neat thing called love.graphics.setScissor, which lets you push and pop a drawing region. Using it solved the problem with necessitating a rewrite of any internals.
Things like that make my day.
[1] https://www.libretro.com/index.php/chailove/ https://www.libretro.com/index.php/chailove/
[2] https://love2d.org/wiki/love.window.setMode https://love2d.org/wiki/love.window.setMode
- springogeek 7y agoThank you very much for your insights. Love2D and DOME do similar things for their languages, but I think there's still some key differences in our design sensibility and mission. My hope is that DOME provides a set of sane defaults for a number of projects (game jams, lighter games, etc), and it gives you enough features that you can implement whatever you wish on top. Alternatively, it is open source (and MIT licensed), so you can hack with the internals for customised functionality. I hope you feel like trying DOME at some point. I'd be curious to know what your experience is like.