3D Game Engine
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).
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
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.
Camera Culling optimization
Quadtree optimization
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.
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.
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).
Events
Actions
Using the NodeGraph
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
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
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.