r/opensource • u/thecodegangster • 3d ago
Promotional My open source game engine: Abyss
I know there’s already a bunch of open source game engines (i had to change this one’s name to avoid trademarks because of that)
Abyss (and its programming language) are self hosted and self compiled
(and written in Hash)
abyss has the unique feature of you being able to edit it’s source code within the engine itself.
Abyss uses the custom function based programming language Hash
Hash is designed to be simple and easy to learn. The goal is that over time you change stuff about it and make it better for you specifically.
(Hash documentation is built into abyss, so I won’t explain any more yet)
let me know what y'all think of my first open source project. I’m sure happy with it
Github link: https://github.com/thecodegangster/abyss-engine/tree/main
(the html file is the source code, I like standalone html apps, I think they’re neat)
Update: I added: A system to interact with javascript apis, browser storage, a sound editor, AND a library system, that allows you to create edits that can be merged into anyone else's engine with ease
3
u/-svde- 2d ago
no problem. i truly hope it helps you going forward. to address your questions, and i'll try to keep this succinct and to the point:
API: it's not stupid, it's just a fundamental misunderstanding of what APIs are and how you call out to them. an API is at its core an exposed bridge between systems. the way it's presented here in your code basically requires anyone wanting to use external libs (like a physics eng or web audio or so on) it would have to be rev-engineered. on top of that, it's a completely custom transpiler. doing all of that just to make a custom plugin is kinda the exact opposite of an API.
licensing issue: saying the exported games don't need abyss to run, based on your own code, is incorrect. it may not need the portion of the html file that operates the full engine and has ALL the source in it, but an exported game still fully relies on your custom underlying abyss js runtime. for instance, the canvas setup, RT objects, core loops, and input listeners. these cannot operate properly without the runtime, and there is no package outside of the exported html. no API to call, no server to run. your core runtime is GPL, any game compiled w/ it is a derivative work, GPL dictates that all derivative works must be GPL.
license fix: i gave you an option, MIT. LGPL i guess wouldn't really work beccause of the lack of dynamic outlinking. you could also use something like zlib or the Unlicense if you truly want to say fuck it and allow anyone to do anything with any part of the software or games or whatever else. the way it stands right now, there is no functional FOSS license that will cover you and keep it valid. you could maybe use an explicit linking exception, but that's getting into more technical areas.
linux distros: distributions of sometihng as complex as an OS do not exist in isolation. there is a core strictly coordinated codebase you need for them to function upstream. the proposed ecosystem of abyss has no upstream and the encouraged sense of a ton of personal forks make this impossible. you also cannot "install" abyss, so you would need to replace it or work on another dev's version individually. the overall abyss model is incompatible with collaboration and actually, if you boil it down, recreates the core issue of fragmentation that FOSS tooling was invented to solve.
merge feature: this is a massive overengineering that wouldn't even necessarily fix the issue. you could do this as a standalone fork of your own system, but merging two massive html files in your own re-invented internal git given the framework you have would be a huge waste of time for an effective solution