These past few weeks have been productive. I've been hard at work with the new UI, implementing a clock dial, resource meters, and side buttons. For now, I'm handling most of the UI art, as Mike is tied up with the building and effect animations. That's fine with me, since I have some experience in sprite art and animations anyways (and not from a "just programmer art" standpoint either). I love the new design of the UI, especially compared to the previous UI, which I honestly threw together in a very short timespan.
It's been cool watching all of the pieces of We Love Nuclear Armageddon fall into place. The old prototype has been getting some small updates here and there, adding more sound feedback, music cycles, and better mouse controls. We've gotten tons of good feedback from our frequent QA sessions. Many really like the game, finding it fun even with its flaws and matches that are slightly longer than we're aiming for. People are immediately intrigued by the name and sometimes watch as matches play out on the lab screens. When playing, it takes a few minutes for them to understand how to play, but once they understand they start having a blast blowing up each others' shields and buildings. I was told it was someone's "favorite game at testing" just the other night.
From the programming side of things, working with my new system has been an interesting experience. My UI system still needs a lot of work, as it doesn't have a lot of the expected features, like a hierarchy and unified coordinate system, but it's already easier to work with and more efficient than Unity's default GUI system. It automatically scales up to match the vertical resolution of the screen, sorts UI elements on depth, and can render textures and text without needing to specify a specific rectangular region. It also only requires one OnGUI() hook instead of one for every element - OnGUI calls are expensive due to the amount of setup required before and after the call, so it's best to have only one call to it. This also allows me to set up the GUI scaling matrix once instead of every time I have a new UI element. I'll probably elaborate on some of the technical details in a later post, but it's definitely allowed me a lot more freedom in rendering overlays, including scene transitions.
Next week, we make our final presentation. The new version is almost done and should be available for our final official QA session on Wednesday. I'm hoping that we move on to next semester. Programmers here are often told that not moving on may be better, as you get to work on two projects instead of one, and while I'd still be fine if I got to work on a different project, I can see so much potential in We Love Nuclear Armageddon. We have a genuinely unique take on the competitive strategy game that seems to have value outside of being just a student game.