Documentation/Getting Started
From NeoAxis Engine Wiki
| Language: | English • Русский | Status: | Approved |
Contents |
What is NeoAxis Engine?
NeoAxis Engine is a modern 3D game engine, designed for creating games and rendering systems. With NeoAxis libraries and toolset you can save significant amount of time while creating 3D applications.
A wide range of 3D applications can be created with NeoAxis Engine, including games, simulators, training programs, interactive programs for visual representation of physical and chemical processes, etc.
NeoAxis Engine SDK
Installation
The engine is released as an SDK including all tools required for software development.
You can view the list of NeoAxis Engine SDK types here.
There is also NeoAxis Engine Non-Commercial SDK that can be downloaded for free. You can only use this SDK for developing non-commercial products.
Download NeoAxis Engine Non-Commercial SDK.
To start working with the SDK you just have to download and install it. Installation is as easy as following the instructions from the provided installer. Note: unlike other programs, NeoAxis shouldn't be installed under the /Program Files/ or /Program Files (x86)/ directories on Windows, due to permissions restrictions applied by the OS, which could interfere with the SDK.
Menu Overview
After completing the installation of the SDK, you will be presented with new options in Windows' start menu. The menu should be called "NeoAxis Engine [license type] SDK [version number]" and consists of the following items:
NeoAxis Engine Non-Commercial SDK 1.1
-
API Reference - Automatically generated API reference.
-
Browse Files - Shortcut to the SDK installation folder.
-
Configurator - Application for setting up the engine.
-
Demo - Demo application. We recommend that you start learning the engine with this Demo.
-
Documentation - Link to this documentation.
-
Map Editor - Map Editor.
-
NeoAxis Engine on the Web - Link to NeoAxis Engine website.
-
Resource Editor - Resource Editor.
-
Uninstall NeoAxis Engine Non-Commercial SDK - Uninstalling the SDK.
We recommend that you start learning the engine with the Demo application.
Demo
Description
NeoAxis Engine Demo is an interactive application demonstrating virtually all features of NeoAxis Engine. The Demo contains various maps demonstrating different types of games that can be created using the engine.
After having started the demo, you will see the main menu. Click the Run Demo button to proceed to the first-person control mode.
In order to switch to another map available, you have to press the Escape key. Now press the Maps button in the menu to move to the map selection window.
Control Keys
Character control keys:
- ASDW, arrows - moving the character
- Space - jump
- Mouse buttons - shoot
- 1 - 9 - change weapons
- E - use an objects
Application control keys:
- F7 - change camera type
- F8 - pause the game
- F11 - move to the Profiler Window
- F12 - take a screenshot
- ~ - open console
- Page Up, Page Down - zoom the camera in/out (only available for third-person camera).
- Home, End - change camera height (only available for third-person camera)
Map list
List of maps included in Demo:
- ConstructionsDemo - Demonstrates the use of complex physical constructions (Such as crane, bridge etc.)
- DeathmatchDemo - Example of a shooter game.
- JigsawPuzzleGame - A board game with the possibility of online games.
- PhysicsDemo - An example of using the physics system.
- PortalSystemDemo - An example of using the Portal System, enabling improved productivity when rendering indoor spaces.
- RagdollDemo - An example of using ragdoll physics.
- RenderDemo - Demonstration of various rendering system features.
- RTSDemo - An example of a real-time strategy game.
- SkirmishDemo - Demonstration of artificial intelligence of characters, divided into teams.
- SoundDemo - An example of 3D sound implementation.
- StaticLightingDemo - An example of static lighting implementation.
- SwitchesDemo - An example of switches implementation.
- TankDemo - An example of a tank simulator.
- TPSArcadeDemo - An example of a game with third-person view and cut-scenes.
- TurretDemo - An example of guns implementation in the game.
SDK Files Overview
Go to the engine folder. By default, it is located in the C:\NeoAxis\ directory. Let's get a brief insight into the folder tree of SDK.
- Game - Project folder.
- Bin - executable files of the toolset programs and of the Game.exe demo application.
- Data - Folder with project resources. Contains 3D models, textures, map files etc.
- NativeDLLs - Private libraries, required for running NeoAxis Engine applications.
- UserSettings - User settings and program logs.
- Src - Demo application source codes that you can use as the basis for creating your own applications.
- Bin - executable files of the toolset programs and of the Game.exe demo application.
- SDK - Folder for storing documentation and additional utilities.
- Docs - API Reference.
- Tools - Additional utilities.
- Exporters - Exporters of models for 3D modelling packages.
- 3dsMax - Exporter of models for Autodesk 3dsMax.
- Maya - Exporter of models for Autodesk Maya.
- Fonts - Utilities for working with fonts.
- BitmapFontGenerator - A utility for generating texture with a font.
- BitmapFontGeneratorToNeoAxisConverter - An application for transforming fonts created in BitmapFontGenerator, to the engine format.
- Video - Utilities for working with video.
- ffmpeg2theora - A utility for converting video to OGG Theora Video format.
- Exporters - Exporters of models for 3D modelling packages.
Additional demonstration applications
List of additional applications:
-
DedicatedServer.exe - Dedicated server application.
-
WinFormsAppExample.exe - An example of engine integration into Windows Forms application.
-
WPFAppExample - An example of engine integration into WPF application.
-
ChatExample.exe - An example of an online chat on the basis of Windows Forms.
Tool set
Overview
The toolset of the engine is a full-fledged set of editors and utilities.
The toolset applications:
-
Resource Editor - Resource Editor is designed for editing project resources such as 3D models, maps, materials, textures, sounds, etc.
-
Map Editor - Map Editor is designed for creating and editing game maps.
-
Configurator - A utility for adjusting engine settings.
-
Deployment Tool - Tool for preparing finished project.
-
Shader Cache Compiler - Precompile shaders offline, for faster engine load time.
The tool set also includes plug-ins for 3d-modeling packages which allow importing 3d models to the engine.
The main editors are Resource editor and Map Editor which will be dealt with further.
Map Editor
NeoAxis Map Editor is a tool for creating maps. The term "map" origins from computer games. A map is some location where the action of the game takes place. A map can be both a city and a room. Map Editor enables creation of different types of landscapes, placement of game objects, trees, buildings and vehicles. The editor works according to the WYSIWYG (What You See Is What You Get) principle, which means the map you are working with looks just the same it will look in the game. Moreover, by pressing a button you can start the map and see it in action.
You can learn more about Map Editor here.
Resource Editor
NeoAxis Resource Editor is a tool, for viewing and editing a variety of resource types.
These types include:
- 3D models (.mesh),
- Materials (.highMaterial),
- Textures (.jpg, .tga, .png, .dds),
- Sounds (.ogg, .wav),
- Physical models (.physics),
- Particle systems (.particle),
- User's interface (.gui),
- Fonts definition (.fontDefinition),
- Game objects (.type).
3D model is a model of an object, which can be regarded as the main resource of the game. Creating 3d models is usually the most time-consuming work. If you are not familiar with this consept, it is necessary to mention, first of all, that most computer games use polygonal 3D models. Polygonal means those composed of polygons.
Material is information on object's texture mapping. The simpliest material consists of a single color. A 3d-model covered with such a material will be solely colored with such a color. More complex materials often consist of one or more textures, glare, glow, and bump mapping.
Texture is a flat image. Textures are used mostly in materials to be put on 3D models.
Sound is an essential resource of any game, used for creating game process.
Physical model is a description of a game object's interaction with other objects. A 3d model describes appearance whereas a physical model describes its inner characteristics. For example, you can create a physical model for a car, using an enclosing block (frame of the car), cylinders (wheels), axes, springs (shock absorbers). Rotation, collisions, destruction of game world objects take place with the help of their physical models.
Particles system is a way to implement various visual effects. Use it to create effects of smoke, fire, steam etc.
User's interface is the so-called GUI (Graphic User Interface), which is responsible for interaction with the user. It includes buttons, listboxes, forms, input fields and other components. You can create your own interface elements and use them in your application.
Fonts definition is a set of parameters for a certain font.
Game object is one of the basic components making up the game world. Anything is a game object: characters, vehicles, buildings, trees, etc. Game objects use all other types of resources including 3d models, physical models, sounds etc.
You can learn more about Resource Editor here.
Packages of 3d modeling
How are 3d models created? The programs allowing you to create 3d models are called 3d modeling packages . People who create 3d models are called modellers.
Currently there is a great number of packages for 3d modeling. The most popular are:
We would also like to draw your attention to the fact that Blender is free, unlike the other three modeling packages mentioned above.
In order to transform models to the format of NeoAxis Engine there are special programs called exporters. Exporters are available for Autodesk 3ds Max and Autodesk Maya. Besides, all modern modeling packages support exporting to the open Collada format, and the Resource Editor supports viewing models in the Collada format and converting them to its own format.
Programming in NeoAxis
Overview
NeoAxis Engine API is based on .NET. The main language is C#. You can, however, write the code using any languages supporting .NET. You can also attach libraries written in C/C++ or in any other unmanaged language to the project. The logic of the project is written in C#.
SDK includes a ready for use "skeleton" for project development (Demo), as well as a wide range of code examples for fast development of project logic. With NeoAxis engine you can concentrate on developing project logic rather than on dealing with low-level tasks, thus decreasing the time of project development and as a result its cost.
Internally, the engine uses native C/C++ components, such as rendering, physics, sound for maximum productivity.
The engine can also work via Mono Runtime without using .NET Framework from Microsoft.
Choosing IDE
There are several IDE, supporting development in C#.
The following IDE are supported for the development:
- Microsoft Visual C# 2008/2010 Express - free development framework from Microsoft.
- Microsoft Visual Studio 2008/2010 - paid development framework from Microsoft.
- SharpDevelop - free development framework.
- MonoDevelop - free development framework.
We recommend to begin with Visual C# 2010 Express which is free for download.
Download Visual C# 2010 Express
After having installed the IDE let's proceed to learning the source code of SDK.
Overview of SDK Source Code
Go to the Game\Src folder and open the NonCommercialLicense.sln file.
You can see a list of projects available:
- GameCommon - Various classes of a project, such as description of material types, networking services of a project, game console class, users GUI classes.
- GameEntities - Game classes and the entire logic of the game.
- Game - Access point of the application. Initializing the engine, classes for project structure implementation, game screens navigation and user interaction.
- ChatExample - An example of an online chat on the basis of Windows Forms.
- DedicatedServer - Application for creating a dedicated server.
- WinFormsAppExample - An example of integration of the engine into Windows Forms application.
- WPFAppExample - An example of integration of the engine into WPF application.
The main assemblies are GameCommon, GameEntities and Game.
We strongly recommend you to use Demo as the basis for your project. Deleting the whole demo code and writing it anew is not the best idea. Developing a project looks like a gradual extension and changing of the code available in SDK. In the future, when you are more experienced you can delete the unnecessary code.
You may also need some reference to the SDK structure and description of the libraries. You can get this information here.
Scripting Maps
In addition to the main way of writing a code, there is a possibility of scripting maps. Map Editor includes a special editor for writing map logic.
You may add logic to the map without changing the main code of the application. There is one more editor for this purpose: NeoAxis Logic Editor. It enables connecting logic to map objects, reacting to events and managing objects with the help of your own algorithms.
For example, you have marked a specific area on the map. With the help of Logic Editor you can get a notification about the character entering this area and execute an algorithm. With the help of Logic Editor it is also easy to create cut-scenes.
Logic Editor supports two ways of algorithm creation:
- Designer Type (with the help of user's interface),
- Script Type (using the C# language).
Designer Type will suit not only programmers but also maps designers as it is rather user-friendly. The commands of the algorithm are created with the help of a very convenient menu.
Script Type, using all the resources of the C# language , enables faster creation of algorithms, however, it requires certain programming skills.
Read more about Logic Editor.