Making of the Chopper 2 trailer

Written by David Frampton @ 4:36 am, July 23, 2010

I’ve made a number of iPhone videos in the past couple of years. One of the first was of DuckDuckDuck
That was so awful I tried again. Notably it claims to be ‘Better Quality’ which is a bit of a joke. The focus is perhaps a little better, but it’s still terrible. The DuckDuckDuck 2.0 trailer was considerably better, and around the same time I also helped out with the Burnball trailer.

Then there were various Chopper 2 videos, one of which has been viewed over 100,000 times now, and now I have just completed the Chopper 2 trailer:

So I’ve been through 3 video cameras, a bunch of different techniques and a few terrible videos, and thought I would share a few things I have learned and techniques that were used to film and produce the Chopper 2 trailer.

So first up, the camera is very important. Chopper 2 uses a Canon 7D digital SLR. Previously I had used consumer level video cameras, with the DuckDuckDuck 2.0 trailer as well as the Chopper 2 bluetooth video being shot with a Sony HDR-SR11. This was OK, though I just wasn’t quite happy enough with the quality I was getting. White balance always seemed to be a problem, and even when it was in focus it always seemed a bit blurry.

I bought the Canon 7D for the explicit purpose of filming the Chopper 2 trailer, and as such I was not very familiar with it, but found I got pretty good results very quickly. Focus was again an issue, which I’ll get to later, but white balance wasn’t a problem and overall setup was quick and I’m happy with the results.

Whatever camera you choose, make sure you have manual control over white balance, focus, and exposure. Without any one of these features your video quality will suffer greatly.

Lighting is the next important thing. You need to have well lit hands (none of that silhouette rubbish) and some kind of lit background as well, but without causing reflections on the screen. I have found that the best way to achieve this is to have lights on either side just a bit above the device level, and a lot of black fabric around and above to prevent any reflections from walls or the ceiling. You also have to constantly monitor for reflections of yourself or the camera, which is just one reason why you need two people to do the job. Someone has to monitor the footage as it is being recorded and constantly tell the player/user to move to the center of the shot, get their forehead out of the reflection,  hide the audio out cable, and refocus as needed.

For the lights themselves I am using 6 roughly 50 watt fluorescent energy saver type bulbs. 3 of them came in a mount designed for photography, and provide a slightly yellower light, while the other three I picked up cheap and stuck in some cheap clip on lamps and give a slightly bluer light. I think in general you can get away with this cheaper option, and don’t need to spend a huge amount on lighting gear. Don’t rely on natural light, you need consistency which that cannot provide. And don’t rely on what ever is hanging from your ceiling. Aside from the reflection issue, that just doesn’t provide enough light, and often has a strong yellow cast.

For the background I went down to an art supplies store and bought a $20 roll of what they called ‘Printable banner material’. which was a little glossy, flexible and very white, which suited my goal of having a pure white background nicely. I taped this to a wall, and rolled it down onto the floor, and then my lights on either side pointed slightly down/back to light it up while still providing enough light for the hands.

I also got a tripod with the explicit purpose of filming this trailer. I have had issues in the past trying to play a game comfortably while remaining out of shot, so opted to get a tripod that had a multi-angle central column, allowing me to get the camera over top and look down on the device while I sat comfortably. This was very important, as there was about 8 hours of filming all up, a lot more than there would have been otherwise!

So now on to focus. This is really really hard, especially with tilt controlled games. All iDevices, the iPad in particular are prone to unsightly moire patterns when perfectly in focus. So all shots have to actually be slightly out of focus. It was also impossible to tell sometimes by looking at the LED display on the camera whether the current shot was too in focus or not. Add to this the tendency to slowly change positions, and the huge distance variation introduced by having a tilt controlled game, and you end up with a bit of a nightmare. Much of the footage I got was too blurry, and a lot of it had the moire patterns too. I just came to accept this, aim for slightly out of focus and just shoot 5x as much footage, expecting to chuck away 80% of it for focus reasons. It pays to regularly stop and view the footage on a computer to make sure you’re at least getting some of it right.

What I did find is that the iPhone 4 is much less prone to the moire effect, and on that device it can largely be ignored. I also found that shots taken off to the side at a high angle mean that the area perfectly in focus is pretty small, and it seemed to just generally reduce the effect a lot.

Exposure wasn’t much of an issue. I pretty much set it and left it, though I did have to balance the screen brightness with the exposure to get the background white, and both hands and screen not too light or dark. Notably the screen in the bluetooth video I shot earlier is too dark. Don’t forget to check for that every time you film.

Audio was an interesting problem too. You almost definitely want to record without any music, as you can add that in later, but you will however want to record any sound effects. This introduces the issue of having an audio out cable in the shot, as you definitely don’t want to just let the built in speaker be picked up by the camera mic. I actually took an old pair of iPod earplugs and spliced the cable onto a cable with a 3.5mm plug on the end. I did this because the other cables I could find all had plugs that were too bulky to hold comfortably while trying to conceal the cable. It also had the benefit of looking like proper Apple gear when it did come into shot, and not just some cheapo cable from the corner electronics shop. If you do decide to chop up some earplugs, note that you can just burn off the coating that would otherwise prevent contact with another cable.

So all of the footage in the trailer has this cable plugged in, and my hands or arms are concealing it most of the time. There was one shot where I crudely edited out a cable post production, and there are a couple of shots where you can see it here and there, but it seemed pretty effective. The audio was wired to a Mac and recorded with Quicktime Player. I had tried plugging it into the 7D but the quality was terrible. So I had to sync up the audio later.

Holy crap this is turning into a book. But while I’m on the subject of post production, the footage was compiled and the trailer made in Final Cut Pro. The Majic Jungle Software intro and Chopper/explosion ending were created in Motion. I love both these apps very much. I’ve never used another proper video editing app (and only got Final Cut a few months ago) but found them really intuitive and just really like them. Expensive, but worth it.

The rest of the footage, the text titles, and the full screen game footage at the end was rendered out from Chopper 2 itself. I cannot recommend enough that if you are making an iPhone OpenGL game, make it compile on a Mac too. UIKit stuff could be a bit harder, but for OpenGL it’s dead easy to make it cross platform. Anyway, with my editor I was able to tweak a couple of things, get it rendering to a 1920×1280 FBO, then readpixels and spit out full frame images at 25FPS. Of course I had to record audio too, which was done using SoundFlower and Quicktime Player. Then I compiled the image sequence, synced the audio and had 1080p footage of Chopper 2. I had tried using screen capture programs to do this, but found the ones I used would drop frames frequently even at lower resolutions.

Using the game engine to render the text was an idea I’d had for a long time. I think it’s great to have as much actual game engine footage in a trailer as possible, and personally loath it when trailers are full of pre-rendered footage you’d never see in game. I just don’t see the point.

The music was a quite heavily modified version of the Chopper theme. I always like to match cuts with music beats, so i actually planned out the whole thing to fit evenly into bars, and gave myself a certain number of bars to fit the music into. It was a bit tricky, but pretty effective I think, particularly with the ramping up at the end. All of the music in the trailer and in Chopper 2 was created with Reason, which is another software package I like very much.

So I think that pretty much sums it up. If you’ve made it this far hopefully you’ve learned a thing or two, I sure have over the past few months. Feel free to ask any questions you might have in the comments, I’ll do my best to answer them.









Launch orientation in iOS 4

Written by David Frampton @ 8:46 am, July 8, 2010

This is just a very quick post, showing code I found I needed to deal with the way my app was launched on iOS4. In a nutshell I was finding that iOS4 would launch my app upside down (UIInterfaceOrientationLandscapeLeft) when the iPhone was being held in the UIInterfaceOrientationLandscapeRight orientation. I then wasn’t ever getting notified that the orientation was actually UIInterfaceOrientationLandscapeRight. I’m not sure if this is a common problem, or if it is unique to something strange I am doing, but I am seeing correct behavior on all 3.x iOSs prior to 4.0.

So the code checks for 4.x, checks for an unknown or flat device rotation and then sets the status bar orientation to UIInterfaceOrientationLandscapeRight. Even if the device is actually being held UIInterfaceOrientationLandscapeLeft, the result is fine, as I am then notified of this, and can rotate to landscape left. I call this code in my main UIWindow subclass method, but I imagine doing so in the app delegate should be fine.

I expect this is a bug in iOS 4.0, but the whole orientation system is such a mess I’m not sure what the desired behavior is supposed to be. So it may or may not change in 4.1, but this code shouldn’t cause any particularly nasty behavior if it does.

BOOL isAbove3_2 = NO;
NSString *reqSysVer = @"3.2";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
{
    isAbove3_2 = YES;
}

if(isAbove3_2)
{
    UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
    if(deviceOrientation == UIDeviceOrientationFaceUp || deviceOrientation == UIDeviceOrientationUnknown)
    {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    }
}








Color profiles and pngcrush

Written by David Frampton @ 10:13 pm, May 23, 2010

I’ve wanted to do this blog post for some time, but have been a bit hesitant, because it’s a complicated subject, and I’m not 100% certain on all the details. But I have had enough frustration and learned enough from it that I should be able to pass on some useful knowledge. If I do make a mistake, please point it out in the comments.

So first up, here is the problem. The PNG file format stores color profile information in its header.

What this means is that when you create a PNG, there is a chance that the software you use to create it may store information about the color profile you have your monitor set to, or the settings of your camera, or the settings you are using in Photoshop in the image file itself.

It is particularly worth noting here that different software and different devices will create and store different profile settings. Some won’t store anything. As well as this, different software or devices will also display the image differently. Some will apply all or parts of the embedded profile to the image before displaying it, some will ignore it completely. Notably, when you build for iPhone, the default build procedure completely strips this information from any PNGs.

You might already see the problem here, but I’ll spell it out with an example I encountered just yesterday.

I have a Mac based level editor for Chopper 2. I also have a few custom or 3rd party tools that I use to generate images for the environments. One of these tools created a PNG for the terrain. One of them created a PNG for the sky box. In the editor, they looked great next to each other, the horizon of the terrain matched the horizon of the skybox perfectly. However on an iPhone, the terrain was much darker, producing an ugly contrast.

Why? Because the tool that created the terrain image saved my color profile information, the tool that created the skybox didn’t, the editor observed the profile information, and the iPhone didn’t.
This image shows part of the terrain file, the left side is the original, how it looked in my editor and Photoshop. The right is after running pngcrush and stripping out the color profile information. It is also how the original looked on an iPhone.

This kind of error (and it’s always a little bit different) usually costs me a couple of hours every time it happens, and it happens about once every couple of months or so. It’s frustrating, and I totally blame the fundamentally flawed concept of storing color profile information in files. I understand the intention and theory behind it, but in practice it’s a stupid idea that never properly achieves the desired effect and causes more harm than good.

ANYWAY… luckily I have found a partial solution. There is a tool that strips the color profile information from PNG files during the iPhone build process. When you come across this problem (or if you’re more organized than me, every time you use software to create a PNG file), you can use this tool to pre-strip it. This is the tool and command to strip all color profile information:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -rem alla infile.png outfile.png

Luckily, in my experience anyway, Photoshop will not add color profile information to an existing file, but only when you initially create one. So from that point on it should be safe. I can’t vouch for all other software though. I have seen software that re-applies the profile every load, thus making the image incrementally darker every time I saved and re-opened. Such is the state of affairs with color profiles. Also, unfortunately H .264 movies (and other formats) have all the same issues. I’ve seen Quicktime do some truly horrific things to the colors of my movies, and I have no idea how to tell it to just leave the colors alone.

One note of caution, I believe that pngcrush command may also destructively compress the image. You should probably do it only once if possible, however in practice I’ve never seen any artifacts worth worrying about.









Obligation games

Written by David Frampton @ 12:45 am, May 3, 2010

As a user I have stayed away from all these games. I’ve still never played Farmville, and I didn’t play ‘We Rule’ for ages. I could see what they were about, and knew they were just a drug.

But as a developer, I should have looked at them a lot earlier. I have spent hours over the past few days using We Rule and GodFinger. It has been a real eye opener, so I thought I would share some thoughts on them.

I’m going to call them “obligation games”. I’ve heard the words “social obligation” thrown around about these types of game in the past, and while it does apply, I think the genre is better defined by the word “obligation” alone.

The main obligation is to come back and stay a while. They prey on the deeply rooted human need to care for things so they grow, and to not let things die. Stuff grows quicker if you spend more time in the game, and If you don’t start up the game within a certain period of time, things die.

The user part of me, who gave up smoking a year ago, sees this as another smoking habit. It’s a bit nasty to start with, then once you get the hang of it, you feel unfulfilled without it. At a level below the conscious and reasoning mind, you simply have no choice other than to start up the game to harvest the onions you sowed 1 hour ago. Imagine the horror if those onions went bad. You’d lose like 7 fields worth. And that would be 1050 gold, shit, then I wouldn’t be able to sow another 40 fields of onions.

So you spend hours a day looking after your virtual farm. That is the “killing yourself” part of smoking. You are spending hours a day accomplishing absolutely nothing. That farm will not teach you useful skills, it will not help you to create meaningful new relationships, or put food on the table. The hours a day you spent harvesting virtual onions could in fact have been used in the real world achieving all of the above.

But as a developer, I think it’s brilliant. People are hopeless at seeing the real world. People smoke even though it kills them, they gamble even though they will lose over time, they get insurance even though on average they pay more than they get, and they buy on hire purchase even though in the long run they’ll get less stuff as a result.

It’s perfect. Hook people by praying on their most primitive urges, offering them primal candy and punishing them if they don’t come back when they said they would. Make the gaps between the candy slightly larger each time, so just like a real drug the user plays for longer and longer to search for that elusive first buzz. Then once you’ve got them completely and utterly addicted, start charging them.

I’m sure most people who know me would expect I am about to take the moral high ground here and dismiss the whole obligation game genre as evil.

Well I’m not going to.

People have to take responsibility for their own lives. If you’re an alcoholic gambling smoker with insurance playing ‘We Rule” on your credit-card bought iPad, you deserve the consequences. Now all ngmoco have to do is make the games actually fun (they’ve got the addictive part nailed, but the gameplay is poor), and we’ll all be doomed.









Put links in your lite versions

Written by David Frampton @ 10:15 pm, April 6, 2010

I hope I’m preaching to the converted here, but I made the mistake, so chances are someone else might too.

Chopper Lite has been available for nearly a year now. It is getting between 1000 and 3000 downloads a day, has been for months, and before that it was getting many more.

How many sales does that amount to? I don’t really know. I have seen echo effects in my stats, which suggested maybe 20-50 sales a day or so at various points, but I really don’t know.

But here is the crazy thing. Until just days ago, I had no up-sell in my lite version. Nothing explaining what the full version offered. No links to the full version. The lite version was stand-alone – I assumed people knew what ‘lite’ meant, and would hunt for the full version.

Madness.

This happened because at the time I released it, lite apps were getting rejected all over the place for selling too hard. I decided to err on the (extreme) side of caution, with the intent to add some links in my next feature update. But a feature update never came.

So that’s my lame excuse.

Turns out though, that putting a few links and a sales pitch in the lite version has contributed to a 300-500% increase in sales of the full version. Unfortunately, the same updates that introduced these changes also made Chopper universal, and coincided with the iPad launch, and I cannot fully isolate this effect from the iPad effect.

However, I have seen that in the past 5 days or so just over 10,000 people have clicked on one of these links. That is 10,000 more than before. Hundreds have bought the full version of Chopper as a result, though just how many, I don’t know. And I don’t know how many of those people would have just bought it by searching in the App Store.

But 10,000 clicks! 300-500%! Hundreds! Fuzzy stats that indicate something good!

So that is my pitch to you. If you don’t have links to your full version in all the right places, and some stuff saying what you are missing out on in the lite version, do it. Now. And be sure to use LinkShare when you do it, and add a signature thing to each link so you can see where in your app people are clicking.









Movies are awesome but…

Written by David Frampton @ 9:54 am, March 27, 2010

Movies are awesome to watch in the theatre… but…

Why make all the effort to go to the movies, when you can watch HD Blu-rays at home a little later, only a little worse, and eventually a little cheaper. A PS3 and a decent sound system isn’t far behind.

But I don’t pick up many Blu-rays. They often cost more than the cinemas, and sometimes don’t play without a player update, or take forever to load up. Does anyone understand those insane menus? And DVDs are way cheaper, play on more systems, and are not much worse.

I hardly ever watch DVDs though, they are full of piracy warnings and I have to go to the store to get them. They get scratches and skip or don’t play. iTunes movies on an AppleTV are much more convenient.

But I don’t download many iTunes movies. The selection is crap, and bandwidth charges really add up. The AppleTV has DRM and such too. It’s easier and cheaper to just torrent them.

I don’t torrent much stuff though, it takes forever, uses up my bandwidth and it’s often shit quality. And I worry that my ISP might be watching me.

I’d much rather just go and watch the movie at a decent quality in a theatre.









App Store gifting scam

Written by David Frampton @ 2:13 am, March 26, 2010

UPDATE – I had made the incorrect assumption that apps could be gifted using an account balance loaded from gift cards. This is not the case. Gifted apps require payment by credit card, as kindly pointed out in the comments by Zeno Popovici and verified by myself. I regret the error, and have modified this post accordingly. I would actually go as far as to say without this part of it, it’s no longer really a scam. I’d now call it ‘gaming the system’.

UPDATE 2 – It has now been discovered that gifting does not affect ranks. So the scam doesn’t exist now (it may never have) and I regret doing this whole post. I’ll leave it here however, as a reminder to wait until all the facts are known before ranting about what could be. Lesson learned. Now move along :)

Earlier this week, Apple opened up app ‘gifting’. Anyone can give any app to anyone else as a gift. This has been available for music for a long time, but it has only been applied to apps this week.

So that’s great right? Perhaps, but it opens up the potential for a pretty big scam.

The first thing to note, is that developers will still get 70% of the purchase price of gifted apps. So developers can gift their own apps to anyone, and in the end, only pay 30% of the purchase price to do so.

OK, but why would developers do that? Well, doing bulk giveaways was not possible before. Developers had 50 promo codes per update, and that was it. Now developers can do big giveaways of 1000 apps+.

So why do that? The obvious answer is to gain press and interest. Large scale giveaways attract attention, so for $300, a developer can give away 1000 copies of their app, and lavish in all the attention this creates.

But it gets better. To gift an app, you need the email address of the recipient. This is how Apple knows who to credit the app too. So not only does a developer get hype and press, but 1000 email addresses to stick on their mailing list, and announce new products to.

And it gets better still. At this point, no one is certain of whether gifted apps affect ranks in the top 100s. But unless Apple are displaying an uncharacteristic bout of careful App Store planning, they almost certainly will. So currently, there is a very good chance, that the day a developer gifts those 1000 copies, their app hits the top 100, and gets all the extra eye-balls such a placement receives.

The developer need only sell 300 copies due to the higher top 100 placement, and this little scam has paid for itself.

But wait, there’s more.

Developers needn’t pay full price when they gift their app. Right now in New Zealand you can buy 2x$20 iTunes gift cards for $30. I have heard of similar specials being held in the US at places like Best Buy.

So at 25% off, you’re paying only 5c per 99c app giveaway. And in New Zealand’s case, and no doubt some other locations, you’re paying GST for the card, but not on the app purchase. So apple end up actually paying me around 5c (tax free) every time I gift an app.

So, I get press, a mailing list to spam, a shot at the top 100 with the associated extra sales, and Apple pay me $50 to do it.

FTW!

Except I won’t do it. If it’s not legally wrong, it’s certainly morally wrong. I’m posting this as it is interesting, and perhaps as a warning to Apple, but I hope developers won’t do this. It would make a mockery of the store, and is unfair to Apple, and unfair to honest developers.

Unfortunately, some developers will, and some are already trying it out to some degree.

I just hope Apple close the loophole before this gets out of hand. A limit to the number of gifts you can send per account per month would probably do the trick.









Universal iPad Apps

Written by David Frampton @ 10:03 am, March 24, 2010

As I am writing this blog post, the iPad is less than two weeks from launch. Developers have three days to submit iPad apps if they want them considered for the ‘Grand opening of the iPad App Store’. But us developers are a little unsure on one thing.

To be universal or not to be universal. That is the question.

There are a ridiculous number of apps in the app store, and a decent number of those apps will have native iPad ports available on April the 3rd. Some of them will ask the user to pay for the native iPad version if they already have the iPhone version, some will not.

Some will unfairly demand payment for the same app with twice the pixels. Some will fairly ask for a contribution to the large amount of work involved in tailoring an experience for a uniquely new device.

How developers’ decisions to go universal or not are perceived by the public is currently an unknown. It largely depends on how Apple implement the iPad App Store, and change the iPhone App Store, as well as what other developers decide to do.

But my apps will be universal. Apple are encouraging it, and customers will vocally prefer it.

And though I may halve my sales, I also may double the number of devices I have apps installed on. The maths of this is all a bit beyond me, but a hunch says that the day one iPad users will sell my apps better than anyone else ever will. I want them all, and making my apps universal is a good way to get them.

UPDATE – It has been pointed out to me that Apple are requesting that submissions of universal updates to current apps be left until after April 3rd. See about half way down this page: http://bit.ly/cSmog7 – “Don’t submit a universal app as an update to your existing iPhone app until after iPad ships.”

This sucks, as I’ll be missing out on the launch, but I’ll be going universal anyway, and most of this post still stands. I guess we’ll just see substantially less universal apps at launch.









Ubisoft’s backwards DRM

Written by David Frampton @ 4:21 am, February 18, 2010

Ubisoft recently announced a new digital rights management system for their PC games. Ubisoft publishes Assassin’s Creed 2, and though not yet available on the PC, some reviewers have now received copies of the game.

These pre-release versions use the new DRM system, and early reports are that it’s worse than at first feared.

So what’s the problem? The big technical issue is that the game requires an active internet connection. Not just for multiplayer, or for installation, or even for launching the game, but always. If you unplug the cable or the network goes down, the game actually exits. It even loses some game progress, making you start again at the last checkpoint.

It should be pretty obvious why this is a bad thing. You can’t play the game if your PC isn’t on a network for one, which in the case of my Windows machine, is always true. Perhaps others aren’t as paranoid about XP’s security flaws as I, but it also rules out playing it on most flights, or when out of wifi range on a laptop.

And then there is the whole ‘what if their server goes down’ thing. And the ‘what if they change the DRM later and stop supporting the old one’ thing. Which happens, BTW. Google ‘drm server down’. The internet is littered with such stories. Also, imagine trying to play if your connection is at all unreliable.

I should briefly mention, that as these products are still not released, Ubisoft has a chance to fix things. They’ve made it pretty clear they don’t think anything is broken though. As can be seen in the quote at the bottom of this PC Gamer article.

So until they change their tune, I am boycotting all Ubisoft games, on all platforms. You should too.

This isn’t just about the problem itself, or how it will effect you or me, this is a clear signal from a games publisher that they don’t trust customers, and are quite prepared to offer a lousy experience to prove it.

Don’t believe them when they tell you it will actually solve the piracy problem, either. I’d be surprised if this new DRM wasn’t cracked and rendered useless within a day or two of going live. It won’t stop the pirates at all. It’s just a pointless gesture, pushed on customers without any regard for how it will affect them.

This isn’t good for anyone, and if we let them get away with this behavior now, it will stick around. We’ll see it picked up by other companies too.

So don’t buy Ubisoft games. Buy something from Blizzard, they’re doing it right.









Why I pay for software

Written by David Frampton @ 10:42 pm, February 16, 2010

On twitter recently I mentioned how I had once or twice been in the unfortunate situation of having to use GIMP and/or Inkscape. I also said they are fine if you have nothing else available.

This, of course, led to an amount of outcry from a few people defending these two software packages. It was all very civil, and actually kind of not as vocal as I had expected. But it was there. It’s always there. Then, of course, I was asked to explain what the usability issues are, and to file bug reports.

I don’t want to get into the specifics of what it is that makes me want to throw my computer out the nearest window whenever I have to use these applications.

And not having to explain this, is exactly why I pay for software.

I pay for someone else to tell the people who make it why it sucks. And I pay the people who make it to fix it.

Photoshop might be insanely overpriced, buggy, have an unnecessarily steep learning curve, have no free bug fix updates, an arcane copy protection system…. but at least I don’t have adobe on my back demanding I tell them about it. Or telling me to fix it myself.









Older Posts »