January 2016 Update

Greetings Wizards,

Lots of changes continue to work their way into Rogue Wizards.

At the end of 2014, the prototype idea for town was that we would build lots of structures, farms, landscaping, all of which would benefit your wizard in the dungeons. As the game has evolved throughout 2015 it became apparent building farms, landscaping, and material collectors was kinda boring and that the most fun part of town building was when you unlocked a new major structure such as the blacksmith, armory, jeweler. Therefore we concentrated on the most fun structures and as a result in the alpha there isn’t really anything else to build except these cool structures that are unlocked as you progress though the storyline.

As we enter 2016, we decided to streamline the unlocking of new structures and build them in town for you as they are acquired. At the same time, town now has all new high resolution artwork and a hand crafted scene that expands over time as the player progresses throughout the game.

rogue-wizards-new-town-large

New Town Presentation

We’ve also continued to push the spell content further in the month of January. The brand new nature spell “Swarm”, summons a swarm of 5-8 pixies that flock around the player. At the start of each turn, one pixie automatically breaks off and attacks a nearby target, effectively giving you a second attack for that turn.

rogue-wizards-swarm-large

New nature spell, “Swarm”

The new “Icicle” spell creates a stream of 2-5 ice shards that fire in rapid succession dealing cold damage to their target. If the target is frozen, these ice shards do double damage making the icicle spell the first spell that interacts with the results of another spell, in this case the freeze spell.

rogue-wizards-icicle-large

New ice spell, “Icicle”

Finally, we’re starting to see a little buzz about the game from the YouTube community. Zueljin Gaming has created 17 episodes of Rogue Wizards gameplay.

zueljin-gaming

Here’s the development highlights and details from the past month.

Major Changes

  • Completely new town presentation. Structures are now auto-built as they are unlocked when returning to town.
  • Town is no longer on a tiled grid.
  • Town has a completely new set high resolution artwork for the structures, islands, and other decrotative elements of the scene.
  • New Spell: “Swarm”, summons 5-8 pixies that surround your character, each turn a pixie will break off and attack a target if one is found
  • New Spell: “Icicle”, launch a stream of ice shards at a target, frozen targets receive double damage
  • Youtube let’s play previews

Minor Changes

  • Vault is now always present in town
  • Ivan (Yvano) now inhabits the vault
  • The Spellbook now auto open and moves a run into your shortcut bar (if there is space) when you learn a new spell at the spell tree in town.
  • Town now has visual feedback when you mouse over a structure
  • The town ring menu no longer comes up if there is only one possible action in the menu
  • Removed the “Move” functionality from all town ring menus since it’s no longer appropriate for the new fixed town (as was never implemented anyway)
  • Followers are now given a ranged and a melee weapon
  • Followers will no longer attack Blobs with the bow or chakram, doing so usually resulted in large amounts blobs everywhere and made the follower generally look stupid and make the battle very hard for the player. Note that secondary chakram bounces off blobs can still occur.
  • Followers will now always do melee weapon attacks if the option is available instead of firing any ranged weapon they might have at the enemy standing next to them which is way not as effective as a melee attack
  • The runtime now fully supports armor that visually changes the skin of your player between light, medium, and heavy looks when that armor is equipped or removed … as the medium and light chest armor pieces are created we will trigger new character looks when equipped

Art

  • Human Male and Female Avatar medium and heavy armor skins created/animated
  • Female Avatar walk adjust to have a little more flow and pep!
  • Guild Wizard left foot shadow fixed (affected Magic01 and the Magic01 Start, Loop, and End animations)
  • Hosperak z-sorting claw issue fixed
  • Gryphon die animation adjusted to have more pop!
  • Fixed human female hand right closed image to be grayscale and named properly (without a trailing space)
  • New town travel gate art without the stone base

Framework

  • Fixed bow missile not being offset properly from player when firing it
  • Missile skills can now specify an origin point for the missile to be 1) As Is, 2) User Center, and 3) User Missile Point
  • Added offset for Icicle missile
  • New art for Icicle missile that has a blur effect on the tail end of the ice shard
  • Missile.FireFlag is no longer a set of bit flags and is now just an enum called OriginPoint
  • Screenshots are now all encoded as jpgs at 94% quality
  • Added offset to portrait settings for display in dual window tabs
  • Added warning log when combat target cannot resolve it’s target actor (which is valid, just probably want to know during development to help point out potential areas that might cause other issues)
  • Fixed combat target so that the target actor id is always assigned … even if the map and coord are invalid because the actor isn’t in the world. In general such a combat target would be invalid, but we’re a little sloppy with them in town which doesn’t’ do combat, but still wants to use systems that are based in tiled maps like rope effects (need to refactor the rope system one day to make this actually better).
  • Filled out logic for Icicle
  • Added Icicle rune item and art for it
  • Added Icicle missile art, prefabs, on fire, and on hit sound effects
  • Updated Ice magic family and the Spell tree UI to include the new Icicle spell
  • Missile skills can now launch more than one missile with a delay between each missile
  • Missile skills can now optionally split up the damage among multiple missiles fired
  • CombatTarget no longer holds a reference to the target actor, instead the target actor id is stored and we look up the reference when we need it
  • Cleaned up the CombatTarget member visibility, which are now all private with read only accessors
  • Added Actor.HasModifier()
  • Missiles can no longer retarget during flight since that case doesn’t happen anymore
  • Added extension methods List<T>.Last() and List<T>.First()
  • ModifierCollection.GetModifier() can now accept an invalid actor id, which means that it’s not important to match the source actor id in that case (prototype match is still required)
  • Fixed not being able to manipulate the shortcut bar items when the SpellbookUI was up
  • Fixed spellbook runes for new spells cutting through the book UI when they animate into position on the shortcut bar via new function BookPage.GetSafeForegroundZ()
  • Fixed followers not switching weapons when destroying a barrel … to do so I moved the init flags that does weapon switching into ActionSkill initialization so it will apply for all code paths that generate action skills.
  • Small cleanup to some AI skill selection logic to make it easier to deal with high priority skill options
  • Fixed clipping on the paper portion of all vertical scroll UIs
  • Fixed color and scroll positioning on the attributes UI prefab
  • Added option to skill prototype to “avoid targets that replicate”
  • Added reference of replicate skill to combat manager
  • Skill.CanTarget() now understands how to avoid targets with replicate skills
  • Added AI.HasConditionalSkill() as a way to check to see if a target can possibly replciate when attacked
  • Added loot tables for follower melee and ranged weapons so we’re certain they get one of each
  • Added extension method List<T>.SelectRandomElement()
  • Fixed the ring/home menus that I broke earlier when adding the bypass logic
  • Added explicit bool for menus that allow the bypass ui logic to occur in all context menus, set only for the town ring menus currently
  • Put back the assignment of the context variable to the way it was before the logic was added to bypass single item menus … it was blowing away contexts it should have not been and menus were appearing at the wrong location
  • Added a way to execute a menu item with an explicit context passed as a parameter instead of trying to setup the state of the parent menu with the context because the menu has not really been opened and never will be if it is bypassed
  • Intro gateway now has effects that match the other travel gateways
  • Fixed Z sorting on travel gate in town
  • Set all areas in town as not revealed all the time
  • Added connector for Vault to Inn in town
  • Changed over all town objects to use the new art
  • Removed unused old test art and objects for town
  • Added option for PackedSpriteEx to do nothing when FadableSetAlpha() calls come in
  • Opening the spellbook now auto closes the spell upgrade and spell tree UIs, the spellbook code will re-open the spell tree UI when the book is closed if the book UI auto closed it when the book opened.
  • Tweak text on “Save & Quit” message box button to match the menu option
  • Added UIZLayers … this static class will slowly collect the Z layers of UIs that it’s helpful to see the Z values of other UIs in relation to each other
  • Tweaked spell point allocation so it comes on slower and gives out enough points to cover 9 spells fully at level 30
  • Fixed swarm not being summoned at the right level … it was incorrectly using the rank of the skill user (player), but instead it should have been using the rank of the skill owner (rune) which support has now been added for
  • Added support to SummonSkill for summoned actors to get their rank from the UserWithBonuses, OwnerBase, and OwnerWithBonuses
  • All vertical scroll elements are now unclipped when the scroll is fully unrolled
  • SwarmSummonSkill is now a subclass of SummonSkill
  • Added TeamSet
  • Added AllTeams prefab and set in combat manager, this is incase one day we need to make teams re-assignable and can resolve team prefab reference Transfer() logic
  • Moved logic that grants party experience from Follower to Actor so that the Swarm actor and any actor that is ultimately owned by the player will give proper party experience where necessary
  • Removed TeamPrefabOverride from ActorSpec since it is unused
  • SummonSkill now has the ability to data drive which inventory to use for the tracking inventory, the swarm summon skill places swarms in the “summonfollow” inventory where other summon spells use the standard “summon” inventory only
  • Swarm tooltips now work
  • SwarmSummonSkill now has an instance of the SwarmAttackSkill inside it for purposes of tooltips
  • Put reference for “Target Property Icon.prefab” in the PropertyDefinitionManager for explicit use when displaying the number of pixies in a tooltip for swarm … the number of pixes does not come from a property so we add the icon manually just to make it look pretty
  • Safeguard against crash that can occur if a prefab has a GameObjectPoolTag on it
  • Protect against double completing action (Enemy melee attacks a barrel, which explodes and kills the enemy)
  • Added debug field to TurnAction which is the string name of the last actor that was assigned to it, this helps troubleshot double destroy actions
  • Added IsDestroyed() check in ActionSkill after doSkillLogic() before completing the action if it was not in the running state
  • Fixed swarm crash because boid prefab was saved from a running instance, which had a GameObjectPoolTag on it with a null pool … those components are not supposed to be saved in prefabs
  • Added SwarmSummonSkill and SwarmAttackSkill prefabs, classes, prototypes etc
  • Added new inventory “SummonFollow”, actors put into this inventory follow the container from map to map (like followers)
  • Added a new action priority for swarm
  • Actors with AI are now considered for giving action points
  • Added Swarm class as a subclass of AI
  • Added AI.MirrorContainerCoord … when true the actor with the AI will always stay in the same map coord that their container is in
  • Added visibility hack for Swarm so it is always fully visible
  • Moved well known inventory prototypes from ActorManager to InventoryManager
  • Added Combat.TargetableBySkills (false for swarm parents)
  • Chakram, Throw, Meteor are all now subclass of MissileSkill
  • MissileSkill now has some data driven options that govern if the action should be completed at the final target and if the missile should be auto destroyed when reaching the destination (false for Chakram and SwarmAttack)
  • Skill.DoCombat() now takes a CombatTarget param instead of an actor, also removed the source missile parameter
  • Reworked the Meteor skill logic so that the source missile in DoCombat is not needed and instead the coord of the target parameter is used
  • Removed redundant action id from Meteor skill logic
  • Cleaned up Missile so the source action is always missile skill, and removed the missile destroy, action complete, and do combat logic from the class and put it in a callback to the source MissileSkill.OnMissileReachedTarget()
  • MissileSettings.SoundOnCreate is now called SoundOnFire since it happens when the missile is fired, which is different than when it might have been created (swarm)
  • Virtualized the fire logic of MissileSkill into a new protected method called “fireMissile”
  • Added GameObject.DistanceTo( GameObject other )
  • Advance storyline hotkey is now Control+V
  • Added hot key to summon a random enemy (Control+Y)
  • Added bare bones IcicleSkill and prototype (not functional)
  • Reworked all nodes in the spell tree UI so they flow top to bottom, and added the new Swarm spell
  • “Quit & Save” is now “Save & Quit”
  • Fixed health potions not properly stacking when buying them using right click
  • Fixed a case in the vendor buy logic that would not bring up the stack split UI where it was required for the purchase such as when the player had 4 potions, but was trying to buy a stack of 2 potions … that would put the player over the limit of 5 total and before would just fail, but now it brings up the stack split UI so you can buy at least 1 potion.
  • Avatar.Skin is now Armor.Skin
  • Added equipped skin field in Armor, this will be set for chest armor so it changes the visual look of the wearer
  • Added Wardrobe.SetArmorSkin()
  • SpineController now re-initializes the slot colors after a skin change if needed
  • Animation preview utility now loads skin UI dynamically from the skins that are actually found in the spine data
  • Wardrobe.Skin is now Avatar.Skin, and an explicit skin can now be assigned to an avatar via the new field ExplicitSkin
  • SpineController now respects Avatar.ExplicitSkin upon initialization
  • SpineColors have a new field “Skin Restricted”, when set … the slot is only considered valid for coloring if the slot name contains the current skin name somewhere in it … this allows us to make a single slot that is colored in some skins and not in others which is needed for the human and npc spine data because of how Aden setup the nodes.
  • Added skin support to animation previewer
  • Exported all human animations
  • Added blank images to spine nodes in the male hierarchy for skins that needed it … an image must be present in all skins for the runtime skin switching to work
  • Control+K will now bring up a message box to take your own life, this will allow player to become unstuck if they get stuck and at least do the dungeon over again
  • Sped up UI control transitions
  • Regenerated town dialog because they didn’t have any dialog components on them, not sure how this happened
  • Added ability for prefab sets to ignore all assets with “deprecated” in their name
  • Fixed crash in AreaState that was sending a quest event for the area being revealed when loading from save files … the even is now only send once when the area is first truly revealed and uses transitions
  • Cleaned up name for “transition status” in area state to prevent confusion
  • Dialog update that allows for Ivan to be in Town
  • Formally breaking backwards compatibility with existing alpha save games
  • Tweaked message that comes up when save games cannot be loaded to be more friendly and encourage the player to start a new game
  • LocalizedText is no longer an ArchivePrefabComponent and therefore cannot be referenced by prefab key in an archive
  • Added SavedLocalizedText, which can be referenced by prefab key in an archive and contains a link to localized text, this is how we save localized text in save game files that needs to be selected for random monster names, random quest descriptions, etc
  • Added AutoSavedLocalizedTextSet
  • Changed all references for localized text and sets that use random selection and need saving to use SavedLocalizedText and AutoSavedLocalizedTextSet. This was really just Champion names, Champion Titles, Quest Descriptions, and Level Names
  • Removed unnecessary flags in ArchiveComponent that indicate whether the component is saved or not … it was only used for localized text, and that is now better formalized with SavedLocalizedText
  • Fixed crash recently introduced when loading Dungeon levels from the Title screen because the WorldMap was trying to access game mode managers that did not exist … these singleton classes now have sanity checking on their references at every step.
  • Followers no longer select random names for now