UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
FAQ
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes

Programming Quick Start

Prior Knowledge
This Tutorial assumes you have prior knowledge of the following topics. Please read them before proceeding:


The primary goal of this quick start tutorial is to introduce you to C++ programming basics in UNIGINE. In the framework of this tutorial we are going to develop a Project which involves basic UNIGINE functionality (managing objects, lights, cameras; logging, console, intersections, controls, GUI, properties, etc). Upon the completion of this tutorial, you'll be able to solve the following tasks:

  1. The basic scene objects and coordinate system
  2. Logging and printing messages to console
  3. Saving and loading a world
  4. Closing the application
  5. Working with smart pointers
  6. Creating and deleting nodes at runtime
  7. Creating and seting up a camera
  8. Creating and seting up light sources
  9. Creating, applying and deleting materials at runtime
  10. Managing existing scene objects
  11. Performing basic transformations (move, rotate, scale)
  12. Making the application frame rate independent
  13. Managing intersections
  14. Getting and managing user inputs
  15. Implementing game logic and use properties
  16. Creating user interface

Tutorial Structure#

For your convenience each of the sections of this tutorial is dedicated to solving a certain task (see the list above) and sections starting from 6 are divided into two sub-parts:

  • Basic part - describing some basic examples of how to solve the task of the section, which can be used as a HOWTO.
  • Project Progress - giving a detailed description of solving the task of the section in the framework of the Project and a video.
  • Source Files - providing a source code that can be copied and pasted to the corresponding source files of your Project.
So, if you just need to find a quick answer to your question, you may look through the basic part.

Tutorial Project Design Requirements#

Before we dive into developing our project let us describe the basic functions and appearance of our application.

Graphical user interface of the tutorial project application.

Our first UNIGINE application is going to have the following features:

  • One free-roaming camera.
  • Three light sources to light our scene: world, projected and omni.
  • Graphical user interface (see image above).
  • Moving and rotating the initial set of objects (4 colored boxes) and changing their scale once in 2 seconds.
  • Changing the time of the day in two modes:
    • automatic - if the corresponding checkbox is checked.
    • manual - by changing the slider position.
  • Loading a default world by clicking the "Load World" button.
  • Loading a mesh-file by clicking the "Load Mesh" button and performing the following actions:
    • Specifying the file in the File Open Dialog.
    • Setting the name and location coordinates for the object to be added to scene.
  • Closing the application if the "Quit" button was clicked or if "Q" key was pressed on the keyboard.
  • Selecting an object on the scene by clicking the right mouse button.
  • Highlighting currently selected object by changing its material to the default mesh_base (using property-based logic).
  • Deleting currently selected object (or all objects of the scene) using the "Delete" button and the combobox.

So, let's get started and make our first UNIGINE project!

START THE PROJECT >>

Last update: 2019-12-25