Thursday, 13 December 2018

Unreal: Project Evaluation

Unreal is visually enticing and appears to be extremely user-friendly. In the beginning stages, I found it really nice to use and I was excited to learn more. My game was looking extremely fancy without trying too hard, and perhaps this was a bit of a trap.

I got carried away with the visuals, and when it came down to accomplishing solid mechanics, I found it far more challenging than using C# in Unity. The blueprints to me look inevitably messy and there is such a huge range of nodes available that it is quite confusing, to begin with - especially with being used to Unity, and all the keywords are different.

In the early stages, I spent a lot of time getting the scene complete - the terrain, character retargeting, the building and using materials etc. I was really pleased with my progress, and once I started to work more on the blueprint side of things, the mechanics, I started to struggle and encounter lots of bugs in my game.

I felt as if every time I managed to fix one thing, another broke. I found fixing bugs and errors in Unreal is quite challenging, and not clear where the problem is. By the end, I believe I am getting more used to reading the error messages and navigating to where they are located, but using Visual Studio combined with Unity seems to offer much more support for error handling. 

Even though I have struggled with blueprints and getting used to all the options and windows available in Unreal, I have learned a huge range of elements in areas I would not have expected, such as retargeting a character and animations, creating terrain and using a blend of textures and materials to create various surfaces.

If I were to do the project again, I would spend far less time getting into the visual side of Unreal and focus heavily on the fundamental mechanics. My game is missing a huge amount of features, and as a game would be very unsuccessful. The visual side of it is impressive, but that only goes so far.

I should have taken more time to learn the basics of blueprints, and tried to relate it to C# as much as I could. It was not till later on, I started to discover several nodes that were the equivalent to C# functions, and it became easier to understand. If I had focused on this from the start, I would probably have got myself into creating a greater range of elements and learning much faster. The graphics could have been added at a later date, instead, I found myself struggling and spending most of my time trying to fix bugs with the few features that I did manage to implement. 

Maya: Model Evaluation

Maya is difficult for beginners to grasp at first. Even the navigation itself is quite confusing, to begin with. I find myself flying around Maya quite naturally now, however, if I switch to Unreal after using Maya it becomes extremely difficult to navigate around Unreal naturally. The first week of using it was primarily getting used to it, and once I got past that stage and was familiar with the basic tools, I started to feel far more confident and begun enjoying it. I have come to realise that many tools in Maya are quite unreliable and 'buggy', which makes it confusing as a beginner to know which tools to use, and which ones to avoid - or which ones to use in certain situations.

Once I began getting into the model, I had to discover the hard way to ensure the model is as clean as possible. I restarted my model because of it becoming deformed every time I tried to progress any part of it, this was because I did everything on one object and did not keep the edges and vertices clean and organised.  

From using Maya, I have learned about a small range of tools, but mostly getting used to Maya in general, the interfaces, options and the importance of being organised and clean has been a focus for me, oppose to learning a huge range of tools. I think it is extremely important to get into good habits and keep your model clean and professional from the beginning. I found myself restarting my model twice because I had not kept it as clean as I could, which resulted in huge problems later on, that it was actually easier for me to start again. 

If I were to restart the project, I would start much earlier and devoted more time to learning the ropes by following online tutorial series. By jumping into the project, even though I made mistakes and had to restart, it was a valuable lesson learned and perhaps better I did jump in and learn the hard way. In the future, I would attempt a practice model which has little to no detail and work my way up in difficulty. In hindsight, I should have taken the time to search up about the most popular tools that are used by the professionals, and tried to learn a few key ones that may have made my project far more efficient. I spent too much time making my own mistakes and learning the difficult way, rather than taking more time to learn from the best and avoid the mistakes they have already made.

Unreal: Texture Streaming


Another error I seem to have encountered is "Texture Streaming Pool Over X MB". This is visible in the top left-hand corner of the editor during run-time. However, it does not appear to cause any issues whilst running the game.

After doing some research online and checking out the documentation: https://docs.unrealengine.com/en-us/Engine/Content/Types/Textures/Streaming

It seems that it appears when there is an issue with the number of textures being used that are causing performance issues. However, this message has appeared after deleting a huge amount of unused assets and I have not added any additional textures to the game.

According to users on various online forums, the texture streaming pool size by default is very small and can be enlarged via the Engine.ini file, or via command line in the console.

https://www.reddit.com/r/unrealengine/comments/9ex9l3/why_do_i_get_texture_streaming_pool_over_xxxx/
https://forums.unrealengine.com/development-discussion/content-creation/94843-texture-streaming-pool-over

Unreal: RunTime Error (Damage Volume)



My project was 8gb and I was aware I had a lot of asset packs that I was only using small amounts of. I decided to go through the entire project and delete as much as I could without breaking links in the project.

After I did this, it appears that I have a run-time error with the Cast To FirstPerson in the Damage Volume blueprint. I am not sure why this would be linked to any of the assets I deleted, or it could be unrelated. It still works but displays a run-time error which is a bit confusing.

The run-time error is the equivalent of a null reference exception in Unity. Meaning whatever it is trying to access, does not exist. I am confused about this situation, because I have searched for a long time trying to fix it, and I can not spot any problem.

In Unreal, the errors that I have received do not seem to be particularly clear and helpful. This one does point to the location and the node which is far more than any of the others. However, in Unity, if there is an error it seems to be a lot easier to locate and carry out testing to find the solution i.e. break points etc. Whereas Unreal has not provided much support for error handling, and quite unclear of all the existing references in the blueprints.

Unreal: Max Zombie Spawn Over Time



I created a very simple method of increasing difficulty in the game. I have set the game to allow a maximum of 20 zombies at one given time, to begin with, and I have run out of time to create a wave system so as an alternative I implemented a system to increase the number of zombies allowed at one given time based on the time survived.

We begin with 20 zombies allowed, and increase the number allowed by 10 every 30 seconds of survival. This means over time, if the player is not keeping up with killing the zombies, there will be a huge number to the point movement and survival becomes more difficult.

This is an extremely basic and poor way of increasing difficulty and only intended to be temporary. Ideally, I wanted to create a wave system where I had X amount of zombies per wave, and increase the number of zombies per wave, as well as their health and damage.

The zombies are currently 3 shots per kill, and quite easy to spam shoot them all dead in a number of seconds. To make it slightly harder, I increased their fixed damage to 10% rather than 5% and lowered the rate of armour regeneration considerably.

Currently, the game still has not got much of a purpose and could seem boring. I should have added a simple timer to display to the player which could add an element of fun to 'survive' the longest.

Unreal: Key Pickup not working correctly

After recreating the NavMesh in an attempt to fix the problem that has reappeared with walking up the stairs and becoming stuck, it appears to have affected the key pick up. This did not solve the stairs issue, but it did unexpectedly help with the movement of the AI hugely.

The collider appears to be solid, and not a trigger, meaning I cannot walk over the item and pick it up. It seems to pick up sometimes, after standing by it for several seconds or if I sprinted at it. But whilst walking up to it, it did not allow me to pick it up.

I spent a long time testing it and trying to figure out what was happening. Eventually, I realised that the zombies were picking the key up, and not me. However, if I sprinted at it at the beginning of the level, it allowed me to pick it up sometimes. Whilst playing around with settings, either I could not pick the key up, or the zombies could...





After a lot of trial and error, attempting to achieve the correct results, I managed to find the solution.

I knew what I was trying to achieve, but I was confused about the settings and looking online did not particularly help me to get the results I wanted.

After getting to the point of almost guessing, I decided to look at other actors and try to achieve the original settings I had to begin with in an attempt to retrace where I went wrong, as it was originally working with those settings. I decided to add a node Cast To FirstPersonCharacter to ensure it was the player colliding, and not the zombie.

Finally, I was able to find the results that allowed me to pick the key up as I once did, and the zombies are ignored by the collision.









Unreal: Fixing Key (Shooting key picks item up)



Picking up the silver key works as expected, except for that I found that by shooting the key it destroys it, and it proceeds to unlock the corresponding door still. So essentially, we can pick the key up by shooting it.

After some trial and error, I found that I could edit the collision settings to make it custom. This way I set the collision to block everything except for the player. The bullet is considered a pawn, meaning it will be blocked now.

This solved my problem, and everything appears to be functioning as expected.

Unreal: Project Evaluation

Unreal is visually enticing and appears to be extremely user-friendly. In the beginning stages, I found it really nice to use and I was exc...