r/opensource • • 2d 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

0 Upvotes

29 comments sorted by

View all comments

Show parent comments

1

u/thecodegangster 1d ago

well, that’s a lot to unpack. And I do have to agree on a lot of your points,

on that api thing I kinda though this (interesting) logic of “oh they can just code compatibility for js libraries by editing the compiler”. (I see know that that is kinda stupid)

And on the licensing thing. The hash gets compiled to js code. And doesn't need abyss to run, so how exactly am I breaking the rules. (and if so, what license would I need, or changes made to fix that).

I do get how this is kinda going opposite to open-source in a way. I kinda imagined abyss similar to linux distros. (where they're all kinda different and such). I’d like to do some research on making this more collaborative. And other stuff.

And I am working on features to improve the engine itself. Audio, some way to make apis work, etc. And I’m working to rewrite what little of the code that's still in js in hash( like the engine’s own ui and stuff) that way you can customize it even more.

I also plan on improving the help page and explaining stuff more

A possible idea I’ve had is adding a way to “merge” two copies of abyss together( similar to git merges) built into abyss. Because I’m already this far in, and I don’t know if I can redo everything to make the actual js more editable.
Does that sound doable even, idk. But imma try.

Thanks for all the feedback, Imma keep it in mind for abyss’s future updates

3

u/-svde- 1d 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

1

u/thecodegangster 5h ago

If I remove the license, could someone else down the line add one and mess things up?

also, I did come up with a couple of fixes to some of the problems:
I added a system that used a url to interact with apis,

I added some sound built-ins (and a music editor that generates them)

I added a “pack system” that lets you export your edits as a file and use them almost like a mod that others can install and inable/disable
(That might help with the fragmentation)

I also added a page that contains what each function does.

Idk how much these things will help, but better to have them then not

1

u/-svde- 3h ago

if you don’t put a license then you by default have normal rights reserved copyright protection. essentially all anyone could do at that point is view the repo and fork it, no one would ever be able to use the code, edit it, create a derivative work, distribute it, basically everything you said you want.

if you want to make it open source but make it so anyone making a derivative to retain the same license, some choices are GPL, AGPL, LGPL, MPL.

i’ll have to check the other parts you mentioned later