Tuesday, 11 July 2017


I have released an expansion for 868-HACK, get it on iOS as an in-app purchase or on Steam here.

It adds a new mode which introduces "bonus powerups" from the first game of a streak (these are difficulty modifiers that would previously only show up after winning a few games in a row), with 8 more powerups added to the 12 from the original, so there's more variety from the start. Also 9 new progs (for a total of 32).

These changes make the score of an individual run less meaningful - because it's always affected by random powerups and because some of the new progs interact with run streaks - so high scores in this mode are only for streaks (total score across a series of consecutive plays without dying).

The maximum number of progs held is dropped to 8 (from 10), which makes the choice of what to pick up a little tighter, and also adds a little more variety because you're less likely to be able to pick up the same combinations by the end of a game. The new mode also allows a choice of "character class" each game, which determines starting resources (previously this was randomly assigned); this choice gives an extra chance to respond to the random initial conditions so there are less "unfair" deaths at the start of a game.

There are a few minor changes to some of the original progs, mostly to clarify their interactions with the .PLAN.B metaprog which executes random other progs: it was annoying to have it repeatedly apply an unwanted effect when you were hoping to randomly trigger something specific. In particular .DELAY and .STEP can no longer be used repeatedly in the same turn - you can still .STEP across a distance by applying it after each move so it isn't any weaker; .DELAY is slightly weakened but it was very strong in the first place so that's okay. Some other progs could be used with no effect when there were invisible cryptogs around, on the grounds that you don't know where they are so maybe it's affecting them - even though in practice you often have enough information about their position that you might know; now these can only be used when they will definitely have an effect, so their availability might give a clue about a cryptog's position (e.g. .CRASH becoming available might tell you there's one diagonal to you). I think it's quite interesting to get these clues and I'm not at all sure why I ruled them out in the first place?

Thursday, 18 May 2017

old times

Not long after my previous post (in which I was updating 868-HACK) I went back to Scotland for a few days. As well as seeing friends and dancing we made time to visit Pittenweem, the little village where we used to live, where I hadn't been for a couple of years. It's a gentle, relaxing place; perfect environment for making art; I did a lot of good work there. Spent some time reflecting on the things I made there and how I haven't made any new games since leaving; I started Imbroglio towards the end of my time there. I want to recover some of what I had there, but at the same time I am in other ways healthier now, I wouldn't just jump back in time, but I can think about the things I was doing right then and try to find a way to have those as well as the other things I do better now.

A few days later I woke up with a solution to a problem I hadn't thought about for four years, an ability I'd tried while making 868-HACK which hadn't quite worked. Coded it up over breakfast, played with it, it fit perfectly. Opened up the file where I'd written down ideas for alternative progs that I'd had over the years and started trying those out too. Most of them were bad, but some of them had seeds that could be improved on.. one thing followed another and I guess I'm making an expansion now.

It's been refreshing working with this game again, feels very natural to be back. I like working in low-res, it's very quick to build things up, less inertia. Feeling inspired to do more of this, it good. Realising I'd been going through a bit of scope creep which was getting in the way of making new things, but now I'm remembering how to keep them contained.

Tuesday, 4 April 2017

868-hack update

Apple have imposed a new requirement that applications have "64-bit support" and are threatening to remove ones that don't from the store. So I'm forced to go through and update all of my older games, even though in reality they still work fine and there is no reason that Apple could not maintain backwards compatibility; they've deliberately chosen to put extra work on developers instead.

Isn't this just a matter of opening up the project, changing one line and recompiling? Should take five minutes, it's not really a big deal? Yes and no. The 64-bit change itself is small but they change enough other things every few months that recompiling against new versions of the libraries doesn't simply work. You get a few linker errors and have to look up the new names for a couple of functions. Or there's a new element in one of the libraries with the same name as one of my variables so I have to find+replace to change its name. And then you run it and find that it's in portrait mode, squished into half of the screen, so you have to look up what changes they've made to how screen orientation works and change a few more lines. Or the graphics are scrambled or just blank because they changed something in how shaders work. Then test everything to make sure nothing else has changed. Then upload it and it comes back with an error, you need to add two more lines to the info.plist file to say that no, you're not going to be using the device camera or location. Upload again, the build is accepted, you go onto the store backend and try to submit the update and it turns out now you need screenshots in three additional sizes. It adds up.

I made a few balance changes too since I was updating it anyway, so I've also updated the Windows build on Steam. I haven't updated the MacOS build because that is throwing me a completely different set of new errors from the iOS ones and forget it.

A while after 868-HACK was first released, I updated it with some changes to how the scoring worked (see this post), mainly making the .SCORE prog worth one less point, which made it less dominant for single-run scores. Now the single-run scores are dominated by scores achieved with the secret level, much higher than what could be achieved with either version of .SCORE. Of course single-run scores are not very important and the game is about carefully surviving for multiple runs in a streak, but it turned out that also nobody wanted to use .SCORE in this context either now. A few months ago moabbe (who for a long time held the top score, and still holds the top single-run score) wrote to me saying "please go back to the original .SCORE, you had it right the first time". And he's probably right? So now I've switched back and hopefully the slightly higher reward for the risk will mean it gets used sometimes; I want every prog to have some practical use. The other changes I made in that update still hold; increasing the rate at which BONUS POWERUPS modify the difficulty was definitely the right choice.

A few other changes. I wrote in this post about how I was slightly dissatisfied with the .ROW and .COL effects; they had been more fun to play with when they only hit once and only cost 3 resources but they overshadowed everything else. Whenever I went back and played the game again I was feeling this more and more. The big silly combos where you .PULL all the enemies in towards one spot and then hit them all at once are a fun part of the game but I was feeling like they were possible a bit too often and so there weren't enough situations where you have to find more specific solutions. So I thought about putting .ROW and .COL back to just hitting once, which makes for more complex tactics; you think more about the fact that they stun as well as damage, and you less often want to use .PULL to set them up because it's too expensive so you're more looking for the right moment when enemies can be tricked into lining up through their own movement. This makes them much more situational abilities, their resource cost is quite expensive for the effect, so I reduced their acquisition cost to try to compensate. I'm not completely sure about this change but let's try it and see!

I found that .WAIT was an ability I almost never use, it's just not very good. Which is kind of funny given how often people are asking for a wait button in my games! So I dropped the acquisition cost to just 1 enemy; it's not a big difference but I didn't have anything at 1 before so it's maybe nice if there is one?

OK time to see if I can compile the rest of my games again.

Tuesday, 31 January 2017

imbroglio update 1.04

A bunch of little tweaks here. May take a few hours to show up in the appstore.

- Arcane Hourglass: now displays the number of turns until an enemy will reappear.

The previous update added a "telefrag" effect to Hourglass whereby the time-travelling enemy replaces other enemies in its space rather than waiting for them to leave. This made it a lot more important to keep track of when enemies will reappear so now the number of turns is displayed to make this less hassle to deal with. Should have had this all along really.

- Forged Sigil: extra rune per level, damage dropped to 11111.

Felt like the extra runes weren't significant enough, especially for heroes with a 2-cost power, so now there's heaps and it definitely makes a difference. Seemed pretty strong; dropped the damage to compensate. Now I've broken the rule that 1/4 of blue weapons get to 2 damage, might have to do something about that?

- Rusty Caltrops: damage profile to 11122, stun moved to IV.

The Caltrops/Rope/Wheel board turned out a bit too strong, I already dropped the Rope percentages to make it less reliable but it's still been dominating. Also I was noticing people often were surprised by Caltrops stun because it's a big effect that turned on at level 2, which is just somewhere in the middle of the progression, not a point people are keeping track of. It's more intuitive for a major effect to either be always on or to activate at level 4 when the weapon is fully leveled. Moving the stun to level 4 makes a Caltrops combo harder to get into play but doesn't change its strength once it is.

- Whetstone: now only affects adjacent weapons in the same row.

Whetstone has been showing up in almost every build; increasing damage is a very strong effect and its disadvantage of leaving a tile with 0 damage isn't significant enough to compensate for it. This nerf breaks a lot of existing boards, which is not ideal because they're still in the scoreboards and someone might get confused, but it leaves the weapon still very usable just hopefully a little less dominant.

- Brainspoon: controlled enemies may use Skeleton Key to move through walls.
- Brainspoon: fixed crash when controlled enemies attempt to attack through a wall.

Surprisingly many people reported the bug of Brainspoon-controlled enemies crashing the game when attempting an invalid move (towards a wall the other side of which is occupied). I didn't think it was a priority to fix because it's not preventing any actual moves in the game, but the reports just kept coming in. Why is everyone trying invalid moves?

- Dream Wheel: changed interaction with Simon Rainbow Jester's second gem; now neither gem will move further away.

Wheel is quite effective at dealing with Simon's disadvantage because it moves both gems. Because they can't move into the same spot there were some odd interactions; sometimes one would move into a chokepoint and then the other one would avoid that spot in its path-finding and start taking the long way around, or if there was only one route then both gems would refuse to move. This latter case seemed like a nice balancing effect to Wheel's extra effectiveness - the gems get stuck and you have to leave your Wheel more often to fetch them - but it didn't come up very often. Now that gems refuse to take a longer route it will occur more often.

- Jeska Nomad Witch: power changed to "curse a random enemy" (was "curse nearest enemy").

I oscillated between these in development but ended up feeling she needed the slightly stronger "nearest" - gives more control over the outcome and sometimes gives extra curses when multiple enemies are equidistant. But then she was the first hero to ascend, with a very reliable board. Being able to reliably curse attacking enemies combines very favourably with Confusion Cloud. So I no longer feel she needs the extra strength.

- Chaos Oracle Molly: enemies are now more likely to spawn at their usual gate.

I just kept feeling disappointed that board orientation didn't matter. Now it selects a random gate and there's a 50% chance it produces its usual enemy, 50% chance it'll be random. (So actually a 62.5% chance of the usual enemy, because that could be the random one too.) Feels okay to me; it gives you slightly more to work with but still throws plenty of surprises. I may end up tweaking these percentages later on.

- swapped unlock order of Dice of Omens and Arcane Hourglass.

Several people found the final set of weapons jarring because it added a lot of complexity all at once, so I've spread it out a bit more. Dice add variety to possible curse builds by giving an alternative source but that's a fairly subtle decision so it makes sense to reserve it for more advanced players; at the same time the text on the card is very simple. Hourglass has a lot of text but is a simple enough concept.

- Amulet of Immortals: with multiple instances, a random one is triggered (Chaos Oracle Molly can spend a rune to choose).
- Bonesnare: multiple instances trigger in random order (affects Masina Rebel Queen; Chaos Oracle Molly doesn't choose).
- Wicked Thorns, Ixxthl's Ring: percentages adjusted to 12/25/37/50 (were 10/20/30/50 and 15/25/35/50).
- Dominic Twice-Bitten: no longer stuns friendly ghosts or enemies controlled by the Brainspoon.
- Ossuary title image displayed sometimes on startup not just when purchased.
- arrows displayed for controlled ghosts's ability to move through walls.
- fixed a bug in scrolling weapons at bottom of screen.
- hit effects say "after" to clarify some interactions.

Just a bunch of things coming up between working on PC release and another expansion.

Thursday, 12 January 2017

self expectation

over the last few years i have worked at making some changes to my lifestyle. spending more time with other people. getting more exercise & generally having a better relationship with my body. spending less hours in front of a screen, remembering to take regular breaks when i'm working to stretch & avoid rsi. learning new things. i am just in a way better place now in terms of physical and mental health.

i make games more slowly than i did a few years ago. seriously like in 2012 i released Game Title, Lost Levels, Zaga-33, Kompendium, VESPER.5, O, Corrypt, various smaller jam games. in 2015-16 i released Imbroglio. sometimes i feel pretty bad about this, i miss being more productive and i feel inadequate for not making a dozen more games at the same time and also porting to more platforms. i feel confused about why i am less productive. plus i feel bad about not keeping up with other game makers, like i never played all the latest games everyone talked about (half of them are console exclusives anyway) but i used to at least follow all the work of people i know personally and now i don't.

i just put these trends together and went "ohhhhhhhh". it is obvious when i think about it but as these have been slow trends and changes of habits it is not always easy to see. i am spending less time sitting at a computer, so i am getting less done in that time. i think somehow i expected to be so magically productive that i could do a bunch of extra things without anything else diminishing. but i actually have limitations and i have to make choices about how to allocate my time. i have to recognise that while i enjoyed being so productive back then, part of what enabled that level of productivity was constantly overworking myself, lifestyle habits i've realised were unhealthy for me and that anyway were unsustainable. i could still just sit down and jam out a game in a few days i just can't expect to do that while also doing what's best for my body. i still am able to make things now, it's not like i am unproductive, i am just comparing myself to a standard that i feel like i can achieve but is not realistic over the long-term. & if game-making time is a more scarce resource than i thought then i guess it's reasonable that i am not spending it on the little jam games?

ok moving forward i try to have more realistic expectations for myself. keep working on all of life and also games. really important to keep learning and trying new things, i don't want to be stuck in a loop of only making the kind of art i was capable of making five years ago (but integrating new ideas takes time too, i shouldn't expect to be able to express them straight away). accept making games at a sensible pace. not sure what this means for the equation of "can i continue to make a living from this", but i try. next game when it's ready, no rush, ok.