Today we show how we combined our work and ask for you help, Again! :)
So, in case you didn't know, the way we are making our game, we are creating an "open world" where the player can wonder around, but we also have temples that are hidden throughout the map.
We wanted to be able to test each temple separately so we could be sure every part of the temple was working and didn't have all of the open world loaded at the same time, so we created individual levels for each temple.
This meant we would have to use Level Streaming.
For those who don't know, Level Streaming is UE4s' way of having multiple levels loaded at the same time. The way it works is you have a level that is persistent, and then add sub-levels to it.
This is a great functionality and it allows you to open any level you want inside of the persistent level. You can also change the colour of each level for easier visual
Keep in mind that, once you open a level, everything that level has in it is loaded, this includes lighting!
Also, if you have an actor that uses another actor reference, this actor has to belong to the same level!
This also means that the UGameplayStatics::GetActorOfClass() starts having a different behaviour. Basically, when using a GetWorld() method, it always returns the persistent level.
This happens with any method that uses a world reference, which meant we had some code to fix, mainly in our AI Spawning.
We had two issues, we needed the AI to spawn inside of its level and, we had individual AI Spawners in each level, but the way we where accessing them was through a UGameplayStatics::GetActorOfClass(), so this meant we where always getting the AI Spawner inside the persistent level.
The first issue was an easy fix, since all we had to do was parent the spawned AI to an empty actor inside its level.
The second one required some research, I had never used Level Streaming in a game before so I didn't know how to get an actor reference to its level. Every time I did this, I would get a reference to the persistent level.
But I knew there had to be a way, because if you look closely in the Details Panel, when you select any object and go to its Actor Tab, it says what level that actor belongs to.
So after a lot of research and people telling me to search using a level string and using a for loop for each actor in the level (something I really didn't want to do), I found exactly what I was looking for. Every actor has the ability to use the GetWorld() and from this you can use the GetOuter(), which is a reference to the level the Actor belongs to.
With this issues fixed, we started to put everything together
These are in-game images of some of our first temples obstacles, which brings us to our next phase.
As you know, when making games, testing is probably one of the most important aspects! Through testing we can see where players get stuck, if mechanics need fixing and if the game is actually fun to play.
Last time we only had a level with some mechanics for you to test, and the feedback we got from you was incredibly helpful.
This time, we managed to create a bit more content and have some of the world for you to also explore!
At the moment we only have 1 temple available and only the first village.
If you would like to try our game we have added a version available for you to download!
This version is still very early in the development! As you play you may encounter some issues. If you do, feel free to comment down below what they where or, if you want, you can also answer this form. Any help will be extremely appreciated
So far we have noticed some issues with our lighting(some areas are too dark) and interface(sometimes the quests don't load). If after the first steps towards the guard a quest does not pop up, we suggest you restart the demo. There is no saving, yet so if you return to the main menu, you will restart the game.
There are also frame rate issues as we are missing most of our LODs. Sorry for this!
There is NO SOUND! yet :)
Settings have not been implemented at the moment!
We hope you play, enjoy and give us plenty of feedback!
When giving feedback, please reply with your utmost honesty, if there is something wrong, something you don't like or something you think would work better in a different way, we want to know! We are here to make a game for you and we need to know if you love it or not.
Once again, thank you very much for your time, sorry if this dev log had a little less content, and we will see you on the next Dev Log!