Awesome
<a href="https://github.com/JanSeliv/Bomber/blob/main/LICENSE"></a> <a href="https://www.unrealengine.com/"></a>
<br/> <p align="center"> <a href="https://github.com/JanSeliv/Bomber"> </a> <h3 align="center">๐ฃ Bomber Project</h3> <p align="center"> <a href="https://discord.gg/jbWgwDefnE"><strong>Join our Discord โบโบ</strong></a> <br/> <a href="https://github.com/JanSeliv/Bomber/releases">Releases</a> ยท <a href="https://trello.com/b/1jbKvyeh/bomber-kanban">Kanban Board</a> <br/> <br/> <img src="https://github.com/user-attachments/assets/e8774b8b-2f76-42f1-8eae-e6849658d2d3" alt="Logo" width="360" height="270"> </p>๐ About
Bomber is an open-source multiplayer game developed on Unreal Engine 5 for Windows and MacOS, offering fast-paced, bomb-laying action where the objective is to be the last one standing.
Table of Contents
- ๐ฃ About the Bomber Project
- ๐ Getting Started
- ๐ Key Features
- ๐พ Play the Build
- ๐ Kanban Board
- ๐ Changelog
- ๐ฎ Overview
- ๐งโ๐คโ๐ง Credits
- ๐ซ Feedback & Contribution
- ๐ License
๐ Getting Started
This project contains submodules and requires --recurse-submodules
when cloning:
git clone --recurse-submodules https://github.com/JanSeliv/Bomber.git
If already cloned without submodules, you'll find empty folders in Bomber\Plugins
and error on project startup. To download submodules separately, run:
git submodule update --init --recursive
๐ Key Features
This project could be useful for learners, demonstrating next features:
- Multiplayer
- Procedurally generated playfield
- Challenging AI
- Enhanced Input
- Modular Game Features
- Complex cinematics (Level Sequences)
- Data-Driven Design (Data Assets, Data Tables, Data Registries, see below)
Despite this project is fully written in C++, it's extremely blueprint-friendly:
- Data-Driven Design: No hardcoded values. All data can be tweaked via Data Assets in editor as well as accessed in blueprints [doc].
- Fully Exposed: Every class, property, and function is exposed to Blueprints allowing for heavy changes the logic with no code.
- Well-Commented: Every class, property and function is well-commented for easy understanding.
- Utility Libraries: Core static functions are accessible globally like Cell Utils [doc]. See more in the
Source\UtilityLibraries
folder.
Next plugins were developed for this project, but could be useful for other developers:
- โ๏ธ Settings Widget Constructor
- ๐ Pool Manager
- ๐ญ Morphs Player
- ฦ Function Picker
- >_ Meta Cheat Manager
๐พ Play the Build
To download and play the build, visit GitHub Releases or GDrive.
Want to test develop branch on Steam? Message me for a key.
๐ Kanban Board
Stay updated with the current progress and plans on the Trello board.
๐ Changelog
13.01.2024
- Updated to Unreal Engine 5.3.
- New Main Menu with completely different UI and complex cinematics for Hugo and Fori characters on starting the game:
- New Bomb meshes for each character (shown from left to right: Bastet, Hugo, Fori, Roger):
- New game icon:
- New Wall mesh for the Maya level.
12.06.2023
- Updated to Unreal Engine 5.2.
- Added MacOS support.
- Added Ultra-wide resolutions support.
- Extracted logic into plugins, so other developers can benefit from it in their projects
- Added Foot Trails for the Maya level as
Modular Game Feature
:
<img width="560" alt="image" src="https://github.com/JanSeliv/Bomber/assets/20540872/a77c2e38-4fd6-4a04-988e-05d9613bd97e">
- New power-ups meshes for the Maya level (shown from left to right: move speed, bomb length, bomb quantity):
<img width="360" alt="image" src="https://github.com/JanSeliv/Bomber/assets/20540872/1e526fda-e51a-479c-b541-acccc8457725">
- Added new cheats such as:
Bomber.Level.SetSize 9x7
(find more on the Bomber cheats page) - Updated Main-Menu background music for all levels.
31.05.2022:
- Added initial multiplayer support for 4 players (without Steam now, use 'Open' command to connect to each other).
- Created the Pool Manager for the generated level to avoid spawning and destroying actors on each level reconstruction.
- Added new SteelMan character for AI players with 3 different skins.
31.12.2021:
- The game migrated to the Unreal Engine 5.
- Added sounds (background music, UI, in-game sounds) and sliders to tweak volumes in Settings Audio tab (Master, Music and SFX).
- Added Controls tab in Settings to allow player remap input keys.
03.06.2021:
- Completely updated the Maya level.
- Added the Water level of the Roger character.
- Added settings.
31.01.2021:
- Added the Bastet (Sphynx cat) character with two skins.
- Added the Roger character with one skin.
- Fori and Hugo characters got additional second skins.
31.10.2020:
Added the third Level Map.
25.10.2020:
, developed the new UI prototype.
- Added the second City Map.
- Added the Hugo character.
- Added the Fori character.
15.10.2019:
Uploaded first game-ready build.
๐ฎ Overview
The level camera that moves and zooms lens depending on the distance between players:
Level actors
- Items that affect the abilities of a player during gameplay:
Skate: Increase the movement speed of the character.
Bomb: Increase the number of bombs that can be set at one time.
Fire: Increase the bomb blast radius.
- Bombs: are left by the character to destroy the level actors. Triggers other bombs and prevents players from moving through the bomb after it has been left behind.
- Walls: are not destroyed by a bomb explosion and stop the explosion.
- Boxes on destruction with some chances spawn an item.
- Players and AI - characters whose goal is to remain the last survivor for the win.
Game interface
The number of items that are shown at the left side of the playerโs avatar, the timer that is placed under and at the right side is shown the number of alive players:
The game menu is shown the result of the games match (win, lose, draw). If the match has not yet finished, it could be minimized or opened out by ESC button in order to continue watching the game or restart the play, or to return to the main menu:
- Shows the win notification when there is one character left:
- Shows the draw when the last players are killed at the same time or at the end of game timer:
- Shows the lose when the player was killed:
Procedural generation
- Symmetrical regeneration for each new game:
- Scaling sides sizes in the editor or sizes selection in the start menu:
Cells Data Structure
- Actors snapping to the center of the cell:
- Searching of the nearest cell to an actor:
The Map Component
These components manage their owners and update this level actors in case of any changes on the map that allow to:
- Prepare in advance the level actors in the editor time:
(Dragged from the Content Browser the wall, the character, the item, the box, and the bomb, that correctly exploded due to Maps Components)
- Free location and rotation of the level map in the editor time:
Artificial Intelligence
Bots behave like players with no use of the Unreal NavMesh:
- They can find items even around the corners and are able to manage their priorities correctly:
(There are three items: A - the nearest under the bomb explosion, B - the item that is placed around the corner near the enemy character. C - the farthest safe item. The bot does not risk and chooses to move to the C)
- Emergency Priority Change:
(The bot runs for the item, the player otherwise set the bomb. Meanwhile, the bot changes direction and runs off the bomb)
- The bots even survive through in the midst of explosions:
- The editor preview visualization for selected bot automatically updates upon any changes on the map including addition from the Content Browser or drag-and-drop.
Where is :
Green +: a safe crossway.
Red +: crossway which has at least one enemy character.
Yellow F: filtered cells for moving.
Grey ะฅ: the selected cell on which the bot moves to.
๐งโ๐คโ๐ง Credits
- Yevhenii Selivanov - Programming - GitHub, Telegram
- Maksim Shashkov - Level Design & Level Art - Artstation
- Kateryna Shchetinina - Characters & Animations - Artstation
- Yevhenii Oksenchuk - Game Design (Audio, UI, and Cinematics) - Telegram
- Valeriy Rotermel - Progression System - GitHub
Special thanks to the following companies for providing their licenses to support our open source development:
- JetBrains Rider - cross-platform .NET IDE.
- PVS-Studio - static analyzer for C, C++, C#, and Java code.
๐ซ Feedback & Contribution
Feedback and contributions from the community are highly appreciated!
If you'd like to contribute, please fork the project and create a pull request targeting the develop
branch.
If you've found a bug or have an idea for a new feature, please open a new issue on GitHub. Thank you!
๐ License
This project is licensed under the terms of the MIT license. See LICENSE for more details.
We hope you find this project useful and we look forward to your feedback and contributions.