“A duck shoots a laser… perfect!”
Quick Facts
Type of project: |
Solo, Coursework |
Date Produced: |
late 2020 |
APIs used: |
ENet (Network) OpenGL (Graphics) FMod (Audio) Bullet (Physics) ImGUI (GUI) |
Video
Key features
- The C++ engine uses commercial middleware which would be used to produce a simple game.
- The game features a duck that shoots targets, with multiplayer being multiple ducks shooting targets.
- The engine includes animation, local networking, physics and level switching.
- It uses common design patterns including flyweight, command (events) and singleton.
- The engine scored 88% for the module.
the full story
The coursework instructed us to make a 3D, network-capable engine which will be used to produce a game. This was used for common situations of a client/employer wanting the end product via a deadline. Another aspect of this was to look into data-oriented design, where data outside of the engine dictates the game inside the engine.
The engine fulfilled what was planned in a unreal prototype video of my concept, which was shooting targets. This was enhanced in the engine with additional features like animation when a target is hit, camera switching, level switching, sounds and network-capability.
On the development side, nearly all of the game was dictated using JSON-format text files with “components” like colliders and Audio players. These components were also relaxed with what’s required. For example, the “transform” component can use any combination of position, scale and rotation. the Input module (used for inputting from the mouse and keyboard) was designed so that if the input codes change, it does not affect the whole system as they read from a defined dictionary.
The engine fulfilled it’s purpose while adding additional features via a data-oriented approach and design patterns. Flyweight was used for saving performance on setting up multiple models. All modules of the engine responded to the Event system where each module can be independent. It was graded 88% and received good feedback.
Testimonial
additional resources
Repository link to “The TAIM engine” in Github:
https://github.com/TaylorRings-MagicEmporium/The-TAIM-Engine