Sonic and Sega Retro Message Board: Question: Best way to open-source an engine to the community - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
  • 2 Pages +
  • 1
  • 2
    Locked
    Locked Forum

Question: Best way to open-source an engine to the community

#1 User is offline cmakeshift 

Posted 23 May 2017 - 08:00 PM

  • Posts: 15
  • Joined: 07-June 15
  • Gender:Not Telling
Hello to all

I have been posting about my Sonic engine for a little while now, first in a thread back in SFGHQ before the most recent wipeout, then a couple of posts in the screenshots/video thread. It is named dwEngine, but the name is yet undecided. Here it is:

https://youtu.be/KryYucArniI

Sorry for the capture errors. Please look past them, here it runs at butter-smooth 60pfs (Linux, Intel graphics).

So as you can see, it is a basic HD-ready 2D Sonic engine. It was written with Qt 5 and QML, and custom native components on top. The physics are good: implemented from scratch following the SPG as close as possible, deviating only in how the sensors work under the hood. As far as I can tell, they are indistinguishable from the classics. There is an in-game level-editor that allows you to create level layouts and place objects (everything is an object). Under it all, the engine employs a binary tree for culling. There needs to be more work on custom objects, the level could receive some improvements, and it reeeeally needs some good assets for a good one-level demo. Whatever is there, I either made myself or stole the sprite as programmer-art.

My problem is, while I'd love to develop this as much as possible before release, I simply do not have the time. Nos as long as I have graduation coming up and a part-time job to keep. I thought it would be a nice thing to do to just give it to the community right now, and see what can be done with it. Maybe bring on more people and then work on a fangame? Who knows.

Is anyone really, truly interested in this? Would it be a problem to just put this up on GitHub, with the Sonic assets and all? Opinions, ideas, and angry mobs are all welcome.

#2 User is offline Billy 

Posted 23 May 2017 - 10:57 PM

  • RIP Oderus Urungus
  • Posts: 1806
  • Joined: 24-June 05
  • Gender:Male
  • Location:Colorado, USA
  • Project:retrooftheweek.net - Give it a visit and tell me what you think!
  • Wiki edits:15
I'd say putting it up on GitHub would be the best option, paired with the open source license of your choosing. Personally, I'd go for GPL, but I care a lot about people sharing their changes, but you may not. You can make the assets open as well, but if you don't you'll want to include at least some basic ones.

Don't be discouraged if nobody really picks it up and runs with it, though. There are many Sonic engine options out there these days. Doesn't help that most fan games seem to be one-man affairs (would love to be proven wrong on that).

#3 User is offline Violet 

Posted 24 May 2017 - 11:19 AM

  • Posts: 150
  • Joined: 14-June 16
  • Gender:Male
  • Location:Sweden
  • Project:Flicky Engine, Overdrive
Like billy said, put it on GitHub if you want.
Although I'd wait until it's fully done until i release it. So people have the full experience.

#4 User is offline AeroGP 

Posted 24 May 2017 - 11:39 AM

  • Posts: 120
  • Joined: 02-November 06
  • Gender:Male
  • Location:Los Angeles, CA
  • Project:Sonic for GameMaker: Studio
  • Wiki edits:8
Don't forget to setup a license so you can get properly credited for the work. Here's some comparison charts to get you started.
This post has been edited by AeroGP: 24 May 2017 - 11:42 AM

#5 User is offline Techokami 

Posted 24 May 2017 - 04:08 PM

  • For use only on NTSC Genesis systems
  • Posts: 1287
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63
Put it up on GitHub, use a license like MIT or BSD (this will allow people to rework the engine into something usable for a commercial project, like how Freedom Planet and Spark the Electric Jester used Sonic Worlds; GPL forbids people to do that!), explicitly state that the Sonic assets are not released under an open source license and belong to SEGA, and you should be good to go.

#6 User is offline Billy 

Posted 24 May 2017 - 09:36 PM

  • RIP Oderus Urungus
  • Posts: 1806
  • Joined: 24-June 05
  • Gender:Male
  • Location:Colorado, USA
  • Project:retrooftheweek.net - Give it a visit and tell me what you think!
  • Wiki edits:15
GPL does not forbid selling your software. Basically if you GPL a game, people are actually paying for non-open assets (much like how the original Doom is now) because they have to release their changes. This will make it less attractive to people who want to use it for commercial games, however.

#7 User is offline Sodaholic 

Posted 26 May 2017 - 01:23 AM

  • frog blast the vent core
  • Posts: 1150
  • Joined: 05-September 04
  • Gender:Male
  • Location:Lh'owon

View PostBilly, on 24 May 2017 - 09:36 PM, said:

This will make it less attractive to people who want to use it for commercial games, however.
Wha?

GPL makes it more attractive for commercial use. Anyone that wants to hold onto code that isn't theirs are irrational assholes. There is benefit to sharing your code: outsiders can improve it, and you can just take their changes without needing permission.

#8 User is offline cmakeshift 

Posted 26 May 2017 - 04:08 PM

  • Posts: 15
  • Joined: 07-June 15
  • Gender:Not Telling
Thanks guys, I have settled on GPL v2. On the next couple weeks I will prepare the release, get rid of as many proprietary assets as possible (especially music) and post it on GitHub (and here).

#9 User is offline James K 

Posted 26 May 2017 - 09:11 PM

  • Posts: 39
  • Joined: 16-March 11

View Postcmakeshift, on 23 May 2017 - 08:00 PM, said:

My problem is, while I'd love to develop this as much as possible before release, I simply do not have the time.
I thought it would be a nice thing to do to just give it to the community right now, and see what can be done with it. Maybe bring on more people and then work on a fangame? Who knows.

Is anyone really, truly interested in this? Would it be a problem to just put this up on GitHub, with the Sonic assets and all? Opinions, ideas, and angry mobs are all welcome.


Please reconsider using MIT, BSD, or Apache 2.0;

GPL will discourage people from using your code with existing MIT/BSD/Apache code.

--

cmakeshift said:

Thanks guys, I have settled on GPL v2.


Please reconsider not using GPL.

GPL will add extra restrictions that will limit the amount of people that can use your code.


GPL is a viral license
This means, anything you combine with GPL, must also be under GPL.
This is bad, because relicensing existing work to GPL is not always practical.

First of all, most new open source software is MIT licensed(at least on Github's ten million+ repositories https://github.com/b...e-on-github-com)
Posted Image


GPL is incompatible with MIT, BSD, Apache, and most other licenses
This is bad because it means people can't easily use their own MIT code with your engine to add new features.



What if someone has made a good graphics engine in MIT license,
and then they want to combine MIT code with your GPL code for the 2D physics so they can make this?:

https://www.youtube....h?v=ZxXycBv3Rlk

If you use GPL, they can't do that, they have to relicense all of their code just to use a part of your engine,
and most people won't relicense, they just wouldn't bother because your GPL code is incompatible with their license.

If you use MIT, BSD, or Apache 2.0; your code can be used in many more projects; and more people can build on top of your code.


More and projects have switched from GPL to MIT/BSD/Apache recently; because MIT/BSD/Apache is compatible with more existing code bases, AND you still receive credit and the possibility of others contributing back code. And for many many MIT licensed projects, people DO contribute back code and have dozens of contributors.

People won't be contributing back any code at all if your GPL license means they can't use your code in the first place

#10 User is offline cmakeshift 

Posted 26 May 2017 - 09:59 PM

  • Posts: 15
  • Joined: 07-June 15
  • Gender:Not Telling
Wow. Lots of bold text. You make a very nice case.

So... is this a question of where I lean, Politically? Leftie? Libertarian? I chose GPL because I did not want to see it be "Tivoized" by someone.

Then again... Isn't this all a giant hack atop the QML runtime and QtQuick 2? A hack that I love and that works, granted, but a hack nonetheless...

So let this be the first influence of the community on the project. BSD 2-clause it is.

Oh, there was that one time when someone told me to not use Sonic CD's 'jumping off stage' sprite for every time sonic is falling without rolling, because that looked stupid. Huge thanks to that guy.

#11 User is offline Overlord 

Posted 27 May 2017 - 01:27 PM

  • Substitute Meerkovo IT Chief
  • Posts: 17058
  • Joined: 12-January 03
  • Gender:Male
  • Location:Berkshire, England
  • Project:VGDB
  • Wiki edits:3,204
Please stop spreading false bullshit about the GPL, James K.

GPL licensing a project like this is just fine.

#12 User is offline Sodaholic 

Posted 27 May 2017 - 07:17 PM

  • frog blast the vent core
  • Posts: 1150
  • Joined: 05-September 04
  • Gender:Male
  • Location:Lh'owon
It's a good thing that GPL is the way it is. If you can't get code relicensed: oh well. Either forget about it, find a GPL (or compatible) equivalent, or write your own version. It's for the best, the folks at FSF know what they're doing.

I strongly encourage you to consider GPL over other options. A good example is the Doom community, that's the prevalent license there, and it has served them very, very well for numerous reasons.

An even better example: Linux. Android OS is built on it, and thus you can pull anything you want from it. You can make any version you want, with anything from anywhere so long as it's GPL or compatible. I emphasize that you can indeed use non-GPL code in GPL projects, so long as the licenses are compatible.

View PostJames K, on 26 May 2017 - 09:11 PM, said:

People won't be contributing back any code at all if your GPL license means they can't use your code in the first place
Bull-fucking-shit. That's the entire point of GPL, is to maximize sharing code! Your statement is only true if other people are using projects not licensed under the GPL.

Point is, if it's under the GPL, you can use any and all code that is also under the GPL. Sure, it's "viral" and limits your options to work outside of it, but the benefits far, far outweigh that (frankly, insignificant and irrelevant) drawback.

View PostJames K, on 26 May 2017 - 09:11 PM, said:

More and projects have switched from GPL to MIT/BSD/Apache recently
And damn them all for doing so. The vast majority of anything that actually matters is still under GPL and will remain so for good reason.

Don't get me wrong, the others aren't terrible licenses or anything (at least not MIT/BSD, I don't know enough to comment on others), but they are prone to potential abuse. The GPL is strict for this very reason.

View PostJames K, on 26 May 2017 - 09:11 PM, said:

If you use MIT, BSD, or Apache 2.0; your code can be used in many more projects; and more people can build on top of your code.
Actually, no. Most free software projects are under the GPL (and for good reason). Going GPL may restrict your use of code from other projects under incompatible licenses, but you're actually going to have a lot more available to you if you do go with GPL.

View Postcmakeshift, on 26 May 2017 - 09:59 PM, said:

So let this be the first influence of the community on the project. BSD 2-clause it is.
Dammit. Don't do this, please. James is full of it. I might be arrogant (I'll admit as much!), but do consider the facts. Consider the benefits and the drawbacks. There is a reason the GPL has so well established itself, and the fact that there are projects that abandon it for mere convenience to use non-free code does not diminish the value and strong ethical standard of the GPL; it just means that those who move away from it are being unethical and lazy pricks.

If you choose to go for another license, you weaken the GPL as a whole. It is the best option practically and ethically, but it only works when everyone cooperates. Don't be a part of the problem, be a part of the solution. Truly free software does not tolerate non-free uses of code, or even the potential for it.

Sure, it's a little Borg-like. Doesn't matter, though, the excellent results of the FSF's work speak for themselves.
This post has been edited by Sodaholic: 27 May 2017 - 08:00 PM

#13 User is offline winterhell 

Posted 28 May 2017 - 03:58 AM

  • Posts: 1154
  • Joined: 16-October 10
  • Gender:Male
So... what happens when someone violates your GPL or otherwise licensed project? Can you sue them? Do you get money?

#14 User is offline Techokami 

Posted 28 May 2017 - 09:56 AM

  • For use only on NTSC Genesis systems
  • Posts: 1287
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63

View Postwinterhell, on 28 May 2017 - 03:58 AM, said:

So... what happens when someone violates your GPL or otherwise licensed project? Can you sue them? Do you get money?

Yes. BusyBox sued companies using their stuff without providing the source code.

Also, the main reason GPL works for Doom is that the engine and the game assets are separate. The Doom engine is released under the GPL, and any derivatives or modifications have to also be under a GPL license. HOWEVER, that's just for the engine that runs the game. The game assets - the stuff that makes the engine run Doom - are under a proprietary license, and you have to pay id Software to use it. You don't have to use the original asset files, you could make your own and run them with the engine; that's what FreeDOOM is doing.

Sonic fangames, however, tend to have the engine and the game assets intertwined together, generally due to the technology used in the community. (Fusion, Game Maker, etc. combine code and assets into a single blob.) As such, a GPL license can't work well here, because you can't partially open source it. You can't abstract out the game engine from the assets. And even then, if you did have an engine that was able to abstract everything, you'd still have to code in the behaviors of objects unique to your game: if you didn't want to give away how you did that awesome boss battle, you would have to have a scripting language implemented in the engine that read code from the asset files, which is a lot of overhead for a 2D platformer game, and making a scripting language and testing it can be a total pain in the ass.

(For the record, that's how modern Doom mods are made: DECORATE, ACS, ZScript are used to bend the game engine from the asset files.)

For over a decade, the Sonic fangame community used its own informal "license": If used, please give credit. A more formal version of this would most likely be the 2-Clause BSD license. This is effectively what Sonic Worlds is licensed under, including Sonic Worlds Delta. If it was under the GPL, I would have to force Strife to open source the MFA for Freedom Planet, because he made changes to the code that were not released under GPL. Same goes for Lake and his indie game Spark the Electric Jester. That would be pretty shitty to do to these guys.

So, what I'm saying is, unless you have a clear way to keep the engine and assets completely separate entities without impacting the ability for users to create game projects for the engine, you should use a more permissive license.

#15 User is offline Billy 

Posted 28 May 2017 - 12:26 PM

  • RIP Oderus Urungus
  • Posts: 1806
  • Joined: 24-June 05
  • Gender:Male
  • Location:Colorado, USA
  • Project:retrooftheweek.net - Give it a visit and tell me what you think!
  • Wiki edits:15
By the way, I recommend http://tldrlegal.com for reading up on software licenses. Though it does look like their site is a little broken at the moment.

  • 2 Pages +
  • 1
  • 2
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users