A couple of words about NeoAxis
Sooner or later, before each game development team there is a question of choosing the engine. The reasons are different: either it is too long and costly to write one’s own, or there is not enough knowledge, experience or specialists, or simply having estimated the time spent and the cost is made, the decision to buy ready is better than writing one’s own. 7 years after his debut in the field of igrodelaniya we faced the same question (before that they wrote everything themselves).
We have studied several game engines in C ++ with a license value of up to $ 1,000 (I think it would be incorrect to mention the names of those engines that we rejected in relation to their authors). Accidentally I got here the C # NeoAxis engine, which I liked so much that it was decided to stop at it and switch from C ++ to C #.
')
What is he so impressed us? I will try to briefly describe this in this article.
Firstly, the architecture of the engine itself , very convenient in my opinion. I will quote the description of the authors:
Entity SystemThe entity system is the heart of the NeoAxis Engine.
With the help of a single entity system, all game logic is created.
In each game or application there is a certain system of objects. In each such system there is a set of objects and rules of their interaction. In fact, it would be convenient to describe objects, algorithms of their functioning, ways of interconnection with other objects in a certain uniform way. And, again, to organize a base for describing objects so as to create new objects with minimal effort. And at the same time, in most cases, such a system should be well associated with the real world, so that you can easily identify the game and the world that we create in the game.
Usually the game has a world. The game is divided into levels. Each level lives according to the rules of the world + according to properties specific to this level.
The essence is any object of game logic. Players, objects, bullets and any other game objects are entities.
Each entity has its own class and type.
An entity class is a basic entity behavior algorithm. Entity classes are written in a programming language and are easily integrated into a single system. This integration allows you to extend the editors (resource editor and map editor) without directly modifying them.
An entity type is actually a collection of configured properties of an entity class. Entity types are created and configured in the resource editor. (.type files). Customization involves the configuration of various properties of objects (the appearance of the characters, the maximum number of lives, etc.).
Logic SystemIt is often necessary to set special game logic on levels. Logic that is specific to each level. For the convenient task of such a logic, a system of logic was invented. It allows you to extend the basic game elements with additional functionality.
Programmers write basic game logic in a programming language, and level designers extend it within a level using visual tools or scripts.
Two ways of defining logic at levels are supported:
* VisualThe ability to design algorithms by visual means without resorting to writing scripts. Algorithms are represented as trees.
* ScriptA typical way of extending functionality with scripts.
Secondly, good quality graphics . The NeoAxis graphics engine is based on the well-known OGRE engine, and has all its features. There is support for materials, shaders, in general, more than enough for our needs.
Thirdly, 2 physical engines (PhysX and ODE) are implemented, you can connect any one of your choice and use. Since we used to use PhysX in our projects, we were very pleased with its presence in this engine. The good and the taste of working with him is, and the physics engine itself is very good.
The fourth is a wide and convenient toolkit. There are exporters for different graphic packages, there is a Resource Editor - a program where you can customize each game object, attach graphics and animation to it, sounds, particle files, some properties (Attached Objects System is a very convenient architecture for working with game objects). objects). Here you can create a GUI, test it. You can create different effects, particle systems, customize materials, create a physical object model, attach joints, ...

The next tool - Map Editor - in it you can create a level by placing game objects on the map. There are several ways to create a map, you can download Static Mesh, you can create a HeightMap, you can still somehow. It is worth noting that the engine is not sharpened for any particular type of game, in the demo you can find examples of both RTS and Arcade, and TPS and even Jigsaw Puzzle. This is the rare case when versatility is not at the expense of convenience. In Map Editor, you can click on any object, change its properties, or add a script or event, either for a given instance, or for several instances of a given type. As already mentioned, this can be done both visually (programming with a mouse, as it were), and with a handwritten script. Very comfortably. There are a couple of utilities - Configurator - for choosing a physics engine, graphics overhead (OGL / DirectX), maximum shader versions, sound library selection, localization selection. And the second - Deployment Tool - creating the distribution kit.
Fifth - convenient debugging. Programmers will understand what it is and how many nerves it can save. In the engine logs are kept for all events, rashes and errors are informative, up to the indication of the class and the number of the line where the crash occurred. There is a console to which you can add your commands, there is a debugging graphics (show static physics, show dynamic physics, etc.), there are statistics windows - you can see how many objects are on the scene, how many polygons, how many milliseconds physics takes, how many renders well, etc.
The sixth one is Cut Scene Manager, Splines and Bezier curves, cameras flying along these curves and other convenient, necessary and beautiful things already implemented. You can insert and use, if there is not enough functionality - you can add it, if for some reason you do not like it - you can redo it completely.
Seventh - a great demo with source code. This item as if rehabilitates the fact that the engine still does not have complete documentation with tutorials (there are only 3 and the simplest). But in the demo there are different types of games - a strategy, a shooter, you can run and ride a tank, ... The authors of the engine tried to make a demo so that all the features of the engine were presented and the game developers could get involved themselves and see how this and that was done. something. Great helps, especially at first.
Eighth - Add-Ons. The site contains paid and free add-ons, both from fairly simple and free (like sky or water) to commercial (car mechanics). Although we personally did not need it, but decided to mention all the same.
Ninth - the community. The site has a forum where developers using this engine rather actively help each other. Against the background of competitive projects, the forum is quite lively, and has been going on for a long time.
Tenth - the development of our Russian guys from Kazan. Therefore, the support is all in Russian (although the forum they have on the site is in English). Since we took the average license ($ 395), and hoped to spend 1000 on the capacity, we bought more support for the rest. They treat it very responsibly, help and delve into it, add features we need to the engine.
The engine has Web Deployment and games over the network. Although it is not necessary in our project, it is worth mentioning this. There are many other interesting features that I did not mention. But what to say, download, run the demo and see for yourself. :)
site engine.An article on the site of the Russian community, a more detailed review.