Level Editor
A Scene camera shows the 3D scene currently being edited. You can edit all object’s position, rotation and scale using a gizmo. You can also pick any object from the scene by clicking on it on the Scene Window (this has been done using a Raycast).
Entity Component System
Hello Engine features a completely implemented Entity Component System, that allows you to create Game Objects (entities) with multiple Components on each of them. This Components give them a determined behavior. Available components are:
Transform: To manipulate the GameObject’s position, rotation and scale. Every Game Object has this Component by default, and cannot be removed.
Mesh Renderer: Draws a Mesh from the Assets folder using the GameObject’s transform values.
Material Component: Adds a texture from the Assets folder as the drawing texture for the Mesh Renderer component inside the same Game Object.
Camera Component: Creates a Camera Object that uses the GameObject’s transform values. Can use Orthographic or Perspective view.
Script Component: Allows the user to drag any valid .h or .cpp script inside the Assets folder. The script behavior will be called when the Play button is on.
All Game Objects share a hierarchical structure that affects their respective Transfrom values. Parenting can be edited through the Hierarchy window, by dragging the Game Object’s nodes.
Custom File Format
You can Import files into the project by dragging them in the Hello Engine window. Some files will be imported into a more efficient Custom File Format. The original file is never edited on this process. Our custom file formats include:
.hmodel: From FBX files, determines the FBX mesh structure.
.hmesh: From FBX files, determines a specific mesh’s information (vertices, indices, normals…)
.dds: From PNG, TGA or JPG, saves image information.
.helloMeta: Meta data used for the Editor Serialization and Resource Manager systems.
.HScene: JSON file format that saves all scene necessary data for the Serialization system.
Undo/Redo
In Hello Engine, you can use Ctrl + Z and Ctrl + Y to Undo / Redo actions from the editor correspondingly. All actions that can be Undone and Redone are saved on a stack. This stack gets reseted when any Scene change occurs, or when the Play button is pressed.
Resource Manager
Every loaded Asset has a corresponding Resource that has the relevant asset’s information. This Resource is loaded into memory when needed by any Game Object (Entity) or Component inside the current Scene. The data loaded into the resource is taken from the Custom File Format version of the original Asset, never the original Asset itself. For example, an FBX vertex data will be loaded from our .hmesh file, not from the original FBX.
This allows our memory to only load once every needes asset, and share that data into the multiple entities that need it.
Also, the Resource Manager creates .metaData files that “watch” every Asset file, to determine whether this asset changed or has been deleted. When changed, the corresponding Resource gets re-imported. When deleted, the corresponding Resource gets destroyed, and the memory is released.
Serialization System
You can save all Entity and Component’s data inside an HScene file using the Serialization System. This Scene files can be then loaded to recover the scene state of the moment of saving. This works using JSON files, that have been renamed to .HScene.
Scripting System
Hello Engine includes a C++ Scripting system, using Hot Reload and Automatic Compilation. You can use C++ code to create behavior scripts, that can then be added to any Game Object. This behaviors get Started and Updated once the Play button is pressed.
This works using Visual Studio 2019.
License
MIT License
Copyright (c) 2022 HelloGamesCompany
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.
Provided by Hello Games Company
A github organization created by Xidashuaige & AdriaSeSa which publish college project.