Results 1 to 17 of 17

  Click here to go to the first staff post in this thread.   Thread: Technical Blog #5

  1.   Click here to go to the next staff post in this thread.   #1
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660

    Technical Blog #5

    2014/03/31

    Hello again. Since my last blog entry, we shipped the game and took a bit of a vacation! Let me catch you up on our technical progress since last time.

    The code base blossomed mightily with all the new features required for the Saga. The Zeno tool got lots of new panels and features, as did the game engine itself. Some massive performance improvements were made. Many memory leaks and bloats were fixed. If you compare the Strand scene, or battle scenes, in the Saga with those in Factions, you should be able to see and feel a difference. Control-Shift-P should display the performance graph, which shows Frametime in Factions and Frametime + Memory usage in Saga.

    During the last few months of development, we relied heavily upon Sculpin QA, an outsource QA company in Canada. Going back and forth every day with them we were able to pretty thoroughly test the game and prioritize fixes and improvements.

    We met our self-imposed deadline of December 20 for ĎGold Masterí, which means the game was finished and ready to ship. After our holiday breaks, and during the 2 weeks leading up to launch, we addressed a select few additional items and bugs, to put the final polish on. Because of this schedule, we ended up with something that is pretty much how we want it to be, and very stable and bug-free. We knew that when everyone piled in, unexpected issues would crop up, so we set aside the 2 weeks post-launch for triage and responding to issues.

    We also had an emergent problem with our website on launch day. A remarkable number of Kickstarter backers appeared at launch time, and our website host could not handle it. Our host had no viable upgrade/scale path for us, so we put the website into maintenance mode and got busy creating an Amazon AWS EC2-based webserver. This allowed us to provision plenty of resources, and will let us scale it up and down in the future in anticipation of demand. The forums were still slow, primarily due to database access times to our old hosting provider. After the dust cleared, I put the forums in maintenance again, and moved the databases into Amazonís cloud, yielding massive performance improvements.

    Another thing that went wrong when thousands of people appeared at once to register on the forums is that our outgoing SMTP mail server started silently failing. We use our Google apps service for sending out email, but when it hits a certain, low, limit, it starts silently failing to send out mail. This means that people registering and waiting for their confirmation email were not receiving them, and therefore were unable to get their Steam key quickly. Exacerbating the problem was the fact that after registration, the forum page didnít (and doesnít) really make it clear that you need to confirm your registration before you can get your key. We did LOTS of manual customer support, bolstered by some round-robin mail server tricks I pulled and some SQL scripts that we could run to fix up everybodyís permissions. At any rate, we really appreciate the patience of our Kickstarter backers as we worked long hours to deal with the high demand.
    During the 2 weeks after launch we fixed everything that came up, and added in subtitle support for the VO in the game, based on player demand for it. Also during the time around launch I worked on getting all the engine updates integrated into Factions (new music, optimizations, animations, user interface improvements, etcÖ). I havenít been able to finish that work yet, so it has been shelved for a while as we move forward on porting, localization, and the next part of the Saga.

    After our first patch, I got busy with several different things. Iíve tried to support the intrepid modders in the quest to figure out the game data formats. To that end I created a small decompiler app that lets you peek inside and modify compiled game data in-place.

    Iíve worked on several things that should show up in the next patch:
    • Save profile slot support. There are 5 save profiles that save games can be put in.
    • Zeno editor included with the game download.
    • Zeno decompilation support. This should let you decompile the entire asset set into their uncompressed forms, which Zeno can then re-compile back into the game.


    Iíve been hard at work on the iOS port. Currently the game loads each of its GUI SWFs dynamically at runtime. Some of these are loaded at startup, and some are only loaded when needed. On iOS, the AIR runtime wonít let you do this -- all SWFs have to be loaded in at compile time, essentially. Iíve been laboriously converting the game to compile in all its GUIs rather than load them dynamically. This will affect the PC/Mac version as well. This process is almost complete. I had to create a system that allows big, texture-heavy SWFs to load their big textures at runtime, though. Adobe AIR provides some compilation support for stripping static data out of SWFs but I would rather avoid additional reliance on the black-box Adobe tools if possible. The game runs remarkably well on the new iPad Air. I havenít tried it on older/slow iOS devices yet. The biggest chunk of work remaining for the iOS port is converting the FMOD integration into iOS code. Then of course the testing and optimization. Iíve been searching around for programming contractors with Adobe AIR Native Extension experience, but to no avail so far.

    I spent a good bit of time prepping the game for localization. There are quite a few English strings hard-coded into the GUIs. I had to go through and search all those out one by one, and move them into the string file. The conversation Inkle files have the English text embedded directly into them, so I had to write a system that provides the translated text to them at runtime. I needed to add some support to let the game auto-detect your Steam language and use that. I still need to add an in-game menu for switching languages. We evaluated about 4 different translation companies. We looked at their competencies, portfolio, and price. We finally settled on one, and rather than doing only our top 3 languages (German, Russian, French), we decided to splurge and do 3 more at the same time (Spanish, Portuguese, Polish). As I write this we are still waiting for the translations to complete. I worked with the translators to determine the best way to deliver our string data. I built a tool into Zeno that will export the entire gameís strings into a single CSV file which makes life easier for the translators.

    Iíve been spending time investigating options for porting to Linux, Playstation, and Xbox. I spent a week at GDC making contacts and talking to folks, and our plan is currently to leverage ScaleForm to do the ports. I am working on following up with some contractor leads that I might be able to hire to do the ports. The cool thing about this approach is that it also works on PC, Mac, iOS, Android, the works. There is a distinct possibility that the game might run more smoothly and faster than it currently does, in which case I would be happy to abandon Adobe AIR entirely, but that remains to be seen. I do have the nagging concern that my iOS AIR Native Extension work will end up being obsolete and deprecated later this year, but so be it.

    Since returning from vacation, SXSW, and GDC, my main focus has been on prepping TBS2. Basically it involves making Zeno and the game engine more flexible so that there are no hard dependencies on anything specific to the first game (Saga1 as we call it internally). Iíve been improving Zeno to handle more data sets, and spending a great deal of time streamlining and abstracting our Ant build scripts. Ideally I can get Alex and Arnie in full production mode while I go forward with managing the porting and localization efforts. We have several improvements planned, and we have a laundry list of enhancements that weíd like to get into Zeno. Iím looking to hire a programmer contractor with experience in Apache Flex to upgrade and improve Zeno.

    Since the last time I gave you a snapshot of the code, things have grown dramatically. At this point we are at well over 250k lines of code. From the graph below you can see how things slowed down immediately after Dec 20 lockdown, and then again after the patch.



    Until next time!
    JW

    Previous: Technical Blog #4

  2. #2
    Backer netnazgul's Avatar
    Join Date
    May 2012
    Location
    Belarus
    Posts
    507
    Great to hear from you, John! Quite a lot of work there was behind the scenes.

    Apart from that - graph shows "access denied"
    If you don't know where to put it - put it in the pillage

    Steelhammer Tribune issues collected here
    Some of my Factions games can be observed here
    Also possible streaming at http://www.twitch.tv/netnazgul

  3. #3
    Senior Member Aleonymous's Avatar
    Join Date
    Mar 2013
    Location
    Greece
    Posts
    1,539
    Thanks for taking the time to summarize all those TONS of work that you've been up to these past months. Seems like you'd surely need an extra pair of hands/eyes/brains in the future... May that worthy person be found soon!

    Quote Originally Posted by John View Post
    Also during the time around launch I worked on getting all the engine updates integrated into Factions (new music, optimizations, animations, user interface improvements, etcÖ). I havenít been able to finish that work yet, so it has been shelved for a while as we move forward on porting, localization, and the next part of the Saga.
    Arg! So this outgoing-mail-server problem (and the rabid KS backers) is to "blame" for Factions falling behind in the race

    Quote Originally Posted by John View Post
    After our first patch, I got busy with several different things. Iíve tried to support the intrepid modders in the quest to figure out the game data formats. To that end I created a small decompiler app that lets you peek inside and modify compiled game data in-place.

    Iíve worked on several things that should show up in the next patch:
    • Save profile slot support. There are 5 save profiles that save games can be put in.
    • Zeno editor included with the game download.
    • Zeno decompilation support. This should let you decompile the entire asset set into their uncompressed forms, which Zeno can then re-compile back into the game.
    That's what I'm talking about Can't wait for that stuff, with the next patch! Wishful thinking, or will this "Zeno decompilation support" be the key to unlock modding of any-and-all visuals (sprites, UI items, boards, landscapes, portraits etc) of the game???

    I must have missed any discussion on the nomenclature, but how come you name it Zeno? Anything to do with the ancient Greek philosopher, famed for his paradoxes?

    Quote Originally Posted by John View Post
    Iíve been hard at work on the iOS port....

    Iíve been spending time investigating options for porting to Linux, Playstation, and Xbox... ScaleForm to do the ports ... The cool thing about this approach is that it also works on PC, Mac, iOS, Android, the works. There is a distinct possibility that the game might run more smoothly and faster than it currently does, in which case I would be happy to abandon Adobe AIR entirely, but that remains to be seen. I do have the nagging concern that my iOS AIR Native Extension work will end up being obsolete and deprecated later this year, but so be it.
    "gl hf" for the iOS port and "Yay!" to the bye-bye-AIR. I hope the benefits are eventually worth the "deprecation"
    Together we stand, divided we fall.

  4.   Click here to go to the next staff post in this thread.   #4
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    No the mail-server problem isn't to blame for Factions falling behind necessarily. Primarily we don't want to delay the next part of the saga just to 'freshen up' Factions. There are alot of things we would like to do with Factions and we'd rather address and work on those when we can focus on it, instead of trying to cram in features willy-nilly.

    Regarding the Zeno decompilation, yes, it will unlock everything and make it editable in the same way we edit the game. We'll have to provide the FLA files in a separate distribution (probably just a .zip download), since those aren't included with the game, and they would bloat the download for everyone else if we included them.

    Yes, Zeno is an ancient Greek philosopher, but not Zeno of Elea, to whom you refer, but Zeno of Citium, the founder of the Stoic school of philosophy.

    Quote Originally Posted by Aleonymous View Post
    Thanks for taking the time to summarize all those TONS of work that you've been up to these past months. Seems like you'd surely need an extra pair of hands/eyes/brains in the future... May that worthy person be found soon!



    Arg! So this outgoing-mail-server problem (and the rabid KS backers) is to "blame" for Factions falling behind in the race



    That's what I'm talking about Can't wait for that stuff, with the next patch! Wishful thinking, or will this "Zeno decompilation support" be the key to unlock modding of any-and-all visuals (sprites, UI items, boards, landscapes, portraits etc) of the game???

    I must have missed any discussion on the nomenclature, but how come you name it Zeno? Anything to do with the ancient Greek philosopher, famed for his paradoxes?



    "gl hf" for the iOS port and "Yay!" to the bye-bye-AIR. I hope the benefits are eventually worth the "deprecation"

  5.   Click here to go to the next staff post in this thread.   #5
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    Quote Originally Posted by netnazgul View Post
    Great to hear from you, John! Quite a lot of work there was behind the scenes.

    Apart from that - graph shows "access denied"
    The graph should now be fixed.

  6. #6
    Senior Member Aleonymous's Avatar
    Join Date
    Mar 2013
    Location
    Greece
    Posts
    1,539
    Quote Originally Posted by John View Post
    There are alot of things we would like to do with Factions and we'd rather address and work on those when we can focus on it, instead of trying to cram in features willy-nilly.
    Perfectly understandable, and, surely, the most efficient choice you could make! You can't cater to multiple ''caravans'' at the same time, can you?

    Quote Originally Posted by John View Post
    Regarding the Zeno decompilation, yes, it will unlock everything and make it editable in the same way we edit the game. We'll have to provide the FLA files in a separate distribution (probably just a .zip download), since those aren't included with the game, and they would bloat the download for everyone else if we included them.
    Thanks frigging awesome!!! I don't think its common practice (at all) to "give away", practically for free, all the hard work put into those files. I can't thank you enough! Myself, I am not AdobeFlash-educated, but I am sure this data will help the modding community a LOT.

    Quote Originally Posted by John View Post
    Yes, Zeno is an ancient Greek philosopher, but not Zeno of Elea, to whom you refer, but Zeno of Citium, the founder of the Stoic school of philosophy.
    Hehe. Can't wait for a classic-antiquity era game, with the same mechanics but on a different world-theme, once you're done with vikings & caravans

    PS -- Concerning the graph, how do you measure/estimate all those lines of code? Those {}s & []s & ()s that span multiple lines are also bloating that figure
    Together we stand, divided we fall.

  7. #7
    Junior Member YaK's Avatar
    Join Date
    Mar 2014
    Location
    Italy
    Posts
    15
    Thanks for sharing the info and good job
    I think, therefore I am... I think.

  8.   Click here to go to the next staff post in this thread.   #8
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    The lines of code is just a simple measure of actual lines of text, including blank ones. This is known as 'physical lines of code'. Lines of code is a squishy metric, and alot depends on the language (some are more verbose than others), and the programing style. However it's still a ballpark estimate of how much is there and what fraction of it a single person can comprehend at one time. Those blank lines and isolated {}s are ignored by the machine, but essential for programmer comprehension and thus a critical part of the measurement in my view.

  9. #9
    Senior Member Aleonymous's Avatar
    Join Date
    Mar 2013
    Location
    Greece
    Posts
    1,539
    Quote Originally Posted by John View Post
    ... what fraction of it a single person can comprehend at one time. Those blank lines and isolated {}s are ignored by the machine, but essential for programmer comprehension and thus a critical part of the measurement in my view.
    That's so true. Thankfully, all the JSON files I browsed used quite descriptive naming conventions (variables, attributes, parameters etc) so were quite easy to comprehend. However, I noted the complete absence of comments/documentation, but I guess its not a standard practice in your department and would easy double/triple the amount of text-to-be-typed I will attempt a post in the modding thread about this {Events,Happenings,Triggers,Actions} "system/structure" you have established, but at some other time... Who know, perhaps you'll get there first!
    Together we stand, divided we fall.

  10.   Click here to go to the next staff post in this thread.   #10
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    Yeah, and our LOC counts don't include the JSON definitions, which are a type of code in their own right. The best you can do is create fields with funny names like "comment" or "__comment" if you want it so alphabetically sort to the top. The down side with this is that we do compile and runtime JSON schema validation, so stray fields like comments would have to be dealt with by our validator (not the end of the world, but it doesn't currently).

    There are 250k lines of JSON 'code' in addition to the 260k lines of Java, as3, and C++ code shown in the graph.

    JSON doesn't support a standard comment structure, unfortunately
    Quote Originally Posted by Aleonymous View Post
    That's so true. Thankfully, all the JSON files I browsed used quite descriptive naming conventions (variables, attributes, parameters etc) so were quite easy to comprehend. However, I noted the complete absence of comments/documentation, but I guess its not a standard practice in your department and would easy double/triple the amount of text-to-be-typed I will attempt a post in the modding thread about this {Events,Happenings,Triggers,Actions} "system/structure" you have established, but at some other time... Who know, perhaps you'll get there first!

  11. #11
    Senior Member Aleonymous's Avatar
    Join Date
    Mar 2013
    Location
    Greece
    Posts
    1,539
    Quote Originally Posted by John View Post
    There are 250k lines of JSON 'code' in addition to the 260k lines of Java, as3, and C++ code shown in the graph.
    O_O () So much for my comment about "bloated figures"! Well, 'data code' (JSON content) can sometimes be more time/effort-consuming to generate than 'true code' (e.g. a "program" that does this & that).

    Hoping for the next Tech-Blog thread soon! Probably after the next Saga#1-patch ships, with info on Zeno and all... Thanks again, JW
    Together we stand, divided we fall.

  12. #12
    hey John, any news about the whole gog key thing? i know some backers have been waiting for them after the last KS update before starting the game. If it's all a misunderstanding or something has come up it's alright, at the moment people seem to be a bit frustrated by the lack of info either way on that front.
    "...And upon that banner you write down your deeds so that you cannot forget."

  13.   Click here to go to the next staff post in this thread.   #13
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    We don't have any plans to distribute GOG keys. I'm aware that some backers would like them in addition to the DRM free download we provided, but I haven't done any of the work required to look into the feasibility of it.

    Quote Originally Posted by kincajou View Post
    hey John, any news about the whole gog key thing? i know some backers have been waiting for them after the last KS update before starting the game. If it's all a misunderstanding or something has come up it's alright, at the moment people seem to be a bit frustrated by the lack of info either way on that front.

  14. #14
    that's cool, thank you for the quick reply
    "...And upon that banner you write down your deeds so that you cannot forget."

  15.   Click here to go to the next staff post in this thread.   #15
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    I came across this screenshot laying around on my hard drive today. It shows one of the earliest in-progress shots of the original combat system. All the hud is programmer art at this point, but the basic system is in place.


  16.   This is the last staff post in this thread.   #16
    Technical Director John's Avatar
    Join Date
    Apr 2012
    Location
    Austin, TX
    Posts
    660
    Here are a couple even older prototypes. When we were experimenting how to handle movement and the movement UI, I build an iPad app so we could easily test out different UIs and strategies. By UI I mean both the visual feedback regarding candidate or selected tiles (colored tiles, squared, circles, etc...), visual feedback about the potential range of the unit, and how the clicks/touches themselves are handled.




  17. #17
    Senior Member Aleonymous's Avatar
    Join Date
    Mar 2013
    Location
    Greece
    Posts
    1,539
    Very cool images! What's the date of them, by the way?

    Quote Originally Posted by John View Post
    I came across this screenshot laying around on my hard drive today. It shows one of the earliest in-progress shots of the original combat system. All the hud is programmer art at this point, but the basic system is in place.
    Hmmm, that white/cyan background (under the tile-grid) reminds me of that eerie "Vikings in Space" Factions glitch that happens from time to time, especially when one is running the game for several hours non-stop. Any chance that a ghost of that early implementation still roaming the deep corners of the code?

    Quote Originally Posted by John View Post
    Here are a couple even older prototypes. When we were experimenting how to handle movement and the movement UI, I build an iPad app so we could easily test out different UIs and strategies. By UI I mean both the visual feedback regarding candidate or selected tiles (colored tiles, squared, circles, etc...), visual feedback about the potential range of the unit, and how the clicks/touches themselves are handled.
    This makes me wonder why you didn't ever allow the "move-again" feature in combat I am not referring to {1.move; 2.attack/ability; 3.move}, mind you, just the simple { 1.move; 2.move again; 3.attack/ability/end}. Was it a technical restriction, or a design choice?
    Together we stand, divided we fall.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Single Sign On provided by vBSSO