1. Together in Battle
  2. News

Together in Battle News

Version 0.9.10: battle MVPs, Steamdeck improvements, bug fixes and more!

Happy holidays, tactics fans! As I predicted last month, this month was extremely busy for me with real-life stuff--and I wanted to get this latest patch out before the year-end holidays hit so that players trying out the game for the first time could enjoy it in the most stable, complete state possible.

As a result of all that, this update was pushed out on a tighter time frame than usual; as such, it is on the smaller side. Still, there's some good stuff in here--follow along as I regale you with all the cool new thingies!

First up, we've got a couple of big items that I've had on my personal wishlist for the game for some time now...

[h3]...combat performance tracking and post-fight MVP awards![/h3]



I know this goes against my past declaration that I'd be focusing on content and polish rather than new features, but I realized I could fit this in with only a day or so of work, and it really adds an extra jolt of "heck yeah" to the victory screen while simultaneously providing another vector for connecting with your characters. Seemed like a bit of a no-brainer! So here are the details:

  • the game now tracks battle performance stats on a per-character basis, both for the current battle and cumulatively across the whole game. The new battle performance stats tracked include:

    • total damage dealt,
    • total enemies defeated,
    • total enemies debuffed,
    • total collision damage dealt to enemies,
    • total falling damage dealt to enemies,
    • total healing provided,
    • total energy provided,
    • total allies buffed,
    • total damage taken,
    • total damage dodged,
    • total damage blocked,
    • total sacks grabbed,
    • total traps placed,
    • total objects created,
    • total characters summoned,
    • total number of times they've held spaces,
    • total number of times deployed, and
    • total number of times defeated.
  • the game now hands out little "MVP" awards on the victory screen at the end of each battle based on how much (and in what way) the characters left on your team contributed! Up to 8 different awards can be handed out at the end of each battle, with the categories depending in part on what your characters did during the fight.

Now, you may be wondering: can these new features later be harnessed as grist for post-fight character interactions and random events? You bet! And will I eventually do that? Mayyyybe... πŸ˜‰

[h3]I also spent time this month focused on adding a bunch of fixes and improvements for folks playing on Steamdeck or with a gamepad![/h3]

  • when using gamepad controls, the gamepad cursor now properly disappears from the screen when transitioning to a new scene.
  • when using gamepad controls, after moving a character with a knockback skill, if there is not a direct-damage skill available, the game now auto-selects the knockback skill for use on an enemy who can currently be damaged by being knocked into an object or character, off of elevation, or into an environmental hazard. (This makes it much easier and more enjoyable to play with kineticists when playing with gamepad controls.)
  • fixed: when using gamepad controls, after moving a character with a healing skill, the game would not auto-select a Shield skill for use on a damaged ally in range unless the ally belonged to a different army.
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned quite right on item options buttons (Use, Give, Drop, Cancel, etc.)
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly to the item buttons in the character inventory inspection window in the reserve supplies screen.
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly for the day cells in the calendar screen.
  • fixed: when using gamepad controls, after exiting the game settings menu in a cutscene, the game would inappropriately return gamepad focus to the underlying scene rather than the main options menu (which remained open onscreen).
  • fixed: when using gamepad controls, the B button would behave like the A button during dialogue even in contexts where this made no sense.
  • fixed: when using gamepad controls and selecting from a list of units in dialogue, if the dialogue tree returned to the list of units, the tooltip for the last selected character would still be showing onscreen.
  • fixed: when hiring out characters, the game would show a message about right-clicking characters to see their stats in detail even if the player was playing with a gamepad.
  • fixed: the Together in Battle demo was not defaulting to gamepad controls on Steamdeck as intended.


[h3]Next up, we have a bunch of other miscellaneous improvements![/h3]

My favorite of this bunch are the new random physical traits characters can get, wherein characters have special reactions to certain types of food. (I've had allergies on my list of traits to add to this game since all the way back in 2011, when I first created the design document for this game!)

  • new physical trait characters can be generated with: Fruit Allergy. Gains the Sick status effect upon eating mangos or apples.
  • new physical trait characters can be generated with: Sugar Fiend. Gains the Move Bonus status effect upon eating Cake, Cookies, or Pie.
  • during the blacksmith rescue mission, there is now alternative dialogue for Dhatuu Dil if you speak to him with a golem or a spirit.
  • you can now back out of the recruiter without losing a time point if you click it by mistake.
  • reworked the pixel art a bit for puddles: reduced their size so they don't visibly hang over the edge of elevated terrain tiles, and improved the animation for them. (I have an artist working to make them look even nicer, but we will have to wait for that to be completed.)
  • the game now auto-updates glow values for spirits from older versions of the game.
  • added scripting to mark objectives reached for characters who take down an enemy idol or inspirational leader in the arena, or who recruit their sibling there.
  • added scripting to mark objectives reached for characters who achieve certain objectives in the monkey league qualifier, battle in the dissidents' den, blacksmith rescue fight, golem attack, revenge quest battle, and battle in the northern stepwell.


[h3]And as usual, we have miscellaneous bug fixes aplenty (special thanks to this month's top bug hunter, Tacitus)![/h3]

Oh and by the way, before we get to those bugs: some of you might recognize Tacitus as the creator of the extremely cool custom campaign Fate of the Wayward. If you want a new adventure to play while waiting for Together in Battle to be completed, why not go download Fate of the Wayward from the New Game menu? Trust me, it's worth your time!

All right, now on to the bug fixes:

  • fixed: when generating a spriggat without a proper spriggat class name, the game could throw a null error upon attempting to update the spriggat's portrait palette.
  • fixed: the logic used by the danger displayer had ceased counting knockback skills as attack skills, causing the displayed move-and-attack range of enemy kineticists to appear misleadingly small.
  • fixed: because the Kill-All Victory condition was turned off for army 0 in Attack the Idol matches, destroying the idol would not actually cause the player to win after it resulted in army 1 being wiped out.
  • fixed: if, during a Psy Clash match, you had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and the opponent ran out of minions for you to target in the middle of free-targeting, the game would softlock.
  • fixed: if, during a Psy Clash match, the AI opponent had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and you ran out of minions for them to target in the middle of free-targeting, the game would freeze.
  • fixed: during a Psy Clash match, if the enemy AI chose to play a card that both affects one or more minions and a player but minions of the appropriate type did not exist in play, the game would recognize this as a valid move but would then get caught in a loop upon trying (and failing) to find a minion to target.
  • fixed: during a Psy Clash match, you could click a card in your hand during the opponent's turn and the card would be played (and would behave as if the opponent had played it).
  • fixed: receiving a Psy Clash deck from Rohit during the Festival of the Ascendant Lights would cause the game to overwrite whatever assorted Psy Clash cards the player may have accumulated up to that point.
  • fixed: the icons for food and aura would sometimes fail to appear in the info bar, particularly when playing on Steamdeck.
  • fixed: in proc gen battles where the player's characters auto-deploy and the final character in the roster had a wound level greater than 1, the game could throw an out-of-range error when queuing up the characters to spawn.
  • fixed: during the free-roaming bits of cavern exploration, the introductory text had ceased to coexist peacefully with the free-roaming tutorial text.
  • fixed: defeating all enemies on the first floor of a cavern would send the player back to camp instead of down to the second floor.
  • fixed: the file containing the data for the Poison Needles skill had gone missing from the game.
  • fixed: during recruitment, the little portrait frame that normally appears on the current selected character had stopped showing up.
  • fixed: when reporting to Manbir Raksha following the attack on the royal guard informant, if the informant was not saved, certain dialogue replies led to the wrong part of the dialogue tree, causing the conversation to proceed as though the player was speaking to Prince Ajit.
  • fixed: during the interrogation with Malatose about Dayaan, it was possible to navigate the dialogue tree's branches in such an order that you could end up in a spot with no available replies, forcing the scene to end prematurely.
  • fixed: in the blacksmith, attempting to exit when choosing a weapon for engraving would still direct the player to the dialogue branch where they pick a name to engrave rather than canceling out. (Note for modders: this now requires dialogue trees ensconcing the blacksmith to have a branch for canceling the engraving process named "Cancel Naming"; otherwise, exiting out will return the player to branch 0 of the dialogue.)
  • fixed: typing words with 'L' in them in the dialogue input field would cause the game to inadvertently save log files.
  • fixed: during the Stat Advice camp event, if one of the stat possibilities was Counter Limit, the game would fail to display the correct icon alongside it.
  • fixed: one of the greeting line variants for Imaginative characters was missing a period.
  • fixed in version 0.9.10a: the confirmation button for leaving the Shop screen had become unlinked from its function, trapping players in the shop screen.
  • fixed in version 0.9.10b: non-skill red action tiles in combat (e.g. for Talk, Give, and so on) had broken due to a different fix from last month.
  • fixed in version 0.9.10b: item sacks and bridges had become impassable due to an optimization in the game's pathing logic combined with the game failing to save a boolean "isCharacter" flag correctly.
  • fixed in version 0.9.10c: traps had broken again due to me once again accidentally overwriting the file that contains their scripts. (Sigh.)


[h3]And finally, what would an update be without some new improvements for folks making their own custom campaigns in the campaign creation suite?[/h3]

  • new script action: ReplaceInList. Systematically goes through a custom list and, upon finding a particular entry value, replaces it with a different value. Three parameters: List Name, Entry Value, and New Value. Optional fourth parameter: Allow "Contains" Matches. (If this last parameter is set to true, the game will count any value containing the Entry Value as a match.)
  • new script action: MarkObjectivesReached. Sets a special internal stat for the named character of the type "Objectives Reached," stored alongside other battle stats and used in the algorithm for determining MVPs at the end of a victorious fight. Two parameters: Character Name and, optionally, Amount.
  • new optional parameter for DamageUnit, DamageUnitAtCoords, DamageCharAtCoords: Attacker ID. Allows you to supply the unique ID of a unit and have the game treat that unit as the one producing the damage.
  • new unit tag supported: ModItemSFX. The tagged character gets a specific status effect whenever they use an item of the named type.
  • fixed: shops in the cutscene editor had broken, throwing a null error when displayed.


That's all for this month, folks! Enjoy the holidays to come and I'll have more for you soon! Just FYI, I'm going to be moving in January, so I'm not sure how much I'll be able to squeeze in, but my plan is to focus less on QOL stuff and more on creating endgame content.

We'll see what I can make happen. Until next time...


Tactically yours,

Craig

Version 0.9.00: new investigation, battle, events, match types, and upgrades!

Greetings, tactics fans! I'm pleased to report that I showed Together in Battle at the first-ever Chicago Indie Game Showcase on November 2nd, where it was well-received by SRPG enthusiasts. Apart from that, I finally got to have a relatively quiet month this month, so I took advantage of the lull and pushed hard to get a lot of things done in as short a time span as possible.

My main focus this month was on fleshing out the endgame experience, adding new content and wrinkles to keep things interesting. Let's get right into what's new!

[h3]First, there's new events and late-game character advancement content![/h3]

Version 0.7.90: new balancing, new investigation, new battle, new ending!

Greetings, tactics fans! As October draws to a close, I've updated Together in Battle with another month's worth of progress. There are new investigation scenes, a new plot battle, a new ending, balance improvements, AI improvements, bug fixes, and more. There's a fair bit to cover, so let's get into all the changes!

[h3]First up, here's the new content:[/h3]

  • created a new investigation scene where you must scour an empty palace under time pressure! Where will you search, and in what order? Your choices affect the outcome!
  • created a new plot battle where the outcome affects the scenes to follow!
  • created a new, branching cutscene following the plot battle!
  • created a new, second "bad" ending to the game!
  • created two new conspirator enemy types: Silent Serpent and Silent Rider.
  • created a new scene that occurs if you visit the recruiter after you get locked in to the game's first bad ending.
  • new achievement: A darker fate.


[h3]Next, we've got balance changes to keep runs from capsizing due to excessively bad luck:[/h3]

  • during caravan battles, the game now dynamically adjusts the number of AI-controlled ally guards on the battlefield based on how many characters you're fielding, making it much less risky to send only two characters.
  • made some tweaks to the "numerous" condition in caravan guard battles to make it less likely to generate scenarios where the player is quickly overwhelmed by enemies.
  • when "thieves" are chosen as the condition in arena battles, the enemy team now ignores chests. (This keeps arena opponents from busting open chests and thieves immediately swooping in, grabbing the loot, and vanishing before the player can react.)
  • during buyout offer events, Ishita Svaamee will now specifically offer to buy out either your highest-salary or your lowest-level character(s) rather than just choosing a character purely at random.
  • scheduled league matches now award extra money to the player relative to pickup matches, provided the player wins. The further up the ranks the player rises in a given league, the more the scheduled-match prize for victory increases (+45 aura per scheduled match won in Monkey League; +60 aura per scheduled match won in Gharial League; +75 aura per scheduled match won in Snow Leopard League; and +100 aura per scheduled match won in Tiger League.) This is intended to provide a cushion to help players afford a replacement if they should lose a character during the course of any given league.
  • the game now tracks if you lost the last qualifier match and--if it finds that you did--it won't grant the victory bonus for repeating scheduled league matches prior to re-attempting the qualifier. (This is to avoid a situation where losing qualifier matches becomes economically optimal.)
  • late-night battle events (currently, Thief Attack and Thief Attack 2) will no longer occur if both (1) a battle event already occurred earlier in the evening, and (2) a scheduled league match either occurred earlier in the day or will occur the following day. (Three forced fights in a row without time to recover is simply too much to put on the player.)
  • when initiating the first late-night thief attack event, the game now checks to make sure you have at least 6 characters available; if you don't, it aborts the event.
  • when initiating the second late-night thief attack event, the game now checks to make sure you have at least 8 characters available; if you don't, it aborts the event.
  • increased the minimum available characters necessary for the smuggler's den event to occur from 5 to 6.
  • when counting the characters available for the smuggler's den or thief attack events, the game now only counts characters who have at least 50% of their health and 25% of their energy. (Previously, if a character could be fielded at all, then they would be counted toward the minimum number of characters.)


[h3]We also have a variety of miscellaneous improvements, including several to the game's AI:[/h3]

  • AI improvement: when an AI-controlled army is tasked with protecting a unit as part of their victory/loss conditions, the AI will now prefer moves which bring its characters closer to the unit they must protect (with the strength of the effect scaling off the defense weight for that army's AI profile). Among other things, this means caravan guards are now more likely to actually stick around the caravan wagons they're supposed to defend.
  • AI improvement: the AI now scores moves which bring characters closer to their allies somewhat more highly.
  • AI improvement: character sensitivity to the danger a space represents now scales down proportionally based on much health the character has left, with full-health characters factoring it in at roughly 1/10th its normal strength. (This makes enemies at or near full health far less likely to simply run away on their turn.)
  • when in town, the game now warns you if you try to visit the recruiter with your roster already full (18 characters).
  • added a dialogue choice during the interrogation of Prince Ajit wherein the player considers attempting a scan.
  • cleaned up the dialogue in the Finding Malatose cutscene a bit.
  • added multiple new family background dialogue variants for characters who (a) were raised by both a mother and father, and (b) feel sad about one parent and anger toward the other.
  • added a loading screen tooltip about the effect (and value) of surrendering arena fights.
  • updated the ending credits.


[h3]And of course, we have bug fixes! (Shout-out to Titanium Legman and Koankitsune, our top bug hunters for this month!)[/h3]

  • fixed: if a character had less than 40% health left, they would always rest instead of performing a forced camp activity (including activities they were ordered to perform via a one-on-one).
  • fixed: when surrendering a match while playing with a gamepad, the game would inappropriately switch gamepad focus from the defeat window back to the battlefield, effectively freezing the game.
  • fixed: when surrendering a match while still in deployment, the deployment window would remain onscreen and obscure the defeat screen, as well as any OnVictory dialogue triggered by the surrender.
  • fixed: when surrendering a regular arena match prior to reaching Monkey league, the game would inappropriately show a little dialogue box that read "Defeated..." prior to showing the actual defeat screen.
  • fixed: the game could freeze when checking for terrain properties after removing a character from the battlefield as part of OnReachingArea dialogue.
  • fixed: thieves in the arena had such an overwhelming preference for attacking chests that they would always choose to bust open another chest over simply grabbing loot from a chest that had already dropped.
  • fixed: custom, player-created spirits and golems possessed an ongoing salary after being recruited.
  • fixed: the game could trigger a heatwave during the day (or, conversely, could untrigger an existing heatwave) if the player visited someplace and then left without using up a time point.
  • fixed: preemptive strikes were not working properly against Charge and other move-to-target attacks.
  • fixed: text overlay messages about preemptive strikes were being cut off early by text overlay messages with the name of the preempting attack.
  • fixed: if the team leader in the Monkey League qualifier was generated with Stimulate or another buffing ability, they could prematurely move toward the center of the map to buff an ally, immediately making the battle far harder than intended.
  • fixed: attacking a target tagged with Pursue would cause the game to remove Passive tags from the target as intended, but not Immobile or Inactive tags; instead, the game would remove Immobile and Inactive tags from the attacker.
  • fixed: characters created via script actions at the start of a battle could spawn on top of deployment tiles, blocking characters from being deployed there.
  • fixed a scripting error in the revenge quest battle impacting the team morale penalty for attacking a civilian bystander.
  • fixed a graphical blemish in the generic male and female swordsman portraits.
  • fixed: the bodies on generic portraits were getting base scale variations not matched by the hair layer.
  • fixed: changing a unit's army color mid-battle would cause their hair and skin palette to reset to default values rather than their actual skin and hair color.
  • fixed: hair and skin palettes for characters from older saves were not getting set based on their portrait values as intended.
  • fixed: opening and closing the battle menu during deployment would cause the game to inappropriately show the actions bar.
  • fixed: when switching between multiple successive dialogue branches where the speaker is left blank, the game would begin to inappropriately play babble speech sound effects alongside the dialogue text.
  • fixed: the game would detect displayable dialogue (and therefore show the dialogue window) despite detecting an immediate conversation-ender in branch 0 even if there was no speaker and no dialogue text, just so long as there existed a single reply with any characters in it at all.
  • fixed: the game would not copy knockback timing values when cloning AttackInfo data.
  • fixed: localized text for participation aura awarded after losing an arena match had a spacing error.
  • fixed a typo in the Trailing Malatose cutscene narration.


[h3]And finally, we have new goodies for people making their own custom campaigns in the campaign creator:[/h3]

  • created a turquoise variant of the in-game rug object.
  • new sound effect added: Drawer.
  • new sound effect added: Prison Door Close.
  • new script action: ScalePortrait. Allows you to adjust the size of an existing character portrait at runtime. Two parameters: portrait name and scale. (By default, most portraits have a scale of 1.0, though this can vary for proc gen and custom portraits.)
  • new script actions: HighestStatUnitsToList and LowestStatUnitsToList. Gets the characters in the specified army or roster tied for the highest or lowest value in the specified stat, then adds their name to a custom list. Parameters: list name, roster or army number, and stat name.
  • new script actions: HighestStatUnitsInList and LowestStatUnitsInList. Pulls the characters from an existing list who are tied for the highest or lowest value in the specified stat, then adds their names to a new list. Parameters: existing list name, new list name, and stat name.
  • the SpawnUnit, GenerateUnit, and GenerateUnique script actions now accept integer ranges for their x coordinate and y coordinate parameters, letting you randomize character spawning within a defined area.
  • fixed: documentation for the NextFrame action was missing from the campaign editor guide.


And that about covers the changes for this month!

[h2]Featured coverage![/h2]

I'm now going to shout out Titanium Legman again here for his delightful coverage of Together in Battle over the past month, including

  • this lovely overview video (I quote: β€œIt makes for a very compelling, one-more-battle type of feeling that I haven't gotten from a strategy RPG in a good long while”) and
  • this SRPG tier list video where (spoilers!) he ranks Together in Battle in A-tier alongside Fire Emblem Three Houses, Fire Emblem Awakening, and Fire Emblem Path of Radiance--even in its unfinished, early access state! (I quote: "Phenomenal.")

As the kids say: what an absolute king! πŸ˜ƒ

[h2]What's next[/h2]

We're on track to hit the full version 1.0 release in Spring 2025; and as it happens, that is precisely when I was hoping to release the game. So I'm feeling pretty good about that!

For our final updates leading up to that launch, my goal is to get the last investigation mission completed; get the last bits of new art and music into the game; create the final plot battle; write the good ending; write the scene with the big post-championship speech to your team; and add in one last event that can occur with Ishita Svaamee if you cross her. (Needless to say, I will also keep polishing the game with balance tweaks and bug fixes, and may throw in some new random events and dialogue as well if the mood strikes.)

As always, feel free to help me out by sending in reports of any bugs you run into, and--if the spirit moves you--by giving the game a nice Steam review. Such things are immensely helpful to a small indie dev like me! Until next month, my friends.


Tactically yours,

Craig

Version 0.7.50: new investigation scenes, new character dialogue, and more!

Hey there, tactics fans! This month's update is a little on the short side because (drum roll, please)...I'm getting married this Saturday! Still, I've got some good stuff here that I hope you enjoy.

The two biggest additions are simply new investigation cutscenes:

  • wrote a new interrogation scene with Malatose.
  • wrote a new interrogation scene with Wailling.


Both of these scenes provide information important to the conspiracy investigation and set up new main plot missions that I'm planning for the next update. πŸ˜‰

[h3]Miscellaneous features, improvements, and balance changes:[/h3]

  • generic unit portraits now shift skin and hair color to match their sprites!



  • updated to a newer version of Unity.
  • reduced frame drops that had started occurring during combat zoom-in and zoom-out.
  • both proc gen characters and custom characters are now assigned a sad info response line when they are created. These responses are now used after particularly dark background dialogue in camp. (If the responding character comes from an older version of the game and therefore lacks a sad response variant, they'll just respond with a normal response line that generally won't acknowledge the seriousness of the disclosure.)
  • wrote new nickname response lines for characters with the compulsive, empirical, imaginative, jokester, arrogant, serious, disciplined, sensitive, and vindictive personality traits! This means that a little more then one-third of all new characters will now have distinctive, personality-based responses to being nicknamed. (Characters from previous versions, by contrast, will all have responses picked from the same pool of half a dozen or so generic replies.)
  • wrote a new talk narration for narcissistic characters.
  • wrote new, self-loathing "fantasize" camp activity narrations for characters fantasizing about another character with whom they have a romance stat of 0 or lower.
  • when characters are lined up to have dialogue with one another in camp, if the game detects that there is no valid dialogue they can have together, the game now tries to give them a narrated "small talk" activity instead of having them say "Actually, I have nothing to say."
  • when premade generic units promote to classes that have new default weapon skills (e.g. the Blackguard with Throw Knife or Mantis Knight with Halberd), if they don't spawn with droppable weapons equipped, they now gain those new default skills as natural skills.
  • generic Marauders and Berserkers now have Throw Axe as default weapon skills.
  • improved the descriptions on certain personality traits for purposes of the character creator.

A quick note about the new response lines: if you have a custom character you made in a previous version whom you'd like to receive those new response lines, just open the character in the custom character creator and re-save them; the game should assign them new dialogue lines (including the new response types)!

[h3]Numerous bug fixes![/h3]

Thanks to me not adding any big new features this month, I was able to spend a good bit of time focused on knocking out a lot of bugs with highly specific reproduction conditions (plus a few that cropped up due to recent changes in the code):

fixed: the game had begun triggering visual and audio cues for characters dropping into chasms when merely moving onto bridges above (or, in the case of flying units, flying onto) chasm tiles.
fixed: the code which made the traveling merchant event more commonplace had a typo, essentially adding a nonexistent event into the event hopper and making the game skip to the next day whenever it came up.
fixed: it was possible for the game to select a heatwave event upon returning to camp in the evening, which would throw an error and cause the game to skip the evening's events.
fixed: if you recruited the enemy kineticist during the Monkey League Qualifier, they retained a script ID tag that could cause the game to inappropriately make them deliver lines intended for enemies during subsequent battles.
fixed: regular, non-dialogue camp activities intended to alter characters' familiarity, friendship, and romance were misformatted and so were not actually altering these values.
fixed: certain response lines incorporating the speaker's non-verbal tic were getting the entire line replaced with just the tic narration.
fixed: certain response lines incorporating the speaker's specific laugh were getting the entire line replaced with just the laugh description.
fixed: if a character got the random "romantic crush" event in camp, then lost their romantic feelings for their crush before they could fantasize about them (e.g. via the crush turning them down for a date or saying something unkind to them), the game would fail to find any valid "fantasize" narration in camp when the fantasizing character came up during free rein, thereby freezing the game.
fixed: if a character asked another character out on a date, the game could leave a forced "fantasize" camp activity tag on the character despite removing the associated camp activity from their "free rein" activity list.
fixed: the Trailing Malatose event could be triggered repeatedly.
fixed: the game was triggering an event where the player receives a letter from Manbir about Malatose much too early.
fixed: if they hadn't been triggered beforehand, Ishita Svaamee's buyout offer events would remain in the random event hopper even after the championship battle.
fixed: a bunch of potential character interests were missing from the "ally gift" event.
fixed: when generating a unique named knife for the "family weapon" event, the game would assign the wrong image name, causing the weapon to display no image in inventory screens.
fixed: a change in the last update broke the NPC attribute special character in dialogue, causing NPC pronouns in proc gen character dialogue (particularly background lines concerning family members) to simply not appear.
fixed: many day logs for investigatory visits to the palace were being cut off.
fixed: custom variables and other special characters within map objectives were not being processed during auto-displaying of objectives at the start of a battle.
fixed: default lines and attributes from the game's placeholder CharAttributes.xml file could be loaded alongside campaign-specific lines and attributes even when they shared the same ID.
fixed: as of the last Unity version update, objects assigned to a player army (e.g. the statue in Defend the Idol) were using a material containing the wrong render order, leading to these objects always displaying behind characters even when they should have displayed in front.
fixed: in rare circumstances, the game could still fail to display the counterattack sprite when showing reasons why a character wants a piece of equipment.
fixed: when playing in gamepad mode, the gamepad cursors were misaligned to buttons in the new turn box and the actions bar.
fixed: when loading a previously created custom character in the custom character creator, the game was not loading tooltip data for the personality and physical trait pickers.
fixed: tooltips for personality and physical attributes could appear below the portrait pickers in the character creation screen.


[h3]And finally, we have a few improvements for campaign makers:[/h3]

if the game detects a plural in the Relationship parameter for an -NPC:x- attribute special character in dialogue (e.g. when the NPC relationship is "mom and dad" or "aunt and uncle"), and the Attribute Type is a special character pronoun, the game will now supply the appropriate they/them plural pronoun.
fixed: the campaign creation suite was not loading campaign-specific custom character classes upon loading up a campaign for editing.
fixed: a null error was preventing the cutscene editor from working properly.

That's all for this update! As I mentioned last month, all the big-ticket features are in-game at this point, so from here until release, it's just churning out content and polishing things up.

I'm going to take a little time to enjoy the whole "getting married" thing, but I'll be back to working on Together in Battle soon enough! I'm looking to get two new main-plot missions done for next month's update--and if there's time, maybe another non-main-plot event or two. Until next time!


Yours in tactics,

Craig

Version 0.7.00: character creation, hair and skin tone matching in sprites!

Greetings, tactics fans! I've spent this past month overwhelmingly focused on two complicated, big-ticket features for the game--things I've received numerous requests for, and which--in one case--I've been wanting to implement for years now.

So let's talk about those two big items...

[h3]...Character creation and skin/hair palette swapping for battlefield sprites![/h3]

  • there is now a character creator button accessible on the title screen that lets you create and manage custom characters, each with their own name, species, gender, class, portrait, personality, physical traits, romantic preferences, and stat growths!



    Whenever you visit the recruiter in-game, if the game detects custom characters, there is an 80% chance that the game will pull one of them to appear among the procedurally generated characters. (If there are two or more custom characters, there's a 20% chance that the game will pull two of them instead!)
  • human character sprites now support hair and skin palette-swapping! This manifests in a few different ways, but the most immediately obvious and impactful one is that battle sprites for your recruited characters now have skin tone and hair color that match their portraits, This really helps make characters feel like unique individuals in battle, helps sell the setting, and--perhaps most importantly--makes it much, much easier to tell who is who (especially when you have multiple instances of the same class on your team).

  • by that same token, arena opponents now have randomized skin tones and hair colors, and premade unit types native to Kalkerapur now use region-appropriate skin tones and hair colors for their sprites.



[h3]Miscellaneous changes and improvements:[/h3]

  • designed a new palace intrigue battle (not yet reachable in-game, but in preparation for main plot events to come in the next month or two)!
  • the likelihood of getting the merchant side quests now increases with each week or so that goes by without the player getting them.
  • further increased the likelihood that characters will choose to interact with other characters with whom they are already friends or lovers.
  • added a tutorial explaining how to check enemy ranges.
  • added tooltips to the main menu buttons on the title screen.
  • updated the localization file to account for the new UI elements on the title screen.
  • the game now creates a directory for mods when it is run if it doesn't detect one. (This is currently used only for custom characters, but forms a technical basis for supporting mods specific to the main campaign going forward!)


[h3]Bug fixes:[/h3]

  • fixed: Silent Wings would not auto-promote upon reaching level 20 due to having the wrong class name.
  • fixed: when explosive charges detonated on their own due to Burning status and thereby destroyed bridge tiles with characters on top of them, those characters would not fall fully into whatever hazards lay beneath.
  • fixed incorrect palette highlight coloration for pants in the photokurios/photarch sprite.
  • fixed: in rare circumstances, when slaying an enemy using a knockback attack into water, if the enemy had a defeat bark, the game could throw a null error.
  • fixed: when clicking quickly through a late-night event with queued-up Wait actions (such as the "nightmare" event), it was possible to end the scene before the wait commands were fully cleared from the action runner, resulting in the next day's scripts not running and the game locking up.
  • fixed some errors in the female kineticist Levitate animation.
  • fixed some issues in the mentalist walk and cast animations.
  • fixed in version 0.7.00a: premade units were not getting skin and hair palette-swapped as intended.
  • fixed in version 0.7.00b: loading or creating a character with personality and physical attributes selected, then switching its species would not cause the character creator to update the personality and physical attribute pickers to match the new species.
  • fixed in version 0.7.00b: the custom character creator would not update the portrait for a golem upon changing its class from bronze to stone or vice versa.
  • fixed in version 0.7.00b: the game could throw a null error upon creating a spirit or golem due to trying to access physical traits (which spirits lack) or personality traits (which golems lack) when generating initial unit tags and camp activities.
  • fixed in version 0.7.00b: the custom character creator would expect the player to choose physical attributes for spirits (which spirits do not have), making it impossible to create custom spirits.
  • fixed in version 0.7.00b: the custom character creator would throw a range error upon attempting to load a previously created golem, spirit, or character lacking either a last name or nickname for editing.
  • fixed in version 0.7.00b: upon loading a previously created character for further editing, the custom character creator would not update the portrait feature pickers.
  • fixed in version 0.7.00c: the game could select custom characters to appear in recruitment even if they were of a species not recruitable in that setting.
  • fixed in version 0.7.00c: during refactoring of pronoun-choosing code for version 0.7.00, the variable to be substituted in dialogue had become unhooked from the method, leading to correct pronouns no longer appearing during dialogue.
  • fixed in version 0.7.00c: the game could select two of the same custom character to appear in recruitment if two custom characters were chosen to appear.
  • fixed in version 0.7.00c: the game was not calculating a salary for recruits plucked from among custom characters.
  • fixed in version 0.7.00c: the custom character browser did not display apostrophes in character names correctly.
  • fixed in version 0.7.00d: certain special characters appearing in proc gen dialogue referencing a character's NPCs used the "vertical bar" alphanumeric character, which the game relied upon as a delimiter when unpacking saved dialogue for custom characters. This, in turn, made characters generated with those dialogue lines essentially unloadable. (The -NPC:X- special character now uses a $ instead of a | to set off optional parameters.)
  • fixed in version 0.7.00d: custom characters were not being assigned a nickname threshold upon being recruited, resulting in them potentially nicknaming allies before they had built up any friendship together.
  • fixed in version 0.7.00e: character family background dialogue could still sometimes randomly pull from an older, incorrectly formatted file of character attributes, causing the delimiter error to recur when saving a custom character.
  • fixed in version 0.7.00f: custom characters recruited at levels above 1 would revert to level 1 upon being recruited.
  • fixed in version 0.7.00f: custom characters would lose their equipment upon being recruited.
  • fixed in version 0.7.00g: recruitment in custom campaigns was throwing a null error due to expecting a custom character file that was not being loaded.
  • fixed in version 0.7.00g: slice data for the Photokurios cast animation spritesheet was no longer properly aligned.
  • fixed in version 0.7.00g: swordsman Double Strike animation settings were being overriden by settings forcing bilinear filtering on.
  • fixed in version 0.7.00g: human Psy Clash minions were no longer displaying their intended skin and hair colors (either on the table or in card art).
  • fixed in version 0.7.00g: certain Psy Clash minions were no longer displaying at all (cavaliers, mentalists,
  • fixed in version 0.7.00g: the Senator walk animations were no longer referencing sprite data.
  • fixed in version 0.7.00g: using a Book of Power within the Manage Supplies menu in camp could produce a null error.


[h3]Campaign creator improvements:[/h3]

  • new script action: ShowCharCreator. This summons the new character creation screen, allowing players to create a custom character during your campaign! Parameters: load ID to supply the created character, and list name for permitted species (in case the player should be limited to certain species for their character). Cutscenes only.
  • premade characters can now have a range of possible skin and hair palettes assigned to them, allowing their sprites to match their portraits.
  • expanded the Map Settings screen in the map editor; added a fifth objectives field and a new field to assign a battle background (i.e. a flat image that surrounds the battlefield and pans around with it when you move the camera).
  • battle backgrounds can now be moved toward (or away from) the camera on a map-by-map basis to better align with the shape of the battlefield.
  • new battle background: Garden.

  • new destructible object: lavender flower bush.


And that about covers it!

[h3]Where we're at[/h3]

With this update, all big-ticket engine features planned for the game's version 1.0 release are now in. From this point on, it's officially just designing cutscenes and battles to round out the main plot, along with the odd random event.

With this benchmark reached, I've taken the liberty of bringing Together in Battle's price in line with what it will cost upon final release (i.e. $19.99). If you already own the game, then congrats: you got it at a big discount and nothing about that changes! If you don't already own it, then congrats: you get the benefit of buying the game when it's good and polished and plump with content!

Either way, thanks to everyone who's supported Together in Battle so far, and thanks to everyone who decides to jump in and support it going forward. I couldn't do it without you! Until next month...


Tactically yours,

Craig