Dev Blog #04 – Extending the Worlds
It’s been a while since the last update, so lots to get through.
We’re still progressing, probably slower than we had hoped, but never the less, its still going forwards.
Kat’s been busy working on tons of graphics, icons, lighting, and we now have all the 4 worlds pretty much done with backgrounds and world layouts.
She is currently working on placing items in the 2 remaining worlds, working on more puzzle ideas and polishing of the graphics.
I’ve been working on performance a fair bit, making sure we stay in a good position. Just finished up with reducing memory usage, as I found that unloading scenes wasn’t quite releasing all resources and therefore if you went between 2 worlds it was using 1GB or so extra memory. This was ok on my rig, as I had 4GB VRAM, but Kat’s PC started to chug a bit when she went between worlds because she only had 2GB of VRAM. This was because I had some textures and materials being cached in variables, and the scene unload wasn’t catching that they were now unused, so I had to set them all to dummy textures/nulls and then call Resource.UnloadUnusedAssets() to clear them. I made heavy use of the memory profiler, which also lead me to some more memory improvements to further reduce memory usage. On my PC now we have a steady 200+ FPS (GeForce GTX 970, Core i7 920, 14GB Ram, 2560×1600), and 100+ on Kat’s (GeForce GTX 580 , Core i5 750, 12GB Ram, 2560×1600)
We’ve shown the game off to a few people locally now, some friends came around for a games evening. Even shown it to some of our nieces and nephews and they all loved it, and we got some good feedback and ideas to make things better.
Upgraded several times to new versions of Unity in the past few months. Not been great sailing with that, seemed to hit a new bug with whichever one I went with. Been able to navigate around some, but currently waiting for them to fix Resource.LoadAsyc() so that it works with uncompressed Textures/PNGs correctly. Currently on 2017.3.f3, and will probably wait for 2018.1 before I try again.
Spent quite a large amount of time making the loading of worlds (ie scenes) be async, so that we could play an animation/particle effect during load. This was quite a challenge, as I was doing lots on load so that it didn’t effect the actual game, thinking the load would be the best place. Unfortunately, that caused stutters etc with the load animations, once we put them in. After lots of profiling and understanding how the load works, we’ve got it to basically never stutter now. Mainly removing all Awakes() as they were just setting cache vars for GameObjects etc, and actually linking them into public inspector vars. Also turning most of our Init() methods into IEnumerators so that we could yield every so often, and using Resource.LoadAsyc() for loading. Will have to revisit it nearer the end, but its working well now.
Spent some time putting in lots of particle effects to brighten up the game. We used the Ultimate VFX package from the Unity Store as a basis, and then played around with them. Got most of it done, but I have to go through and find all the graphics and sprite sheets we’ve used and pack them into our own sprite sheets and resize them to fit our game, so that performance is good. The same with the sprites used in the UI.
Dotted throughout the worlds, there are puzzles that need to be completed to gain items, and we had done the world 1 puzzles, which were just basic push/pull of blocks and positioning them. These puzzles are intended to get harder as you progress through the 4 worlds, so I worked on the 2nd set of puzzles making 2 new elements for them to make them more interesting. ‘Mag’ blocks are placed around the area where you have to do the puzzles, and these either attract or repel the blocks you need to move. You need to work out which ones can help you or hinder you to complete the puzzles.
Implemented a stats screen in-game, so that you can keep track of all the items, puzzles and other elements in the game. Then you can track your progress and see how much you’ve done… and what is left to do.
Lots of bug fixing. We’ve played though the first level many times now trying to keep the number of bugs low so that we hopefully don’t have a big job at the end to fix lots of things. At the moment we are ‘bug free’ and everything we’ve found so far has been fixed, so that’s a nice place to be in 🙂
Major things left now are:
3rd and 4th world puzzles
In-Game Tutorial
Customization items for the alien
Boss levels
Achievements
Sounds
So, we will be powering on with things and will keep you updated either here or on our social media pages at FaceBook or Twitter. So if you’re not already following us there, head on over and give us a ‘like’ or ‘follow’.
Till next time… watch out for ‘Somethings’ that may eat your aliens…
Rob & Kat