So, this new game HUD.. I want to see it!
Here's a screen from today's build. Bear in mind that there's still a huge amount of polish that isn't yet done here -- the backgrounds for the HUD are pretty final I think, and the colors for the fonts are close-but-not-final (at least in the resource bar, but not the planetary summary at all), but the fonts themselves (both in terms of actual font, and especially font size) are not done at all.
Bear in mind that a few things look a bit funky right now because of the fact that they are animated, and you're seeing just one frame (like the Negative Energy thing is flashing). There are also sizing issues with things wrapping too soon, and all that sort of thing; and the uv textures for the engineers (way in the background) are only partly working and are sticking out way wrong in that shot; and there is still no starfield or nebulae (but getting close on those).
I thought that I'd be able to just port over the Tidalis rendering methodology for AI War, but as it turned out that was far too slow and so we had to use a different methodology within unity (using no GameObjects -- which we'd had in a pool for use in Tidalis -- but only Graphics.DrawMesh and similar, for those curious).
That worked really well, and the framerate skyrocketed under that sort of system, but at the same time the uv texturing and such was not possible with Graphics.DrawMesh... which meant that I then had to come up with a deferred rendering system that uses Graphics.DrawMeshNow. That's actually slightly faster anyway, and lets me do the uv stuff I wanted, but it's been stuff along those lines that's been taking me so long on the graphical side.
And in other areas, the complexities of "generics" are absolutely borked in Mono, and so reading in generic lists and dictionaries from a binaryformatter-serialized data structure (generated in Mono or in .NET proper) leads to fatal issues. I spent a good part of a day trying to fix the conversion, and then when that failed Keith spent a better part of a day making a string-based custom serialization instead. That means that the game can't read legacy settings.dat files, but we'll be providing a converter program for that; the savegames and other data files were already string-based custom serialization already.
Plus we ran into issues with compression and decompression, and had to move from SharpZipLib to the Ionic DotNetZip... this after much experimenting with various versions of SharpZipLib, etc. All that's working now, though.
Also, as part of all this changeover from GameObjects to the Graphics class, I had to redo a lot of kind of fundamental math-type stuff relating to the graphics engine -- most specifically, getting rotations working properly (around the right axis, and to the correct amount) was an absolute pain.
We also had to get texture-combining working, for the sake of efficiency, but the RenderTexture method that is most espoused in Unity 3D raises the minimum bar of GPU requirements a bit, and also wasn't something I could get working. So we found an alternate way to do that, but that led to a lot of manual pixel-coloring math for things like diffuse coloring (turns out that's just multiplication of two colors, interestingly, but that was hard to find out).
And there were dozens of other issues along those lines. And then there were just the straight-out slog-fests. Keith converted over the lobby and the settings screens, and those were probably the two hugest ones to do because of all their controls (and all their nested controls). Even so, they are not quite 100% finalized. But, getting a lot closer!
All in all, I'd say we're about 70% done with the whole process, amazingly. Almost no single part of the game is more than 90% complete and polished (save for the actual game simulation and AI, which was the easiest part to port), so that means that the input, UI menus, HUD, and graphics in general are riddled with small issues that we're still aware of but are working through -- and I'm sure some that we're not aware of, too.
But the good news with that is that we've long-since passed the point where it's clear that the Unity version of AI War is 100% definitely feasible (performance was always the worry), and the best part is that we've actually made it clear now that the Unity version of AI War is actually the preferable version (performance and visuals are both better, even though all our performance and visual tweaks aren't even in place yet). That's only definitely been clear in the last couple of days, so that's been a huge relief -- before, we suspected that it was true, it certainly looked that it would be true, but we had yet to stare it in the face, so to speak.
Anyway, this version of the game is still pretty rough around the edges, but it's shaping up nicely and the next few days in particular should see a lot of the more cosmetic issues disappearing. There are still other UI refectoring jobs that we want to do after that, to compress down the HUD a bit and make certain things emphasized more or less than they were before, etc, but a lot of that will happen after this goes into public beta.
Speaking of which, we hope to hit public beta on this either late tomorrow or sometime Saturday... but don't get mad if it takes until Monday or Tuesday, all right?
Assuming that we don't hit any major snags in the next day or two, we'll be able to get our a limited windows-only beta version that people can start knocking around with. These past few weeks have been snag after snag, bear in mind, so it could very well be early next week instead. But (knock on wood), I think we're finally hitting the point where what we're working on is polish and top coat and raw logic, rather than fighting with the engine or getting the skeleton put together.
The skeleton is there, a good portion of the meat is there, but the skin is pretty patchy, to use a different analogy. I know we've been pretty quiet on all this lately, but it's been an absolutely furious amount of work for Keith and myself... and the results are looking really good.