Today's update sees a much-awaited improvement to the game's terrain and visuals, some AI improvements, a couple of quality-of-life improvements, and a handful of bug fixes for good measure!
-- swapped in the grass and dirt textures from the original game and found--to my delight--that they actually work really well on the new 3D terrain! I decided to run with it and swapped in old (and in some cases, modified new) terrain textures that better fit the pixel-art aesthetic of the character sprites and vegetation. I think the battles look much nicer this way.
-- tweaked post-processing settings to boost the vividness of color and bloom effects in battle while toning down the intensity of bloom effects on lava tiles for greater readability.
-- vastly improved the AI algorithm for planning long-range moves (i.e. those that would not result in a skill usage this turn, but which bring the character closer to a desired target).
-- fixed: the AI profile for Crypt Diving was not set properly.
-- did a bit of optimization in the AI code.
-- the game's trap warning will now trigger if the destination space you click on (not just the path leading up to it) is covered by an ally's trap.
-- the game no longer loads all saved game data for every slot in one go when opening the save or load menus; instead, it now loads just the data for the current page and loads more when the page is changed. This addresses the long load times players faced when going to save or load the game with dozens of save slots filled.
-- reduced the difficulty of Out of Food Battle by de-linking the aggro group for enemies in the bottom-right of the map from enemies elsewhere on the right side of the map, then reduced it further for Soldier difficulty (and massively so for Observer and Recruit) by reducing the number of enemies present and increasing the number of apples yielded by fruit trees.
-- added support for impassable, black "Blank" terrain tiles to the map editor.
-- fixed: the DamageUnit and DamageUnitAtCoords script actions would not trigger on-death attacks if a unit died from them. (Since these are how traps deal damage, this meant that traps were not triggering on-death attacks either.)
-- when mousing over sheer cliff faces and clicking, the game's select-the-tile-below behavior now works with move tiles, attack tiles, and so on.
-- fixed: the behavior to select the space below a sheer cliff face was only working in battle; when clicking a sheer cliff face in the map editor, the game would throw a null error.
-- fixed: materials for certain cliff faces had somehow gotten specular highlights turned on somehow.
-- improved the 64 x 64 and smaller executable icons for the game.
Patch version 1.0.20
Today we have yet more fixes and improvements!
-- new bowman skill added to the engine: Aim. Boosts user strength by 25% for the turn.
-- created the Aim skill graphic, added it to usable assets.
-- fixed: game music would stop upon surrendering or being defeated in battle.
-- fixed: changes to the game's reinforcement spawn code in version 1.0.18 resulted in item sacks dropped into water no longer spawning on the nearest land or bridge tile if the elevation difference between them was greater than one--and with no valid space on which to spawn the sack, the game would then throw a null error.
-- the item editor now has a Copy Item function to match the skill editor's Copy Skill!
-- fixed: spawning a shop in the cut scene editor without specifying available materials would result in a null error due to the game searching for item materials and not finding them. (The game now just assumes that all materials are available within the cut scene editor.)
-- fixed: using EndConvImmediately in a cut scene with only one narration frame could result in a range error when viewing the scene within the cut scene editor.
-- fixed: the "Number to Spawn" field in the shop stock subwindow in the cut scene editor wasn't accepting ranges.
-- fixed: values passed to number pickers were not immediately being constrained to the allowed range upon passing.
-- fixed: altering available money using SetAura in a test script would not be reflected in the shop interface until changing categories or opening reserve supplies.
-- fixed: in some circumstances, forcing the end of dialogue after spawning the shop would result in the shop interface remaining onscreen instead of being dismissed alongside the dialogue interface.
-- fixed: editing an existing shop and validating its stock could result in the game inappropriately duplicating the shop.
-- add a "generated claw" graphic to the game.
Patch version 1.0.19
We've got one really significant new feature for 1.0.19 and a smattering of bug fixes; let's start with the feature:
-- you can now reduce visual quality in the game settings menu to boost performance! There are five supported levels of graphical fidelity reflecting steady gradations of quality as you step through: High, Medium, Med-Low, Low, and Potato.
High: sub-pixel morphological anti-aliasing, full texture resolution, and post-processing effects on.
Medium: quick and dirty anti-aliasing, full texture resolution, and post-processing effects on.
Med-Low: quick and dirty anti-aliasing, half texture resolution, and post-processing effects on.
Low: no anti-aliasing, half texture resolution, and post-processing effects off.
Potato: no anti-aliasing, 1/4 texture resolution, and post-processing effects off.
The game defaults to "High," which reflects the visuals in all versions prior to 1.0.19. Needless to say, the game looks much worse on the lowest settings, but hopefully these options should help folks experiencing performance issues on their machines.
-- cleaned up the golden "gleam" texture used on the title screen logo animation.
-- fixed: the shop interface could bug out if asked to load reserve supplies for a roster without any reserve supplies saved.
-- fixed: it was possible for the game to throw a null error when generating hobbies for the proc gen characters who join you after the caravan battle.
-- fixed: game AI would treat enemy counterattacks as dangerous when weighing moves with skills that prevent enemies from counterattacking.
-- fixed: it was possible for a character's on-death skill to become null, leading to a null error when the AI tried to evaluate it.
-- updated gamepad support for cut scene menus to account for multiple pages of buttons.
-- updated gamepad support for new settings on the settings screen.
-- fixed: hitting the cancel button on a gamepad during dialogue or when interacting with the new turn box would lock up the game.
Patch version 1.0.18
More fixes and small improvements:
-- the game AI now takes control of characters that it afflicts with Enthralled status.
-- the game no longer considers spaces with impassably large elevation differences as valid alternative spawn points for non-flying reinforcements when their original spawn point is blocked. (Among other things, Fera won't spawn on top of the fortress walls any longer.)
-- fixed: when using Swim, the game would place skill target tiles onto any adjacent bridge or land tile even if the elevation difference was too great.
-- fixed: in some circumstances, the shop interface would fail to load the player's reserve supplies, which could result in the reserve supplies simply being wiped.
-- added a field to the character creator allowing players to assign an on-death attack to characters (e.g. Explode, Big Shield, etc.)
-- added error-checking to counterattacks, masteries, and proficiencies within the skill progression field of the character creator.
-- fixed: the page buttons for picking test rosters within the cut scene and map editors had lost their reference to the functions that actually flipped the pages.
-- fixed: the cut scene editor was throwing a null error when previewing shops due to the shop script trying to reference gamepad navigation logic that doesn't exist within the campaign editor.
-- fixed: using ShakeScreen in cut scenes would cause the game to throw a null error.
-- made the "redded out" coloration within the character screen consistent with the coloration used everywhere else in-engine.
-- optimization: removed an unnecessarily duplicative step in deserializing the reserve supplies when loading game data for a cut scene.
-- fixed: portraits had lost reference to their 2D particle spawners, causing the PortraitParticles action not to work.
Patch version 1.0.17
Some small fixes and improvements:
-- the game now displays a "Saving game..." notification when auto-saving during transitions between scenes.
-- fixed: unit move speed level 2 (but not the others) had ceased to be applied to AI-controlled characters.
-- fixed: in-game shops were still showing salaries and food in the info bar.
-- fixed: the animation type for point lights was not being saved properly by the map editor.
-- fixed: you couldn't add stock to a shop in the shop editor without first creating the shop.
-- fixed: the page buttons in the shop stock item sub-window had lost their reference to the functions that actually flipped the pages.
-- increased the chance of Feint causing Distracted from 75% to 100% and changed its after-attack behavior from Unlimited to Use Once, turning it from an annoying RNG gamble you had to "roll" over and over into a one-and-done tool.
-- added documentation for 2D particle presets to the Guide.
Patch version 1.0.16
In today's patch, it's 99% bug fixes and a couple of nice little quality of life updates:
-- fixed: on rare occasions, the game's internal AI timer could get ahead of the "end combat sequence" timer, resulting in the AI not being informed that a non-turn-ending attack had been completed, which would lead the AI to treat the attacker as not having used an attack yet, in turn leading to one or more extra attacks. (The fix was pushed earlier today as a hotfix, version 1.0.15a.)
-- before the start of the player's turn, the game now performs a check to ensure that no essential characters are going to immediately die from burning, poison, drowning, etc.--if they are, the game will not let the player save the game.
-- the skill editor now changes the appearance of some of its input fields for Create skills to make it easier for users.
-- the skill editor now has a Units submenu you can browse to pick the character or object created by your Create skills.
-- fixed: upon loading a generic character in the character creator, the game would try to procedurally generate a unique portrait for the character.
-- fixed: upon loading a character with an empty inventory in the character creator, the game would mistakenly detect the nothingness in the character's inventory as an item.
-- fixed: the game was treating items without a valid template as equippable.
-- fixed: the skill editor was not correctly saving sound and visual effects.
-- fixed: after creating a new campaign in the campaign editor, the description would not "stick" in the UI until the campaign was reloaded.
-- 1.0.16a: turns out, the infinite AI turn bug was caused by an entirely different culprit: a change I had made to the AI in 1.0.15 that made the AI aware of the danger from attacking explosives in melee range. The new AI procedure for evaluating targets for on-death skills (e.g. the Explode skill of Charges) was accidentally overwriting the after-attack behavior for whatever skill the character doing the evaluating was considering attacking with; after the AI character attacked, the game wouldn't find the correct behavior attached to the attack, leading to that character's turn never being set to end.
3 weeks in: PVP mode and more!
Hello, tactics fans! It's been 3 weeks since the release of Telepath Tactics Liberated; since that time, I've been busy updating the game with requested features, balance tweaks, and bug fixes. As of today, I've pushed 15 updates to the game.
Quality of Life Features Added So Far
I'd like to take a moment to look back at all the QoL features I've added since launch based on player feedback:
browsing and downloading of custom campaigns from Steam Workshop from in-game;
a custom difficulty setting for the main campaign letting you customize weapon durability, death rules, AI level, experience scaling, shop prices, and more;
immediate visual feedback on who can use equipment when mousing over weapons and armor in the reserve supplies screen;
faster camera zoom and support for a greater level of zoom-out;
optional screen-edge panning;
support for VSync;
auto-restart upon suffering defeat in single player;
faster character movement on speed settings 3 and 4;
a "turns passed" timer visible in the battle settings menu;
more battles with elements that scale directly with the chosen difficulty; and
support for promoted units in the character creator
As a solo developer, it was not easy to add this much stuff to the game in such a short period, let alone while also marketing and handling bug fixes--but it feels worthwhile to me to make the game as good as humanly possible. And there's more...
Player-Versus-Player
Speaking of browsing and downloading of custom campaigns from Steam Workshop, a brand new game mode is now available for free: PVP mode! Grab a friend (or find one using Steam Remote Play) and play through the main campaign's battles head-to-head.
This version of the campaign strips out all of the tutorials for a more focused experience. Either player can save the game, and there's no need to restart and play through the battle again if you lose: the campaign will simply display Player 2 as the winner and progress to the next scene, keeping things moving forward!
Monthly Campaign Contests
Going forward, I want to encourage players to create their own campaigns. As such, I am going to choose a player-created campaign to highlight every month going forward, starting in May! Check out this video for tips on getting started making a campaign of your very own. I'm available to answer any questions you might have--just post 'em on the forums.
Version 1.0.15 Changelog
While we're at it, why don't we look at changes to the game's code in version 1.0.15?
-- halved the rate of enemy reinforcements in Battle with Tarion to make the fight less of a slog.
-- boosted Energy gain for promoted cavaliers.
-- scaled the difficulty up a bit for Five Guardians and the bandit fortress outer wall battle on Veteran and Tactician difficulties.
-- the AI now takes into account the presence of "on death" attacks when scoring attack targets, discouraging it from attacking explosive charges from within Explode range.
-- fixed an error in the counterattack damage calculation used by the AI to score potential attacks against opponent who can counterattack.
-- new AI handicap level 9: the AI does not account for damage it will take from counterattacks or from "on death" attacks.
-- fixed: changes to the way the game values destructible objects as attack targets led to the AI never considering Camp a viable target. This has now been fixed by massively increasing the multiplier in Camp's TargetValue tag to counteract those changes.
-- fixed: in rare circumstances, the game could end up with multiple "wait and execute next move" coroutines running at once, producing weird and unexpected enemy behaviors.
-- updated the Guide descriptions of Accuracy and the Res. stats to mention that these affect the likelihood of status effects taking hold.
-- the AI now grants a target value bonus to its own units that will die without intervention due to poison or burning, prioritizing them for healing. (This is turned off on AI handicap level 4 or higher.)
-- fixed: if an AI-controlled character had a skill without a valid, recognized after-attack type, it would cause a fatal "key not found" exception in the AI's algorithms.
-- fixed: the game's method for choosing skin, eye, and hair palettes for portraits of procedurally generated unique spriggats did not correctly account for promoted spriggat classes.
-- fixed: it was possible to use Books of Power in shop cut scenes, wasting the item.
-- new cut scene-only condition: Item Use. If set to false, items cannot be used in this cut scene.
-- fixed: the script action granting Meridian art supplies in Merchant 2 was using outdated syntax, causing the supplies not to be auto-equipped upon receipt.
..and that about does it!
Thank You
I'd just like to say, thanks for coming with me on this journey. If you're enjoying the game, please don't forget to leave a review; and while you're at it, why not (politely) request that your favorite Youtuber or streamer check TTL out? That sort of thing helps out more than you might think!
Yours in tactics,
Craig
Patch version 1.0.14
New in this version:
-- there is now an option to turn on VSync in the game settings. Doing so will reduce the framerate noticeably, but will also resolve screen tearing. (If possible, setting the screen resolution to something with a refresh rate of 60 Hz should also fix any screen tearing without framerate drops.)
-- fixed: the reinforcements code in Battle with Tarion was using outdated coordinates, resulting in 3 of 4 tunnels not behaving as intended.
-- reserve supplies collected while playing with alternate character rosters (e.g. in the bandit fortress or during Moonless Hunt) now transfer over to your main reserve supplies when you reunite the characters in those rosters with your main roster.
-- new script action: TransferReserveSupplies. This lets you transfer one roster's reserve supplies over to a different roster.
-- fixed: Enthralled status could be applied to members of the player's own army (or to enemies who were already Enthralled) to effectively grant them a bonus turn.
-- fixed: Heavy status could be applied to destructible objects to change their passability to characters.
-- fixed: calling the WinBattle action would not trigger dialogue with an OnVictory trigger.
-- fixed: the dialogue editor was not showing dialogue not possessing a Conv ID. (Now, the editor displays such dialogue with its trigger and trigger parameters where the Conv ID would ordinarily be.)
-- failing to specify a facing direction when using SpawnUnit or GenerateUnit could produce a fatal range error; now, the game simply defaults to spawning the character facing downwards.
Patch version 1.0.13
No fooling: it's another update! New in this one:
-- the character creator now loads all available classes dynamically--including promoted and custom classes!
-- the character creator now handles promoted classes correctly, leveling stats and gaining abilities as though the character had reached the minimum required level for the promoted class.
-- the character creator now displays a preview of the default rest sprite for each class while mousing over it.
-- apparently it is possible to defeat Fera in the bandit fortress entrance; I've added an achievement for that, plus some dialogue acknowledging the feat (while also preventing Fera from actually dropping her inventory there, as she'll still be showing up in the next scene).
-- the layout for Coria Dogs - Basement now scales in difficulty above Soldier level.
-- the layout for Battle with Tarion now scales in difficulty with the chosen difficulty level.
-- you can now select battle layout difficulty as part of custom difficulty options.
-- fixed: walls were inappropriately spawning inside the treasure rooms in Battle with Tarion.
-- fixed: if a terrain tile modified resistances for an element and a destructible object on the same space also modified resistances for that element (e.g. Heat resistance with an ice bridge over water), the game would recursively add those resistance modifiers together without end.
-- fixed: the Disarmed status effect didn't do anything. It now causes the target's equipped weapon (if any) to become unequipped.
-- added Disarmed status to in-game documentation.
-- updated full class descriptions for the prestige assassin classes as well as the short description for the Drake.
-- fixed: for destructible objects and classes without a description, the character screen would display the description of whatever the last class with a valid description was instead of leaving the description blank.
Patch version 1.0.12
New in this patch:
-- fixed the annoying tooltip "wiggle" when mousing over a throbbing new skill button on the level-up screen.
-- battle text overlay messages no longer remain visible onscreen during the appearance of the level-up screen, promotion screen, victory/defeat box, when opening the battle menu, while typing in the console, or when restarting a battle.
-- fixed: all-purpose RangeBonus tags (as used on Binoculars and Lyrio) had ceased to function correctly.
-- fixed: buttons for new skills were not being displayed in the Promotion screen.
-- cleaned up the promotion screen interface a bit in general.
-- fixed: using Escape to close the console in battle would simultaneously register as a cancel press for whatever else was open (and if nothing else was open, would open the battle menu).
-- balance tweaks: made Gavrielle and Zimmer somewhat more likely to gain Strength with each level; increased Madeleine's base Heath slightly and base Energy substantially.
-- fixed: the game was not explicitly setting a custom integer value representing the state of the player's conversation with Fera to 0 at the start of the game. This meant that playing a save file where you had spoken to her and then loading a save file where you had not could result in the game inappropriately using the conversation value from the first save.
-- fixed: status effects for custom skills were not being saved within the skill editor.
-- added a "Not connected to Steam" warning when attempting to upload from the campaign editor and a Steam connection isn't successfully established.
-- fixed: alone among all psy users in Multiplayer, the cryokineticist had a Mind Blast counterattack.