Devlog 1
Introduction
You are the monster in your dungeon. You captured a princess, and the lord is sending his army of knights and town’s people to get her back.
Waves of enemies attack your dungeon to reach the princess you stole. You have to make sure no enemies reach the princess otherwise you lose the game. You will be able to swap between 3 monsters, each with a unique ability to help defend your dungeon. Some of these abilities help you navigate the dungeon while others help you defeat the waves more easily. The waves are procedurally generated and will become harder and harder till eventually you lose. How many enemies you defeat before eventually being overrun will define your score.
The Team: We are a group of 3 artists and 2 programmers. The artists follow game graphics productions and the programmers follow game design at Howest.
Unreal or Unity?
Unreal has a lot of advantages but these mostly shine in rendering and how things look visually. The Unreal engine is built to create stunning graphics. If we try to create the same scene in unity it requires a lot more setup to get a similar result but once a good render pipeline is chosen, the scenes will also look great.
The big disadvantage in unreal comes when we start writing c++ code. The compiler can be rather slow, issues like null pointers cause the engine to crash and we are generally unfamiliar with how to access basic things (Thus it takes us more time). In Unity we have a lot more experience than in Unreal, so the coding process is a lot faster. When testing both engines we also had less technical issues. Example: In Unreal we had a lot of crashes in Unity we had almost no crashes.
We have a couple of complex mechanics that need to be implemented: the pathfinding for enemies, a procedural wave system, rooms that can be conquered by enemies and recaptured by the player, … We could not safely go for Unreal knowing that a lot of features might not be completely implemented in a polished state. Unity does give us the confidence that the mechanics will be in a finished state.
Graphics wise, Unreal by default sets us up with a great render setup. We believe that if we use the correct tools in Unity, we can achieve something that will look as good.
How will we implement pathfinding in a 2.5D game?
We started by researching on how to implement pathfinding in a platformer. The main idea is that you generate a 2D grid over the area you want your pathfinder to walk around in.
This grid is based on the terrain the pathfinder can walk on and terrain he can't pass through. The way we generate this grid is by shooting a ray from each grid position into the scene if it hits something we mark that part of the area as impassable. If it doesn't hit anything it is open terrain. After the grid generation we can calculate a path for our pathfinder using a standard algorithm like a breath first search or an A* algorithm. A breath first search works for very basic terrain. We used it in our first iteration. Now we use A* pathfinding so we can more easily steer the path in a direction our pathfinder can follow. Because we can now add weights to our path that we can adjust so our pathfinder follows an optimal and usable path. For example, we make terrain above the floor very cheap and in air terrain very expensive, so it knows to not generate a path that is a straight line to the end. But instead follows a more logical path using platforms and terrain usable by our pathfinder since he can't just fly to the end.
To test this path we added a basic Enemy that can now follow this generated path.
The pathfinder isn't completely flawless in reaching it's goal but it is a good start. To make it run better, the path will be based on the capabilities of the enemy. We will also add different terrain types like ladders so the pathfinders will need to be able to use them as well.
How do shaders, lighting and particles work in unity?
We were afraid at first that things like volumetric lighting or shaders would be too difficult in unity for first time users. So, I did some testing to see if it would be possible to get satisfying results in a reasonable time.
Volumetric lighting and fog: In the hdrp it's a 2-step process to get this to work, and quickly tweaking some of the settings gave the results I was looking for.
Shaders: the shader graph in unity is pretty similar to the one in unreal in the way it works. The layout of the menus and naming of functions is different but it's not too hard to get used to.
Particles: the first impression I got is that they are more simplistic than the ones in unreal and that UE4's niagara particles make it easier to create complex particle systems. That said we will probably only need very simple particle effects so that shouldn't be a problem.
Here is the result I came to while testing:
In conclusion, I am confident we can achieve everything we want to inside of unity, without losing too much.
Can we generate procedural caves in Houdini?
For a blockout most definitely , but looking at a final result this might need some manual adjustments at the end due to some problem laying around the correct spawning of rocks in the cave.
Most will spawn fine but there is a part that can spawn over other meshes and make it look off, also stalactites and mites where tested but these cant be spawn or grown out the the map procedurally with a realistic polycount and look not off. This is in general slightly annoying and might need some more testing or otherwise the rocks will be made manually do to a decently high polycount wen done procedurally. A big problem is seeing how complex the environment is it can very easily have an extremely high polycount, something what is being worked on.
The plan for the coming weeks.
We will continue to improve our pathfinding system by adding:
- For each room we will add a pre-generated path so we don’t have to do any calculations for pathfinders that are far away from the player.
- Add different terrain such as ladders.
We will continue working on our Houdini blockout.
- Try to create lower poly rocks.
- Add point color to map.
We will also start working a way to procedurally generate enemy waves. The current idea for this implementation is to generate a number of points based on the wave number and then randomly spread those points over the enemy type to create a random wave.
Get Cave Invaders
Cave Invaders
Defend your treasure at all cost!
Status | Released |
Authors | KillianVermeer, Mikabear, BrianBoddaert, Mathias Tossens, Anouk Tondeleir |
Genre | Action, Platformer |
Tags | Arcade, Fantasy |
Languages | English |
Leave a comment
Log in with itch.io to leave a comment.