Monster Attack is a demo project for how to make a game with EZ engine. It is heavily inspired by the immensely fun tower defense game Orcs Must Die! (go check that out too!). The demo is meant both to showcase what the engine can do and to show how various game mechanics can be implemented.
If you are interested in EZ, you are encouraged to check out this project, play around with it and see how things are set up.
However, this project is work-in-progress. If you like, you are welcome to contribute to it.
Click the image below to see a playthrough video:
This repository is fully self-sufficient, since it pulls in ezEngine as a submodule. This guarantees that it uses the correct version.
- Clone this repository:
git clone https://github.com/ezEngine/project-monster-attack.git
- Change directory:
cd project-monster-attack
- Make sure you have all the necessary submodules:
git submodule init
git submodule update
- Generate ezEngine solution for Visual Studio:
cd ezEngine
GenerateWin64vs2022.bat
- Open solution:
ezEngine/Workspace/vs2022x64/ezEngine_vs2022x64.sln
- Build Dev or Debug build.
- Run the editor.
- In the dashboard under Projects select Browse... and select the file
project-monster-attack/Monster Attack/ezProject
- When asked to build the engine plugin, click Apply.
- Open the Scene Level2 (working title)
- To edit / compile the C++ plugin, choose
Project > C++ Project > Open Solution
- To play the game from the editor, press
Ctrl+F5
- To play the game in stand-alone mode, press
Ctrl+R
and choose Export & Run.
- WSAD + Mouse for first person movement
- Shift to run
- Space to jump
- ESC to quit the game
- Left click to shoot or place a trap
- Use the number keys to switch between your gun and the different traps.
- G to start the next wave
EZ has extensive online documentation. There are also videos on YouTube about various topics. We also have a Discord server where we've been describing this project in more detail.
This is a list of things that could be done to play around with the demo. Feel free to contribute to the project. If you want to check-in assets, make sure they are under a free license (MIT or CC0). So far we have been using assets from Quaternius and freesound.org.
- Design different levels, with different phases
- Modular Level pieces:
- Stairs
- Pits (water / lava)
- More decorative elements
Additional sounds could be added for these things:
- Monster footsteps
- Monster spawn
- Monster reaches goal
- Monster death
- Level ambience / music
- Different level phase music (build, countdown, fight, win/lose)
- Trap placement
- Player wins
- Player loses
- Better hit / blood effects
- Torch fire
- Goal magic portal thingy
- Death explode effect
- Impact effects for darts / magic bullets on different surface types
- Ambient smoke / haze
- Monster reaches goal
- Monster spawn / spawn phase begin
- Infrastructure for AI will be WIP for some time
- Proper steering AI to avoid other monsters
- Colliders to prevent player from walking through
- Proper skeleton / hit box setup
- Ragdolls
- Different monster meshes and animations (needs free assets)
- More trap types
- Better trap placement (proper validation where one can be placed)
- Selling traps functionality
- Highlight shader (for selecting traps to sell)
- Different shading during trap placement (preview)
- Proper level UI with RmlUI
- Show money, current phase (n of m), playtime
- Show available + selected weapon / trap
- Main menu, with scene selection
- Graphics menu, with rendering options, monitor + resolution selection, etc
- Gamestate should show main menu when starting stand-alone
- Level progression
- Scene selection and unlocking levels
- Restart level when player loses
- Allow player to restart level any time