You've obviously put a lot of time and effort into building and documenting this framework.<p>Would highly suggest adding more visuals and some way of very easily playing with runnable demos. Games are inherently audiovisual artifacts, so the lack of audiovisuals on the site is a bit of a negative signal.
Nice! Starred.<p>I did "sudo apt install libsdl2-dev", make, and "./dome examples/spaceshooter/main.wren"<p>Took less than 30 seconds to build. The game ran instantly.<p>Also I ran it through WSL 2 with these instructions: <a href="https://github.com/microsoft/WSL/issues/4793" rel="nofollow">https://github.com/microsoft/WSL/issues/4793</a><p>Thank you for this! First time I've heard of wren also.<p>Aside: Is it possible to do something like sockets / http requests through wren?<p>Where do you plan on taking this? What inspired you to make it?
First time I hear about Wren. Seems like a very nice option for embedding a scripting language in a C/C++ project.<p><a href="http://wren.io/" rel="nofollow">http://wren.io/</a>
<a href="https://tic.computer" rel="nofollow">https://tic.computer</a> has Wren support. I don't want to belittle the OP's efforts, just mention this other system.
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.<p>For example there is a version of the LOVE game engine that targets ChaiScript instead of Lua[1].<p>What I really want is a version of LOVE that targets a lightweight LISP like Janet.<p>(I know, fennel exists. But imagine having a battle-tested game engine like LOVE in any LISP at all.)<p>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.<p>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.<p>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.<p>Things like that make my day.<p>[1] <a href="https://www.libretro.com/index.php/chailove/" rel="nofollow">https://www.libretro.com/index.php/chailove/</a><p>[2] <a href="https://love2d.org/wiki/love.window.setMode" rel="nofollow">https://love2d.org/wiki/love.window.setMode</a>
First time I see Wren. It looks nice.
Also kudos for the comment below the benchmarks:
"LuaJIT with the JIT enabled is much faster than all of the other languages benchmarked, including Wren, because Mike Pall is a robot from the future." :D
I make games as a hobby and I've thought about a "lighweight Wren framework with C++ modules for rendering" has been in my mind for a while. I'm so glad someone's thinking the same!
Everyone's support has been fantastic. I've now scheduled a gamejam in March to give people an opportunity to try out the framework: <a href="https://itch.io/jam/domejam" rel="nofollow">https://itch.io/jam/domejam</a>