Archive for May, 2011


Past few days have been all about fixing bugs and tweaking gameplay, and attempting to add some new features or fix features that weren’t fully working properly. The gameplay is pretty much final, I’ve found a solid balance. The key was in looking at the higher difficulty as “more frequent stuff to dodge” rather than “faster stuff to dodge”. Going with “faster stuff to dodge”, there comes a certain point where the speed just becomes impossible for any human being to be able to keep up with, so the game becomes unfair. But with “more frequent stuff to dodge”, it comes down more to skill…you’re doing the same thing at 1:00 that you were doing at 0:10, but you have to do it a lot more carefully and skillfully to stay alive. It feels great, everyone’s liked the balance/difficulty in this last version.

One of the big things that came out of testing was the need for a tutorial. This was actually a huge surprise to me, the controls were instinctive to me and I just assumed there was only one way to logically play it. A few people complained about the controls being too sensitive or not sensitive enough, etc. I was getting some really random/opposing reports which was weird. So I started asking my testers more and more questions about their issue with the controls to narrow down what was going on.

Turns out one guy was playing it with swipes, one was playing it by tapping with his thumbs on the sides of the device, one guy didn’t realize you could multi-touch to hit the Deflect at the same time as you’re moving, etc. and the intended controls were two separate hands with a dragging motion instead of a swipe! Logically it makes sense that people would play different ways since there’s no standard D-Pad controller like on a console. But the problem is that because people were playing in ways I didn’t intend, to THEM the controls were bad/broken. If the game were released like that, those people would become 1-star reviews saying “The controls are terrible, fix them!”

So because I had a thorough testing period, I was able to narrow down a huge problem that would have blindsided me if the game had launched as-is. As I’ve said before, I can’t recommend playtesting enough! Anyway, so because of this I added tutorials for the movement and how the Deflect Meter works. They’re pretty simple tutorials, but they have drawings of hands holding the devices, so I think this will snuff out the confusion and have everyone playing with the optimal method.

Today I have a huge bug list to get through but all the bugs are super tiny, so hopefully I’ll blow through them. I’m trying to get a Quickplay button in, where there’s a button on the logo screens in the corner that if you hit it, it’ll skip all the logos and menu animations and jump right to loading the in-game gameplay. I think this will help encourage people to pick up and play the game more…if I’m on a short bus ride or killing time while I take a poo, I’m more likely to run the game that takes 5 seconds to start up rather than the game that takes 45 seconds to start up. I don’t know if this will do anything, but I’m going to put a Flurry analytic on it to see how much people use it and if it’s worth working it into the designs of future games.

It’s exciting to be this close to being done! I’m fixing tiny glitches and bugs all day and adding some last-minute ideas, and I’m going to be sending out a final testing build to my testers to play with today just to make sure I haven’t missed anything. I’m hoping to submit tonight (though it might wait till the morning because I haven’t slept in…a long long time, haha so I mght crash for a nap). Should get this thing out right before I take off for E3! :)

- Quickdraw

So I’m in the gameplay balancing stage of things and it’s been a blast so far. I’ve learned a LOT, in terms of game design. I’ve been hacking away at the code adding more and more nuances to it and I thought today it’d be interesting to talk about how the game has gone from it’s initial difficulty curve, up and down to both extremes of the easy/difficult spectrum, and what I’ve learned from the process that’s finally helping the difficulty settle down into a perfect curve. If you’re an iOS developer I highly highly recommend the TestFlight service. It was easy to set up and allows me to publish builds to multiple testers anywhere with an Internet connection, and the feedback, as you’ll read, has been extremely valuable.

Version 1:

This was the default gameplay balancing (from here on called the Hazard AI, or just AI). Basically hazards (all the objects in the game that are thrown at you) had 5 speed levels, and every 15 – 30 seconds the next speed level would be used. At the same time a frequency delay between the throws was reduced over time. The end result was a steady “throw ….. throw ….. throw … throw … throw . throw . throw throw throwthrow” that took about 90 seconds to reach it’s fastest speed. And at Speed1 the throw animations would have a solid 20 frames. By Speed5 they’d only have like 5 frames.

Problems:
The difficulty ramped too steadily. It was predictable. You got used to the pacing of throw, throw, throw, so you could almost get into a hypnotic trance where you’re just kind of zoned out and not thinking/moving in-between throws because, well, why would you, your brain knows nothing is going to happen so you can chill after each throw. Also when the game got hit it’s faster speeds it became pretty much impossible. You could survive, in theory, but it was complete luck. Basically no one could get past 1:30-ish, and most of the time would be within 10 seconds of that time.

Version 2:

Here I added some staggering to the timing. Now the frequency had a % chance of randomly dropping down dramatically here and there. So instead of a steady rhythm you’d get “throw ….. throw ….. throwthrow throw … throw ….. throw throwthrowthrow ….. throw” I was just messing around but when I actually tried it out I found this helped get rid of that hypnosis feeling, because now you didn’t know exactly when the hazard was coming. You had to be on your toes at all times incase the hazard was immediately followed up by another hazard. This is kind of like that psychology experiment that’s something like a mouse can press a button to get food but the button will zap him…if it zaps him at predictable intervals he’ll adapt to that but if it’s totally random he’ll get paranoid and freak out and be scared of it. I’m probably butchering the explanation of how the experiment actually went, but I think the concept is similar to what’s going on here. Fascinating.

Problems:
The totally random delay meant that occasionally you’d get “throw (nothing for 5 seconds) throwthrow (nothing for 8 seconds) throw, throwthrow, throw (nothing for 2 seconds) throw (nothing for 10 seconds), throw”. This meant big gaps at times. On the one hand this wasn’t a BAD thing per say, I found the pauses built paranoia. Like you KNOW something is coming, but you don’t know when so you’re on your toes going “c’mon… c’mon… I know you’re comin’, do it, DO it!!” The problem was these breaks happened too frequently and the intensity of actually dodging things died down because of them.

Version 3:

To solve the intensity dying I told it to clump between 10 and 20 objects together at a time before allowing a random-length break in the action. This created an oldschool arcade “waves of enemies” feel, where you have to deal with a handful of objects and then you get a break before the next handful. This was feeling really good, but I still had issues elsewhere in the design.

Problems:
Common feedback I was getting was “I feel like I can’t do BETTER.” I narrowed this down to everyone hitting a “wall” where they felt their skills were no longer relevant and survival became pure luck. My thinking on this was that the highest speeds had too few frames to react to, so the game basically became unfair on Speeds 4 and 5 (ESPECIALLY 5). I’m tracking Flurry stats and this was reflected in them…I have a stat triggered every time a new Speed is reached and everyone could make it to Speed3, but only a few made it more than a few seconds into Speed4, and no one could reach Speed5. So essentially there was a wall people felt couldn’t be passed…so why keep playing the game, if there’s no way you can do better?

Another problem was that health items were too hard to catch. You COULD catch them if you were going slow, but if you were zipping fast across the screen, there’s only one frame where the Riceball/Sushi detect if you’ve caught them so unless the planets aligned just right for your timing to hit that exact frame, you’d miss. TECHNICALLY, you suck and are in the wrong…but I think the biggest thing I’ve been asking my testers from the start is “When you die, do you feel like “That was BS, no one could do that!” or “This game is broken!” or “I should have gotten that!!”, or do you feel like “Ahh, damn, I shouldn’t have gone for that” or “Oops I shouldn’t have trapped myself in the corner like that!”?”

I learned this from a friend’s game actually. When he released it the controls were very unforgiving, so people complained like crazy that they “should’ve” won. He ended up having to loosen the controls up a bit and let the player win little control battles that realistically they shouldn’t have. Once he did that, everyone loved the controls…they couldn’t tell that the game was helping them out a bit.

Also there’s a Deflection ability in the game that creates a burst of energy that deflects a hazard if it hits you. Essentially this is a panic button move that fills up every time you dodge 10 objects. Unfortunately the feedback I got was that no one really saw a use for this, it was faster/easier to just dodge instead of hoping to time this right. It was kind of like timing a Parry in Street Fighter III or a counter in Dead or Alive…you had to be a little TOO precise for it to be very benefitial.

Version 4:

When I realized the difficulty wall issue was the impossibility, I figured out that I was approaching things wrong with making the game more difficult later on. Instead of speeding up the actual travel motion of the hazards, I could keep them slow by removing the top 2 tiers of travel speed, but speed up the frequency. So now instead of 2 or 3 lightning-fast hazards that are impossible to dodge, you end up with a slower-paced “wave” of 4 or 5 hazards that you have to weave through the openings between them (like moving through a crowd without touching anyone). To fix the health items I set it up so if you’re moving super-fast, your collision box for health items actually widens a bit. On top of that, I removed the health items’ multiple speed levels so they’re ALWAYS at Speed1 no matter what the rest of the game’s hazards are doing. The end result is the game doesn’t just hand you the health items, but when you think you should’ve gotten it, you’ll find that you did. It feels WAY more smooth and less frustrating.

I also increased the length of time the Deflection is alive…instead of just lasting for one hazard that should be just about to hit you, it now lasts for a full 2 seconds, deflecting anything that comes near you, essentially giving you a burst of invincibility. Now it’s WAY more useful!

Problems:
At this point things were feeling pretty solid all around, until I sat down and actually tried to survive as long as I could. The problem now is that once you get used to the top hazard speed which is fairly slow after removing the top 2 tiers of speed, the game isn’t very difficult. Now instead of everyone hitting a wall at 1:30-ish, there’s NO WALL at all. I was able to play for 5+ min without breaking a sweat and only let myself die because I got bored, and this matched up with my testers’ experience. One tester said “Around the 1:40 mark I start to feel less engaged, I think something needs to happen to make it more challenging without being impossible, or something ot mix up the gameplay?”. Now pile on 5 minutes of gameplay after that 1:40 mark and no way will you ever pick the game up again, it’s boring and unchallenging. Plus now you can catch all the health items pretty easily and the new Deflection lasting forever makes it so you’re never really in danger.

Version 5:

I toyed with a lot of ideas here. I thought about adding stuff…like what if the play area gets thinner over time (the roof on the edges lights on fire or something and it closes in on you) so everything happens in a tighter and tighter area? No, that means adding more art and a lot more code and testing out restricting the playfield it didn’t really feel any more fun. What about making the Deflect meter take longer to fill up as the game goes on so at first it fills up after 10 dodges, but later on it takes 30? No, then you need some indication to the player of what’s going on or he’ll wonder why his Deflect meter is broken and get annoyed when he expects it to be full and it’s not. Also I’m a crappy coder and couldn’t figure out how to do this nicely, haha What about allowing way more objects on-screen? No, that’s going to lag the game because it’s already pushing limits on some devices as it is with all the huge hand-drawn art.

Okay so I want to just work with what I HAVE. So I figure I want to combine a little of the hardness of Version 3 with the “my skill level makes a difference” of Version 4. I decided to re-introduce Speed4 (Speed4 and Speed5 were cut in Version 4). But Version 3 told me that Speed4 made things feel impossible. The solution? Speed4 in smaller doses! Now when Speed4 is reached, there’s a % random chance that it’ll drop to a random speed below it, even Speed1. When I was a kid I played Street Fighter II with a buddy all the time and one of the strategies we figured out was to throw “fast Hadouken, fast Hadouken, fast Hadouken, SLOWWWWWW Hadouken” The fast ones would get the other guy used to the timing and then the slow one snuck in there would trip him up. So that’s essentially what this is duplicating. As a result Speed4 is less unrelenting, and ALSO has become a little trickier psychologically…a double-whammy of goodness!

I also slowed up the health item frequency over time. So at the start there’s like a 10% chance of a health item being thrown. But as time goes on that % goes down.

Problems:
Very few!! Things feel really tight and I think I’m getting close to the perfect difficulty curve. Beginners should be able to last a minute with no problem, intermediate players should get to around 1:30, good players will probably be able to make it to about 2 minutes, but only really skilled players will be able to make it past 2 minutes. And it feels like your skill level makes a difference now because it’s not so much about “play until it’s too fast for anyone to realistically survive”, it’s about “play until it gets smart enough that it’s trying it’s hardest to trip you up, but if you can stay sharp you could keep going”. This has effectively removed the skill wall that the earlier versions had, but also kept the gameplay around the 1:20 – 2:00 minute mark so it doesn’t drag out into 5 – 10 minute games of boredom.

Version 6:

This is what I’m working on now. I’m adding a few more nuances to it, with regards to predicting common strategies the player will use and giving the AI ways to counter them. It’s pretty amazing to see how huge and nuanced the AI code has gotten compared to the start. I honestly wasn’t expecting this at all, but the end result is that Version 5 has (and Verison 6 will have) a COMPLETELY different feel and level of fun than Versions 1 and 2.

I can’t stress the importance of playtesting enough. Even if all you’re doing is getting a handful of friends to play it and observing their reactions. I’ve noticed that the feedback you get tends to be a variety of things from each tester, but if you jot notes down about each point they bring up, then compare them all in the end, you notice common themes or patterns throughout the testers’ experiences and THOSE are the things you want to take a look at changing because those are what’s giving everyone trouble even if they each describe their actual issue a little differently…you have to read between the lines and break down “okay what exactly is causing this reaction across the board?”

- Quickdraw

Whew, so today was getting down and dirty with my MacBook and XCode. I’ve actually made a lot of progress pretty quickly, my background in programming has come in unbelievably handy ever since I started working in the game industry. Being able to see things from the perspectives of both the art side AND the programming side speeds up a lot of tasks, cuts down on confusion and miscommunication, and allows me to narrow down bugs really quickly since I can tweak things not just on the code side but on the art side, until I figure out what’s causing the problem or preventing the solution. I’m not a good programmer by any means, but I’m a pretty quick learner in general and boy am I glad for that right now! Programming has sure changed since I was doing it in the QBasic days, haha There’s all these crazy .mm files and .h files and everythings spread out in folders and referencing stuff in other folders…it’s a mad-house!! What happened to 10 PRINT “I am awesome!”: 20 GOTO 10?? haha

Tomorrow I’ll talk about TestFlight and how the testing process is going…but today I’m gonna’ distract you with a shiny screenshot and then talk about a serious subject…so first, SHAZAMMMMM!!:

So today’s subject is Stress Management. It’s hard to imagine that you can have stress when you’re doing your dream job and making something you dig, but man, it happens. We’ve been working pretty much night and day for a solid 3 weeks straight, weekdays, weekends, you name it. This is super at first, you get a lot done, but over time it wears down on you. The problem is because you’re doing something that’s supposed to be fun, you can’t complain about it because people go “That’s silly, you draw ninjas all day, and you didn’t even put on pants today!!” While that’s true (the pants part at least), it kind of compounds the stress because not only do you have stress you feel dumb for having, but you can’t even complain to people and expect them to understand why you’re worn ragged.

And we tend to carry that stress from one area of our lives into other areas. I found myself extremely irritable at little things in my day to day life (pop can tab pulls off instead of opening the can, toppings falling out of my sandwich, friends not understanding that I have to get work done, etc.). I’m normally a pretty laid back guy, so this was really weird for me. I realized a few days ago as we were wrapping up Derek’s end of things that I was just a massive ball of negative energy. I haven’t had any stress in like, 2 years probably, since my last job that caused me a ton of stress and frustration…My day to day life is pretty relaxed: I have very low living expenses, I have some money saved up to fall back on, I’ve got friends to go to the bar with on weekends, I’m dating a cute chick who supports my business ambitions (though she’s happy she’ll actually be able to SEE me once this thing is shipped, haha), I’ve got my health, I’m pursuing my dream job and creating a game I’m proud of which is something I’ve dreamt of since I was a wee little nerd…hell, I’m going to be attending E3 this year and then party in Vegas with friends I haven’t seen in a year! My life is pretty awesome all around.

…as a result the feeling of being stressed/angry is so foreign to me that I didn’t even realize I was suffering from it or know how to deal with it haha I was like “Man, I feel like I should hit something, am I supposed to hit something when I’m this stressed?? Do I meditate?? I don’t even know!!” Apparently that’s a decent solution, but a better solution is to avoid the stress in the first place.

Now there are tons of websites out there with a million tips on time management and scheduling and all sorts of stuff like that that’ll help with avoiding stress, but I want to mention the mental aspect because I noticed a connection between my old stressful job and this current venture. Part of the reason these last few weeks were so stressful is that the game’s development took over my entire waking life. “My girl wants to see me? Nope, sorry, gotta’ cancel on dinner babe, I have to get these files ready but I can pop in right before you go to sleep if I’m lucky!” “You guys want me to come to the bar because you haven’t seen me in a week? Maybe, I’ll try to hurry up and be done in time to come out, but even if I’m lucky enough to get to hang out with you guys I’m going to be thinking about all the stuff I have to do when I get home and won’t be able to enjoy myself or be any fun to be around.” “Sleep? Ya, it’d be nice to get a full night’s sleep, but I’d better just take a light nap and leave my MSN on incase the project runs into problems.”

The interesting thing to me is that my old job was super stressful for me, but I wasn’t nearly as bothered by it. The difference? At my old job I made a mental rule to leave everything at the office on Fridays. No matter how chaotic the situation was, Friday at 5pm that office, the projects, the problems, etc. didn’t exist until Monday at 9am. It was like a mental light switch being flipped and I got so used to it that I did it instinctively. My friends and I even made a rule: “No talking about work at the bar” So when we were hanging out we’d snuff out anyone’s attempts at bringing up work stuff (unless it was something funny of course!).

I think that mental barrier separating work and normal life is important. When I first started taking my business course I read stuff like “Don’t work in your bedroom, create an office somewhere else in the house or travel to an office or friend’s place to work. Don’t make the place you rest the same place you work.” and I kind of pooh-pooh’ed it as silly woo-woo stuff. But now I think I understand what they’re talking about. I was pretty much living in this bedroom for like 3 weeks there (I didn’t have TIME to travel elsewhere to work! That’s a solid hour’s worth of work I could be getting done!!) and it was really suffocating and the “cabin fever” added to the stress.

So I think in the future after this project, I’m going to make sure I don’t work on weekends, and try to work outside of my bedroom more often. It’s been a freezing winter here in Calgary so leaving the house hasn’t been very appealing, but now that it’s all sunshine and warm weather outside (at least, it BETTER be, Mother Nature…I swear, we had snow in JUNE here last year, go Canada!) grabbing my laptop and heading out into the warm sun sounds a lot nicer than being cooped up inside!

The day after Derek was done his part of the project, I decided that even though I still have a lot of work to do, I needed a day to recover and relax. So that night I drank my face off at the bar with my friends (haha okay maybe THAT part wasn’t the best plan), slept in, and when I woke up I didn’t even LOOK at my laptop, desktop, MacBook, iDevices, gaming news sites, etc…I just txt’ed my girl that I’d be coming over and then turned my phone off for the day, completely off the grid. I hung with her for the day and we ran some errands, watched a movie, took a nap, and I slept for like 16 hours that night. I made sure that if I thought about the game at all or about checking my E-Mail or even about telling her how things were going with it, I’d completely cut that thought/action off immediately and focus on whatever we were doing or watching. It was absolutely what I needed, to just completely reset my psyche and de-stress. The next day I woke up feeling back to 100% and like a completely different person, and now I’m able to tackle the rest of the stuff I have to do with a renewed gusto.

Sometimes being lazy is the best medicine, haha

- Quickdraw

This update is a couple days worth of work in one and it has good news and bad news. Let’s get the bad news out of the way first: We had to kill the Retina version. :( The way we did the animations turned out not to translate nicely to the pixel/point stuff Cocos2d uses. It looks like the animations line up right if we use the Retina art with the regular iPhone animation files, but then the menu and general “touching stuff” system gets all shot. It’s fixable, but it’d take a while and Derek has other projects to move onto and this project has gone on way longer than it was supposed to. I’m not super bothered by the lack of a Retina version because the art is hand-drawn so the lines are anti-aliased as it is, which means it looks good on an iPhone 4 anyway…the art is cel-shaded so there’s not a lot of need for the Retina resolution with cel-shading since everything is flat-shaded with big areas of one flat color, versus a game that uses photographs or heavily painted artwork. So visually, it’s not a big deal, though a bit of a bummer! On the plus side now that we know what happened with it, in future games I’ll be able to have a Retina version for sure! The other good part is that it chops the iPhone version down to well under the 20MB 3G transfer limit which means users won’t need to be near Wi-Fi to download it.

It also means the iPad version is officially the HD version:

I’ll throw an HD on the title and market it that way since the art is huge for the iPad version (well over the 20MB limit, but I figure people use their iPhones on the go so you want to be under 20MB there, but most people’s iPads are used at home where they’ll have Wi-Fi). So it’s not the worst thing ever in the long-run!

The good news is Derek is officially off the project (aside from going over the final source and helping me submit it to Apple in a bit). He’s moved on to work on Burrito Bison for Juicy Beast, which should be awesome! I’ve got the final source and I’m using my epically weak programming “skills” to tighten the controls and tweak the gameplay and add a little polish. The Macbook I bought way back at the start was bought specifically for this purpose because I figured I’d run into this situation, where I’d want to tinker with the source a bit…it’ll speed up testing and it means Derek doesn’t have to worry about the project. I’m basically taking the source, vanishing for a week, then bringing it back to him with it all balanced out and polished up. I don’t actually know how to use a Mac, or XCode, or how to program in C or C++ or C# or whatever this is, so I am pretty much completely winging this with good ol’ trial and error haha I change some numbers, or cut and paste some code, run it, see what changes, then change some more numbers, or un-cut and paste the code, until it works. It’s not fast, but it works, eventually. Google + tutorials are a massive help too.

The game is looking good, and I’m pretty psyched to get it out there! I’m hoping to get TestFlight going when I wake up later, then have some friends testing it through the week as I polish up some of the animations and create all the external stuff, then hopefully submit it on Monday. I’m playing this part by ear because I have no idea how long a lot of this is going to take…Making the ninja change to his idle animation when he bumps into the edge of the screen took me like 6 hours to figure out…but I added multi-touch support on the first attempt. So like, jeeze, who knows haha

- Quickdraw

Whew, it was a ton of grunt work and checking and double-checking and triple-checking to make sure all the art and animation files were consistent across all 3 versions (iPhone, iPad, and Retina), and they’re finally all complete. I might have to tweak a little bit (like filling out the credits and external URLs that some menu stuff links to and such), but it’s basically all done. I’m currently running PNGGauntlet on all the art to reduce it down but that’ll take a solid hour so I don’t know how much it’ll save yet.

I am pooped, but it feels good to have the art/animations finalized! Next up is tweaking the sound effects and finalizing those (just have to make some minor tweaks to volume, or fix looping pauses, etc.) and then all the resources/assets are complete. Derek’s hoping to wrap this thing up in the next few days, and then I’ll be taking the source and using my sad crude programming skills to test and tweak the gameplay and possibly add a little polish here and there, and fill in all the external stuff (making a trailer, creating a “report a bug” form, etc.). I’m hoping to be able to submit to Apple in the third week of May and have it on the App store by the end of May before all the E3 news articles start flooding the gaming sites!

- Quickdraw

Powered by WordPress | Theme: Motion by 85ideas.
©2010 Bulletproof Outlaws[ Back to top ]
Rss Feed Tweeter button Facebook button Reddit button Delicious button Digg button Stumbleupon button Youtube button