Custom game engine made in C++ for the game Streamlined Mastermind.
Project Details
The concept for Streamlined Mastermind was made earlier, the idea was that we would create an engine where Streamlined Mastermind would be made in. Unfortunately we didn’t have enough time to build the engine into a production ready tool, the final game was made using an existing engine.
Engine | Custom C++ Engine |
Platforms | Windows |
Development Time | 8 Weeks |
Team | 1 Engine programmer 1 Tool programmer 2 Graphics Programmers 3 Game play Programmers |
My Role
Graphics programmer; I focused on the higher level components of the graphics system while my counter part worked on the actual implementation of DX12. I worked on the camera and the GUI system.
The GUI system was inspired by layout/rect systems as seen in Unity and UE4. It supports anchors, pivots, parent-child system, layout groups and layout modifiers.
Sample GUI setup code, using a layout and modifier.
// Create Canvas.
auto* canvas = gm->CreateGameObject<GuiCanvas>("Canvas", camera);
// Create Layout group.
GuiHorizontalLayoutGroup hlg(canvas);
// Add a modifier to auto scale the width of the object.
hlg.AddLayoutModifier(std::make_shared<MGuiAutoSize>(true, false));
// Set the height and position.
hlg.SetLocalRect({ 0, 0 }, { 0, 32 });
// Add some sprites as children of the layout group.
GuiSprite sprite1(hlg);
GuiSprite sprite2(hlg);
Sample code of configuring an sprite to stick and stretch to the bottom of the screen with a height of 42.
GuiSprite* sprite = new GuiSprite(canvas);
sprite->SetAnchor(anchor::BottomStretch);
sprite->SetPivot(pivot::BottomCenter);
sprite->SetRect(0, 0, 0, 42);