June 2012

“Phase 2” – Status update June 2012

With the last post about “Phase 2” now almost two months old it’s time for another status update, and no status update without current screenshots :

“Phase 2” is progressing nice. Not at the speed of light, but it’s going forward on a steady pace and now most of the open issues that made it unplayable have been fixed and several new features were also added. So the current build is pretty close to something I can release!

For example the whole manual battle functionality is finished in terms of coding (not speaking of content, cause that’s an area where a lot of stuff is still missing, including 3D models, sounds, maps, etc.) and you can now even save your game during manual battles and continue there at a later point. I also added a better information feedback on the different selection states of the game (see shots one and two below the cursor), so you can now directly see what you assign, move or activate besides your cursor. As for the regional view (see shot 2) you can see that I changed it (again), giving it a cleaner, more distinctive look that makes it easier to use. And I also added two buttons to easily navigate between the regions (last and next, see top-right of the window).

In addition to that, I worked on the performance of the user interface, something I really had to work on, as the whole UI was (and still partially still is) CPU-bound in terms of performance. One of the biggest performance isssues was the localization. “Phase 2” has far over thousand different strings for both supported languages (german and english, but the structure of the UI easily allows adding additional languages) and up until recently I used hashed stringlists to access these strings during run-time. And though this wasn’t that slow in the beginning when the game only had a few localization strings to select from in the different windows (even the main UI), it has become a real performance penalty recently, so I decided to completly change how this works. And now my data editor (WeltEdit) will not only generate an XML file containing all localization strings, but also a Delphi unit that contains vars for all localization string identifiers and that’ll load them from the XML at the game’s startup. So now instead of looking up the localization strings (via e.g. LocalStr(‘HintMoveDivision’) in a hashed stringlist, I directly access them via the variables generated automatically in that new unit (via e.g. Localized.HintMoveDivision[LanguageID), giving me a performance boost of up to 25%, depending on how many different windows are open (even with only the main GUI window open I get a plus of 10 fps on my machine). And on slower CPUs this should become even more important.

And last-but-not-least (see shot 4) I also did some minor changes to the main menu (like the skyline silhouette in the background) and finally finished it up (yes, it was in an unfinished state for months now), so that the starting-point of the game now looks sleek and in line with the rest of the user interface.

And for all stasticians out there : The development directory for “Phase 2” is 1,107,703,496 Bytes large and contains exactly 2,659 files in 75 direcotries.