Stardust-Engine

3D Game Engine


Project maintained by ValdiviaDev Hosted on GitHub Pages — Theme by mattgraham

Stardust Engine is a 3D engine student project, made by Ricardo Gutiérrez & David Valdivia, students at the CITM university (UPC affiliate) at Terrassa (Barcelona).

The team

List of tasks done

Ricardo Gutiérrez

- Model charge with assimp
- GameObject system
- Transform system for the GameObjects
- Material importer system
- Camera component and camera culling
- Scene serialization
- Resource manager: offline part

 3rd assignment (Visual Scripting)
- Graph node visual implementation
- Saving and loading scripts
- Scene serialization of component script

David Valdivia

- Texture chare with DevIL
- GameObject system
- Mesh and material components systems
- Mesh/scene importer system
- Engine camera refactoring
- Mouse picking and gizmos implementation
- Quadtree and quadtree optimizations (camera culling and mouse picking)
- Time manager (game and engine times)
- Resource manager: runtime part

3rd assignment (Visual Scripting)
- Graph node visual scripting sctructure
- Nodes functionality
- Component graph script functionality

Main core sub-systems

Stardust Engine is programmed in c++, using OpenGL as the graphics library and SDL for low level systems, amongst several other 3rd party libraries. This is a Unity-like engine, constructed in a similar fashion, so it has a resource manager system to manage game assets (resources) and the memory they consume. These resources are used in GameObjects, which are the base entities that compose a game. The engine counts with a Visual Programming system using node graphs and two performance optimizations, in the form of camera culling and a Quadtree.

Optimizations

Camera Culling optimization

Quadtree optimization

NodeGraph visual programming

This engine counts with a visual scripting system using node graphs. This serves the purpose to program something in-game directly using a visual system integraded into the engine itself. It is mostly useful for people that don’t know how to code or know only the basics.

Component graph script

Blackboard

The component graph script has a blackboard for GameObject references that you can use in a NodeGraph of the object the component is on. To put a reference to the blackboard, simply drag a GameObject to the button that says to drag the GameObject to the blackboard.

The blackboard also has a list of timers that shows the time progress of the graph’s timers.

NodeGraph functionality

Actions can be connected to other actions, to make an on-chain reaction and events can be connected to other events if the user wants to use a multiple event (example: move the mouse and press a key). Events can be also connected to actions if the user wants something to occur in some specific situations (example: while an object is moving right, pressing the mouse makes it stop).

Nodes

Events

Actions

Using the NodeGraph

NodeGraph notification system

The nodes in the graph notify the user of the engine of which state is the node in, depending in the colour of the outline of the node.

Visual scripting functionality

Demo

When you open the engine there, there’s a demo of a tank that moves, rotates and shoots balls in game mode.

Controls:

Demo in GAME MODE

Engine video demonstration

License:

MIT License

Copyright (c) 2019 Ricardo Gutiérrez & David Valdivia

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.