Well, here's the engine in it's very unfinished state:
https://github.com/GravityGames/scorpio3dThe 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?