Aug 13 2014

XP SCALING

This post’s a fairly abstract look under the hood of one of the changes I’m making to CQ2 for 1.04.

THE PROBLEM

CQ2 is big. Running through all the acts with all the classes is a 20+ hour job, never mind trying different builds and approaches. Getting all the achievements has taken people 200 hours of play time. Our QA consultant estimated recently it would take at least half that time with each new build to make sure everything’s working. It’s no longer possible for me to comprehensively try out changes to the game simply by playing it – not if I want to make a big change that affects lots of stuff and release an update a few days later.

So when I want to mess around with major systems, I do a lot of spreadsheet simulation.

(Mild spoilers ahead.)

The experience scaling in CQ2 has troubled me for a long time. Every XP level takes twice the experience of the previous. Since you normally gain about one XP level per area and enemies tend to show up in two- to three-area blocks, a tough enemy that gives you half an XP level when you first encounter it might only give you 5% ten minutes later. Now, that’s mostly fine! Unlike many games with experience systems, CQ2 has super-tight progression; you can’t wonder into the wrong area. I can fill every area with level-appropriate enemies and adjust their XP accordingly. Until now, that’s what I’ve been doing.

There are just a few minor problems. The first is that XP bonuses and penalties are almost irrelevant, since even halving your XP or doubling it only shifts your final level by one. The second is that the “charge on XP” skills in the game, like Heal and Enslave, become incredibly volatile due to the wild swings in XP between enemies and whenever you level up. You can out-level the enemies nearby with just a few big kills, and then your XP gain drops to practically zero.

So I’m making it better!

Continue reading »

Jul 28 2014

PLAN

The Android build is overrunning a touch. The good news is that we’re down to the last few bugs so it’ll be ready to ship any week now. x_x

Here’s what I’ll be doing once it’s out:

  1. A quick 1.04 patch to the Flash and iOS versions. Not sure what it’ll add on the Flash side yet; maybe I’ll make Scavengers fight back! The iOS version will bring the new content over from 1.01 through 1.03, add rumble support and hopefully fix a long-standing issue with iOS 5 (if I can get my hands on a phone!). I estimate this will come through in mid-August.
  2. Patch 1.1, which will add an endless modeย and a new character class. I’m aiming to finish this by the end of September for Flash, iOS and Android.
  3. The desktop version! Goodness knows I’ve had to push this back far enough, but I’d really like to get the endless mode in before putting this up. I can’t be sure yet how long it’ll take to set up a nice desktop version and hook it into Steam, but given it’s already running okay in Flash, let’s say end of October. This will be for Windows, Mac and Linux.
  4. After that, I’ll work on content updates.ย How far I go with this depends on how well the new versions and updates sell, but, I’m planning to add some more items and a few more character classes at least.

The last year’s been a bit of a slog, to be honest. Getting the iOS and Android versions running and feeling nice took way longer than I expected. Joke’s on me – it’s the first time I’d done any mobile development and I really thought it’d be quick ๐Ÿ™‚

Jun 04 2014

CARDINAL QUEST 2 PATCH 1.02

I’m working away on the Android build. It’s running on my Galaxy S now, the UI issues are mostly cleared up, so it’s getting there! I’m starting work on the API integration – leaderboards and so forth.

Still, I’m trying to stick to the habit of updating the game every two weeks with fixes and at least something new. So I put aside a couple days and made Patch 1.02!

The main changes are another round of improvements to the Thief, a new skill to find in the world, two new weapons, and some overdue fixes to the Act 3 boss fight.

As before, the updated version is now live on Kongregate.

iOS players: sorry for the wait! I can’t push a build to iOS without testing it thoroughly, which with a game like this takes longer than I’ve spent making either 1.01 or 1.02. For now, these little Flash updates and the feedback I get from them are helping to make sure the next iOS update will be a good one.

BUG FIXES

  • Fixed a number of AI issues in Act 3 boss fight where allies and enemies were often failing to attack or cast spells.
  • Fixed bug where game could sometimes lose some progress towards streak achievements when closed and re-opened.
  • Fixed bug where consecrated Stealth/Heavy weapons were losing their weapon type and gaining extra stat points instead.
  • Flash version now ignores first mouse click when regaining focus.
  • Fixed a rare bug that could cause the game to crash between levels.
INTERFACE
  • Main menu now shows achievement rank number.
  • Updated Achievements screen to make room for additional achievements in future.

CLASSES AND SKILLS

  • Added new skill “Smite”.
  • “Sleep” effect updated. Enemies that are asleep can no longer block. Instead, hitting sleeping enemies will wake them up faster.
  • Pugilist “Sweep” skill tweaked to balance changes to sleep effect.
  • Thief: Increased base Defense by 1.
  • Thief perk “Speed Runner”: increased bonus to +3 faith.
  • Thief perk “Bosh”: increased length of daze effect.

ITEMS

  • Added two new Stealth weapons.
  • Moved Stiletto later and rebalanced accordingly.

MORTAL PERILS

  • Fixed bug where Act 3 boss, Shiurath, did not have a ranged damage spell.

 

May 19 2014

CARDINAL QUEST 2 PATCH 1.01

There were a few odd bugs in the launch Flash version so I figured I’d do an update to patch them out. Then I spent the weekend putting in a few new things to make it bit more interesting ๐Ÿ˜€

The main stuff here is that I’ve added two weapon classes (Stealth and Heavy) with unique bonuses, made Polymorph more interesting, and buffed some weak builds for the Fighter, Wizard and Thief.

The updated version is now live on Kongregate.

BUG FIXES

  • Fixed extremely rare bug where levels 1-2, 1-3 or 3-6 could generate without an exit. Saved games blocked by this bug should automatically regenerate the level or skip to the next on load.
  • Fixed broken spell targeting cursor. Cursor now shows viable targets and area-of-effect.
  • Keyboard target cycling (default: tab) no longer targets distant enemies for “Uppercut”, “Headbutt”, “Leech”.
  • Fixed bug where Thief’s “Flash Bomb” could become permanently unusable.
  • Locked cupboards in 1-7 can now be opened from the inside.
  • Fixed bug where Teleport Away could break your progress in 1-7.
  • Pugilist’s dodging can no longer move on top of doors.
  • Magic Mirrors and summons no longer drop gear for Fighter’s “I’ll Make It Fit” perk.
  • Cause of death fixed when burning to death in a fire.

INTERFACE

  • “vs atk/def” baselines in popups now increase as you progress through areas.
  • Added a text notification when you clear an area of enemies.

CLASSES AND SKILLS

  • Polymorph now preserves health percentage, is less likely to return the same monster type, and occasionally generates surprises.
  • Fighter “Intimidate”: increased effect duration.
  • Fighter “Charge” now guarantees a hit on impact.
  • Thief “Dash”: reduced cooldown.
  • Wizard “Leech”: slightly increased damage.
  • Wizard now starts with a hidden base level of Spell Damage, improving Fireball and Ice Blast.

ITEMS

  • Added two special weapon classes with bonuses for specific uses; “Stealth” weapons have a larger sneak attack multiplier, “Heavy” weapons have a larger critical damage multiplier.
  • When you find equipment, it’s now more likely to be a weapon.
  • Added a new midgame Stealth weapon.
  • Added a new consumable item.

 

Jan 02 2014

LOADING

Okay! Devlog update! What the hell am I up to?

I’m currently trying to beat the game into shape so it can go out on iOS. This means doing a lot of iPhone/iPad specific stuff, fixing a lot of bugs and solving some dull technical problems as quickly as possible.

Like loading screens.

The iPhone 4’s kinda slow. Loading times can be a bit long! A bit too long for the screen just going black to be OK.

Adding an animated loading screen over the loading process would have been easy if I had access to threads or coroutines or could manually update the screen, but HaXe+OpenFL doesn’t have do of this because Flash doesn’t do it. Without any of the above I’ve had to restructure all my level initialisation/loading code, slicing it up into tiny tiny bits until every single bit can run inside a few milliseconds. It’s been a bit like breaking a rock up into sand using only a pickaxe.

I’ve also been doing this in a hurry and without tidying as I go! Which means a whole bunch of my code now looks like this:

I am a bad person.

Just another little thing that probably no-one’s gonna notice and which takes longer than it probably should. They all add up. ๐Ÿ˜€

Dec 31 2013

2013 IN REVIEW

This year… I worked on a game.

It’s been pretty rough. In many ways, I feel like I’m still where I was writing my 2012 retrospective a year ago. ย It doesn’t help that since then I’ve been socialising less to save money and working harder to get things done; I’ve been banking stress and isolation for a while now. I’ve developed regular bursts of depression.ย Ste Pickford’s retrospective comic cut pretty close for me in many ways, as I’m sure it has for others.

I’ve withdrawn. I’ve posted less on Twitter and hardly posted here at all. My life’s kinda sucked and I haven’t wanted to share that. Even this post’s difficult to write.

But some good stuff’s happened this year too!

  • I’ve been working with an artist for the past year, John Attea, who’s been doing a great job redoing and expanding the environment artwork. You can see the general bump in quality in this Let’s Play from May.
  • The game got huge. It now has three campaigns, each with new monsters, new environments and an epic bossfight. Even if you never die, I’m pretty sure just seeing the end of this thing is an easy four or five hours of solid gameplay and new content. You definitely won’t have explored all the classes or made a dent in the achievement system by then. I’m super happy with how the game’s come together.
  • It now runs on iPhone and iPad and does it pretty well. ๐Ÿ™‚
  • The game was approved on Greenlight and will, in time, be coming to Steam.

Finally, here’s the big one for me personally. It made most of the rest possible.

Late last year I tried an Indiegogo campaign for CQ2 to fund remaining development – which failed. Things were looking pretty bleak, but early this year Kongregate stepped up and took Cardinal Quest 2 on under their new mobile publishing initiative. They saved CQ2 from being pushed out early and unfinished, so a huge thank you to them! ๐Ÿ™‚

This is another reason I’ve been quiet about some stuff. I’m no longer working by myself, the game has a publisher. I’m frankly happiest leaving business and marketing decisions to them and focusing on the game, so it’s their role to discuss release dates etc. I’m hopeful the forms the game will be available in become clear over the next few months, as our plans come together and – if all goes to plan – the first versions of the game come out.

My resolution for 2014 will be the same as last year’s, I guess: make more games, after I ship this one. I should have a chance to act on that soon enough. Until then, I’ll add a second resolution which I can start work on right now: I’m gonna find ways to heal the situation I’m in and make sure the grind doesn’t pull me back down. ๐Ÿ™‚

Jan 22 2013

BOUNDARIES (REDUX)

Lately I’ve been revisiting tilemap technology.

Way back last February I came up with the approach I’ve been using for most of CQ2’s development: make a handful of little half-size 8×8 tiles, and the system goes and builds everything it needs from those. It was super efficient… but it was kinda inflexible and obscure.

The new system is not efficient.

This is test artwork, stuff that won’t go into the game, but it shows how things work: every single possible tile, up to 47 tiles for a complete set, is laid out separately. Each one is 16x16px but has an 8px bleed area all the way around so it can overlay the tiles around it, like the high walls in the image above.

The system’s really stupid but it gives you total control. Being able to mess with all the tile variants, and having the bleed areas, means it’ll handle all that stuff in last year’s Boundaries post – and more besides – with no code changes, just artwork.

For now, I’ve made the existing forest tiles overlap the tile above.

It’s a start. ๐Ÿ˜€

Jan 17 2013

LOOSE ENDS

It’s amazing how much time in game development can go on everything but game development. I’ve been using the time I’ve had left over the past week or two to sort out loose ends: minor features and persistent, lingering bugs.

The sort of bugs I’m talking about have been in there for months, uncaught, because they’re just so rare and difficult to ferret out. One which came up a lot but which I’d never been able to track down required you to be carrying five consumable items, drop one ย to picking up a new item, drop thatย item to pick up a third item and then go try to pick up the first item again.

Another bug required you to charm a Conjuror, wait for the charmed Conjuror to summon an Elemental (which would also be charmed) and then attack the friendly Elemental with a spell. There is almost no reason you’d ever want to do this. ๐Ÿ™‚

So I’ve been wandering through the codebase, fixing this stuff, while sorting out a few other minor things – like this Paladin class spell, which now has a unique skill type all of its own:

Another loose end tied up is acknowledgement of your chosen difficulty in game with shinier portrait borders:

I think that’s all the little issues out of the way. Over the next two weeks I’ll be working on big changes to Act 1 to get it into as close to a final state as possible. Here goes!

Dec 07 2012

CUSTOMISATION

Something’s been bugging me about Cardinal Quest 2 for a while. Yesterday I fixed it.

Gender and skin tone are now customisable.

The concept I’m trying out is that you can have an explicit choice of gender in character creation without the outcome necessarily having an explicit gender. See, it’s a single player game. You know what your character’s gender is – you picked it! If the sprite itself is ambiguous, that’s fine. The characters don’t need to be strongly coded to one gender or the other… I’m thinking they just need to be different, so you can tell you’ve made a choice and the game’s acknowledged that choice.

So I’ve gone for a mix of character designs where some have strong gender signifiers and some don’t, roughly in line with their culture or needs. Practical Fighters slip on bulky, figure obscuring armour; weapon-despising Pugilists, their physiques a defining part of their identities, prefer to travel light; flashy Wizards wouldn’t be caught dead in a muddy field looking like commoners. And so on.

This is perhaps a bit experimental. Choices in games tend to have obvious consequences, so one which has less obvious consequences than it could have might be interpreted as broken rather than making a point. I think I’m OK with that though.

If you’ve got any comments on the character designs re: gender or skin tone let me know. This is something I really want to get right and I’d appreciate pointers. ๐Ÿ™‚