Hacker News new | ask | show | jobs
by andrewmcwatters 2210 days ago
Thank you for posting this, Bambo! I was curious why we were seeing 10s of new stars all of a sudden and trying to figure out where the GitHubbers were coming from.

Grid Engine 9 is now the largest pure-Lua game engine on GitHub. As s_y_n_t_a_x has mentioned in this thread, I built the Grid Engine on top of LÖVE.

I came from the hlcoders world, having used the Source Engine for several years, and was upset the 2D world didn't have sophisticated game engine technology like the 3D solutions in the field.

There's tons of great game software out there! But to me, a game engine isn't just a load, update, draw framework. There's a lot of hard work involved past binding libraries together.

A game engine needs an architecture, it needs to do multiplayer serialization for you, and give you a meaningful way to load maps out-of-the-box, and so much more.

Too many hobbyists are rolling this themselves, and I hope to continue to bring rich game development features OOTB to other hobbyists like myself.

If you're interested in Grid, but don't find something quite right with it, could you tell me? I've worked on this project for at least the past 6 years from what my logs tell me, but it only continues to get better thanks to people like you all reading posts like this and giving me feedback over the years.

Thanks again, Andrew

7 comments

I also saw this on your repo [1], I was wondering if you are planning to move from Love to it, or what is it about? (just curious :-)

1: https://github.com/Planimeter/lgf

A few casual notes, though I could continue to expand on this:

lgameframework is a project I took on some time ago to provide a LuaJIT FFI alternative to LÖVE. It helped educate me on what was necessary to interact directly with the OpenGL layer, and understand what challenges the LÖVE developers will have in the distant future with OpenGL being deprecated on macOS. (Will they move to bgfx? Or Vulkan/MoltenVK? Who knows. Ask Alex, I suppose.)

As an interesting side note, it does things LÖVE doesn't, which may or may not be interesting depending on whether or not you think first-party 3D features, PBR, VR (See also LÖVR) are desirable in a pure Lua project.

It also serves as a hatch door project I hope I never have to use. Valve broke Source for modders somewhere between the 2007 and 2013 engine branches with SteamPipe, and the idea that you could spend literal years on a project and have some developer break your work in Bellevue was scary to me. They don't have the same respect for the modding community today that they did maybe 15 or so years back. I don't think that's going to change, unfortunately, but I'm digressing.

I trust the LÖVE team, and appreciate that it's FOSS software, but I need full control over the stack I present to developers using the Grid Engine, and I need to respect users by not breaking things.

In the event LÖVE breaks things, the Grid Engine needs to be patched to account for those changes, and Grid has been around long enough to see this happen a small number of times. I think the changes have been reasonable so far, but mature projects will inevitably end up with deprecation notices and backwards compat patches, and that's where we are now.

lgameframework is defensive software, but I'd rather continue to promote LÖVE. The only issue I see with this, and cannot condone however, are the libraries that have come out of the community with inappropriate names.

Edit: I apologize that all of this sounds a bit dark, that's not my intention, but a lot of people's hard work can be at stake. Implementors of such software need to defend their users. The LÖVE developers have created something wonderful, and I must reiterate this.

I plan on Grid being around for years to come, which means you have to start thinking about protecting that mote. Planimeter projects have been in the works since 2010. I work in a narrow subset of the gamedev space, and don't plan on stopping any time soon. It will be my life's work.

Thanks for the extensive answer! It is very commendable that you want to provide such level of stability for your users.

On a side note, your comment made me check: hard to believe Love2d was released 12 years ago now!

Thank you for browsing my work, I greatly appreciate it!
Hey I know you mentioned it here and it is shown on the getting started tutorial, but may be useful to mention it on the front page too: the engine is built upon Love 2D.
Thank you for your comment. I will make sure that I emphasize this in newer marketing collateral.
Would you happen to know of any games that use Grid?

If so, it would be nice to list them on the homepage.

Unfortunately not. I'm always looking to feature game developers on Grid's site, though!
I love the idea of a game engine with multiplayer built in from the start. It reminds me a bit of MUD engines for text-based games back in the day. Interested to see where this goes!
Thank you. I think it's particularly important that features like this come standard these days. In the last two decades a lot of work in client-side prediction has taken place, but not a lot of it has been working itself back to hobbyists.
Would love to get your thoughts on Mun-lang: https://mun-lang.org/
Quite an impressive project! I'm curious how the authors went about their strategy for hot reloading in particular.

In Grid, I extend the package library, and utilize the implementation details of `module` which allow one to override or set new keys on subsequent loads of the same file.

It's one of the reasons I don't think I can use the newer module patterns beyond Lua 5.1.5, because as far as I understand, they require one to completely replace what's stored in `package.loaded` versus merging to any existing table.

I had also not given much thought to static typing with Lua until the last year or so working with Lua only because it makes generating documentation harder. Otherwise, I tend to share Roberto Ierusalimschy's opinions of dynamic typing.

I would read his most recent interview from Moscow in 2019. I think he's a very interesting person.

Why Lua and not say Haxe? Because of LÖVE?
Yes, primarily. But the real answer is because of Lua from Garry's Mod, and the design of the engine is heavily inspired by Source and QuakeWorld. Even today, I still believe Quake is one of the most elegantly designed game codebases in existence.

Planimeter was formerly called Team Sandbox, and we were a group of developers working on a game called Half-Life 2: Sandbox, which was a FOSS alternative to Garry's Mod that stayed Half-Life themed.

The team is comprised of mostly different volunteers now.

Of course it is you!

Astounding work as always. Thanks!

Thank you for the kind words, voppe. :)