October Update / Tower Voting

Greetings Wizards,

In preparation for the Rogue Wizards alpha we’ve spent most of October getting some of those core services in the game that are needed for a public test like crash reporting, in game feedback, and the uploading of save games and screenshots to our bug tracking server.  Later this month we’ll start letting the first group of players try out the early alpha version and will continue to let more and more people play in batches during the months ahead.

We’ve also got some concept for the backer Wizard Tower to vote on.  Head over to the forum post to vote for your favorite version of the tower.


We also wanted to give you a sneak peak of the Cavern environment we’ve been building, we’re not quite done with it yet but are liking how different it feels from the other environments already.


Cavern Environment Work in Progress

Much time was spent in October getting the first Rift of Fire looking special with the boss “Gaderian” fully animated walking around his arena. Gaderian can only do basic melee attack for now but we’ll really be pushing on his boss battle and powers in a few months.


Council Member Guderian in the Rift of Fire

Here’s the development highlights and details from the past month. Want to talk about these changes or other aspects of the game, then visit us in the online forums.

Major Features and Changes:
– Crash reporting now working with screenshots, save game files and logs on all platforms
– Hooked up Unity analytics and some simple events in preparation for alpha
– Council member boss “elemental rift” levels now have a swirling background effect present at all times
– Blink now has a much larger range, but will only take the player to previously known locations
– Cosmic rift background now scales tiles and alphas the actors during the reveal/hide effect
– Gaderian Boss is now colored and functional in his boss arena. He only has melee attacks still tho.
– Guild wizard bosses now have a death ceremony with dialog and effects
– Counter damage is now visualized with in world text and only occurs with close range melee damage
– The lance now gives up to three free forward attacks when you move
– Items now sell for even less gold to merchants
– Champions now have more health
– Setup proper music for Cavern environment
– Set unique music for Rift of Fire

– Guild Wizard bosses animated
– Experimental work on volcano background

Code and Framework:
– Reworked the item compare summary UI to just show iconic colored better or worse arrows instead of damage/defense delta numbers
– After reading new quest dialog at the tavern, the tavern interact UI is automatically opened.
– The Rift of Fire quest can now actually be completed
– You get booty after killing Gaderian as well as the 3rd journal scroll
– Color sets have been moved from LevelSpec to LevelChain prefabs
– Deleted unnecessary experimental environment in Assets/Environment/Themes/Lava
– QuestKillPrototype now has a BossPrefab to use for an explicit boss, if null a normal enemy will be turned into a champion
– Created level framework for all 6 boss rifts
– Set all necessary level and quest prototype stuff for all 6 boss rifts to actually work with just placeholder normal enemies
– Added “Vortex Color” to the color sets … the boss rifts are colored using that color
– Fixed crash in some Usable components that need to cache component values via Awake() rather than Start() in the case they are accessed before they become active in the scene and Start() is called
– Added 10 location names for cavern quests
– Tweaked level up particle texture
– The tavern UI now reads “Merrol’s” tavern instead of the old Styssa
– Blackout zones around gateways now also prevent deco population as they already did with enemy population
– Added a few color sets for the cavern environment
– Increased the level required for access all elemental story dungeons
– Reworked the storyline logic so that only one story state will advance at a time, and if the player currently fulfills a prerequisite for a later state, it will not be activated until the states before it have been completed
– Increased max value for attribute points available property incase players horde them
– Followers are ignored by taps/clicks when they are part of your party, but they are still considered for mouse over events so they can be seen in the targeting/combat display
– Added sanity check to cell update and removed redundant call to SetActive() to try and catch a hidden cell that is active bug
– Sized hud modifier icon for experience boost
– Thiefling can now only steal from players since NPCs have no logic to pickup an item they lost and re-equip it
– Fixed knockback not working from a melee skill (golems) if no damage was done … now knockback tries to occur as long as the target did not die and did not block
– The lance weapon now gives up to 3 extra attacks during forward movement at any or all of the 3 tiles in front of the player instead of just the 1 tile that was straight ahead
– Increased gold multipliers for item qualities
– Slightly tuned affix gold values
– Counter damage is now visualized with in world text
– Counter damage now plays a unique damage sound effect when damage occurs
– Counter damage now only occurs when taking melee damage at close range
– Fixed color of enchanted items so it’s orange again
– Enchantment shrines can now enchant non-magic items (making them magic, yay!)
– Changed how actor tooltip delays are implemented, inventory prototypes can now opt-in for the delay with a checkbox so that we have a delay only for the general, storage, and vendor inventories … all other actor tooltips are fast with no delay.
– Ivan (the first follower encountered) now always has a magic Chakram
– You can no longer open the front door of the Wayside Inn since it leads to nowhere, it plays a locked sound when you click on it
– Actor tooltips now delay 0.5 seconds
– Improved the cutaway logic for all wall sets by running the algorithm that makes the super tall cave walls cut away but with settings appropriate for other shorter wall art
– Increased text size on journal scrolls- Added locked door logic and prefabs
– Fixed the sizing on the gateway in the wayside inn that takes you to the first dungeon
– Fixed discovery ceremony trying to delete their actors when complete
– Fixed ceremony actors not properly being killed when the ceremony was complete, they are now killed using a “destroy immediately” flag on the Actor.OnDie() so that no animations need to be played etc.
– ActionCeremony can now optionally kill the owner of the ceremony when it’s complete
– Added ChangeHealthFlags to disable sound on die and indicate an explicit Kill()
– CombatBoss() now allows the health to go below for only Kill() calls that are come with a player parameter
– Moved DeviceRule enum from CrashReporter to AppServices and called it AppRule … also move the static TestAppRule() here too
– AnalyticsManager now uses an AppRule to determine whether the system is enabled for the player only or for the player & editor builds
– Fixed analytics manager sending events to Unity when in the editor
– Renamed a couple app service singletons to have a prefab suffix (it’s removed on system instantiation but this makes the project easier to read)
– Fixed party being teleported to a reposition marker via quest code for ceremonies other than the boss discovery ceremony
– The fire quest is now completed once you pickup the journal scroll #3
– Added Journal entry #3 and actor prefab for it
– QuestKillPrototype now has a bool that says whether the quest is completed when the boss is killed (off for fire quest)
– Tweaked a little bit of the Dungeon_Fire dialog in google apps to not need a chest, or token, and make the end of the battle flow easier
– Gaderian the Guild Wizard of Fire now has a death ceremony
– Hooked up all dialog for the Rift of Fire
– ActionCeremony now instances a Ceremony game object
– Ceremony now contains all the logic to move, zoom, and fade in/out all the cameras for the ceremony
– Ceremony now has a data drive effect to run at the ceremony “peak”
– Added prefab “Discover Actor Ceremony”
– Added prefab “Discover Actor Title Effect”
– Added prefab “Guild Wizard Death Ceremony”
– Added prefab “Guild Wizard Flash Effect”
– Created base class CeremonyEffect for use as effect components in a ceremony
– Created CeremonyFlash effect that allows us to fade the screen to a color and back
– Added sounds for guild wizard die, glyph off, and death ceremony
– Added quest events for ceremony start, peak, and complete
– Added Actor.IsTargetableBySkills
– Added Combat.IsTargetableBySkills
– Added CombatBoss as a subclass of Combat, only players can deliver the death blows to bosses … when a death blow happens, the boss death ceremony is started
– Added support for two part die animations (start and loop)
– The player party is now positioned at a marker after the discover ceremony for a boss (if present)
– Pushed the enable/disable of text typing sounds inside the StartTypeIn() function on sprite text, it can be utilized by setting the optional parameters to enable the audio with a pitch offset
– Quest.Event.Id.BeginPlayFirstTime is now sent for all followers of a player as subjects as well as the player
– Modified the Dungeon_Fire dialog to break up the boss die dialog into BossDying and BossDead
– Added audio event during die animation for glyph going off
– Dialog bubbles that contain identical text as a bubble currently being displayed or already in the queue are ignored
– Fixed dialog bubble type in audio not playing for 2nd dialog bubble in queue after dismissing the first bubble
– Fixed shadow colors on cosmic and overworld portal from gray to black
– Gaderian now has a fire particle effect on his staff
– Added shadows to entrance/exit gateway, cosmic gateways, cosmic braizer, and stone shrine artwork
– Guild wizard of fire is now colored via the engine red’ish colors for his environment
– Refactored how SpineController coloring via a individual slots is done so that we can assign different colors to groups of different slots
– Added slot coloring tags to the guild wizard spine slots
– Increased contrast and brightness on all grayscale guild wizard art layers so teh colors pop easier
– Colored guild wizard crown art
– Set a bunch of avatars and the yeti spine controller to do coloring via skeleton instead of slot, that was not necessary for now
– Cleaned up Hosperak art layers and exported all .pngs for animation
– Fixed burn effect not properly detaching from colorable/lightable interfaces of their parent actor
– Fixed burn effect not returning to game object memory pool
– Safeguarded a GameObjectPool from freeing the object with a different type than it was allocated with and putting and object of an unexpected component type back on the free list, which would then later fail to be allocated when it was expected to be the original component type
– The game now auto-saves every 3 minutes
– Removed the pooled floor/wall images to see how much performance is gained on mobile
– Optimized a bunch of the actor iterating in a cell when we are certain that the contents of the actor list won’t change like to set alphas, interpolate lighting, searches, etc.
– Fixed massive frame rate hit due to improper call to PackedSpriteEx.RegisterWithActorOwner() via message with parameter number mismatch
– Cleaned up the sprite<->actor api a little bit
– Changed all .prefabs that used the Torch component to just always be on without a dynamic component for flame/light to turn off
– Fixed cosmic pillar lit importing the entire set of dungeon sprites due to the flame that was on top of it, ouch!
– Optimized a few places that were allocating memory that didn’t need to be and showed up in the profiler
– Generators can now exclude all deco from map generation
– Fixed Room debug scene to use the fire theme and generate no deco for now
– PingPongTranslator can now wrap instead of just ping pong
– Adjusted elemental fire backdrop clouds to scroll and use the new translator animation settings
– Modified Backdrop component so that scrolling amounts are based on a “reference size map”, this allows us to create scrolling values that look good for say a 50×50 map and then use those values and scroll amounts for maps of any size that use the background so they scroll at the same rate in all cases
– Modified Elemental Fire Backdrop scroll values to something I thought looked cool now that we have a scroll amount standardized between large and small maps
– Added Environment/Themes/_Debug Tools/Room, this is a scene and room generator that just makes an empty square room for testing
– RoomGenerator now places StartMarker actors in the center and the 4 corners of the level
– Start cell logic now generically looks for start marker actors in all cases
– Guild Wizard actor now uses final art and animation (still needs coloring, effects, and more audio)
– Added laughing and death audio Guild Wizard
– Created all Guild Wizard spine objects and exported spine data
– Added blob shadow art for Guild Wizard
– Added ActorSorter static class with a “ByName” sorter
– Animation preview tool now shows all enemies and they are sorted alphabetically
– SpineController can now execute audio events in the animation preview scene
– Fixed flavor idles eventually stopping playing due to a flavor idle of Idle01 being selected (which isn’t a flavor idle)
– Moved particle materials into the Assets/Effects folder and renamed them to be more clear
– Fixed town background not sizing properly, to fix it changed the backdrop to the new billboard component
– Native crashes are now turned into our own custom bug reports with with a “crash” type
– Crash bug reports now include the archive .zip of the OS generated bug dump and logs
– Refactored CrashReporter to treat crashes as just another bug report
– Simplified some function calls when uploading bug reports to hokceyapp
– Removed the now unneeded HockeyAppManager.UploadCrash() since everything is now just a type of bug report
– Guard against infinite recursion if errors occur during the error reporting
– Fixed console being auto displayed for errors, it is now only displayed for exceptions once again
– User bug reports, script exceptions, and native Windows crashes and are now uploaded asynchronously to HockeyApp
– User bug reports and script exceptions now come with savegames and screenshots along with the log file
– When a game cannot be saved or loaded properly, a bug report with the save game is now automatically generated and sent
– CrashReporter now sweeps and archives any windows native crash reports found on disk
– CrashReporter now now generate a few report types. 1) User Bug, Script Exception, Crash, Save Game Error, Load Game Error
– Unified all bug reports to follow a standard format, each report generates a unique directory and we place the description of the issue along with optional screenshot, savegame archive, stacktrace, and error log
– CrashReporter now sends bug reports to HockeyApp using a coroutine one at a time
– Exceptions for previously encountered stack traces are now limited to generating one bug report and only auto display the console once
– Removed the confirmation from a user to upload a borked save game and they no longer have an opportunity to enter text to describe what was going on … we’d just much rather be sure we get all the reports without user intervention
– HockeyApp logs now live within their own /HockeyApp folder
– BugUI is now instanced via prefab
– Temporary files used during game save are now left on the hard drive so that they can be zipped up with any bug reports we receive
– Unified the cleanse of temp save game files which is now done on app startup or after sending a bug report with save games
– The game class now keeps a reference to any failed SameGame that did not successfully complete the save process
– SaveGame now auto deletes any .temp or .moving files that would otherwise interfere with their operation of saving a game
– Added enum extension file with TryParse()
– PrefabSystems now have ” Prefab(Clone)” removed from their game object name
– Save games with slots larger than can be seen in the UI are now automatically deleted
– Removed the buttons to upload a save game from the game selection screen, there is no need to do this with auto save game uploading now
– Removed avatar selection arrows from the character creation screen and shifted the UI down to take up the space
– Screenshots uploaded with bugs are now in jpg format
– Modified the bug, save game, and crash upload reports to have unique callstacks and a title based on the user entered text or app provided description
– Cleaned up the log and attachment naming on custom bug reports, crashes, and save game uploads
– Added a bunch of theoretical native crash report sweeping and sending on Windows platforms, will test and enable this soon … any detected crash directories are zipped up and will be sent to hockeyapp
– Added Zip.cs as an entry point to interact with compressed files and folders
– Uploaded screenshots with bug reports are now taken without the “Uploading” UI obscuring the screenshot view
– Adding zip compression/decompression libraries
– OSX and Windows can now report user bugs, save game uploads, and script exceptions to HockeyApp
– Script exception logs are now stored in “Script Crash Logs” folder
– Modified the HockeyAppIOS code to allow for execution of many parts that are platform independent and can be used on OSX and Windows
– Renamed “Bug UI Input Controller” to “Bug UI Input Blocker”
– BugUI is no longer an input controller, it was not necessary
– HockeyAppIOSEx is now called HockeyAppManager
– Added separate app ids to HockeyAppManager for OSX, Windows, iOS, and Android
– CrashReporter now instances HockeyApp if and only if the current platform and settings allow for it
– Simplified enabling of unity performance crash capturing and hockeyapp manager instantiation with two variables in the CrashReporter that can enables each of these systems 1) Never, 2) In the player only (not in editor), and 3) In the player+editor
– Fixed Logger.cs deleting other files in the same log directory that were not the game logs
– Submit feedback and Submit bug home menu items are now completely hidden if the underlying systems are not supported on the current runtime platform
– Reduced vortex rings in background of rift of fire from 5 to 4
– Adding calculated background width and height for backdrops
– Backdrops now calculate a scroll amount based on any extra world space in X and Y of all child components
– Moved all billboard backdrop logic to a new component called BackdropBillboard
– BackdropVortex sizing logic is now done without being mixed up in billboard logic
– Added debug menu to crash the game in native code
– Build number is now based on a shared .txt file that is common to all code branches
– Modified the AppSerivcesInspector and BuildNumberIncrement() to use the new branch independent counter file
– Upgraded to new version of HockeyApp
– Reworked how the version numbers are calculated so that it’s now “Major.Minor.Maintenance (Build)”
– Pushed build number to appropriate player settings for iOS and Android platforms
– Integrated Unity Performance crash reporting, enabled for non editor builds
– Removed HOTween from message box code
– Fixed invisible actors in maps with alpha transitions for the cell reveal animations
– Reducing scale of lance in world
– Fixed not being able to find a start location
– Added play time to level up analytics
– Fixed crash when advancing to artifact quest
– Material count now saved in level stats (wiped save games as a result)
– Added analytics for player death, level up, advance main storyline, and level stats
– Added level stats class that keeps track of # of materials, # of gold, and # of each item quality that was spawned in a level
– Removed AnalyticsId and all enums inside, instead analytics will just use plain hard coded strings
– Renamed all story states to no longer have preceding numbers so that they sort “in order” in the project view
– Moved all story states into numbered folders so that those folders will sort the states in linear order in the project view
– Renamed all town dialog prefabs that were based on story state names to use the new names without preceding numbers
– AutoPrefabSet<T> can now optionally sort the set 1) By Name, and 2) By Containing Folder Name
– Deleted unused Valley generator prefab and code
– Added checkbox to slug sending analytics to Unity (for development)
– Added TimeSpan extensions class with a ToLogString() extension
– Added GameStats component to keep track of time played, turns taken, steps taken, etc
– Reworked API for destroying level chains to accept a param that says whether we should report analytics for the levels as they are destroyed
– Debug map generation seed fields have been moved from LevelSpec to LevelPrototype
– Quest/Story/Dialog prefab data for PaulM is now called Alpha
– Quest/Story/Dialog prefab data Mallory is now called Beta
– Added fields to the WorldAtlas for level chains that cannot be resolved via other links such as the “Inn Level Chain”
– Added AnalyticsId.cs as a place to collect all possible values for analytics param values together to make it easier to assess used analytics points
– Set story quest analytics id members
– Cleaned up all Guild Wizard layer names, colors, and stray pixels
– Exported all Guild Wizard layers for Aden
– Integrated Unity Analytics
– Added custom analytic event for player level up
ART – Grey color sections for male/female armor sets, Hosperak final edits, Guild Wizards final edits.
– Cells now adjust scale during their reveal animations for the Cosmic Stars and Rift of Fire environments
– Objects now alpha in/out during the reveal animations for backgrounds that want it (Cosmic Stars, Rift of Fire, etc)
– Reveal style for cavern is now color only instead of color & alpha
– Properly implemented all the the functions in base class “Tile” for floors and walls
– Set fire in cosmic fire wall to not accept environment light
– The flame walls of the rift of fire now alpha in sync with the base wall art as they are hidden and revealed by the line of sight system
– Added instructions to anim preview tool
– Changed all cell sets and wall sets to have references to “Floor” and “Wall” components instead of packed sprites
– BackgroundImage now references “Tile” base class components for images instead of sprites
– Did a quick and dirty implementation of all necessary functions for the “Tile” base class in order to implement single sprit floors and walls
– Adding floor and wall components to the elemental fire tile prefabs
– Reorganized all environment floor and wall images and prefabs into a combined “Floors and Walls” folder in each environment (except the Elemental environment which is in progress)
– Created Floor, Wall and base class Tile component classes
– Added Floor or Wall components to all floor or wall tile prefabs
– Removed unused CellSetManager class and unused .prefabs that were using it
– Pets are now present in the animation preview tool
– Created Owl pet actor and all necessary runtime data prefabs
– Owl is now spawnable from the debug menu under “Sky” creatures for now
– Owl can only melee attack at present
– Fixed actor variation prefabs not being properly selected, this made most deco and treasure marker sets resolve to nothing which was making levels super bare!
– Cosmic brazier now has animated colored flame
– Fixed some cosmic marker sets not being able to populate due to wall matches now that the cosmic environment has walls
– Cosmic and Fire rift now have random walls sprinkled out in any open space
– New art for fire rift flame wall that has a cauldron to hold the flame
– Added generator support for “random walls” via Generator.RandomWallDensity field
– Refactored the Generator.GenerateBackground() to have a non-virtual entry point so we can do work after the virtuals run
– Rift of Fire final level is now a hand created area for the boss battle
– Rift of Fire vortex effect is now angled to create a cone or funnel effect
– Generator .prefab files have been moved into /Levels folders for organizational purposes
– Generator prefab fields have been moved form LevelSpec to LevelPrototype so that you can have a different level layout for every level in a level chain
– Fixed prefab id collision with cavern generator
– Added markerset generator for rift of fire boss level and the markerset it uses to create the level
– Cleaned up the Quest creation API using a Quest.Settings structure
– LevelChains can now optionally specify a required quest that the player must have if they go to that level, the quest is auto given to them if they go there to make it easy to test in the editor
– Fixed appearing in invalid locations after arriving through a gateway, the gateway now has alternate locations to try
– Generalized the “gateway is blocked” logic and localized text so it can be used by any quest
– Fixed a theoretical bug where a level chain could be double destroyed if returning from a failed quest, and the quest was set to destroy the level it was tied to upon destruction.
– MapGenerator now has a few fields to enable/disable generation phases like shrines, enemies, etc
– MapGenerator now looks for existing gateway prefabs in the map before assigning them random locations
– MarkerSetGenerator now places the marker set in the world before extending base class implementation, this is so that the base class logic can search for existing actors in the level if needed
– Added support to kill quests to spawn the boss at a specific marker location