PDA

View Full Version : Technical Blog #6



John
04-25-2014, 06:47 PM
2014/04/24

Hello everybody! We’ve been very busy over the last month.

We got word today that the translation is partially complete. 3 of 6 languages are completely translated. There were about 99,000 words of text that got translated. I will be taking the first delivery of that, and integrating it into the game. We’ll plan on sending it back for a revision if we find anything of issue. I’ll also need to do some work making sure everything fits in the space allotted. Some of our GUI elements are already pretty smart about shrinking the text if it would not fit otherwise. Some of the elements I’m sure will have text overruns, and will require a little GUI rearrangement. Once we have it ready, I’ll open a beta for anyone who would like to come in and do some testing in their native languages to let us know if we’ve missed anything or gotten anything wrong.

The wheels of console porting are turning steadily, but slowly. I am currently evaluating 3 different development organizations that can help us do the ports. The way our game code is structured is fairly esoteric, so finding the right people is a challenge. The task requires previous experience with a fairly specialized piece of technology (Scaleform). However, I am in discussions with some people with very strong backgrounds in that area.

Autodesk, the company that owns Scaleform, has been very responsive so far. We encountered some early problems doing a rudimentary wrapper for our game, and they were very helpful in identifying the problem and possible solutions. We have been using the next generation ActionScript Compiler (ASC 2.0) for some time, but it turns out that the ActionScript Bytecode it generates (ABC) is not compatible with scaleform. We have found a way to switch back to the legacy ActionScript Compiler, and those options are starting to yield results.

The iPad port is coming along slowly but steadily as well. One of the first issues to be resolved is the problem with loading all the GUI elements into the game. Currently we load the GUI elements as Flash SWFs at runtime, as they are needed. However, a bug with the way the SWF Loader works on iOS prevents this from working on iOS. Basically, the SWF Loader throws an error if the loaded SWF contains any ActionScript Bytecode (ABC). Even though there is zero actual functional ABC included in our GUI SWFs, the ‘exported symbol’ functionality creates boilerplate empty class definitions, which are technically ABC. Instead of being sensible and recognizing the difference between actual functional ABC and empty boilerplate definitions, the Adobe Loader just craps out.

The solution that we are taking is to link all the GUIs with the game executable at compile time. This has the potential to increase the size of the executable by 100 MB or more, but we have implemented a system that allows us to strip out the large bitmaps from the GUI SWF, and load them dynamically at runtime. The work of changing over the GUIs in this way is something that has to be done one by one, with a good bit of manual labor and testing at each step.

Another issue that has arisen is the limitation of iOS application size. The iOS application file, called IPA, has a maximum size imposed by Apple of 2 GB. Our game with all its assets is around 2.5 GB in size. Some of the biggest assets are the videos and sound, followed by the numerous massive bitmaps used in all the scenes. We deliberately made our textures large to support retina displays and future large displays. The GUIs and scenes are all authored for a native resolution of 2731x1536 (that would be the resolution of a Retina iPad if it were extended horizontally into Cinemascope aspect ratio). We can probably reduce the resolution of the cinematic videos, which will save us quite a bit, and increase the compression of the sound and music. If this doesn’t buy us enough, we can evaluate whether _all_ our scene textures really need to be at retina resolution.

Another issue we have hit is that our video playback doesn’t work on iPad. We are currently using flash.media.Video, and I think all we need to do is convert this to a new technique called StageVideo. This is pretty low on the priority list at the moment.

We have been investing a lot of time planning and scheduling the work for TBS2. Alex and Arnie have hashed out the details of the story and the characters, and artwork is underway on that. I’ve built out my schedule for the new features and improvements we want to include.

At the beginning of our project, I invested in a top of the line 27” iMac with maxed out RAM, CPU and SSD, which was a great investment and really helped me get the project done quickly. However, one downside is that although the SSD is very fast, it is also very small in modern terms. So I was always struggling with keeping space clear on it. As our project size has grown, and we are starting new projects, it becomes more difficult. Additionally, I need to have a natively installed Windows development environment. Rather than settle for the inelegant solution of simply attaching an external drive (which I did do for a long time), I decided to take the whole thing apart and install an additional hard drive. It took me quite a bit of time to find the correct cables, but I finally did and everything works like a charm!

http://stoicstudio.com/uploaded/imac_guts_1_sm.jpg (http://stoicstudio.com/uploaded/imac_guts_1.jpg)http://stoicstudio.com/uploaded/imac_guts_2_sm.jpg (http://stoicstudio.com/uploaded/imac_guts_2.jpg)


Earlier this month, the internet was hit by the Heartbleed exploit. We spent a good bit of time upgrading and hardening our own servers against it, which involved some Factions and Website reboots. Heroku had some rolling downtime while they patched their services against the problem as well.

Until next time!

JW

Previous: Technical Blog #5 (http://stoicstudio.com/forum/showthread.php?3227)

Aleonymous
04-26-2014, 04:36 AM
Hi John! Good to hear that ScaleForm and iPad porting is progressing, even though they both fall outside my area of interest, as I am a Windows-man :) I do have access to a Mac laptop whose RAM died on me (again), so I might do some meddling with i-hardware too, in the near future :(

I'd happy to help with beta-testing the new multi-language release. I can speak a fair bit of French, and it would be a good practice for me as well as an extra bit of help for you. Concerning translations, a tricky thing I identified (which you're surely aware of) is the bubble-quotes that some characters speak while in-combat; I found that this text is directly placed into the btl_files (as happenings/actions), and not linked to the locale\ language-file(s).

Any update on the Xeno "master-tool" progress? I can't wait for those modding tools to ship :) I am planning to add a small scripted-event, with a bit of dialogue options (in pop-up style, like the random-events) and a small battle. I think I've got most things laid out clearly, so I might not need any help just yet. Here is a funny little bit of modding I made -- http://www.twitch.tv/aleonymous/b/522735233 (also related to the translations issue I raised just before).

Narf81
04-26-2014, 10:33 AM
I want help too. German


Greez

Narf81

visorium
04-26-2014, 11:59 AM
Hey, hey! I too want to help('0')/
Russian

ebagist
04-26-2014, 01:10 PM
I would love to see TBS go to Japan someday (I know Stoic is small; no pressure :o), with their love of the genre. I lived in Japan for a few years (and have a Japanese degree), so I often think of their culture: many themes in TBS match really well with Japanese culture (for reference: http://en.wikipedia.org/wiki/Japanese_aesthetics). Awesome to hear of the progress for you guys! I'm really glad I ran into The Banner Saga a few months ago, it is a beautiful game/world.

gripho
04-27-2014, 06:22 AM
As a French native speaker, I'd be glad to help with the Beta :)

John
04-27-2014, 10:07 AM
FWIW the first 3 languages delivered are: French, German, Portuguese (Brazil).

Regarding Japanese and other languages, we are definitely open to the idea, and would like to keep going with localization if it makes financial sense. We were originally going to only do the top 3 most popular languages among our player base (German, Russian, French), but got a good deal on adding Portuguese, Polish, and Spanish so we went for it even though it was larger than what we had budgeted for. It's over $60,000 USD total to get those 6 languages translated. We hope it pays for itself and we see enough new players show up for those languages that we can invest the money in more languages, like Japanese.

Regarding the Zeno tool, it is packaged with the game now, on the development branch, and will be present during the languages Beta testing.

Legendra
04-27-2014, 11:49 AM
I'll be glad to help you, I'm French

Aleonymous
04-27-2014, 12:12 PM
Regarding the Zeno tool, it is packaged with the game now, on the development branch, and will be present during the languages Beta testing.

Awesome news :) Alas, I was too anxious to start going "deep" into modding, so I am struggling with the JSON-decompiler tool you supplied. It does everything, mind you, but it just needs two things imo: (1) search/find, (2) having multiple files open at the same time, e.g. in tabs or otherwise. I am sure Zeno will included both these functions and much more!

John
04-27-2014, 03:02 PM
With Zeno there is very little direct JSON editing... the tool handles most of it. Some of the newer features require going into JSON, as does editing abilities. But at any rate, Zeno should produce folders full of JSON files that you can edit with whatever text editing tool you like.


Awesome news :) Alas, I was too anxious to start going "deep" into modding, so I am struggling with the JSON-decompiler tool you supplied. It does everything, mind you, but it just needs two things imo: (1) search/find, (2) having multiple files open at the same time, e.g. in tabs or otherwise. I am sure Zeno will included both these functions and much more!

Aleonymous
04-27-2014, 04:21 PM
With Zeno there is very little direct JSON editing... the tool handles most of it. Some of the newer features require going into JSON, as does editing abilities. But at any rate, Zeno should produce folders full of JSON files that you can edit with whatever text editing tool you like.

The only thing that I currently feel quite limited with, is the character-portraits used in conversation mode. Those are loaded from the SWFs, right? Will Zeno "break them apart" too, into editable pieces (e.g. bitmap, vector art), and "put together" new ones properly designed, or that is out of the question? Adding new characters (portraits and sprites), that don't rely on existing "units" and color-variations, would require that sort of functionality from Zeno. Well, I hope that at least some things like changing the colors of sprites (e.g. clothes, hair) will be relatively possible!

Aleonymous
04-28-2014, 11:33 AM
Will Zeno provide some sort of easy means to share mods with other users? Or will that have to be done "manually" by the modders and the users-of-mods? I guess that if a mod is only about changes (edits) in the JSON files, a simple-installation tool could be made. But, if new content is added (new PNGs, new JSONs etc), then things would start to get more serious. Well, it should be trivial for you.

Speaking of this, I am kinda anxious about the automatic nature of patching in steam. I guess it will overwrite/delete all the mods I did to existing files, right? Is there any problem if Steam finds that several files have been changed? Are user-added files safe in the game-folders, or are those cleaned (all content deleted) before patching?

Mrozie
04-28-2014, 12:00 PM
but got a good deal on adding Portuguese, Polish, and Spanish so we went for it even though it was larger than what we had budgeted for.
Wait, do you mean The Banner Saga is going to be availaible in Polish? :)

Aleonymous
04-28-2014, 01:34 PM
Some of the newer features require going into JSON, as does editing abilities.

A small question about editing abilities: As the AI is apparently "hard-coded" (not data-driven, via JSON), is it capable of handling "other" abilities? For example, if I assign a Skystriker unit in the enemy/NPC team, will the AI be able to make good use of it (or will it just crash! :p)? Also, what would happen if I edited an ability or created a new one? It seems to me that most units exhibit some sort of "class-specific attitude", e.g. Raidmasters, Strongarms or Stonesingers etc, all act in way that feels "personal" to that class. Consequently, creating/editing an ability assigned to enemy units means that the corresponding "sub-module" of the AI should also be created/edited, to make proper use the ability...

I believe you guys have put a lot of work into making that AI fun to play against. Just wish to understand some things so that we might be able to help you improve/expand it!

ebagist
04-28-2014, 03:02 PM
Regarding Japanese and other languages, we are definitely open to the idea, and would like to keep going with localization if it makes financial sense. . . . We hope it pays for itself and we see enough new players show up for those languages that we can invest the money in more languages, like Japanese.

Awesome! I hope something turns out for Japan. Not native, but I'm fluent in speaking, reading and writing, so I'd love to Beta test anything you had in Japanese if you ever get a good opportunity to do that/if it makes financial sense.

John
04-28-2014, 03:45 PM
AI usage of abilities is not based on the abilities themselves, but on the properties of the abilities. In particular anything that affects an ability, such as range, target rules, or move limitations. Additionally abilities can be configured with the following AI specific properties (which you see on some but not all abilities):


aiRulesAbilityId
aiPositionalRule
aiUseRule
aiTargetRule
aiFrequency

So for the most part, AI handling of abilities is data-driven. The relative weights of defense, offense, str damage, armor damage, positioning, are hard-coded though.



A small question about editing abilities: As the AI is apparently "hard-coded" (not data-driven, via JSON), is it capable of handling "other" abilities? For example, if I assign a Skystriker unit in the enemy/NPC team, will the AI be able to make good use of it (or will it just crash! :p)? Also, what would happen if I edited an ability or created a new one? It seems to me that most units exhibit some sort of "class-specific attitude", e.g. Raidmasters, Strongarms or Stonesingers etc, all act in way that feels "personal" to that class. Consequently, creating/editing an ability assigned to enemy units means that the corresponding "sub-module" of the AI should also be created/edited, to make proper use the ability...

I believe you guys have put a lot of work into making that AI fun to play against. Just wish to understand some things so that we might be able to help you improve/expand it!

Aleonymous
04-28-2014, 04:39 PM
AI usage of abilities is not based on the abilities themselves, but on the properties of the abilities. In particular anything that affects an ability, such as range, target rules, or move limitations. Additionally abilities can be configured with the following AI specific properties (which you see on some but not all abilities):


aiRulesAbilityId
aiPositionalRule
aiUseRule
aiTargetRule
aiFrequency

So for the most part, AI handling of abilities is data-driven. The relative weights of defense, offense, str damage, armor damage, positioning, are hard-coded though.

Mighty interesting, thanks, John!

My first attempt of "granting a new ability" to a Dredge Scourge (Bring-the-Pain replacing its Tremble) proved ill fated: The Scourge did activate the ability by hitting enemy's Armor but (a) something went wrong with the animation [I thought BtP animation was just a regular attack, that's why I used it -- probably not so simple! :D] and (b) when I melee-hit the Scourge, i didn't take back any break-damage [that's probably due to the fact that BtP acts in complement with RtF]. It seems like I'll need to do so more research on those. It's true that the ability files are much trickier to "read" than the rest of files I meddled with, mostly due to the use of your jargon (e.g. "autolevel", "caster", "ops", "phantasms" etc)

default_name
04-29-2014, 11:03 PM
Hey-hey! I can help with localisation testing too (Russian and French)!

Narf81
05-12-2014, 11:30 AM
What day is planned around for the beta?

JackJammer
05-13-2014, 10:31 AM
Hey, great news. I would love to help and test the german version

Narf81
05-15-2014, 06:03 AM
Devs?

Aleonymous
05-15-2014, 06:26 AM
Devs?

There was a post by a VE member in the Steam-boards (http://steamcommunity.com/app/237990/discussions/0/558754260074545301/#c558756255556143240) saying "We're getting much closer - hoping to get a lock down date as early as late next week. "

Narf81
05-15-2014, 10:42 AM
My English is really to bad! Does they say the Beta comes End of next Week? Or they have a Date to realease the beta on next Week? Sorry :/

stoicmom
05-15-2014, 11:49 AM
no problem, Narf81 :D we really do not know any exact dates :( the information says that they are close to releasing a date by then end of next week (hopefully).

Aleonymous
05-15-2014, 01:22 PM
Narf81 -- The way I "read" it, it seems that the patch will come somewhere in early June. There is no word about the Beta in that post; I guess it might not happen at all... But, we'd best wait & hear from John for that one.

Narf81
05-15-2014, 02:23 PM
Thanks for the Translation :)

I want play and it feels so long now :D

Narf81
05-25-2014, 04:58 PM
Any news?

John
05-25-2014, 05:08 PM
We are almost finished with QA on the translation build. If all goes well, we will invite the public to beta test the translations tomorrow (Monday May 26) around 17:00 GMT.

Aleonymous
05-25-2014, 05:34 PM
We are almost finished with QA on the translation build. If all goes well, we will invite the public to beta test the translations tomorrow (Monday May 26) around 17:00 GMT.

How's that gonna go? Through steam? Will the game auto-update (I am worried about my mods being overwritten) to this translation-build? How long will this beta last?

John
05-25-2014, 08:47 PM
It will go through Steam, but it will be a 'BETA' branch. You'll have to opt-in to it, and yes, it will auto-update when you opt-in (but not before). The beta will only be a day or so long.

loskaz
05-25-2014, 09:22 PM
I also want to help. German

John
05-26-2014, 01:18 AM
Ok, stay tuned here and we will let you know. I will post to this thread, as well as create a new announcement thread, and send the word out on Twitter via @StoicStudio

JW

Narf81
05-26-2014, 10:32 AM
ah now :D Thx Stoic ;)

John
05-26-2014, 02:42 PM
The Localization Beta Test is active now:
http://stoicstudio.com/forum/showthread.php?3283-The-Banner-Saga-Localization-Beta-Test