Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 18, 2024, 09:31:41 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Advice for Engine Direction?
Pages: [1]
Print
Author Topic: Advice for Engine Direction?  (Read 1984 times)
Impossible Realms
Level 2
**

Lurks in Pre-Alpha


View Profile
« on: March 26, 2015, 11:15:13 AM »

Well, here's the engine in it's very unfinished state: https://github.com/GravityGames/scorpio3d

The specs for the custom formats should be included, in case you want to use them instead of .pngs. Feel free to mess around with it, and tell me what parts of the engine I should expand on. However, try to stick to 2D stuff for now, as I need to finish the .obj loader (it currently "functions" but creates untextured meshes and doesn't account for textures or normals, as it was originally designed for an entry into the Textureless Jam. Also I need to divide all vertex coordinates by two, as I want the default Blender units and the Scorpio 3D units to be equal. For those of you who want to make meshes and have them proportionate to models from official games, 1 Blender unit is equal to 1 meter).

When the engine gets to a better point, I'll probably make a new thread specifically for Scorpio. Or I could do it now. What do you think?

Original post below:

I'm not 100% sure that this is the appropriate place for this thread, but I've been working on a custom game engine. It's being designed to be able to produce games in both 3D and 2D, with the 2D designed to integrate into 3D (best example I can think of is SMW2: Yoshi's Island and how the Super FX chip was used. I'm designing the engine so things like that can be done easily). It's still in it's very early phases (there's not even lighting yet, but it wouldn't be too hard to implement), though I've been making rapid progress, which only has slowed down when I'm actually using the engine to make games. I've also decided on a modular approach (though this is still in progress), so I can mix and match different graphic/audio/etc. systems (like if one game needs voxels instead of polygons). However, there is one aspect of engine design that I am not sure of. When I get to the point where code can be copy-pasted in between both the PC/Mac/Linux and Android versions of my engine should I keep the engine "in-house" (only for the use of Gravity Games Interactive) or should I release the source code under the Creative Commons  Attribution-NonCommercial 4.0 International license (basically, allow the engine to be used by any non-profit game, provided they give credit for the engine) like I typically do with character assets from my games. I've debated the pros and cons of each, but I'm still not sure which I should go with...

In house pros:

I don't have to worry about someone using the engine to make a competing product. (Example: I don't have to worry about someone being able to release a platformer in roughly the same amount of time as me.) With pre-existing engines like Unity, this is less extreme a pro than would otherwise be.

I only have to focus on what my games need, and nothing more.

My engine doesn't become my main project, meaning more time to make what I love, games.

In house cons:

I'm less likely to find errors in the engine, due to only programming as my games need features.

Engine will likely not be updated often after "core" functionality is finished.

If I ever hire another programmer, I have to spend time teaching them the engine, and if they decide to work for another company, any knowledge of the in-house engine is wasted time for them.

Releasing pros:

With people using the engine, I'm more likely to find the engine's flaws.

With the source code being open for non-commercial works, others can contribute and make the engine better.

If I ever need to hire another programmer, I could pick someone already fluent in the engine.

Engine might become popular, which means free publicity for any in-house games, particularly those that come with an update with much requested features.

Releasing cons:
With people having to work around the engine's flaws, I have to be prepared to quickly patch bugs.

The engine likely becomes my main project.

People might find issue with me having exclusive rights to commercial use (most likely with commercial permission granted on a game by game basis), while they're stuck with either freeware or finding another engine/making their own.

I have to work to make sure that other games work on later versions of the engine (it becomes harder to, for instance, decide to declare vertex colors as unsigned bytes, rather than in floats. While in-house games would likely take a matter of minutes to get working on the new system, EVERY OTHER PERSON making games with the engine would be left scratching their heads, wondering why any 3d models where they specified data by hand rather than from a .obj no longer work).

Well, I'm sure someone else here has had this internal debate, what do you guys think I should do?
« Last Edit: March 26, 2015, 03:34:43 PM by Gravity Games » Logged
Layl
Level 3
***

professional jerkface


View Profile WWW
« Reply #1 on: March 26, 2015, 11:30:18 AM »

For one, don't release software under Creative Commons, it's not made for software. More info here: https://wiki.creativecommons.org/Frequently_Asked_Questions#Can_I_apply_a_Creative_Commons_license_to_software.3F

I release my engine under the Open Software License v3. You can't really find any open source software licenses that will restrict users of the software to "non commercial", as that goes against the point of open source free-as-in-freedom software, but you can require products using your engine to also be open source. (though that doesn't keep them from selling it and only giving access to customers)
Logged
oahda
Level 10
*****



View Profile
« Reply #2 on: March 26, 2015, 12:10:21 PM »

Why would you want to restrict people from anything just because you make your engine available to anybody? It's not the source code of your actual games, or the commercial rights to those, they're getting, so why can't they have the engine for free without restrictions? That's also a way to allow yourself not to have to keep updating the engine for the pleasure of others; they should be happy enough if they're getting a functional boilerplate for free with no restrictions.

Just genuinely curious. No offense intended.
Logged

Impossible Realms
Level 2
**

Lurks in Pre-Alpha


View Profile
« Reply #3 on: March 26, 2015, 12:24:16 PM »

Mostly because there's likely very little stopping people from using knowledge of the engine to extract code from any commercial games I release and then use said code to make a competing product. Being non-commercial keeps people from taking code from, say, Kyle the Caiman and then releasing "Lyle the Caiman" for half the price. Sure, some of this might just be paranoia and lack of trust, but I'd prefer to release it under some sort of non-commercial license, at least at first. Honestly, it's not having access to my game's code that bothers me, I'm perfectly fine with people learning from my code (though admittedly they'd learn some bad habits too...), it's that it could be copied 1:1 and be used to crank out the same game with different graphics. Heck, if there were a license for code that allowed people to modify it non-commercially, I'd probably release my games under it too.
Logged
oahda
Level 10
*****



View Profile
« Reply #4 on: March 26, 2015, 01:25:31 PM »

Shouldn't that be quite easy to prove in court and earn you some nice lawsuit money, tho, if it really happened? :p

(dont listen to me im stoopid)
Logged

Layl
Level 3
***

professional jerkface


View Profile WWW
« Reply #5 on: March 26, 2015, 01:26:18 PM »

If someone wants to create a clone of your game, they don't need any of your code at all. Even if they did, just because there's a non-commercial licensed attached won't keep them from making that clone. And even then, if someone goes through so much trouble (reverse engineering machine code and everything) they might as well just have put all that effort into making a new game and it would take just as much effort.

A sidenote if your game is written in C#, compiled C# code can be pretty much 1:1 decompiled to its original source because of all the metadata it brings along (important metadata that's used for a lot of neat things you can't do with other languages).
Logged
.nL
Level 0
*



View Profile
« Reply #6 on: March 26, 2015, 01:33:08 PM »

I don't think you should be too concerned about people disassembling your code using their knowledge of your engine in order to profit. If you write your code in a CIL language like C#, it's usually pretty trivial to decompile, with or without knowledge of the source (I think someone stuck a decompiled Unity editor up on github?), and regardless, the people who would do that wouldn't care if your engine was legal for commercial use or not.

(This next part's pretty subjective, and based on my limited observations) If you want to release your engine open source, I'd use an LGPL license or better. Copyleft licensed projects that haven't established themselves already rarely grow beyond a small community, and are rarely active for long. If you really want the engine to start to support itself after a while, go with a much more permissive license like MIT, BSD, or Zlib.
Logged
Impossible Realms
Level 2
**

Lurks in Pre-Alpha


View Profile
« Reply #7 on: March 26, 2015, 01:34:26 PM »

If someone wants to create a clone of your game, they don't need any of your code at all. Even if they did, just because there's a non-commercial licensed attached won't keep them from making that clone. And even then, if someone goes through so much trouble (reverse engineering machine code and everything) they might as well just have put all that effort into making a new game and it would take just as much effort.

A sidenote if your game is written in C#, compiled C# code can be pretty much 1:1 decompiled to its original source because of all the metadata it brings along (important metadata that's used for a lot of neat things you can't do with other languages).

Well, I guess since you put it like that, maybe I should just consider saying "eh screw it, open source, cause what could possibly go wrong? Bad joke aside, sure why not, I'll give open source a try and see what happens. I guess I'll go ahead and post specifications on my three (and counting) custom file formats designed just for games, since it'll save people the 30 seconds to look in the loader class.

Also @sidenote it's in Java, so nearly as easy to decompile, but not quite. Slightly better if a code obfuscator (or whatever they're called) is used.

EDIT: So uh...what license would you recommend for not requiring games made on the engine to be open-source, while encouraging modifications to the engine to be contributed? I'm not used to these licenses, and unfortunately, they seem to be designed to require ALL modifications to also be open source. I was thinking public domain, but I'm not sure if that's too unrestrictive, as that doesn't stop people from tweaking the engine slightly and selling it as a new product. If I'm releasing it for free use, I want it to stay free, y'know?

EDIT 2: Alright, decided to go with the Apache License 2.0 for now, not sure if I'll change it later. The proprietary formats will be released under the Apache License as well. I'll update the first post after I've committed it to Github.
« Last Edit: March 26, 2015, 02:41:43 PM by Gravity Games » Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic