Dev Log

The crashes are my biggest priority. I’d like to fix permastunned enemies, because I’m going to wager that can keep a battle from finishing.

Is the invincible cultist still killing people in the latest build? The last bug I saw related to that was a typo in one of Zelemir’s skills. If that’s still happening I’ll put it as high priority.

Disappearing APC’s is something I’d like to fix if we can get it to happen consistently, but it’s overall lower on my priority list.

Only partial success:
Dragon fire seems to work fine.
Wrenna’s Ice splash projectile itself now deals critical against worms from weapon bonus properly, but the loss of crit flavour for multi-hit attacks remains, be it Ice shard or AoEs.

Best reproduced on Halls of God King Advanced. First two waves from red spawn are normal revenant and worm. If you kill the revenant by magic and other units, recall them and place Wrenna there just for the worm wave, you’ll only ever see critical numbers from all her attacks including splash from Ice Splash.

If you restart and summon just wrenna, a bit away from the exit so that the worms catch up with the revenant, you’ll suddenly see some criticals on worms, but quite often non-criticals, especially with Sleet and Blizzard - but it can be also reproduced with Ice Shard. If you could make a few custom 1creep waves with small delays/careful spacing, i.e. 1 rev 1 worm 1 rev 1 worm 1 rev, and hit them from front with just ice shard, you’ll see that no crit will happen. If you zap the first rev with magic, you’ll get crit on first worm and normal on second. (I haven’t tried that but I’ll bet a beer on it)

Well, glad we made some progress at least :slight_smile: I’ll check on the splash problems - I could have sworn I saw them working, but maybe I missed something. Thanks again for these great repro cases, it makes it a lot easier to fix the bugs.

Okay, progress! At first I couldn’t repro it at all - she was always doing 3x critical to worms. Then, I found on splash attacks that she wasn’t always doing it. My suspicion is that it’s a side effect of how splash attacks work.

A splash attack sets up a “zone” that enemies can walk into and take damage while it’s active - and it keeps track of who it’s already damaged. Often it just damages one or two enemies when it first hits and then subsequent hits happen on the next few frames when it detects fresh enemies in its radius. What’s likely happening is the weapon’s flavor propagates to the initial hit, but not to the splash effect’s internal flavor list.

That’s my guess at least. Would explain problems with sleet/blizzard/ice splash, but not ice shard - still trying to reproduce that one.

Okey dokey, found the root of the problem. This was a tough one to uncover! So, I had some naive code specifically related to checking for “vs X” type flavors. If the current flavor was irrelevant to the given target, it would throw that flavor away and ignore it for the rest of the function. But, bad pointer logic meant this was also altering the original flavor list on the original object that applied it - ie the splash effect or projectile. So now I make a temporary local list to do the surgery to, so the original remains unchanged.

Here’s what was happening:
If you hit a vanilla revenant with an attack, (say sleet or ice shard), the “vs worm” flavors were removed because they were irrelevant for that vanilla revenant. Then, if that same attack stayed active long enough to hit a worm afterwards, nothing special would happen.

I’ve set up break points that fire reliably when the bug happens, and after the fix they don’t trigger, and I also always see critical damage on worms all the time now. I think we got it!

Change will be in version 1.0.24, and the new build will go up soon.

Here’s a big fix I just found:

Remember how some of you weren’t getting your rewards from endless battles? Turns out, if you restart an endless battle, it doesn’t recognize it as a bonus battle anymore, so you don’t get your rewards when it ends no matter how well you do. I discovered this because users were reporting the “cash out” button was disappearing.

So, this was an easy fix - I was simply forgetting to pass a “isBonusBattle=true” parameter into the reset function so it would remember it was still a bonus battle.

I’m confident that this is the problem, and that’s it’s fixed. I verified that restarting an endless battle would always prevent you from getting the rewards until you quit out of the battle entirely and re-entered from the map. Then, I made the change, and restarted the battle, and got the rewards every time. Then, I rolled the change back, and you couldn’t get them after a restart. Put the change back in, and you could get them after a restart. So I’m sure this is it.

This fix will be in 1.0.24

Great work - the 3xdmg from weapon works just fine for Wrenna with mixed targets now, for area attacks as well as projectiles and combination of both :slight_smile: , my repro case now works without any hitches.

Yay! :slight_smile:

Just noticed that this might cause a weird side effect, not sure if this is just in my local builds, but crystal explosions are now setting enemies on fire, because of the hacky way I set that up. I was too lazy to define an explosion just for the crystals, so I just had the crystal spell hard-coded to “borrow” the explosion defined for the dragon’s fireball splash attack. This of course has fire on it, which was previously ignored but with the latest change it seems that fire now leaks through into crystal explosions.

So… time to undo my hack and just define a real explosion for crystals in the data, like I should have done in the first place.

It’s not just your local builds :slight_smile: . I noticed it too but it was so late in the night and a sidequest battle with Unazra, so I thought it was intentional and didn’t bother to verify it elsewhere and forgot to post here…

Just noticed there’s a bug with “time played.” Fortunately it’s just a display error - save files are tracking play time on the normal game and NG+ separately, so all I had to do was add them together to display in the save slot screen. Previously it was just showing the normal game play time.

This fix will be in the next patch, among a lot of other stuff.

I’m not sure if this is the place to say this or if it has been addressed before, but I think I found a typo in one of the fight chats. In the mission ‘Tunnel Escape’ Slak says “How can I hit these guys when can’t see them?!” It should be “How can I hit these guys when I can’t see them?!”

Stuff like that you can usually file in the “bug reports” forum :slight_smile: But thanks for posting it! I think that’s fixed in the next (unreleased) patch, but I’ll double check to make sure.

Okay, so working on some stuff today. This week’s patch might be a little late this week or bumped to next monday as I had to mess with a few things which I’m a bit nervous about releasing untested.

My main focus right now, besides the usual bugfixing, is getting the kongregate version ready. The reason I’m taking extra time here is I really want to make sure people’s saves get carried over correctly from the old version. Came across a huge bug with that just now, took me quite a bit to fix it. The problem with the browser version is that it has to use flash cookies to save, and those are notoriously… flimsy.

More updates soon! Kind of a slow start to the weak in terms of details, but there’s good progress being made on things.

Okay, so I found the cause of the memory leaks (detailed analysis posted in the “Memory Leak Hunting” topic). This is a big enough deal I’m compiling a package from right now and uploading it immediately.

This will be version 1.0.26

This should fix the memory leak related to summoning/recalling defenders. I’m not saying I’ve fixed ALL the memory leaks, there might still be something else going on, but this should fix the graphics caching problem. Surgery like this has been known to cause crashes and display glitches, though, so I want to run this one through the wringer before a public patch goes out.

Can someone stress-test this for me? It seems okay on my end but I’d like independent verification.

Basically just start any level and summon your entire party (36 characters for maximum stress-test!), then recall them all, lather/rinse/repeat and see how high the memory goes. I’m pretty sure doing this in the previous build would eventually crash it. So far I’ve not been able to get it to spike like it used to, it seems to be okay, but maybe that’s just me.

Packaging/uploading now.

Wheeere is the Kongregate version? :confused: I wanna play it already!

Working on it :slight_smile: Sorry for the delay! I’m testing it today, and if all goes well it might go up tomorrow.

Version 1.0.27 will be uploaded to the test server within the hour. Here’s what’s new:

-Fixed the MEMORY LEAK (probably)
-Fixed bug where you could equip items to non-existant characters
-Dragon fire no longer dodgeable by NG+ worms
-Crystal no longer sets things on fire (bug introduced in last build)
-Clicking on “send next” no longer selects characters placed in the upper-left hand corner
-Changed the color of the “dark smoke” status effect
-Changed “dark” status icon (just in the enemy select panel) to reduce clutter
-Fixed bug with dark status I recently introduced

Also, we have added two new books to the game. This will take a quick explanation:

In marketing the game, it really helps to have a group of established fans on facebook that we can reach out to when needed, and this requires us to get people to “like us” on facebook. Now, I’m not a big fan of facebook and I kind of hate the whole “like” thing, but as developers we simply can’t ignore the facebook audience (we might also put up a facebook-specific version of the demo soon, too).

So, Anthony suggested we put a “like us on facebook” incentive into the game. I was ambivalent about this at first, but then James came up with an idea that I thought was pretty cool, so I agreed with Anthony in the end. Our goals were to:

  1. Encourage people to like us on facebook
  2. Provide an incentive that isn’t total crap
  3. Provide an incentive that doesn’t massively unbalance the game
  4. Don’t FORCE people to like us on facebook just to get the goodie

So, when you load up the game you’ll now see this at the bottom:

Clicking on it brings up this screen:

I imagine a lot of people will click on it at this point, which serves its purpose. But we still wanted to have some fun and mock facebook at the same time, so if you REFUSE to like us on facebook, we will show our appreciation for your privacy and anti-establishment ethos:

No matter what choice you initially make, you can eventually get both books, regardless of whether you choose to “like us” on facebook or not. Depending on the path you take, there’s a few different jokes thrown in along the way :stuck_out_tongue:

So, let’s talk real quick about what these books do. These are mostly just for fun, though they do confer slight advantages for the player.

The “Book of Face” will cause enemies to randomly update their “status” throughout the battle. Every second there’s a 25% chance of an enemy gaining a new emoticon-themed status effect, such as “Happy,” “Sad,” “Bored,” “Existential”, etc. These change the enemy’s speed and damage resistance up and down in various minor ways, but the aggregate effect is slightly in the player’s favor. There’s also a rare chance of an enemy gaining the “TROLL” status temporarily, which makes them nearly invincible for a short time. None of these are ever applied to bosses and/or stationary enemies.

The “Anonymous Book” causes all of your defender’s names to display simply as “Anonymous” in battle, gives each one a +3% chance to dodge, as well as x2 damage VS. enemies with the “TROLL” status.

Update on the Kongregate version:
One of the big challenges in getting the kongregate version ready is ensuring the integrity of the save file. With the downloadable version of the game, the save data is just a text file, however, browser save files are just flash cookies, which are VERY fragile. Not only do modern browsers have all kinds of plugins and things to auto-delete them, there’s a major risk of the developer trashing all of their player’s saves just by updating the game. The first way developers do this is by changing the name of the of the swf file, as that name is tied forever to the flash cookie.

The second way is more complicated. So, let’s say I have some game object, like, “CharacterData” which just stores the data needed to remember a character. It has properties like:
-Name
-Level
-Class
-XP

etc.

Now, if I add some more fields to that same object later in development, I could have some problems when I try to load the old data. This is because I’ve changed the definition of “CharacterData”, so the object in the flash cookie is no longer recognized as a valid “CharacterData” object. If I had been smart, I would have just stored the game’s save data as straight XML in the flash cookie rather than as data objects, but alas, I hadn’t learned my lesson yet, so now I’m stuck with this system until the next game. So, what I’ve been doing these past few days aside from bugfixing is making sure that the game can interpret old legacy save data correctly even though we’ve made substantial updates to most of our data classes. This is why it’s taken longer than usual - I’d rather annoy people by taking too long than enrage thousands of our Kongregate customers simultaneously with the nigh-unforgivable act of trashing their saves.

So, I’m testing Kong stuff today, and will be hitting it harder tomorrow. If I can get you guys to test version 1.0.27 extra hard for me to make sure it doesn’t have any major other bugs that I might have just introduced, that’d be great, and if all goes we can upload the Kong build… Monday? Probably. Sorry bout this :stuck_out_tongue:

Hilarious idea with the books! Finally a game that will reward me for not having an account on FB :slight_smile:

— Begin quote from "larsiusprime"

Now, if I add some more fields to that same object later in development, I could have some problems when I try to load the old data. This is because I’ve changed the definition of “CharacterData”, so the object in the flash cookie is no longer recognized as a valid “CharacterData” object. If I had been smart, I would have just stored the game’s save data as straight XML in the flash cookie rather than as data objects, but alas, I hadn’t learned my lesson yet, so now I’m stuck with this system until the next game. So, what I’ve been doing these past few days aside from bugfixing is making sure that the game can interpret old legacy save data correctly even though we’ve made substantial updates to most of our data classes. This is why it’s taken longer than usual - I’d rather annoy people by taking too long than enrage thousands of our Kongregate customers simultaneously with the nigh-unforgivable act of trashing their saves.

— End quote

I haven’t done any flash development, but wouldn’t it be a lot easier to just write a save file converter for the new version? As in, detect cookie > see it’s from the old version > import data > convert to new scheme (XML) > write new cookie > no more data object hassle!

At least that’s how I’d do it. Except for the XML part. I don’t do XML.

@Sitzlol: That’s a damn fine idea, actually. I’m just generally terrified to the point of outright superstition when it comes to touching the flash cookies :stuck_out_tongue: I’m always afraid I’m going to break something! But I’ll see if I can run some tests and see if I can switch to that system - should avoid a lot of bugs!