Melodic's Tech Corner.

The Great Lua Debate

Cover Image for The Great Lua Debate
MelodicAlbuild
MelodicAlbuild

Abyssian vs. Lua: Choosing the Right Scripting Language for the OblivionEngine

In my last post, I talked about reaching a major milestone with Abyssian, the custom scripting language I’ve been developing for Project Oblivion. But just because I’ve built it doesn’t mean I’m 100% locked in. There’s still an open debate: Should I stick with Abyssian, or should I switch to Lua instead?

Lua is a battle-tested scripting language used in countless game engines, from Roblox to Love2D. It’s lightweight, flexible, and fast. On the other hand, Abyssian is built specifically for OblivionEngine, meaning I have full control over its design and integration.

In this post, I’ll break down the pros and cons of each option and why I’m still weighing my decision.

The Case for Abyssian

Pros of Abyssian

  • Designed for OblivionEngine – Since I’m building Abyssian from scratch, I can make sure it fits perfectly with how my engine works. No workarounds, no hacks—just direct, native support.
  • Custom Syntax & Features – I have full control over the language, meaning I can tailor its syntax and functionality to be as intuitive and powerful as I want.
  • No External Dependencies – I don’t have to rely on a third-party interpreter or runtime. Everything is built-in, meaning fewer compatibility concerns down the line.

Cons of Abyssian

  • Development Overhead – Creating and maintaining a programming language is hard. There’s a lot that goes into making a language stable, optimized, and well-documented.
  • Lack of Community & Resources – Lua has a massive community, tons of learning materials, and years of development behind it. Abyssian, as a new language, has none of that.
  • Performance Considerations – Even though I’m optimizing Abyssian for OblivionEngine, Lua is already incredibly fast and battle-tested. Keeping up with that will be a challenge.

The Case for Lua

Pros of Lua

  • Lightweight & Fast – Lua is designed to be embedded in game engines, meaning it runs efficiently and has minimal overhead.
  • Mature Ecosystem – Lua has been around for decades and is widely used in game development. That means tons of libraries, documentation, and experienced developers.
  • Easy to Integrate – Many game engines already use Lua for scripting, so integrating it into OblivionEngine wouldn’t be too difficult.

Cons of Lua

  • Less Customization – While Lua is flexible, I wouldn’t have the same level of control over its syntax, behavior, or deep engine integration as I do with Abyssian.
  • Potential Workarounds Needed – Since Lua isn’t designed specifically for OblivionEngine, I might have to create extra tools or APIs to make it work the way I need.
  • External Dependency – Unlike Abyssian, which is built into the engine, Lua would require an external interpreter. This isn’t a dealbreaker, but it’s something to consider.

Where Do I Go from Here?

Right now, I’m still in the middle of this debate. Abyssian gives me complete control, but Lua is a safer, more established choice. The deciding factors will likely come down to performance, ease of use, and long-term maintainability.

If Abyssian proves to be too much of a maintenance burden or lacks the speed I need, I may switch to Lua. But if it continues to evolve and prove its value, then I’ll stick with it.

Either way, this decision will have a huge impact on the future of Project Oblivion, and I’ll be sharing my thoughts as I continue testing both options.

What do you think? Would you go with a custom language, or stick to something tried and true like Lua?

Cheers,
Melodic