Description

3D Engine made by Guillem Sunyer Caldú and Simón Stoyanov Beltrán for the 3D engines subject during the 3rd year of Game Design and Game Development degree at CITM.

The engine was born for the 3d engines assignment and has a User Interface subsytem.

Work

Show More

Guillem Sunyer

  • Engine Theme
  • XML loader implemented
  • Geometry Test First Assignment
  • Console Window
  • AppVeyor implemention
  • Json Module
  • Profiler Window
  • Configuration Window
  • Hardware Window
  • Key Binding implemention
  • Docking
  • Layouts implemention
  • Cursor class
  • Component Transform
  • Component Mesh
  • Component Camera
  • Mesh Rendering
  • Texture Rendering
  • Orbit behaviour for assignment implemented
  • Parenting of GameObject shown at hierarchy
  • Frustum implemented
  • Mouse picking
  • ImGuizmo implemention
  • Play, Stop and Pause modes implemented
  • First approach to Explorer Window
  • User Interface 2D Plane Rendering
  • UI Canvas
  • UI Image
  • Mouse pick in User Interface
  • UI Text and UI Text Input
  • Show More

    Simón Stoyanov

    • Random Number Generation implemention
    • About Window
    • MMGR implemention
    • Wireframe, Fill and Point Rendering modes implemented
    • Hardware Window
    • Ambient, Diffuse and Specular lights with color picker
    • VRAM and RAM shown in profiler
    • Docking
    • Menu Bar for the editor
    • Inspector Window
    • Icon added
    • First approach to Mesh rendering
    • TextureLoader and MeshLoader
    • Unity-like Movement
    • K-D Tree Implemention
    • First approach to Save and Load
    • Explorer Implemention
    • Base for the User Interface event system
    • Keyboard and Mouse events for the User Interface
    • Anchors, Position and Scale of the UI Components serialization
    • UIElements texture serialization
    • Button implemention
    • Checkbox implemention
    • Button implemention
    • HTML Website

    Project

    The game engine's layout is based in Unity's design and has a docking functionality. SuSto Engine's game objects work with components, so if the user wants to use a mesh, a Mesh Component will be needed.

    Sub-Systems

    Show More

    Hierarchy

    GameObjects are shown at the hierarchy. There, they can be selected (by right clicking) and created (with a button above the list of GameObject. Also, by right clicking and then pressing the button delete it will erase the GameObject.

    Show More

    Inspector

    At the inspector it is posible to look at the components of a selected GameObject, which would be the next ones:
    • Transform
    • Mesh
    • Texture
    • Camera
    • UICanvas
    • Other User Interface Elements
    Show More

    Console

    The console prints the log of the engine, and also admits commands. At the momement, there are two commands:
    • .Clear: clears the log of the console.
    • .Help: Shows a list of commands.
    Show More

    Profiler

    Mainly, the user can look at the memory usage and the framerate within the profiler window.

    Show More

    User Interface

    We created a user interface that can be accessed by creating UI components. First, to use the UI elements in a proper manner there must be a canvas which will be the parent of the elements created later. In this version of the engine the UI elements that can be used are:
    • Button: A button has 3 textures, an idle texture (when there is no event activated), an over texture (if the cursor is over the element) and a pressed texture (if the element is clicked).
    • Image: An image is basicaly a texture rendered in the canvas.
    • Checkbox: A checkbox has 2 states, ruled by a bool that changes between true or false if the element is clicked.
    • Text: A text is printed in the canvas by converting it to a texture using a font.
    • Input Text: The text input is an element that lets the user write text into the space given by the element.
    Show More

    Toolbar

    We created a user interface that can be accessed by creating UI components. First, to use the UI elements in a proper manner there must be a canvas which will be the parent of the elements created later. In this version of the engine the UI elements that can be used are:
    • Move: Selects the current guizmo mode to Movement.
    • Rotate: Selects the current guizmo mode to Rotation.
    • Scale: Selects the current guizmo mode to Scale.
    • Play: Starts the game, every object that is moved during play-time will return to its original position, also for the rotation and scale.
    • Pause: Only shown during play-time. It will change to editor mode, stoping the game.
    • Draw KDTree: Debug functionality that shows the planes that are dividing the gameobjects to create the KDTree.
    • Draw BBoxes: Draws the bounding boxes of all gameobjects that have one.

    MIT License

    Copyright (c) 2017 Guillem Sunyer Caldú and Simon Stoyanov Beltran

    Permission is hereby granted, free of charge, to any person obtaining a copy of th is 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.

    Get In Touch

    • C/ de la Igualtat 33, Terrassa CP 08222
    • simon.stoyanov@hotmail.com
    • gsunyercaldu@gmail.com
    • @stoyanov_simon
    • @6uillem