LittleOrionEngine
C++ 3D Engine developed during the Master's Degree in AAA Videogames Development.
Install / Use
/learn @mariofv/LittleOrionEngineREADME
<h1 align="center" style="border-bottom: none;">
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/">LittleOrion Engine</a>
</h1>
<h3 align="center">C++ 3D Engine developed during the Master's Degree in AAA Videogames Development</h3>
<p align="center">
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/releases/">
<img alt="GitHub version" src="https://img.shields.io/github/v/release/OnionGalaxy/LittleOrionEngine?include_prereleases">
</a>
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/stargazers/">
<img alt="GitHub stars" src="https://img.shields.io/github/stars/OnionGalaxy/LittleOrionEngine.svg">
</a>
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/network/">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/OnionGalaxy/LittleOrionEngine.svg">
</a>
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/">
<img alt="GitHub repo size in bytes" src="https://img.shields.io/github/repo-size/OnionGalaxy/LittleOrionEngine.svg">
</a>
<a href="https://github.com/OnionGalaxy/LittleOrionEngine/blob/master/LICENSE">
<img alt="GitHub license" src="https://img.shields.io/github/license/OnionGalaxy/LittleOrionEngine.svg">
</a>
</p>

Highlights
- Create, save and load scenes.
- Create GameObjects and modify their behaviours using Component system.
- Explore the scene using a Unity-like camera.
- Configure different engine properties: renderer, time management, ...
Installation
- Download the last release (or whatever release you want) from the Releases section.
- Extract
Build.zip. - Execute
LittleOrionEngine.exe.
Usage
Please refer to our Wiki in order to learn how to use the engine.
Development setup
In order to do that assure that you have the following:
- A computer.
- A graphic card with OpenGL support.
- VisualStudio 2017 or above.
Contributing
Because this is a academic project is not possible to contribute directly to this repo. Said that, feel free to fork it (https://github.com/Unnamed-Company/LittleOrionEngine/fork) and to expand it in your own way!
Authors
<table> <tr> <td align="center"><a href="https://github.com/mariofv"><img src="https://avatars2.githubusercontent.com/u/17348688?v=4" width="100px;" alt=""/><br /><sub><b>Mario Fernández Villalba</b></sub></a><br /></td> <td align="center"><a href="https://github.com/yalania"><img src="https://avatars2.githubusercontent.com/u/48101863?v=4" width="100px;" alt=""/><br /><sub><b>Anabel Hernández Barrera</b></sub></a><br /></td> <td align="center"><a href="https://github.com/Dartemiss"><img src="https://avatars2.githubusercontent.com/u/18176345?v=4" width="100px;" alt=""/><br /><sub><b>Enrique Alexandre González Sequeira</b></sub></a><br /></td> <td align="center"><a href="https://github.com/JoanStinson"><img src="https://avatars2.githubusercontent.com/u/24247839?v=4" width="100px;" alt=""/><br /><sub><b>Joan Ginard Mateo</b></sub></a><br /></td> <td align="center"><a href="https://github.com/JorxSS"><img src="https://avatars2.githubusercontent.com/u/49075678?v=4" width="100px;" alt=""/><br /><sub><b>Jordi Sauras</b></sub></a><br /></td> <td align="center"><a href="https://github.com/JordiRomagosa"><img src="https://avatars2.githubusercontent.com/u/9912719?v=4" width="100px;" alt=""/><br /><sub><b>Jordi Romagosa</b></sub></a><br /></td> <td align="center"><a href="https://github.com/Kibium"><img src="https://avatars2.githubusercontent.com/u/24247683?v=4" width="100px;" alt=""/><br /><sub><b>Toni Ferrari Juan</b></sub></a><br /></td> </tr> <tr> <td align="center"><a href="https://github.com/luismoyano"><img src="https://avatars2.githubusercontent.com/u/39064112?v=4" width="100px;" alt=""/><br /><sub><b>Luis Moyano</b></sub></a><br /></td> <td align="center"><a href="https://github.com/marcorod94"><img src="https://avatars2.githubusercontent.com/u/29025282?v=4" width="100px;" alt=""/><br /><sub><b>Marco Rodríguez</b></sub></a><br /></td> <td align="center"><a href="https://github.com/Misarte"><img src="https://avatars2.githubusercontent.com/u/34191130?v=4" width="100px;" alt=""/><br /><sub><b>Artemis Georgakopoulou</b></sub></a><br /></td> <td align="center"><a href="https://github.com/pacasasgar"><img src="https://avatars2.githubusercontent.com/u/15977683?v=4" width="100px;" alt=""/><br /><sub><b>Pau Casas Garcia</b></sub></a><br /></td> <td align="center"><a href="https://github.com/raulgonzalezupc"><img src="https://avatars2.githubusercontent.com/u/56253770?v=4" width="100px;" alt=""/><br /><sub><b>Raúl González</b></sub></a><br /></td> <td align="center"><a href="https://github.com/RickyVimon"><img src="https://avatars2.githubusercontent.com/u/33130090?v=4" width="100px;" alt=""/><br /><sub><b>Ricard Vivó</b></sub></a><br /></td> <td align="center"><a href="https://github.com/vidalmelero"><img src="https://avatars2.githubusercontent.com/u/43371298?v=4" width="100px;" alt=""/><br /><sub><b>Vidal Melero</b></sub></a><br /></td> </tr> </table>Developement methodology
This project was developed following agile methodologies philosophy. If you are interested to know the tasks distribution don't hesitate to visit our Trello board!
Built With
- SDL 2.0 - Used to manage window creation and input.
- glew 2.1.0 - Used to manage OpenGL extensions.
- MathGeoLib 3.0.0 - Used to do the maths.
- Dear ImGui 1.73 - Used to build the GUI.
- ImGui filebrowser - Used to open file directory with imgui.
- DevIL 1.8 - Used to load images.
- assimp 5.0 - Used to load 3D models.
- Font Awesome 5 - Used to display fancy icons.
- Icon Font Cpp Headers - Used to import Font Awesome icons in C++.
- PCG - Used to generate good random numbers in C++.
- rapidjson 1.1.0 - Used to handle json files.
- Debug Draw - Used to draw basic shapes.
- par_shapes - Used to generate basic primitives.
- ImGuizmo - Used to draw gizmos.
- PhysFS 3.0.2 - Used to manage file system.
- Bullet Physics - Used to simulate physics.
- spdlog - Used to log stuff.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Release History
- [1.0.1] Erradicating the bugs and polishing
- Lots of bug fixes.
- Tuned up controls in order to give best user experience.
- Performance improvements when loading resources.
- [1.0.0] v1.0.0 release is here!
- Mesh materials. It mesh has its own material, that stores different textures and light parameters.
- New
ComponentLight, that represents a light source for the scene. It's used along the mesh materials. - Mouse picking. Game objects can be selected clicking on them in scene window.
- Gizmos. They are used to modify the transform of the selected object.
- [0.2.2] Binary files and scene serialization
- Better resources management.
- Assets are transformed to less space-consuming format.
- New cache that avoids duplication of resources.
- Serialization of a scene, that allows loading and saving scenes.
- [0.2.1] Speeding up the engine!
- New module ModuleCamera. It contains camera frustums that can be attached to GameObjects.
- Two new tabs, Scene and Game. The former contains the scene seen from the editor camera while the later contains the scene seen from the game camera.
- Frustum culling. With this improvement meshes that are outside camera frustum are discarded in the render process.
- Camera clear modes. Camera can be cleared into a skybox or a plain color.
- Texture is rendered using a texture instead of OpenGL primitives.
- Quadtree and OctTree. With this improvement we can speed up even more the render process by reducing the number of checks.
- New module ModuleDebug. It contains usefull Debug functions.
- [0.2.0] And there were GameObjects
- GameObjects come in. Each GameObject represents an entity that can be modified using components.
- Components are objects that contain different entities parts, like meshes, materials, etc.
- New hierarchy window that represents the scene GameObject hierarchy.
- Revamped properties window. Here component parameters can be modified.
- [0.1.5] Final 0.1 version (this is the one teachers)!
- Fixed various bugs.
- Several refactors in order to follow good C++ practises.
- Super cool README.
- [0.1.4] New LOG, preparations for final 0.1 alpha version!
