This page contains answers to frequently asked questions. If you would like an answer to a question not listed here, feel free to contact us using the information on the contact page.
What is a game engine?
The definition found on Wikipedia may be useful:
A game engine is the core software component of a computer video game or other interactive application with real-time graphics. It provides the underlying technologies, simplifies development, and often enables the game to run on multiple platforms such as game consoles and desktop operating systems such as Linux, Mac OS X, and Microsoft Windows. The core functionality typically provided by a game engine includes a rendering engine ("renderer") for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, and a scene graph. The process of game development is frequently economized by in large part reusing the same game engine to create different games.
What is the Neutron Engine?
The Neutron Engine is a game engine that aims at being modular and flexible, using different components interchangeably as subsystems. Such components can either be specifically developed for the engine or be pre-existing as external libraries (eg. Ogre3D or SDL for rendering, ODE for physics, and so on); however, users of the Neutron Engine are offered a choice in what specific library to use for each subsystem. The engine is currently under development and is released under the GNU General Public License version 3.
It was originally created for the new edition of the sci-fi first-person shooter Alpha Shooter, and is currently used by that game.
With so many successful game engines out there, why make another one?
It's true many commercial and non-commercial game engines are available today, and some of them have grown to be very successful. In general, one may want to create a new game engine for at least three reasons:
- Existing game engines do not offer the kind of functionality one requires or desires, or do not offer it in the required or desired way;
- An existing game engine that offers the required or desired functionality exists but is not readily usable, for example because a usage license for it may not be obtained, or is too expensive;
- One would like to learn how game engines work and what it takes to create one.
The third reason is mainly what led to the creation of the Neutron Engine (the first two are involved in part also). This is an experiment, that may or may not work as intended and that could eventually change direction; sometimes the best way to learn is to learn by doing, although that does not always imply a need to reinvent every possible wheel.
[NEW] So why should I use this engine and not one of the others?
The aim of Neutron is to add flexibility to the choices of subsystem implementations. The question then should reduce to "Why would one need choice in what underlying subsystem implementation to use, if a specific implementation can be enough?". The idea in this case is that different users of the engine may have different requirements; here's a short list of plausible reasons:
- one library could achieve better performance when used in some specific contexts than one of its competitors could, or it could be more optimized for a target platform rather than for another;
- a group of developers might have purchased a license to use a commercial library and would like to keep using it, while at the same time integrate it with others through the layer offered by Neutron;
- a developer may simply desire to experiment with different libraries and see what they're capable of;
- in principle, one might want to keep the set of dependencies small for some games, particularly if one library used has features useful for more than one subsystem. In that case, Neutron could be compiled with support for only the libraries that are actually needed.
Use cases and scenarios can vary.
In short, projects may benefit from the specifics of a certain implementation over those of others, depending on their requirements, thus different projects with different requirements may take advantage of the flexibility of Neutron while still consistently using the engine. That said, if an existing game engine that satisfies your needs is available to you and you feel you can achieve better results with it, we'd be thankful if you let us know what you like about that engine and what other features you'd like to see in the Neutron Engine.
Where is the code?
Currently, source code is only available in the SVN repository and there are no binary package releases. The Neutron Engine is still a fast-moving target, so stable releases cannot yet be made available, and even the code in SVN, being the development version, can change very quickly and is not always guaranteed to work. See the downloads page for details.