Dev-Diary: 87

Hey y’all~! Hope everyone is safe and doing wonderfully!

The past two months have been SUPER intense! I got a game developed AND published in August, and spent all of September managing the post-dev that came with the release, as well as catching-up with all the work I had! Phew, lots of tough stuff, but it went well!

Firstly, NieR:Cogito! That was a ride and a half! I won’t talk about it much here, but just below I’ll leave a link to the project page, as well as my personal page going into detail about the game itself and the development behind it! I will say though that I am exceedingly proud of how it turned out! It won the NieR:Re[in]carnation Content Creator Competition 2021Aug and was covered by Kotaku! Super happy with the response, especially from the amazing NieR community and the staff at Applibot! Thank-you to everyone who played, explored, and discussed it! Though I’m surprised no-one has found the secret ending… (at least no-one who has then posted or told me about it~) If you do find it, post and tag me on Twitter with a screenshot~ I’d love to know who gets there first! Oh and by the way, I still have one more gift up my sleeve for Cogito, but it’ll take a little more time to finish up~ ­čśë

Secondly, my external work! Pok├ęstudy, produced by Radioactive Magic, has been steadily progressing, with a couple of new videos out since I last posted! Video work isn’t my main career focus at the moment, but I did study film originally before migrating to game dev, so it’s always a pleasure to work on a fantastic project such as this one from time-to-time! I’ll drop a link below to the Pok├ęstudy channel! Additionally, the co-op I am a member of, Inflorescent Games, is working towards a release for our first published project UfoTofU:HEX! While I was not involved with the development of the game as I joined later, I have been working with the team on marketing and publishing as we drive ourselves towards a late October release (hopefully!). You can check out our page here as well!

And finally, I have of course returned to working on my next title, roll. I originally started roll as a self-imposed goal of turning a simple game mechanic into a quick turn-around game with the hope of releasing two games this year. However, with the release and success of Cogito, I will actually be instead extending the production of roll! While the core has not changed, I have tweaked some of the ideas of the game to expand replayability and experience, with additional focus on the game’s hidden lore. In true Silver Stitch fashion, I have taken a simple game about rolling a ball and added unnecessary depth and intrigue hahaha!

On the technical side, I’ve very happily optimised the game even further and achieved the performance goal I was hoping for! Whereas before the game would barely touch a stable 30fps, I’ve reworked the game and swapped out some mechanics for new ones I thought up while working on Cogito, bringing it over a consistent 30fps, sitting closer at a 40/45fps average, which is a fantastic achievement for a mobile game with HDR effects! I’m actually going to go into depth a little-bit here so for those of you who aren’t keen on technical mumbo-jumbo, feel free to jump ahead~

  • Lighting: The game’s aesthetic revolves heavily around lighting, as you will see on release! A glowing orb flying through a darkly lit labyrinth! However, while computers can handle some dynamic lighting here and there, a mobile phone really does not enjoy calculating all those lights and shadows! Even with a single light just for calculating basic illumination and simple shadows, the performance reports were not happy. SO how do you work around this? Easy, fake-lighting! This isn’t a new concept, in fact that’s exactly what ‘baked lighting’ is; pre-rendered lights that are applied to the world. But the illumination in the game is constantly changing… well what needs light? Firstly, the player and the world. This is easily fixed by redoing the art so it looks like everything is illuminated, and letting bloom effects take care of the rest! Secondly is the weather, the game has moments where the player visibility is reduced, so instead we use some clever UI tricks to apply a darkness ‘effect’! Honestly, I might upgrade this a little more down the line to have some slightly fancier shaders, but for now it works well! Finally, and one of the bigger issues, the ground! The world is set in a non-corporeal space, and so I’ve given the ground a watery effect. This was originally achieved with water texturing lit with normal-maps (a function that gives flat textures depth for shadows). But without light, there is no shadow rendering! So I wrote my own!! I whipped up a shader that generates it’s own pseudo-water texture, and then applies a fake light to it. The shader self-animates, and updates itself in real-time as the player moves around, without any lighting data whatsoever! I was very proud of this, and now means the game runs with zero lighting!
  • World Data: When I was initially planning this game, I came across a relatively new and VERY neat Unity feature called ‘Sprite Shapes’. Essentially it takes a texture (or multiple) and stretches it and bends it into any shape you need, and can then apply collision data! I messed around with this for a while and found it made generating cool and unusual world pieces quite easy, and made updating them in-editor VERY easy! Unfortunately it still has a few bugs, but even worse is that it generates a lot of data when they are loaded. As this game is procedurally generated, the Sprite Shapes had to be constantly rendered over and over, which resulted in very poor performance on mobile. I managed to improve this process significantly by first baking the collision data during at the start of the game and then staggering world-loading as the player explored, but there was always an underlying issue that could not be fixed; a set cost to using this feature. When I came back to working on roll after Cogito, I decided to instead use pre-drawn world visuals that would have static world data. The fear was the game having to load numerous large image-files, but using the same staggered loading I had previously implemented for the Sprite Shapes meant the image data loaded seamlessly in the background! Funnily enough, while working on the shader that would apply the pseudo-lighting data to these pieces, I accidentally hooked up the wrong values and created an AMAZING fog effect! I tweaked it around and now the world looks better than ever, AND runs notably faster!!

Okay okay, I won’t ramble on anymore! I hope to release roll sometime over the coming couple of months, definitely this year. It’s coming along amazingly, and I’ve very happy with it’s progress and improvements! Thank-you again to everyone who has been supporting me, and everyone remember that black and Asian lives still matter, and be sure to stay safe, wear your mask, and get vaccinated (I’m double vaxxed now yay!)!

Till next time, all the best~! ^,,^