Monday, December 12, 2016

[CivVI] Warmongering over the Ages

I've rather enjoyed Civilization VI for the most part. There's a few things here and there that are a little annoying, or just things I have to get used to, but overall I quite like a lot of the more streamlined and changed systems. Districts in particular is fun, because now I'm looking at the terrain and city placement a lot more thinking about the future. Cities become more about planning than they were previously, and even late game you're thinking about it more than just setting a queue of 30 buildings and leaving the city for the rest of the game.

However, there is something that is distinctly unfun. Specifically, Diplomacy and Warmongering.

Defensive Warmongering

In a recent game, America (AI)--my formally declared best friend--started a Surprise War on me in 3000 BC. By 2000 BC I had wiped America off the face of the planet because I mean, really, if I didn't they were just going to backstab me again and again. Now, I turned down them suing for peace because well, backstabbers, so I got a huge warmongering penalty because captured cities/capital. Meh.

Everybody denounced me (or course), and I checked my diplomacy values. I had netted -112 to my reputation due to Warmongering! For a war that America started and I finished. Now the thing to keep in mind is that's not a static value. Those numbers? They represent how far your relationship meter moves per turn. So I was getting +3 per turn because we had open borders, and -112 per turn due to Warmongering.

-74 basically outweighs everything else ever for the rest of time.

All right, everyone hates me, great. Even worse, though, is the fact that number basically compounds over time because it's a per turn value. And that negative tapers off really slowly, regardless of time scale. What this means is that 3500 years later, my civilization still had a -74 Warmongering penalty to all civs, meaning any attempts at diplomacy were useless for the rest of the game. I still got denounced like clockwork every time their previous denunciations expired.

Yeah, okay, wiping somebody else out? That deserves some serious shrift from the other civs. Absolutely. But 3500 years and that's only halfway decayed? I mean, you look at a modern day example, Germany and World War II. They've basically managed to remove a real-world "warmongering" penalty in 80 years--so in Civ terms, given the time period, 80 turns, which in ancient times is 1600 years equivalent, so it's not even "realistic", let alone fun.

The Solution

Basically, the issue at hand is the warmongering penalty needs to decay based on time passed, not turns passed. A war in 2000 BC should have nearly 0 effect on diplomacy in 1500 AD. The Civ team tried to mimic that by reducing warmongering penalties in early history, but that's insufficient in my opinion.

It's also extremely unfun to be attacked and punished for defending myself. Yes, I could've just defended my territory and left America alone, but the issue is that I know the AI is just going to break their promises (again) and declare a surprise war (again) later. If I didn't nip them in the bud, I'd be in for a very rough game. So basically, I'm being punished by the AI for playing their game.

If this is some sort of punishment to get around the fact that the AI is very bad at waging war, so therefore they can't put up a decent fight, so therefore limit the player in some other fashion, well, I dislike it greatly. If it's just a way to get AIs to treat war more seriously, I still think it's extremely lopsided in favour of just shutting down diplomacy in general. Not having diplomacy as an option for 3500 years of game time is, frankly, silly.

I think my proposed tweak would be sufficient to make warmongering something people will still have to weigh--even if they keep the penalties skyhigh, it would take centuries to rebuild them from rock bottom--but this would still allow early wars to be devastating and history-altering without the silliness that is effectively infinite memory.
#GameDesign, #CivVI

Friday, December 2, 2016

Innocence and Game Development

Last weekend I was up in Vancouver hanging with some of my friends and coworkers. Some of these friends I've known literally since high school, and some of us work tightly together to create a game that we're all very passionate about. It's really awesome that I get to hang out with these folks, and I love 'em all to bits. We got together one evening after I had finished (successfully) apartment hunting, and out came the Jackbox Party Pack 3, and specifically, a game called Fakin' It.

The premise of Fakin' It is quite interesting. The game will send questions to everyone's phones, and depending on the type of game, at the buzzer everyone puts up either a number of fingers, raises their hand (or not), or points to another player. For example, a question we got was "How many times did you shower in the past week?" When the buzzer rang, everyone threw up as many fingers as showers they had.

The trick comes in that one player didn't get the question: the faker just got told to try to fit in. Then everyone votes and asks questions to try to figure out as a group which player is the faker. If the group guesses correctly, then the group gets points, otherwise if the faker escapes they get points.

Fun and Games Until Someone Loses...

It was all fun and games until suddenly the question, "Have you ever donated blood?" came up. Now, many of you are probably thinking, that's a pretty innocent question. Most people donate blood unless they can't for some reason. And there's the rub.

You see, in North America, gay/bisexual men cannot donate blood. Specifically, men who've had intercourse with another male in the past year--it used to be since 1977, but was recently relaxed. Also included on the list are intravenous drug use, being HIV positive, or if you've recently gotten a tattoo, for example.

So I'm expected to justify my lowered hand or be outed as the faker (I wasn't, for the record). I could've lied about it, but I'm a terrible liar. Now, for me, the justification was pretty easy: I've been out for nearly 15 years, and the group all knew I was gay. So having another opportunity to complain that my dirty, gay blood wasn't allowed to be donated wasn't that bad. But there was a moment when everyone was looking at me with suspicion because I was an odd person out, thinking, why is his hand down, he must be the faker because most people donate blood. The only people accused in that round were folks with their hands down.

Suddenly the video game variant of "Never have I ever" became very political, regardless of whether we wanted it to be or not. I doubt the developer who added the question to the pile thought about any of that. I mean, many tech companies have the blood bus roll up outside every once in a while and everyone goes down to donate as groups, gathering people up and giving you questioning looks when you say, "I can't." I've been in that precise situation before. But for many, donating blood is an innocent, unquestionably morally good task.

That innocence--likely borne of the privilege of not being in one of the banned groups--allowed the question to slip through the QA and turned our game just a little awkward.


For me, that question wasn't the end of the world. I had my discomfort. My friends got a little uncomfortable because I had to remind them that yes, gay and bisexual men cannot donate blood. We moved on and the rest of the game was a blast. But the incident--this story--was a good reminder to me that what some people perceive as innocent can sometimes be pernicious, and that even simple video games can be political without the game developers realizing it.

My friends will read this and probably be super apologetic--they'd be really upset that they may have hurt me in any way, because they're awesome, empathetic people. To them I'd say don't worry too much about it aside from just using the opportunity to reflect. This is a prime example of privilege making someone blind to another's experiences. Privilege isn't evil and it doesn't make you a bad person. It's just a lens from which we experience our world.

Heck, I make goofs about women from time to time because I'm not a woman and don't have the insight of living as a woman day to day. In a prior age, I think we'd categorize privilege as "innocence". Innocent of how the wider world works and ignorant of the painful experiences of others. The important part of recognizing it is expanding one's empathy to others' situations. Learn and move forward.

For the game developers, I know as a game dev myself I'd be horrified if my game hurt someone. I don't think anyone threw in the question to deliberately make anyone feel bad about themselves.

But when people try to tell me that video games are (or should be!) apolitical, my first reaction is to laugh at them. Even the most minor of decisions and scenarios have identity and circumstances tied to them. From deciding if your femme fatale should be wearing pumps or flats, to how beefy your male hero should be, to how rich is the neighbourhood your GTA character is running around in and the behaviours of various NPCs in said neighbourhood, to asking how often someone showers or donates blood; everything is a comment or consequence of the--sometimes very different--worlds we live in and the lenses in which we view those worlds.

Nobody really can be cognizant of every permutation of those worlds and lenses, and I'm not even necessarily saying don't put certain things in games. I'm just saying that every decision about content and mechanics has consequences and should be deliberate. But also, by incorporating more people from different viewpoints into our craft and becoming more aware ourselves, we can include those points of view into our games and make them more varied, strong, interesting, and empathetic. #GameDesign, #GameDev, #IndieDev

Thursday, November 24, 2016

[WoW] When is an Upgrade not an Upgrade?

Rohan at Blessing of Kings had a good post recently on what happens when you start piling on extra rules onto a system until they start contradicting each other. In his example, the personal loot system--which was introduced to reduce social friction--got subverted by adding trading if you don't need the item anymore, as addons can be used to call others out to hand over their loot to folks who could use the upgrade.

A different example in WoW is the Protection Paladin's Avenger's Shield ability. The base variant of the spell is a multi-target holy damage that chains up to 3 enemies, and interrupts any spellcasts of the initial target. Now, the thing that's not mentioned in the tooltip is that this jump is a "smart" targeting system: it won't target enemies that have been CC'd at the time you cast the ability, which makes it an extremely effective AoE pulling tool for the Paladin.

In the Paladin's artifact weapon, one of the gold traits--Tyr's Enforcer--upgrades the power such that it explodes for damage within 5 yards upon every impact. This is a pretty awesome upgrade in a lot of cases, like extra DPS or snap threat on large groups. But it also suddenly makes Avenger's Shield useless for AoE pulling if you have to use CC. Like on Moroes in Karazahn.

The explosions work at cross purposes with the smart nature of the base ability, and for Moroes specifically I spent a lot of the fight cursing the upgrade because it also is my ranged interrupt. So in the Moroes fight I can't use it as an AoE pull and I can't use it as my ranged interrupt, because if I do, the explosions on impact will clear the CC on the other enemies. Basically, the upgrade rendered the original purposes of my ability moot, and turned it into primarily a DPS ability.

This is an example of adding complexity eventually reducing the situations that a tactic is useful in. Enough rules on the ability, and it makes it such that it's not really an upgrade anymore, but something that just alters the ability entirely, which suddenly makes me want to either have the ability to turn that upgrade on or off, or just be an entirely different ability, since the "upgrade" removed one of my tanking tools.

Then to add insult to injury, it's not smart enough to jump to enemies hit by my Blinding Light since that CC isn't affected by Holy damage, but that's a separate issue.

In Eon Altar, we actually had a slightly different scenario. In one case, an upgrade to an ability increased the range of the damage of the ability, both the minimum and the maximum. For an example, Rank 1 did 14 - 16 damage. Rank 2 did 13 - 18 damage. While the average damage went up, because many enemies at low levels had 14 health, the upgrade actually created situations where you'd sometimes not one-shot those enemies. So it became optimal to wait until you had enough resources to skip directly to Rank 3. To fix it, we just didn't decrease the lower bound, and that made the issue go away entirely.

Which is to say that when an upgrade isn't an actual upgrade and makes the ability worse in some situations, it feels bad as a player. If I, as a player, am performing what should be a direct upgrade--one that I don't really have a choice on, it's literally just direct progression--it should actually be an upgrade, or it should be obvious it's radically altering my ability. But losing tools feels bad, man. 
#WoW, #GameDesign

Monday, October 24, 2016

PAX DEV 2016 Talk: Mobile Enhanced--Designing for Multiple Simultaneous Screens

So I've been away from my blog for a while. We've been super busy with Eon Altar, including PAX West, shipping Episode 2, and I gave a talk at PAX DEV, which was super awesome (and well received).

So while I am still crazy busy (Episode 3's gotta get made!), I'm dropping by to let folks know hey, I have a legit game design talk that I wrote/hosted.

Sorry about the sound quality. I had recorded this with the thanks of OutOfBeta using my Lumia 1020 in a LEGO setup and it didn't pick the sound up super well :( So you'll have to crank the volume.

High Tech Recording Setup
#IndieDev, #EonAltar

Thursday, August 25, 2016

[IndieDev] The Aftermath of Launching Our Game

Okay, so it's been like 2 months since I've done a blog post, and it's not for the lack of wanting so much as the lack of time. But let's talk about the launch of Eon Altar, and where we're at today.

Launch and Beyond

Launch itself went relatively smoothly, if a little disappointingly quietly.

Only one major game breaking bug at launch that I had to hunt down, which actually only repro'd on specific devices on Android 4.4. It was bizarre to say the least, and I ended up buying two phones via Craigslist, and our Studio Manager drove down from Vancouver, BC to Seattle, WA to get a device that could repro the issue into my hands. It would've cost $300 to ship, apparently, so he and his fiancé made a day trip out of it. But I managed to use that to get a fix within 2 days of the bug being reported, so our customers really appreciated the responsiveness especially since the fix got pushed out on a Sunday evening. Instead of going to Seattle Pride I got to stay in and debug. Fun times, that. But such is the life of a developer.

We were in the Top Sellers for Newly Released Games on Steam for over a week, though, and even made #1 in the Popular New Releases for a brief period of time, which was pretty cool. Sadly we haven't been able to keep that many eyeballs on the game since, which is a little worrying. However, hopefully with PAX West upcoming we'll be able to remedy that a bit!

Taken August 23rd, 2016
The game itself has been absolutely gangbusters as far as Steam reviews go. We're at 92% lifetime, and 95% recent. At one point we were at 100% recent, but someone left a negative review because our game won't work on a publicly-run network that blocks UDP and P2P network traffic, which I mean, yeah, that sucks and is true, but feels bad that there's pretty close to nothing I can do about it. That said, given at launch we started at 88% lifetime from Early Access, our review score going up is frankly massive success as far as I'm concerned.

Post-Launch Development and Marketing

We've managed to put out an update at least once a month since a few months before launch, and even the past couple months as well post-launch, which is great for players. Content fixes and bug squashing continue apace!

But even more, we've been extremely hard at work on Episode 2: Whispers in the Catacombs. Our teaser trailer for that launched just a few hours ago, which you can see above. We're hard at work on a new Combat Arena of sorts for Episode 2, which is less an arena and more just a standalone scenario that takes shades of the Arkham Horror board game mechanically. We've done plenty of streaming every Thursday at 1 PM PST showing off us in active development, including design work, programming, and testing. And of course, can't forget the next part of the campaign, either!

Add to that what we call "dev confessionals", which is basically a micro-vlog of sorts where we talk about what we did that week and what we're excited about. These have proven moderately popular, though we missed last week's because PAX madness upcoming.

PAX West 2016

Speaking of PAX, once again we'll have a booth, and it's going to be our biggest booth yet. This is it, we've launched, we're well on our way to delivering our first piece of DLC, so we'll have lots to show (including a working Combat Arena from Episode 2!), and lots of folks at the booth to show off the game and answer questions (and give out sweet buttons). If you're going to PAX West this year, check us out on the 6th floor of the Expo Hall, booth 6909.

I'll be doing a panel at PAX Dev as well: "Mobile Enhanced: Designing for Multiple Simultaneous Screens". The talk is basically what it says on the tin, but I'm super excited. Our Lead Designer/Art guy also made me a cool social media poster, so come check that out if you're interested. I'm hoping to have it recorded, but logistics have eluded me so far.

We'll also have some folks on another panel during the convention proper, "AAA to Indie; The Struggle is Real" which will be pretty awesome. Sadly I'll be at the booth so I won't get to watch it, but it should be great, so check that out too!

Full Steam Ahead

Last year PAX West was absolutely exhausting, and frankly, I expect this one will be as well. We're going to miss the boat on an August update to the live game because PAX and marketing is pretty much all-encompassing as far as developer time goes right now. The perils of a tiny team, unfortunately.

Immediately after we're back to the grindstone to get Episode 2 done and dusted and out the door, so no rest for the wicked. I'll fully admit I'm going to need a vacation, and probably soon. My blogging will likely also continue to take a backseat until I have a few more hours in the day to myself. We're definitely crunching, and crunching hard, but there's little we can do about that. We don't have infinite money to take the extra time we'd like.

But at the same time, I'm extremely excited that we're doing as well as we are, and I can only hope that we get the eyeballs we need so we can continue doing this post Season 1, because I think we have something pretty amazing here, and based on our reviews, the folks who've played it think so too. #IndieDev, #EonAltar

Wednesday, July 6, 2016

5 Beginner Pokémon GO Tips

Okay, so you're playing Pokémon GO, and the game just throws you into the deep end of the pool with almost no explanations, and the UI is basically a whole lot of symbols that could mean just about anything. What do?

I've played about 4 hours of the game today now that it's out in the US, and here's some info I've gleaned from playing that isn't obvious. At all. But should help folks get started.

1. Random Encounters are Based on Trainer Level

Like actual Pokémon games, to find an encounter you'll want to go searching for those blasts of leaves and grass, but note that if the Pokémon is too high level for you, nothing will appear. At Trainer Level 1, you're pretty much relegated to Pidgey and Rattata, and there's not actually that many out there. At least, not in Downtown Seattle. You'll more likely get to Level 3ish using mostly Pokéstops if you're in a dense urban core. The higher your Trainer level, the more varieties of Pokémon you will encounter.

If you see a Pokémon on your screen, get it inside your trainer's circle, and then tap it to engage.

2. Capture By Flicking Your Pokéball

Once in "combat", you actually capture the Pokémon by pressing the Pokéball at the bottom of the screen and flicking it towards the critter. I've found lining the creature up near the bottom of your screen helps with the capture. It's hard to judge because there's no real angle you can view to get a good notion of depth.

When you press and hold the pokéball, you'll see a coloured circle that slowly shrinks. The colour indicates the difficulty of the capture--green is easy, yellow is mid-level, red is difficult. Godspeed to those who are red/green colourblind. If you time your capture for when the circle is at its largest, you seem to get a "Nice!" capture bonus more often.

Zubat in my room, the green concentric circle shrinks then reappears. Time your throw to start when the circle is at its largest

3. Pokéstops Give You Stuff

Pokéstops, like portals in Ingress, are generally based on popular locations or pieces of art. A fancy manhole cover; a local park bench with a plaque; a church bell. Those sorts of things. They tend to be dense in urban areas, and apparently suburban areas they're few and far between, leaving you with few options except to purchase pokéballs and other items with cold hard cash.

For the uninitiated, Pokéstops look like blue squares from afar, and when you're close enough to interact with one, it unfurls into a pokéball shape.

Blue squares are Pokéstops. The circle to the lower right if my character is a Pokéstop I can interact with.

4. Capture Everything

Even if you already have a specific Pokémon, capturing more will net you more Trainer XP, more Stardust (for upgrading Pokémon), and more Candies (for upgrading and for evolving). If you have like 30 Zubat, keep the highest CP (Combat Point) version, and then Transfer (using the button at the very bottom of the Pokémon's status screen) the rest to Professor Willow. You'll get an extra Candy for each one you transfer.

5. Pokémon Availability is Location and Time of Day

The inner core of Seattle seems to have a lot of Poison types. Down by the beach/park on the piers I found more variety, including grass, fire, and flying types. Zubat started appearing after 7PM local time, and I didn't see a Ghastly until about 10 PM local time.

Basically, Pokémon have similar "habits" to real life animals in terms of when and where they are active.

This Nidoran really wanted some Taco Bell.


Tuesday, June 14, 2016

[IndieDev] My Game Eon Altar Gets a Release Date!

So for folks who've been following my blog, I've been doing the indie dev thing for nearly 2 years now--will be 2 years as of July 1st. Eon Altar has been my baby, and what a baby it's been! But eventually children leave the nest, and we'll be pushing Eon Altar into the light, blinking and disoriented, Thursday, June 23rd.

Our announcement is here, but I wanted to talk a little about our decision making process on my blog. Some behind the scenes, if you will.

Early Access

First of all, let's chat Early Access. We've been in Early Access since August 29th, 2015. Just under 10 months. That's a decent chunk of time, but we've also had to contend with folks having other full time jobs, contract work, and losing some employees because indie and keeping the lights on is hard.

But that being said, I think slowing down a bit and getting a lot of feedback and bake time has been amazing for the game. We were nowhere near ready for release on our original launch trajectory, which would've been around May of 2015. We needed that extra year. Turns out making an RPG is hard! Who knew?

But our Early Access response has been amazing. Not as many folks as we may have hoped, but the folks who helped us out were absolutely fantastic, going the extra mile to help us narrow down bug repros, get us logs, and be patient with some of our quirks and issues. Being candid about the state of the game, what's working, and what wasn't also helped. Without their feedback, our game would be in a much worse state today.

Which led to the discussion of somehow rewarding our Early Access customers. Luke--our financial dude/lore guy/streamer/tester/other things because I'm bad at titles and indie is a lot of hats--had this really cool idea. We ran with it, of course.

Intense Tactical Discussion


Early Access was priced extremely cheap because for us, getting our name and game out there was more important at the time than trying to wring dollars out of our (relatively few) customers. $4.99 USD is a steal for what we delivered in Early Access--Combat Arena plus about 4 hours of quality co-op RPG game play. We've had a number of reviews mention price seemed really low for what we delivered.

But for our Early Access customers we decided that we'd give them the entirety of Season 1 (Episodes 1-3) for their $4.99 USD they already gave us. It was a great way to reward them for helping us and supporting us. Folks who come in to buy Season 1 now will pay $14.99 USD (or $6.99 USD per episode if you want piecemeal).

Still damn cheap given the entirety of Season 1 runs about 12 - 15 hours of game play, plus Combat Arenas which are technically endless (a massive hit at Dreamhack and PAX East), and you can play with up to 4 players at the same time on a single copy. But we're also an unknown company, so we're cognizant that if we price ourselves too high, people won't want to take the risk. On the other hand, if we don't make money soon, continuing development becomes an issue.


We're polished enough that I'm confident in our game, even if we have a few issues remaining. Pro-tip, you'll never actually hit zero bugs in software development. Ever. Seriously.

I had 120 bugs on my plate as of two months ago, half of those blockers or criticals (versus major or minor). I've bounced between 30 and 45 I think six times now over the past three weeks? Mind you, I'm down to a total of 8 criticals and 0 blockers, so the quality is still going up; many of the bugs being logged now are major at worst, which for our definitions is not great, but shippable.

My point being is we could be here forever fixing bugs. Perfection is unattainable, despite the fact that I really, really, really, really want it to be perfect. Like the child analogy earlier, eventually you need to let them out into the daylight and hope you gave them the skills and qualities to survive and thrive.

That's not to say we won't continue releasing fixes and patches. The reality of software development--especially games--is that you're never really done. Look at Stardew Valley, continuing to make major additions and fixes after ship. But the base game is awesome and still totally worth the $15 I paid for it. But again, need to eat and keep the lights on, and our build is in fact very stable, so to release we go.


A few months back we pegged June 1st, 2016 as our release date. Thankfully we were bright enough (this time) not to promise anything too early, so when we realized we had a few more things to do, and timing-wise it was kind of crappy, so we could push the date. E3 of course is a huge blackout period. Other timings I can't discuss also nudged the date here or there, until we settled on June 23rd. Unfortunately, it's Luke's anniversary with his fiancé, but turns out our tertiary date would've been his birthday, so he couldn't win either way.

Summer in general also keeps us out of harm's way of major blockbusters, at the risk of yeah, it's summer. But being a local co-op game, maybe being summer will work for us as people want to hang out? I'm not so certain of my reasoning there.

Ideally we'll have Episode 2 out soonish after. I won't commit to a timing,but I will say if it's like 6 months after Episode 1, I will be an extremely sad panda.

Excitement and Terror

I am beyond excited for our release. Eon Altar has been my life basically for 2 years. My dream job of making a game, an RPG, and making a game that plays like no other video game that exists today. We're pushing game play, UI, and form factor boundaries that very few developers have even tried, let alone shipped.

And yeah, I've had my doubts along the way; I've had total imposter syndrome moments. Other times I've had moments where I'm like, "this is crazy, it'll never fly." But watching people play our game on Twitch, on YouTube, at PAX, Dreamhack, Casual Connect, and even in person at play tests in my apartment, I know, empirically, that we have something unique and awesome.

I'm also terrified. What if we hit it big and something horrible happens and things break? What if we never get the eyeballs we need and we fade into obscurity--which, to be brutally honest, is the more likely of the two scenarios because marketing budget and indie dev. What if, despite all evidence so far to the contrary, people just don't get it? What if people don't read my troubleshooting instructions and I just drown in debugging people's networks over forum post?

Putting the game out there to be judged on its own merits as a shipped product is a lot of pressure. And when I look at it from an analytical perspective, I'm confident we're ready for this. But that visceral, emotional reaction is still there.

9 days.#IndieDev, #EonAltar

Friday, May 27, 2016

[IndieDev] Eon Altar's Combat Loop and Power Designs

Welcome to Part 2 of my posts on Eon Altar's combat design. You can find Part 1 here. Today I'll be talking about the myriad combat loops that we've built into the game and talk about the designs that support each.

Eon Altar has what I would call about 3.5 different combat loops. 3.5 is a strange number, and you'll see why I sort of call out two combat loops that are really a single loop, but when watching players, there's a distinct progression in terms of thoughts and planning. The loops would be classified as follows:
  1. Your Turn--Look for a target, use a power, wait for your next turn.
  2. Your Turn and Enemies' Turn--Use powers that position you to an advantage for or alter your opponents' turn.
  3. Multiple Turns--Plan your energy, fortitude, cooldowns, and gear usage over multiple turns. Planning multiple character combos (or even self-combos) can fall under here as well.
  4. Multiple Combats--Plan your progression and gear crafting/choices over multiple combats.
1 and 2 are pretty well a single loop (given combat is alternating turns), but there's a definite skill difference between players who understand loop 1, and players who understand loop 2. It's not a huge jump mind, but a discrete one.

Last time we talked a lot about loop 1, and hinted at loop 2 with talk about positioning. I'll break down some specifics about each system supporting the loops as we designed them, and how each evolved over the course of development.

Contextual Powers

The basic turn flow is pretty, well, basic. You look at the battlefield, figure out who or what you want to target, and then you're presented with an array of different powers. Once you've decided on your power, you execute it.

The trick here is the powers we present to you are based on context from combat: what is your status and where are you in relation to your target.

When we designed combat, we wanted to ensure that there was a feedback loop between your actions now (and your opponents' actions) and the powers that would be available to you next. Examples of this would be Silent Thorn gaining Assassin powers when she's Concealed; Shasek gaining Berserker powers when he's Bloodied; ranged attacks becoming unavailable when you get Engaged (locked down by a tank). Your range in relation to the target is also important, as some attacks become unavailable if the target is too far.

Earlier on in development, we also had powers that only showed up if you were Engaged. Other powers also only showed up if you were at range and not in melee. Like positioning requirements, later in development we decided these were too restrictive. Part of it was depending on context you might only have a single power available to you which is no fun at all because you literally have no choices, and part of it was just player confusion. It's easy to justify gaining new powers for a special status, and the no-ranged-when-engaged is pretty easy to grok, but a lot of cases where powers you thought you should have (like a big melee attack) only appearing when you're engaged or at a specific distance was difficult to communicate effectively, and felt arbitrarily restrictive in play testing.

Marcus Engaged with a Sellsword
Another change related to this was Engagement itself. Originally, all melee attacks Engaged the other party. When you're Engaged, you're locked in 1v1 combat with another party and can't escape without either killing the other party, or using a special Disengage power (which usually felt like wasting your turn). Engagement was extremely restrictive--by design--but play testing showed that it wasn't a fun restriction, especially given our penchant for battles where the players are outnumbered two-to-one. It was far too easy for ranged characters to get locked down and become basically useless.

Later on we changed Engagement to be something only tank characters used. Some enemies can engage, like the Bloodguard, and all three melee PCs can engage--though Shasek is less likely to want to unless the situation is dire or you really want him to take some damage to activate his Berserker powers. This made the status dangerous and a lot more uncommon, but in this case less is more: engagement is now an extremely powerful tool when used judiciously and deliberately. But those strategies are encroaching on Loop 2.

Combat Resource Economy

I'm jumping ahead to Loop 3 here a bit first, because the resource economy we built informs the design of Loop 2 to a certain extent. So while it may make sense to discuss each loop in ever-broadening order, that's not really how things worked when building the system.

In the first couple iterations, we had two primary resources: energy, and cooldowns. Attacks generated energy, and the harder you hit, the more energy you'd get returned. This created a bit of a runaway virtuous cycle where Fireballing a large group would generate so much energy that you could basically just spam the spell over and over again, so we introduced cooldowns on some of the more powerful abilities.

Every character had a couple of "Farmer" powers--that is, powers that cost 0 energy. Their primary purpose was to generate energy to use on some of your bigger attacks, the Mighty and Mythic powers.

We decided we needed to cut off that runaway virtuous cycle. Despite cooldowns, you could still alternate Mythic attacks and still generate enough energy to spam big powers all combat long once you were rolling. The first step was cutting down energy rewards from every hit to only the best hit if the attack was an AoE. Later on, we actually stopped granting energy on non-Farmer powers entirely. We beefed up the amount of energy Farmer powers granted (including on a miss so they never felt like a total waste), and the current energy economy was completed.

Muran gaining energy from a Stone Strike
As far as numbers are concerned, a miss is 3 energy, a hit is 3 or 5 energy, and a critical is 8 energy. We wanted to have that fist-pump moment where crits felt better than normal hits, especially since a crit in Eon Altar just guarantees you roll maximum damage rather than doing extra. The other aspect to this is we standardized energy costs to 5 and 12 energy for Mighty and Mythic attacks respectively. 

With energy costs set, it became really easy to map out what an expected energy curve would look like. You could alternate a hit (+5 energy) with a Mighty power (-5 energy), or if you were saving energy, you knew it would take 3 - 4 attacks for a Mythic attack, or 2 if you're lucky with a crit or two. Crits in general just allowed you to slowly bank extra energy over a medium period of time, especially given crit rates generally fall in the 25% to 40% range.

With energy gains under control, we decided we could remove the cooldowns off most powers. If you had 24 energy banked, Fireball with Muran two turns in a row if you'd like, or if you have 15 energy banked, Shield Slam on Marcus 3 times in a single turn to build up for a giant final strike. The only powers that have cooldowns remaining are Shadowstep for Silent Thorn so she can't sit in Concealment forever, and Revive to prevent players from spamming it to zerg the encounter until they get lucky. Some gear have cooldowns as well, but they're usually massive boosts or extremely powerful to compensate.

Basically, cooldowns are no longer a "resource" per se and more a balancing mechanism. A subtle distinction, but an important one as it means players have far more options at their disposal on a turn-to-turn basis.

Gaining An Advantage

Once we decided to ditch Engagement as a thing all the time, and removed some of the more restrictive contextual requirements for powers, it often meant that you had anywhere from 3 to 7 (or more!) actions available to you at any given time. This meant we needed differentiation.
Muran has a lot of options at her disposal. The two slots on the lower right could also contain equippable items like arrows or potions, meaning she could have up to 9 powers total in this context.
It's not sufficient to just have Swing Your Sword, and then a more powerful Swing Your Sword Harder. We wanted to make sure that even your "worst" least expensive powers had some tactical advantage to using. Since every character has two power archetypes, even within a single character we needed to ensure that your two Farmer powers were unique. We also wanted to ensure that using a Farmer power instead of a Mighty or Mythic power was a valid tactical decision aside from saving energy.

We have three mechanisms to realize this vision: stances, power bonuses, and status effects.

Stances and power bonuses are probably the more subtle effects, but they're also the most prevalent. They're also the hardest to communicate to players (we still don't communicate them well).

All powers activate a stance when used. Fireball and Flame Aura, for example, share Muran's Fire stance, whereas Shatter and Stone Strike share her Earth stance. Muran's Earth stance often comes with defensive bonuses, versus her Fire stance which is more damage at the expense of defense. This makes choosing Earth powers a better decision if you're going to be in melee a lot, but if you can get safely at range, you can unload with Fire powers to scorch the enemy without having to worry about the relatively lowered defenses.

On top of that, many powers have bonuses on top of the stance. Marcus' Lunge III, for example, activates his Phalanx stance for some physical resistances, but the power itself adds a +4 Defense bonus that other Phalanx powers would not, making it a natural choice if you need to turtle up.

Finally, status effects. Many powers give you buffs, or the enemy debuffs. Again, this helps differentiate powers. To use Marcus as an example again, Lunge gives Marcus the Protected status (+25% Defense) whereas Sunder causes the enemy to be Sundered as the name suggests (-25% Defense). Both are Farmer powers, and while Lunge is more accurate and Sunder does more damage, the status effects are powerful enough to perhaps use one of those instead of a more expensive power if the situation calls for it.

Silent Thorn has a good example with her Void Arrow versus her Quick Shot. Despite Quick Shot being free and weaker, since it slows the enemy (-50% Movement), it's the better attack to use if you're kiting a melee enemy. Void Arrow, however, does a fair bit more damage for 5 energy, but it also Blinds (-25% Accuracy, -50% Range), so it becomes a great decision to use against a ranged sniper or if there's nowhere for you to kite.

And then of course utilizing these effects with your allies allows you to really boost your party's power. Sunder with Marcus to allow others to hit more easily then Slay with Shasek to Weaken the enemy and get a second turn. Muran's Flame Aura reduces Radiant resistance, then use Baryson's Blade of Glory to do Radiant damage and leave a Radiant DoT to tick for even more damage. Or use Marcus' Shield Slam to knock an enemy backwards into another opponent so Silent Thorn can Volley both of them.

Part 3 Coming Soon

Loops 1, 2, and 3 often aren't quite as neat and tidy as I first laid them out. There's lots of overlap between them, and even when we were designing, different aspects of the system came online and iterated at different rates. What we have today is a pretty well-oiled machine, and we have loads of evidence from our play tests and demos at conventions such as PAX East and PAX West that we've created a very tactical game that rewards players who're aware of and plan around the different combat loops. But it definitely took a lot of iteration, thought, and play testing to get where we are now.

Next time I'll discuss progression, archetype design, and the role of gear and craftable items as the 4th and final broader combat loop.
#IndieDev, #EonAltar, #GameDesign

Friday, May 20, 2016

[IndieDev] Eon Altar's Team Turn Based TRPG Combat Design

Eon Altar's combat systems have been iterated on over the past 2 years pretty significantly, but the core tenets have stayed pretty constant. When we first set out to make this version of Eon Altar, combat came out of the gate relatively early in the process with a very strong design vision set by Christoph Sapinsky (@XophRA on Twitter). Later on after Christoph moved on from the team Scott Penner (@AltheusStone on Twitter), our lead designer, continued iterating on the system. Throughout the entire process, I've definitely made opinions and suggestions known.

Combat today is a team turn-based affair, with each player having a strong class identity and an array of unique-to-the-character powers they can pick and choose from each turn. Being able to take your turns simultaneously or in any order you choose allows for fast paced combat that you can slow down and plan at your choice. A clear energy economy for spending on bigger powers gives an ebb and flow over the course of a single fight. Many powers have secondary effects that make each one worthwhile in different situations. Outside of combat itself, character progression in the form of upgrading existing and unlocking new powers, stat boosts, weapon/armour upgrades, and consumable items help round out the longer planning game.

As evidenced by watching people play at PAX East, we've certainly succeeded in making an engaging, tactical combat system. But where did we start from, and why have we made some of the decisions we have along the way?

Original Vision

We had a few design goals we needed to keep in mind as we created combat and evolved it. The current system bears many of these out--though to a lesser degree than we'd like for some, admittedly. Some of the vision we've had to leave due to just not being able to build the tech, or as we built the game, that aspect of the vision came into conflict with providing good game play.
Letting smart player decisions really maximize their results in battle, including proper physical placement, equipment management, using and progressing individual abilities, and cooperation with other players. Epic battles should engage players with strategy that requires group discussion.

Fast Paced
Not every battle needs to be epic; most fights will be fast and brutal and serve to contrast the fewer, more strategic fights. Players should feel that once they've committed to an action that the result is quick. Turns will be team-based, so turns go by quickly and players won't have to wait long to make their next decision.

When the time is right, we will reward players with a display of how bad-ass their character has become. Some monsters and battle ends should trigger "death blows"--special animated sequences. These cinematic sequences will be rare, but valuable interruptions to the regular flow of an otherwise fast-paced combat experience.
From the start, we had the team turn-based tactical combat vision. It was important to us that combat was fast and fluid, but you could take the time to make nitty gritty decisions if you really wanted to (or in the case of some combats, need to).

Vision Variation

I'm of the opinion that we succeeded in spades with the tactical and fast paced aspects of the vision, but some parts of the vision had to be left behind.

One of the biggest omissions is probably the Cinematic portion. By the time we got combat in a nascent working state, we realized that interrupting the flow of combat was going to be difficult to do in a way that wasn't frustrating to the players. Since turns are simultaneous, when a player went in for a critical hit, if we did a cinematic zoom it would interrupt the other players' targeting. Similarly, if three enemies are attacking simultaneously, and one of them gets a critical and we did a zoom, players wouldn't see the other enemies attacking, which is problematic from an informational standpoint.

I believe one day we'd still like to do finishing blows for the end of combat, but given everything else we needed to get running, it fell down on the priority list until it was cut for our current release. Something to revisit if we do well enough to release more seasons.

Cinematic has evolved since to be more about ensuring powers look and feel great. Fireball, Blood Rage, and Shield Slam are all incredibly satisfying powers to use because they look powerful. It's not just the numbers, but the visuals and sounds enforcing that.

Powers and Positioning

One of the things that I would've liked to have more of from our tactical paragraph is physical positioning. To be sure, physical position does matter. If an enemy attacks you from behind, they have an accuracy bonus; if you're too close an ally may accidentally nail you with a fireball or a cleave attack; and enemies can "block" you from making melee attacks on their friends behind them as a sort of "melee line of sight" deal.

But each action in combat is actually a series of actions, which makes having fine-grained control over positioning difficult. You decide what the top-level action is going to be, and then the action itself performs a series of sub-actions that's entirely AI controlled.

Basic Turn Flow; Thinking, Targeting, and Executing occur on the main game while Deciding occurs on your Controller App.
A simple example of this would be Muran's Aetherbolt. You select your target, and decide you want to Aetherbolt them. The Aetherbolt action has two sub-actions: Move, Attack. The Move sub-action calculates the furthest point you can be from the target and still hit them and moves you to that location. The attack sub-action actually performs the ranged attack.

A more complicated example would be Marcus' Lance Assault. It has six sub-actions: Disengage, Move to Target, AoE Smash/Knockback, Find Random Enemy Target, Move to Target, Attack. This power has two move sub-actions in it, letting Marcus rip around the battlefield, but you don't know where you'll end up.

Because the AI is doing the movement for you, it's doing its best to guess where you should be and makes the attack. But you don't have much direct control over your position or facing when the attack is complete.

The benefit to this is each turn is important; we can ensure that nearly every turn you're doing something that has direct impact on the fight. While you can decide to just move to a specific location, most of the time you want to be doing actual actions and rolling movement into those actions allows you to spend more time doing and less time jockeying. Being too far away to do anything at all isn't something that occurs most of the time if your party is moving together as a group (if you have a laggard, well, your marching order may need work).
The left is what a Fireball would've looked like for damage areas early in development. You can see enemies acting as physical barriers. Today, it just hits everything in the AoE. However, the left side is still how we determine if you can attack someone with via melee.
The negative is, as mentioned before, lack of control over various sub-actions, including positioning. Because of that lack of control, we can't enforce too many positional requirements or it will become an exercise in frustration for players. Over the course of development, we've relaxed positional restrictions over time, allowing for ranged attacks and AoEs to go through people, deciding not to implement D&D-style attacks of opportunity, and allowing any position that isn't directly in front of someone count as "flanking".

Measuring via play testing, this relaxation has noticeably reduced player confusion and frustration. Some of it was figuring a way to communicate this information (and for the record, I don't think we're communicating the melee line of sight restriction at all currently), but a lot of it was just...the restriction wasn't fun. Players like having options, and many of the restrictions reduced what options you had on a turn-to-turn basis.

Part 2 Coming Soon

This post I talked about the original vision and what we've managed to keep from it and what we've missed, as well as the combat loop from a single-turn perspective. Part 2 next week I'll talk a bit more about the full combat loop, as well as the longer multi-combat loop.
#IndieDev #EonAltar #GameDesign

Friday, May 13, 2016

[FFRK] Cagnazzo U+ and a Relic Reckoning

I'm still playing FFRK, over a year after I started, which makes this the longest I've ever played a mobile game pretty well ever. The next closest would've been Puzzles and Dragons at 270 days.

Clearly the game is still entertaining me. The developers have softened the need for the ye old S/L trick by having the AI unlock attacks in the harder fights as the fight goes on, instead of letting them blast you with their full unmitigated power. Mostly. The latest super difficult fight--Cagnazzo U+--would crush one of my mages for twice their health if I didn't have mitigation up yet.

On the bright side, the Ultimate+ fights only cost a single stamina, so I feel totally free to experiment and change up my strategy. This has made the game more fun for me because now I don't feel obligated to go look up the datamined AI to save myself 60 stamina (3 hours worth). On the other hand, I'm good enough with good enough Relics that even the plain Ultimate fights I don't need to look up the AI anymore.

Cagnazzo Ultimate+ is the same Elemental Fiend from FFIV. The annoying thing with that is despite FFIV's large cast, their ability usage is a little limited. No spellblades, D.Cecil has a tiny moveset, and the entire group is super magic heavy.

In hindsight, a mage party probably would've been a decent option, given Cagnazzo's propensity for countering physical attacks with Stop. Thankfully, my bullheadedness didn't do me in. It just meant Agrias spent 60% of the fight Stopped. Cagnazzo's MND is pretty high.

My FFIV synergy is pretty weak overall. Lots of 3*++ items, but only a couple natural 5* meant synergy wasn't going to help me as much as it does on other fights. Similarly, only taking a single FFIV character also probably didn't help there either. Still, my Relics and my decent armor saved the day.

Name Level Ability 1 Ability 2 Record Materia Soul Breaks
Squall Lv 80 Thundaga S. (8) Blizzaga S. (8) Rebel's Might Fated Circle
Ramza Lv 80 Magic BD (8) Full Break (6) Mog's Teachings Shout
Agrias Lv 80 Thundara S. (10) Saint's Cross (6) Ace Striker Cleansing Strike
Rydia Lv 66 Thundaja (8) Blizzaja (8) Vow of Vengeance Radiant Breath
Garnet Lv 80 Ramuh (5) Dispel (8) Mako Might Divine Guardian
RW: Sentinel's Grimoire

Not looking at the AI meant that I totally missed out on taking Poison, which would've helped a lot. Honestly, I'd consider it over Blizzaga Strike on Squall given the sheer number of times Blizzaga Strike did 0 damage because Cagnazzo decided to activate his water wall.

I got low on Thunder-based hones by the end of the fight. Also missing out on Runic for easy-mode kinda sucks, as it would've neutered his Stop and a lot of his Water spells. Grand Cross would've been even better given his propensity for buffing, too.

You'll notice I didn't take any healing aside from Divine Guardian's Heavy Regen, which was the correct move. Made it a little bit touch and go a couple times, but as long as I kept my mitigation up, it was okay. But Garnet was around largely for her Soul Break, and providing Thunder damage and Dispel. Originally I had her healing, and Agrias used Banishing Strike for Dispel, but I needed a 4th Thunder user just in case things went south and someone was busy at an inopportune time.

So Garnet basically sat on standby, using Ramuh or Dispel immediately when needed, which was quite helpful. The rest was pretty straight forward. I realized after the fact that I was missing Shellga (Garnet's only gives +50% RES, not +100%), but thanks to Agrias' Cleansing Strike, it wasn't a huge deal after the first few rounds while it charged up. All in all, aside from his extreme defenses and rnadom mode switch rendering my Blizzard attacks useless half the time, he wasn't too shabby.

Relic Reckoning

Up until a couple months ago, my Character Relics were pretty pitiful. I had a couple of Medicas, and Planet Protector. Every other character relic I had was crappy one-hit damage ones. Then we had some SSB festivals plus the Final Fantasy Tactics banner and now I'm awash in awesome relics:

Name Realm Soul Break Effect
Luneth FF III Advance +150% ATK, -50% DEF
P.Cecil FF IV Radiant Wings 3 Hits, Holy Physical Damage
Rydia FF IV Radiant Breath 2 Hits, AoE, Holy Magical Damage; Blur 2
Galuf FF V Unyielding Fist Stupid Galuf Solo tricks
Yuffie FF VII Clear Tranquil AoE, 40% Heal, Instant Cast
Aerith FF VII Planet Protector AoE, +50% ATK
Squall FF VIII Fated Circle 3 Hits, 1 AoE Hit, Physical Damage
Rinoa FF VIII Wishing Star+ 5 Hits, Magical Non-Elemental Damage
Quistis FF VIII Mighty Guard (VIII)+ AoE, Hastega, Shellga, Heavy Regen
Edea FF VIII Inaugural Parade AoE, Hastega, +20% MAG
Zidane FF IX Scoop Art 3 Hits, Physical Damage
Garnet FF IX Divine Guardian+ AoE, Hastega, +50 RES, Heavy Regen
Steiner FF IX Sword Art Stock Break AoE, 3 Hits, Physical Damage, Paralyze
Quina FF IX Mighty Guard (IX) AoE, Shellga, Protectga
Rikku FF X Machina Sabotage 4 Hits, Physical Damage, -50% ATK, +50% ATK self
Auron FF X Dragon Fang AoE, 1 Hit, Physical Damage, -30% ATK
Fran FF XII Shatterheart AoE, 1 Hit, Ranged Physical Damage, -50% ATK/MAG
Penelo FF XII War Dance AoE, Medica, +50% ATK
Lightning FF XIII Crushing Blow+ AoE, 5 Hits, Lightning Physical Damage
Vanille FF XIII Oerba's Boon AoE, Medica, Protectga
Hope FF XIII Brutal Sanction AoE, 3 Hits, Non-Elemental Magical Damage, Stop
Y'shtola FF XIV Medica II AoE, Medica, Esuna
Thancred FF XIV Death Blossom AoE, 1 Hit, Physical Damage, Slow
Agrias FFT Cleansing Strike 3 Hits, Physical Damage, -50% ATK/MAG
Ramza FFT Shout+ AoE, Hastega, +50% ATK

As I mentioned, this isn't all of them. Anything that's a plain old AoE or single target with few or no effects are basically not listed. I've been doing the 100 gem pulls, which have gotten me a fair few of those. Only 8 of the above came before I pulled Quistis' Red Scorpion 2 months ago.

To be fair, I had saved up a lot of Mythril for the FFT banner and the SSB fest, so that helped. I also ended up spend $30 for an extra 11-pull on the FFT banner (which turned out to be worth it in hindsight given it got me both Ramza and Angrias' Relics). But I've gone from pauper to prince as far as options go. The game is much, much easier now that I have these relics, for better or for worse.

But it's nice because I can be more creative about what RWs I bring with me, which is more fun for me. But without these soul breaks, I'm not sure I'd be able to down fights like Cagnazzo U+ at all, let alone as relatively easily as I did. I've definitely had some good Relic pull luck, though.

More Fun To Come

The devs keep adding new content, new characters, new systems, so I'll keep on playing. Still having a lot of fun with the game, and I don't see that stopping anytime soon.