This thread is for general discussion of the Mobius Engine project, an open source project to produce an easy to use 3D (and 2.5D) game engine for Sonic fan games.
The goals of the project are to produce a fast, stable, and more importantly easy to use alternative to proprietary middlewares that can be used on any platform that it can be compiled on.
The renderer is in the design stages. You can find details here. Discussion regarding licensing will be starting soon!
I'm in for my usual 2 to 4 year checkin with the Sonic fan gaming community, and I've noticed that a number of "Sonic Fangame Engines" tend to be based off of either Unity, UDK, or based off of a fangame engine based off of Unity or UDK.
I'm not going to say that this is a bad thing by any means, as speaking from my own experience, both Unity and UDK provide quite a bit out of the box for people to create their own games, and even non-game applications. Naturally, each environment has their unique benefits and their disadvantages, Unity being barebones, but being highly flexible with its everything, and UDK mostly providing everything, even if it may not be quite as flexible as Unity.
But before we really get into the meat of this post, first off a bit of an introduction, since I'm sure I've been long since forgotten over the decent number of years that I've been relatively inactive (which may potentially be for the best).
I'm Gen. I used to be a bit more active in the Sonic community a good few years ago, until I finally started a career doing what I like to do. I like making games, and even the technology behind the games! Currently, my primary expertise tends to lay in the 3D rendering department, however I tend to work on a variety of things at my job, including general software design. My official job title is "Technical Artist", however I'm often times tasked with working on many other things that go beyond of the scope of my job title.
Now that's over with, on with the rest of the post!
So I've been kinda keeping an eye on various little projects scattered about here and there in the community, ranging from SonicGDK, to a few of the Unity-based projects here and there. They're all nifty stuff, but I often times find myself wondering, why hasn't the community produced their own engine from the ground up? There's been a couple of attempts, sure, but many of them seemed to lack an overall "general" direction, mostly focusing on a singular fan game's specific needs.
Now, by "the community" and "their own engine", I don't mean an engine that a singular individual or small group of people produced for their super awesome sonic fan game designed with the intent of blowing everything else out of the water, that's then either scrapped or generally kept to themselves. Nor do I mean a set of scripts for a pre-existing general engine such as Unity3D or Unreal Development Kit that better enables people to produce Sonic games. What I mean is, an engine that incorporates features that are in high demand amongst the community, that's freely available to anyone who feels that they'd like to create their own Sonic fangame, or Sonic-esque game, that's available for any platform that it can be compiled for, and can be openly modified by anyone with the know-how to do so, at any level of the engine.
What I'm describing here is a through in through, game engine.
Now I'm sure that there's plenty of good reasons why no one's really tried to take on such a project to a serious degree, or attempted to organize community members to produce such a project. Such a project would require someone with the know how to design a modern game engine, that incorporates things like an audio system, a rendering system, a physics engine, and the various smaller low-level bits and pieces that typically facilitate the creation of such systems (such as math libraries, threading systems, and so on). However, in my hanging around and drifting around the community, I know there's people out there who individually have the know how to create bits and pieces of the overall engine. For example, I have plenty of rendering know-how; I understand how modern rendering pipelines work, understand the need for an optimized vector math library, and have even played with different threading ideas. But these things don't necessarily make a complete engine, they're more components that would be part of an overall engine.
Now, the intentions of this post isn't necessarily to announce some huge project that will be in perpetual development for the next 4 to 6 years before finally being cancelled. It's more to propose and gauge interest in a project to create an engine made by the community, for the community that incorporates many modern game engine design elements, while being completely free to use without having to download UDK, or "obtain" a professional copy of Unity 3D with all of the extra bits and bobs included. Another purpose of this thread is to facilitate discussion of such a project, and if such a project were to be found favorable by the community, to begin identifying individuals who would assist in the project, and what they could contribute to the overall design and implementation of the project.
The reason for such a project to exist, is to make an engine that's fine tuned for fangame development. One that has very specific workflows established for the community, that doesn't require a $1500 investment to unlock all of its features, or the need to learn a generalized solution that may not be quite as customizable, or particularly easy to learn for that matter.
The context of discussion generally should be amongst what would be a good idea, what would be a bad idea, how it could be favorable, how it could be bad, and generally the how of the project. If you feel that the project is a bad idea, that's fine. By all means express your opinion. If you feel the project would be a great idea, that's fine too. But please, keep feedback constructive regardless of if it's to encourage or discourage the idea of such a project.
To get the discussion started here, I'll propose a few ideas for such a project.
First off, to better facilitate openness, and the ability for anyone to use the engine, it should be open source. Likely licensed under the LGPL to ease licensing concerns when linking against a proprietary library that may be deemed useful (such as if it were decided that FMOD would be the best solution for an audio engine).
Overall the engine should use OpenGL as its graphics API of choice, primarily to ease porting pains to other platforms. A cross-platform threading library would be nice, primarily to aid in increasing performance with regards to physics and rendering, but wouldn't really be necessary for an initial pre-alpha release (besides, we probably wouldn't even really have a physics engine implemented at that stage, and no one would probably be using it to a degree where multi-threaded rendering would provide any noticeable gains at that point).
Proprietary libraries should be kept to a minimum, with exceptions being granted for those that are freely available on the target operating systems. A prime example of a library that would be acceptable is FMOD, as it's available for Windows, OS X, and Linux. It's also free for non-commercial use. A prime example of one that wouldn't be acceptable is PhysX, as despite it being generally free, it's only really maintained to a large degree on Windows, with occasional updates being made for Linux, and OS X support only being provided to commercial licensees.
Most importantly, the primary programming language of choice for the core engine should be C++, with a scripting language decided upon at a later date.
Of course, these are just a few ideas to get the discussion going. All ideas should be fairly considered along the way, and should be open to criticism.
EDIT: For reasons of easily consolidating people's opinions with regards to how many are for or against the idea, I've added a poll to the thread.