Particle System

Template System

The user will need to save the particles created with the system and use them later on, when a template is saved it’s included into a list all the emitters will have access to, in that way a template can be used easily anywhere in the project. Simult

System Stats

All the properties of the system will be visible in this section. Simult

Runtime Behaviour

It will set the behaviour of the system once the game is running, if it’s set to “Always Emit” the system will emit particles constantly since moment zero, on the other hand, if we are using “Manual Mode” the system will not play until it’s told to do it, using a function from the scripting system. Simult

Emission Behaviour

It will set the way the particles are being created, which can be:

  • Continuous: it will emit particles one after the other.
  • Simultaneous: it will emit a bunch of particles at the same time, when it’s activated we can set the Particle Amount which is the number of particles that will be created, and Emision TimeStep will set the difference between the launchments.

Simult
Particles emitted are following the properties set on the system. If TimeStep is 1 and Particle Amount is 20, the system will emit a bunch of 20 particles each second.

Blending Mode

It will let the user select between different blending modes from OpenGL. blend

Position Type

This option will let the user select between Local Position or World Position in particles emitted. PosType

Emit Area

This section will let you adjust everything related to the box from where the particles are being emitted. EmitArea

-We can set the visibility of the box.
-We can modify its size from width, height and depth.
-Emision Style will set the point from where the particles are being created within the box, they can spawn from random points inside the box or always from the center.

Textures & Animations

This system consist on a queue of textures that will be changing over time, the user will have the capability to manage the position of textures inside this queue as well as modify the framerate in which they are displayed :
Tex Add to Stack button needs to be pressed in order to add a texture to the queue, animation will just happen if there is more than one texture on the queue and TimeStep is larger than 0.

Motion

This is the basis of the system since it will let the user control the movement of the particles, the section consist on the following: Tex

-Emission Rate: sets the time difference between particle emission.
-Lifetime: sets how much time will the particles stay alive.
-Launching Velocity: sets the initial velocity of the particle.
-Gravity: adds gravity to each axis.
-Emission Angle: the aperture angle in which particles are launched.

Velocity

This will let you make adjustments to Launching Velocity and modify the velocity over lifetime. Tex This will let you modify the velocity between two marks, this example would start to interpolate from 0.4s to 1s and will slow the particle from 5.0 to 0.3.

Size

This will let you make adjustments to Initial Size and modify the size over lifetime. Tex

Rotation

This will let you add an angular velocity to the particles and also modify this velocity over lifetime. Tex

Alpha

This section will let you interpolate the alpha value of the particles in order to make them fade off. Tex

Audio System

Wwise Implementation

The engine has been implemented to use the soundbanks generated by wwise to play music.
For that, events, states, soundbank reading, listeners and more have been adapted to the wwise guidelines.
Simult

Components

  • Audio Source
  • Listener
  • Distorision zone (not used)
  • Audio Source

    With the Audio Source the developer can set any soundbank imported from wwise.
    The Audio Source contains a soundbank, which needs the proper events to be played.
    The engine reads the name of the events from the generated json and prints it into a list in the audio source component with three options: Play, Stop and Send.
    The Settings at the bottom part of the audio source are used to set the volume and pitch of the audio source. To work properly, the Volume and Pitch RTPCs must be created in wwise previously.

    Also, Resume and Pause are implemented in game, which are just events that must be played during the game when it is needed.

    Listener

    The Listener uses its position to recieve the sound properly. Wiithout it no sound will be heard.
    If the sound emitter is at the right of the listener, the player will hear the sound from the right, and if it is on the left, it will sound on the left.

    Wwise implementations

  • RTPCs: To use RTPCs the engine needs the name of it and a value to send.
  • States: States are used to make the audio more dynamic. To use it, the developer need the group of the state and the name
  • Pause Event: When an event is paused it stops the audio, without resseting it. To resume the event the Resume Event has to be called
  • Resume Event: It resumes the event that has been paused
  • Play Event: Plays the selected audio/event
  • Stop Event: Stops the event, restarting it. Therefore, if the event is resumed it will start from the beggining
  • Send Event: The Send Event stores the event in a list for it to be played later
  • 2D position: The audio is heard anywhere since its not in the 3d world
  • 3d position: The audio is heard differently depending on the distance from the listener and its position.
  • Scripting System

    Our Scripting System uses C#. We are using C# because it is widely used and it provides good performance. It also targets game development. To implement scripting with C# in our engine we are using Mono. To make the scripting system work, we have made copies of some of our C++ classes, and ported them to C#. This allows mono to compile the scripts we write in C#, and pass the data to our actual C++ classes.

    Script Editor

    The engine has a built-in text editor to edit the scripts directly without necessety of visual studio

    Script In Action

    The Script are simple to use. Just add them as a component to the gameobject and assign the public variables if necessary

    Scripting API

    You have a web page with all the API

  • API Web
  • Physics System

    For the physics system we used the PhysX library from nVidia.

    Although many things can be done with this library, we have used it only to detect collisions and to do raycast for the obstacle avoidance.

    UI System

    The UI System provides ingame persistent UI that can be easily used to create orthographic and world UI.

    The system is entirely made from scratch with a custom engine renderer.

    The system has the current UI elements.

    thumb

    thumb

    thumb