Long time no see. Four months have passed since my last news so it's really time for some updates. Here's a short list of the major things I've done:
- substitution of NGUI in favour of uGUI
- implementation of a dynamic character controller
- implementation of an inventory system
- improved build mode (level selection and basic plot management)
- improved vehicles (cockpit view, transparent windows and interactive components, e.g. doors)
I also have to announce rather sad news because I have to postpone multiplayer support indefinitely. Right now it's just too much for me alone to do but I will still keep it in mind so that I might be able to add it later.
Unity's GUI System
I've bought the NGUI package from Unity's Asset Store in February 2014. At that time it was one of the best Unity GUI frameworks I could get. However, it also was a pain every now and then. I had a lot of problems with pixel perfection, depth sorting and the behaviour of some widgets. Don't get me wrong. It was a nice tool but now Unity's new framework is way better in my opinion. To reprogram every NGUI related code to use uGUI - as Unity's GUI System is called - was a piece of cake! Seriously! It still needs a lot of polishing and also has some bugs but I was faster and the code base is much cleaner and easier to understand than the one before.
Dynamic Character Controller
I've bought VisionPunk's Ultimate FPS package because I didn't want to program a character controller myself. A character controller basically controls the movement of the player defined by the corresponding input. It determines acceleration, walk speed, jumps, crouching, etc. Back then, when I bought VisionPunk's package, I didn't realise that their package wouldn't work for me bacause it's based on a kinematic character controller. In simple terms, this means that the controller won't react to external forces. I tried to circumvent this problem with several tricks but at the end I didn't get it right.
Finally, I had to program a dynamic one myself. Based on the concepts of UFPS, i.e. a really clever event handler system, I've implemeted a basic character controller that is dynamic. You might ask: Why is it important to react to external physics? Because of the fact that GWAIN supports cars! Collisions with cars didn't move the player when I used the UFPS package, now they do.
There was an inventory system before but it didn't work as it should so it wasn't mentioned here. The current version works as it should, although it's still not complete. Many sounds are missing, the graphics are a work in progress and right now you can't use, craft or equip the items. However, you can store them in countainers and that's a huge step for me.
During the construction of buildings you now can hide floors above a certain level, i.e. you can see the inside of a building that you've already built to add or remove furniture, walls or similar elements. In addition to that you now have to "buy" plots to be allowed to build on them. Last but not least, the placing of furniture (or props as I call them) is more intuitive because you can grab already placed furniture to relocate it.
Somewhere in the web in some forum I did get the feedback that it looks weird that my car has opaque windows and I've argued that I can't do it because of the time it would take to make a lot of cars with transparent windows and interiors. However, I now have to add that it also doesn't feel right because of the transition from a first person view to a third person view when entering a car. So I just had to make the windows transparent to be able to stay in first person mode. It also made me remove the cursor and unify the look and feel of interactions. Every object that you can interact with will go brighter when you hover over it.
Here's a video that shows many of the things I've mentioned above:
I think that I just have to justify why I postpone the multiplayer. Basically it's due to the complexity of the topic. The current plans for GWAIN are already difficult and time consuming enough. There are some reasons in particular that made me pause the work in this area:
- I'm missing some ideas on how to solve certain problems. For example: Since everything will happen in realtime. What do I have to do with other players that walk within the house of a player who wants to change his building? They might fall to the ground and die just because the owner removed the floor.
- There's probably a high payload due to the ability to build houses fast. I'm not sure how much data has to be send in average every frame. Is multiplayer even possible? Coop only?
- Safety issues: How to prevent cheating? What are the legal conditions to deal with personal data (name, ip address, etc.)? Do I have to get a lawyer? Note: Germany has severe data protection laws!
Last but not least, it's a topic I got the least amount of experience in.
Now it's time for some information that didn't fit to the main topics because they aren't big enough.
I've redone the female model to be more comic like and to fit to the overall style of the rest of the game. However, while writing this text I realised that with underwear only it might be weird to show her like that. So you will have to wait for the next update, I guess. :)
Bugs in Unity: There are two issues in Unity that prevent me from releasing an updated prototype:
- I get "Crashes to Desktop" when cars are close to the area I am building in due to an error in Unity's WheelCollider Component.
- There's a Multi-Threading bug in Unity that leads to stutters when saving world chunks to disk.
The Unity developers said the first bug should be fixed in Unity 5.2 but I don't know anything about the progress of the second bug. I hope it will go away at the latest when they upgrade their mono framework to the up-to-date version.
That's it for now. I hope you are still excited and that you are looking forward to my next update.