The Engine

Genesis Engine is a game engine developed for the Game Engines subject in CITM (Terrassa). It has been created during the first semester of the third year of the degree. For the development of the engine i've used more than a dozen of libraries, all licensed in the release.

Genesis Engine

About Me

My name is Marc Pagès Francesch and I'm a Game Development student from the Game Development Degree in CITM (Terrassa). I developed this engine on my own for the Game engines subject. You can find me on Twitter, GitHub and LinkedIn in the links below.

twitter
github
linkedin
Personal Picture

Functionality

  • Game Objects and Components: Game Object and Component structure similar to other engines lets the user have a more comfortable experience when using the engine and leads to a more productive work.
  • Mouse Picking: Objects can easyly be selected in the scene window by clicking on them.
  • Extense Configuration: The user can easily customize the engine settings so the engine can adapt to the user needs.
  • Own File Format: In order to make file management faster Genesis Engine uses it's own file format which increases the load and unload speed reducing waiting times.
  • Easy Import: Importing in Genesis Engine is easy, just drag and drop any model or texture you need onto the engine and it will be automatically imported. If you want any file to be imported before start the engine you can put it into the Assets folder and it will be automativally imported at Init.
  • Scene Management: Save your work by saving it into a scene. Save your scene with the name you prefer or overwrite an existing scene.
  • Camera Culling: Why should we waste resources printing objects which won't even be on screen? That's the question which leads to a camera culling implementation which will discard objects out of camera view printing only those which can be seen. to visualize the process Genesis Engine lets you choose if you want camera culling to be applied only on the main camera or also on the editor camera.
  • Resource Management: Memory management is very important in computer games, so in order to save some those resources which won't be used won't be loaded until they are required and at the time they stop being used they will be unloaded from memory.

Shaders

Shader editor

  • Easily edit shaders using its shader editor inside the engine itself.
  • After compiling the shader uniforms will be automatically detected and shown in the inspector so you can edit them faster than writing them into code.
  • More than ten already integrated uniforms which makes development easier such as time, acces to textures, its tiling and camera position and matrices.
  • Errors are directly shown in the shader editor in the line which causes them for faster debug. If an error is not caused by a specific line or for something external to the shader text it will be shown in the console.
  • Shaders can easilly be applied dropping them in the inspector or directly onto the scene.
  • Vec3 and vec4 uniforms can be edited with a color selector.
  • Shaders support transparency if the mesh is set with the blend property.
  • Materials suport diffuse and normal maps to be applied dropping them onto the Component and change properties such as albedo and tiling.

Water Shader

  • A water shader example comes included in the engine.
  • It uses normal maps to simulate minor water movements and ondulation and Gerstner Waves to simulate bigger ones what makes them more organic and dynamic.
  • By default there are three waves but for everly line of code you can add a totally diferent wave type using only one function.
  • To simulate foam this shader uses cellular noise and fbm noise what makes the foam texture independent and makes resolution always look good.
  • Depending on the vertex height foam will be more or less intense so it seems more realistic.
  • Opacity can be changed to make it more or less dense.
Genesis Engine
Genesis Engine

MIT License Copyright (c) 2020 Marc Pagès Francesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files Genesis Engine, 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.

Icons made by Freepik from www.flaticon.com