4 ms·
Andrew here from Planimeter, the guys who make Grid, the largest pure-Lua 2D game engine. https://www.planimeter.org/grid-sdk/ https://www.planimeter.org/grid-s
by andrewmcwatters 6y ago
Andrew here from Planimeter, the guys who make Grid, the largest pure-Lua 2D game engine. https://www.planimeter.org/grid-sdk/ https://www.planimeter.org/grid-sdk/
One of the biggest difficulties I have with managing a project as large as Grid is, is that you just barely start to become large enough for one person to have difficulties not only keeping all the finer details in your brain, but writing extensive documentation is exceptionally time expensive. And we do a really bad job of it.
We're supposed to be launching Grid Engine 10 sometime between now and March, but I don't think we're going to make it, because we haven't finished writing documentation for the next new major version.
So I looked into tooling to get around these problems, but you have to hint at types in Lua comments. I also looked into typed variations of Lua, but there's a few, and some of them are all-or-nothing solutions.
Teal has been out for a while, but I'm always pleasantly reminded of what exists in the Lua space, and how people continue to create great solutions for what I accept to be a more niche language.
I hope that these solutions continue to be shared around on HN, because even though Lua's ecosystem is small enough for many of us to recognize one another, there's a lot more tech out there than Lua and you forget what people are working on.
For as mature as Lua is, there are still complimentary solutions that are lacking in maturity or solutions that still don't exist all together. It's a very exciting space for developers.
- hisham_hm 6y agoHi there! Hisham from Teal here. Yeah, Teal was motivated by my experiences developing LuaRocks, the Lua package manager, which is also a significant pure-Lua application, as well as other experiences working with large Lua codebases. We've been making some good progress on the compiler and the overall tooling (VS Code and Vim plugins, soon general LSP), and I can say that the overall development experience in Teal already feels smoother than pure Lua thanks to the compiler assistance. My intention with Teal is to be able to support use-cases such as yours, Love2D, and so on. In my FOSDEM talk earlier this month ( https://www.youtube.com/watch?v=OqXbnaDR8QY https://www.youtube.com/watch?v=OqXbnaDR8QY ) I mentioned some of the challenges involved in supporting more existing Lua codebases, and how I think we'll need to add a bit of a metaprogramming layer in order to support more smoothly things like homegrown class systems (like the one I see in Grid, in the very first example in your homepage). So I would love to get feedback as we start to explore this space. I want Teal to remain a minimalistic and pragmatic project, so the goal is not to develop a super-general meta-programming system, but one that solves concrete problems Lua developers face when integrating Teal.
- andrewmcwatters 6y agoI'm watching Teal closely! It seems like an exceptional piece of software, and I appreciate your work in the Lua ecosystem. We'll continually be making efforts to push through our documentation and marketing struggles, so I hope to provide some feedback later this year when we've made the time to try implementing Teal as a solution. Thanks, Hisham!
- keb_ 6y agoHey! Just want to say kudos for your work. I've been flirting with using Lua for some projects, and from my research, I feel like Lua as a language and an ecosystem is widely underappreciated. Teal seems well thought out and something that might pull more devs to the Lua space.
- hisham_hm 6y agoThank you! Appreciate the words of encouragement! :)
- jmiskovic 6y agoWould Teal be a good fit for transpiling Lua into SPIR-V intermediate language? If it is possible, one could run same language across system level, game logic level and GPU shader level. This would be fantastic because you often don't know at which level it would run fastest. When algorithm at game logic level is not fast enough it would be possible to move preparation stage to compile-time (prebaking) and parallelizable sections into GPU, all by using same basic language.