Monday, 2 March 2015

updates

With the help of a couple of people on twitter (thanks Jim & Ciro) I've found a bug in Zaga-33. On OSX/IOS threads are all POSIX-y and "pthread_mutex_trylock" returns zero on success, or a number indicating the type of error on failure. The equivalent Windows function call TryEnterCriticalSection returns zero on failure. I'd missed this distinction in the docs and treated them as both having the same return value. Because threads are fun and unpredictable this was fine for a while until the IOS update changed something and made it not. But it's fixed now and hopefully that's the only problem and I can finally move on. (It'll be a week or so before the update's live because hey appstore.) I'd used the same code in a few other things. 868-HACK had it, chances are that's what was crashing it intermittently on OSX for some people so I've updated that now. Could be the same thing is in Vertex Dispenser because someone reported a crash there, I'll try to get that compiling again sometime and see.

Something else I've done in 868-HACK is add a new scoreboard, only showing active *STILL RUNNING* streaks. Lose a game, lose your place on the board. I'd meant to do something like this all along but Gamecentre on IOS doesn't support score removal and I really couldn't be bothered rolling my own. Steam does allow it so that's neat. I'd considered making it the main scoreboard but I didn't want to discourage people from playing when they were in a risky position. And then I ran out of time to get it in for release but it's there now. Something that happened with the Steam scoreboards is they stabilised really quickly because a lot of people who'd played on IOS came over with their year of practise and knowledge of all the tricks - which maybe discourages newcomers from competing. So hopefully this will be a more dynamic scoreboard, I don't know. At least it'll be interesting to see what people are doing. Access it by going to steam streak scores and select CURRENT instead of HISTORIC. Note that it'll take a while to populate, anyone who's not played since the update won't be listed yet.

Something that suprised me is that Steam sales, after the initial burst, very quickly dropped down to less than IOS. (~4-10 a day vs. ~10-20 a day.) I mean, this is more a matter of the IOS sales being surprisingly strong than PC being bad but I think it's odd? I would have expected the platform it's been out on for a while would be tapped out and the new one would continue steadily for a while. Not the biggest deal since I am funding my existence, but probably I could have better spent the time making a new game instead of getting hung up on ports. (Yeah just shut up about androids or whatever.)

Anyway just trying to get all this kind of stuff sorted before I start living out of a backpack and don't have my old hard drives handy. SMESPORT will be on hold because I won't have controllers to test with, I've barely worked on it for months anyway. The new thing is coming along well and hopefully I'll be able to keep making progress on that.

Monday, 26 January 2015

4:57am on a borrowed netbook.
hacking 'til dawn on a friend's couch, tangled in cables.
compile error in <tuple>.
.
.
6:23am and it's error 0xc000007b.
birds singing, traffic starting.
what does this even mean.
.
.
7:02am reading documentation.
oh wait steam just solves this problem for me automatically.
whaaaaaaaaaaaaaaaaaaaaaat.
click "release".
.
.

868-hack now on steam.
also available on ios.

massive thanks to yann seznec for making the trailer with me.

let me know about any bugs; there's bound to be something that can go wrong in some circumstance and hopefully i can fix it. maybe not straight away. i need to rest.

Sunday, 25 January 2015

endings

feeling an era of my life is coming to an end.

releasing 868-hack on steam on tuesday. i thought that once i released it on ios i would move straight on to the pc release but instead i found myself prioritising fixing bugs in what i'd released, and then i was sick of working on it and needed to do other things for a while. now somehow this has ended up hanging over me for well over a year. but it's all ready. i just need to borrow a windows computer tomorrow to compile the release build - mine has broken down irreparably after several years of faithful service - something else that's ended. (yeah i'm cutting things fine, tomorrow night might be pretty busy but hey.)

helix too, i finally got out a few months ago; just did an update fixing minor bugs and i think that's it, i don't need to touch it again. not financially worth it to port anywhere. (of course an ios update will break it pretty soon but NOT THINKING ABOUT THAT NOW.)

smesport has been essentially done for over a year so i should just put it out, i can release it any time really. had been thinking of doing a little more on it but i guess not. hasn't been a high priority because it's a local 4-player game and i hardly ever make an opportunity to play it myself, i know almost no-one else will. it's a good game when other people are good at it though.

the other project i'm working on i haven't talked about much. it's an idea i've been grappling with for a couple of years, making several prototypes and throwing them away, last august i finally figured out how to make it work so i've been building it slowly since then. i don't want to put a time estimate on it but it's getting there.

that's all the things i'm working on. they're all long projects and i'm finishing them off one by one and i haven't been starting new things. i haven't been getting into jams lately, not feeling it. so i don't know where i'm going after this. for a while there i thought i would keep producing games at the same rate forever. but now i've done a lot of what i'd set out to do, maybe i am running out of ambition. i haven't had a reason to make another puzzle game after corrypt, it does what i wanted to do with puzzles. helix, glitch tank, 868-hack, these have kind of fulfilled my design goals for their respective genres. probably i will find myself making something new before i know it, certainly there are plenty more games i can think of making, just right now there doesn't seem to be much reason to. maybe i will make something other than a game. i wrote before about how the weight of supporting released games was hurting me, and that's part of it too, but really not all.

parallel to that, i'm leaving scotland in march. kind of a big deal. don't know where we'll be living next. going to travel a little bit, then maybe back to new zealand for good? that'll be strange. not bad, i miss new zealand, but i'm going to miss europe too. or maybe we won't settle there, maybe we'll end up somewhere else, just don't know. we knew we wouldn't be here forever and it has been very unstable, but it is hard not to feel settled after a while. i'm looking forward to travelling and adventure but then

Friday, 9 January 2015

helix stuff

Helix has sold 3841 copies. Depending on where you stand you might think this number is good or bad, I don't know. For me it is certainly not terrible (hello Glitch Tank) but it is less than I had been hoping for given how long I spent on it and how encouraging everyone had been while I was working on it.
Inevitably I am making a comparison to my previous release, 868-HACK, which sold very well (it is at 13978 copies and still going steady). Each game had been doing better than the last and at that point I thought that I had made it. I thought that yes I can relax now and just make the things I want to make without stress. (And then I didn't get much done for a while because overworking myself and having all the stress has consequences but that is another story.) I expected Helix to do even better because it is much more accessible. Every time I show Helix to someone they figure it out within seconds and then end up just sitting playing it until I demand my ipad back, whereas 868-HACK they'll poke at confused for a little while then hand it back; it is a very obtuse game.

I am not that worried about the money right now; I have plenty saved from 868-HACK to keep going, even with my wife being about to become unemployed. Seriously I'm okay did you see that number last paragraph (and I'm releasing it on PC soon NO REALLY THIS TIME and hopefully people will still buy it there even though I took so long about it). I can keep making stuff. But it does feel very unstable; I can put all the work into something that seems like it will do well and that everyone is telling me will be the biggest thing ever and then it's just not. For me, while I am primarily making games out of artistic inspiration part of the motivation to finish things well and fix all the bugs comes from the hope of getting paid for my time, otherwise I would rather keep chasing new ideas. And Helix ended up taking a lot of time to get done. I don't know, maybe I can get fast again but maybe I am just getting old and slow and I will take longer to make things.

I had kind of intended to stop entering the IGF, at least for a while. I had had three games in it, maybe that's enough and I should leave some space for new people right? But then I was looking at numbers and thinking no I am responsible to do things to promote my work so I entered it again. Helix has received an honourable mention for the design category. I had entered it two years earlier, back when I was making games nice and quickly and I thought I'd be releasing it any week, and it got an honourable mention for design then too. I had hoped that maybe it would get in this time because it actually got a lot better during those two years, but it is okay.
(Aside: "excellence in design" is a bit of a confused category because the judges are divided on whether it means "game mechanics" or "the holistic effect of all elements together", the latter being essentially equivalent to the "grand prize" category. This is something I would like to see them clarify.)
Andi also entered our Ludum Dare collaboration BECOME A GREAT ARTIST IN JUST 10 SECONDS and that is a finalist which is pretty neat. I am positive about life.

Tuesday, 2 December 2014

compatibility

I started making games in C++ using SDL as a cross-platform library. I was only using Windows at the time but being prepared for other platforms seemed like a good idea; also it seemed a lot cleaner than the Windows libraries anyway. When I was preparing to sell Vertex Dispenser increpare helped me port it to Mac, he'd used SDL before and it wasn't much trouble. Actually how it worked was slightly confusing as I found out when I actually got a Mac and tried to do it myself, but ok. Then later I got an Ipad to port Kompendium to and it was pretty easy (in terms of code; adapting the design to touch was much harder). But there were a few problems with SDL on IOS - it didn't work with the simulator, it didn't handle orientations quite right (the taskbar would appear upside down, WEIRD). So I looked at what other people were using and switched to Openframeworks. At first this seemed better; it worked great on IOS; but I start getting occasional reports of Corrypt and 86856527 crashing on elsewhere which I couldn't reproduce but eventually through trial and error sending lots of versions back and forth tracked it down to being NOT MY FAULT and buried somewhere in the library I couldn't figure out. Also some other odd problems. I wasn't really worried if a few people couldn't play Corrypt but since I was planning to sell 868-HACK on PC I had to deal with this somehow. This stalled the PC release for ages; eventually I decided to just go back to SDL for that - yes I will use different cross-platform libraries for different platforms how perverse.

And operating system updates tend to break things. Actually really just Apple ones, Windows has been respectable here. MacOS broke my SDL stuff a version or two ago - updating SDL seems to fix it but they changed the library interface so it's a bit of work to actually go through and make everything work again; I haven't gotten around to it yet. IOS7 demanded an entire update just to add "View controller-based status bar appearance: NO" to info.plist if you didn't want a line of crap drawn on top of everything, and then 8 broke everything by moving the documents folder and pointlessly changing something about how you get to start putting things on the screen I don't even know?? It didn't take all that long to update most of the games I'd used Openframeworks for, just had to update the library and change where they looked for saved games. Except O; when I recompile that now there's no transparency so everything looks awful I DON'T KNOW WHY. But the SDL stuff's been more work, Zaga-33 is just crashing a bunch now and I can't figure out why because the debugger just won't connect to it WTF, all I can think of to do to track it down is comment out a bunch of stuff and see if it still crashes but it's infrequent enough that that will take far too long to get any degree of confidence.

Also the appstore keeps adding new requirements to slow down the process further; I was trying to update Corrypt to fix a bug and it was rejected with some crap like "we made a different-shaped telephone and now we won't accept anything that doesn't explicitly support that too". So of course I just stretched the screen to fit and it probably looks awful but who even cares. Stretching works okay for low-res like Glitch Tank but it's really quite bad for the medium-res stuff I've been doing lately, but doing layouts for a bunch of different resolutions is heaps of extra work too.

Also lol whenever one of my games is reviewed somewhere a sealion pops up to ask why it's not on Humanoid or whatever, like I have time for that. I used to kind of care that Glitch Tank and O were trapped in some super messed up closed platform, but so far the only alternative is even more of a mess so who can really be bothered.

So yeah getting/keeping things working on different computers has been taking up way too much of my time and attention lately. It's ended up taking much longer than it should have because I keep getting frustrated and giving up, I've been a bit preoccupied with other stuff / LIFE and when I get distracted it takes me a while to get back into it and figure out where I was again. And it's just destroying my motivation to work on anything new, I have a couple of new games I really want to be working on but it's hard when I have this older stuff hanging over me unfinished/unfixed/unported. I feel like I don't even know how to make games anymore, it's become so much more work to make them actually work, it's demoralising to start making something with the expectation that even if it's completely functional now something outside my control will break it in six months time and I'll have to fix it again.

I was too prolific and it left me with too many things to maintain. Maybe I shouldn't bother because nobody bought them in the first place but they actually do steadily sell a little bit whenever I release something new so I feel like I ought to keep them working.

Ugggh I miss when I just made things.

Thursday, 16 October 2014

Helix

When I first got an ipad and tried to port Kompendium to it I ran into a lot of problems with controls. The games were designed around how they felt to play with buttons and my naive touch implementations didn't feel good at all. (The exception being of course Glitch Tank which turned out to actually be a better fit.) I had no experience with touchscreens before then, didn't have a smartphone or anything. So I'd no idea what I was doing (good place to be IMO, recommend visiting often).

Experimenting with different controls I found that with touch everyone seems to have different expectations. What one found completely natural would baffle another. Then they'd suggest how it should obviously (to them) work, which in turn a third person would find totally wrong. Of course it's absolute, of course it's relative, of course you have to put your finger where your ship is now, or where you want it to end up, of course it doesn't matter where you touch.

All this was complicated by having two players. Often someone would end up reaching across the screen and blocking their opponent - completely accidentally. If that happens on purpose that's pretty interesting to me, eventually I did make O which embraced it, but at the time I was working with existing games that didn't have this concept. Similarly if you design a game to have a really clear distance between my bits and yours (as in Shot Shot Shoot) then you're probably fine - some of the Kompendium games did already but others it didn't make sense for. I decided to start making a singleplayer game and get the controls right before dealing with the harder case of multiplayer. So I started Helix at a jam in 2012 as a simple exercise in control schemes.

Once I added some enemies to avoid, playing around I enjoyed weaving around them and skimming close more than just keeping away from them so I added a rule that encouraged doing this. Added a few different enemy types, lots of particles, toned down the awful strobing lights, and then it was mostly done but I got sidetracked making VESPER.5 and then a bunch of other games. For a long time it kept sitting there basically finished but with a few critical things needing to be done, boring technical things like rewriting code from the jam to actually run smoothly on an older ipod, and I was much less motivated to do that than to make a new game. Other people kept telling me I should hurry up and finish it but I was always off making some kind of weird cyber roguelike or something. And then when I did get around to doing anything on it I usually ended up doing something simple and fun like adding a new enemy type instead of the important things. So it somehow ended up taking a couple of years longer than it should have to get done. (I feel pretty strange about that, it doesn't seem like so long, years shouldn't be thrown around lightly.) But it did benefit some from its long maturation, in particular there's one enemy that took a year to come up with that to me is the one sublime element that lifts it from being just a simple action game to something worth having made, also how the powerups work took some time to settle and just the enemy patterns have been refined. Also spent a long time tuning the controls, getting them exactly right.

At one point I accidentally deleted it and hadn't backed it up so I had to use some kind of deleted file recovery tool to get it back. I'm still convinced it returned with glitches it hadn't had before..

Andrew Toups did the sound for it and it's perfect. Tim Rogers introduced us after I'd been discussing the design with him with reference to their game ZiGGURAT, which was one of my inspirations for how to do a solid small-scale action game (the other main one being of course Super Hexagon).

Anyway it's out now for ios-things.
appstore link
Maybe now I can finally go back to the harder problem of making a multiplayer game with good touch controls?

Thursday, 4 September 2014

assorted

Updated 868-HACK again. Even after all this time minor things still show up.

It was possible to get the tutorial frozen by dying on the step that advanced to a new message. I saw it when showing the game to someone last week, nobody had reported it but chances are it had happened to someone and ruined the game for them completely. I try to be thorough, and have some wonderful people who help test things for me too, but it's really hard to avoid things like this completely. Practically you have to look at the odds and accept a few people having a bad experience in exchange for ever actually getting around to releasing the damn thing but it still feels bad. So if you ran into that: sorry.

I'd justified .PULL having a lower acquisition cost than .PUSH because, although it combos well with some attacks, in isolation it's riskier to move enemies towards you than away (thought I'd written that in this post but apparently not; maybe I edited it out). But I was finding myself using it all the time, because it's so easy to find a combo for it I rarely needed to use it in isolation, so I've pushed it up to 4 to match. (Yes Leon, you were right all along.)

You can't use progs that have no effect. This seemed like a reasonable constraint to prevent some accidental moves and help people learn the rules. I was worried it might be too "hand-holdy" but the game's hard enough. (Now I'm not sure how much it did help with learning - it makes the rules for when you can use a prog complex rather than just "do you have enough resources", so some people were confused about why you can sometimes but not others.) Anyway this ended up giving me a whole lot of bugs, situations where something was permitted but shouldn't be or vice versa. And there was the question of what to do when the player didn't know whether there was an effect: when there's an invisible Cryptog that might be affected it could give away its position. I decided to make it not give away information and just permit things when a Cryptog is out of sight, but I put an OR instead of an AND and it was doing this whenever one was on screen at all. Also I'd forgotten to add this to the .DEBUG check since usually they won't be affected unless you've done something special, but for consistency it should apply there too. This is so so minor but hey perfectionism.

ALSO IT'S ON SALE YEAH?



Got back to finishing off Helix. Mostly boring technical stuff: it was born in a jam and was in some parts quite inefficient, so even though it ran fine on my ipad it was a bit slow when I put it on my ipodtouch and I had to figure out why and optimise. Main thing was I was drawing everything on the CPU and then just uploading one big texture for the whole screen, so I shifted some of that work to the GPU and it was suddenly way faster. (Except, for some reason, on the ipad1 - so I ended up using the old method for that WHAT THE HECK.) And then for some reason on the iphone5 the colours got messed up but I just changed ten different things and it worked and I don't know why. Thing is, I have an ipad2 and an ipodtouch but there's all these other models things can go wrong on and I rely on other people to let me know and I don't want to waste too much of their time (and mine) changing something / uploading a build / sending a message / waiting for a reply. The simulator picks up some things but not everything and also it's slow as heck.

Andrew Toups is doing sounds for it, he did the music for Tim Rogers' ZIGGURAT which is amazing and Tim introduced us. Anyway he's doing some last few things and I'm trying to deal with some nonsense (it does have the image mentioned, I don't understand) and then we'll be good to go; release early October.

Ugh this game's been hanging on far too long, it feels good to be finally purging it. This and the 868-HACK PC release (which will happen some time honest) have been getting in the way of me doing new things and it's frustrating, I miss two years ago when I was constantly making things. Although I get paid now so that's a definite plus.



Okay the other thing
the important thing
I don't know what to say just
be kind
love

okay a while back i'd done a talk somewhere and i was reading some responses on twitter afterwards, i clicked on one of them and someone had replied to it in quite a nasty fashion
it seemed a non-sequitur
but then i looked at the rest of their tweets and there were dozens, all directed at the same woman, full of the most horrific violent threats and insults
i read them
i fucking read all of them
i was pretty certain she wouldn't have, she'd probably just blocked him immediately, you get pretty quick at blocking when you endure this kind of harassment
but i read them
and i sat there in the corner, by myself in a room full of people, shaking
just shaking
she's one of the gentlest people i've ever met and even if she wasn't nobody deserves that
nobody

and this is a thing that happens regularly, if you're a woman on the internet
i've seen it a bunch of times since. messages directed at women. always women.
and it's not okay

so if you're criticising someone, anyone but especially women because that's who get this all the time, bear in mind this context
even if you think you have a valid point, maybe you do, i'm not saying anyone's above criticism, but when you come in the middle of this sickening stream of abuse you have to make an effort not to be part of it
and sometimes just don't, just be quiet because others are already making enough noise

and if you're one of the people writing this abuse
you are the problem
not women infiltrating games
not 'social justice warlocks'
you are
stop
you're above this. you're a human being. have dignity. you don't need to do this.
stop it
you can change. we all do bad things, that's part of life, you have to admit that you were wrong, turn aside and do better. when you realise you're wrong it's easy to go into anger and denial. it's hard to change. but it's worth doing things that are hard, you become more than you were. please.