top of page

ALIEN GAME ENGINE

INTRODUCTION

Alien Engine is a Game Engine made by Víctor Segura Blanco and Oriol Capdevila Salinas forked by Pol Recasens Sarrà and Gerard Clotet Rodríguez, four studens from CITM University, Terrassa, for the Videogame Engines Subject in the 3rd grade in 2019. ​

The code is written in C++.

A User Interface system is included and there are many features and customizable options.

Captura.PNG
GitHub-Mark.png
INTRODUCTION

ABOUT US

Pol Recasens Sarrà

pp.jpg
  • Component Image

  • Component Button

  • Component Canvas

  • Component InputText

  • Component CheckBox

GitHub-Mark.png

Gerard Clotet Rodríguez

IMG_20191227_230926.jpg
  • Component Label

  • Resource Font

  • Implemented TrueType

  • Component Button

  • Serialize UI

GitHub-Mark.png
ABOUT US

CORE SUBSYSTEMS

Game Objects

To implement the Game Objects, we followed the Entity Component System. The different components that can be attached to a game object are: Component Transform, Component Mesh, Component Material, Component Light and Component Camera.

Also, you can attach UI components. This will be shown below.

The image below shows the structure of the game object. There's a main class called GameObject, that has instances for every component attached. All the instances are virtual classes that inherit from the base class, called Component. This system emulates the Unity system for GameObjects.

Resource Manager

There are different types of resources: Resource Mesh, Resource Font, Resource Model, Resource Prefab and Resource Texture.

To make the code more efficient and make it faster, we implemented the Reference Counting system. This manager keeps track of every resource and we can count how many references the resource has. If a resource has references, we load it to memory and if the references down to 0, we unload it from memory. 

Also, we have implemented the the Serialization system. Some times there are formats that are too slow to read. In order to fix that we store all the meshes, textures, models and fonts in our own simple format in the Library Folder, just as Unity.

The .meta is a text file that stores all the properties of a resource and its UUID, and is used as a linker between the asset and the resource.

GUI

Using the ImGui Library we could create a fast and easy to use User Interface. The method used was using a ModleUI that works as a manager for the different ImGui panels and a Panel class, which every panels inherit from it.

User Interface Sub-System

In the last assignment we have created a UI system that uses the Unity UI as a reference.

Every UI component is setted as a component for a game object. In that way, we can create different types of UI components: Component Canvas, Component Button, Component Image, Component CheckBox, Component Input Text and Component Label.

As a component, they inherit from the base class Component.

They can be created by opening the UI menu in the top bar menu. 

Every component will be created without texture and in the Inspector, we have created a drag&drop system to allow the user put a texture from the assets folder to the UI component.

Also, in play mode, all the UI components that have intern logic, such as a button or a checkbox(clicking them a function is executed) have a button in the inspector panel that allows you to execute it's logic to test them or you can simply click the component in the screen.

Every UI component that has a texture, uses a Resource Texture and using the OpenGL, we can draw them.

 

 

 

 

 

 

 

 

 

 

 

Component Canvas

The canvas is where all the UI is setted. If there's no canvas and you create a UI component, the canvas will be created automatically. It has no texture and it works as the parent of every component of the UI.

Component Button

The component button allows you to execute a function when you press it. It is created without texture, and if you want to put a texture, you can do it by dragging it in the inspector. Also in the inspector you can change the state colors. This colors are drawn above the texture, and allows you to differentiate between idle, hover and pressed state and in the inspector you will have a button to execute it's logic(only in play mode).

Component Image

The component image is just a texture. Same as the button, you can drop the texture you want from the assets folder to the image inspector. 

Component CheckBox

The component CheckBox uses the component image to change the texture between being selected or not. Clicking on it will execute a function and the checkbox will be marked. If you click on it again, the checkbox will be unchecked and leave the code as it was before clicking. Same as the button, you can change the state colors and in the inspector you will have a button to execute it's logic(only in play mode).

Component Label

For the component label we needed to include the FreeType library, which allows us to create textures from strings.

Once you create a label, in the inspector you will see an input text, where you can write the string you want for your label.

Component Input Text

The component Inpu Text uses the label component too. As the button, when you click it a function will be executed. In this case the component will start getting keyboard input. That way, you can type whatever you want (10 characters maximum) and once you press "Enter" or click on the "Done" button that will appear in the inspector, the input text will stop receiving the keyboard input. The label will be updated at the same time as you type. As other components, you can change the state colors.

Captura2.PNG
Captura3.PNG

Other Features

  • Time Management

  • Quadtree and Frustum Culling

  • Camera Editor

  • Scene Serialization

  • Importers (Scene, Material and Shaders)

  • Mouse Picking

  • FileSystem

CORE SUB-SYSTEMS

VIDEO EXAMPLE

VIDEO

Download Now!

Installation

To install the game follow the next steps

1. Click in the link you will find in the bottom of the page

2. Download the last release

3. Once the .zip is downloaded, decompress it

4. Execute the game engine and enjoy it!

 

IMPORTANT: do not modify, change or add any folder or file except for

the assets folder as you might not be able to execute the engine properly. ___

DOWNLOAD

Contact Us

We want to hear from you!

Thanks for submitting!

CONTACT US

License

MIT License Copyright 2019 Gerard Clotet Rodríguez & Pol Recasens Sarrà 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.

bottom of page