Dev Blog

Scrap Metal iOS!

03/08/2011

Great news! We passed Apple certification for our Scrap Metal app for the iPad, iPhone and iPod Touch! The game will be available on the App Store on Friday the 11th of March for $2.99, and it will run on all devices that support OpenGL ES2 (iPhone 3GS and up, iPod 3rd generation 32Mb and up, and iPad and up). It supports the Retina display, and Game Center and it is also a universal app, so if you have an iPhone and an iPad, you only need to buy the game once!

Scrap Metal gameplay video

So let’s talk a bit about what we did to make Scrap Metal a great experience on these devices. This is quite a long devblog post, and I should probably have split it up into multiple posts, but alas. I’ll put some screenshots of the iOS version of the game in between the text so it doesn’t seem so long. :) In fact here is one right now:

Blam! first screen-shot intermission

Blam! first screenshot

There are a few obvious differences between iOS devices and the Xbox 360. One is the control method, another is how the game is played, and of course technical differences. First, I’ll talk about the control method.

For the Xbox 360 version of Scrap Metal, we had two modes for steering: directional and remote control. In directional mode you push the stick in the direction you want the car to go, and in remote control mode you steer the car as if it’s a remote control car, so moving the stick left makes the car turn left from its own perspective. When we started on the iOS version of the game, we decided to look at some other games out on the App Store, and noticed that there’s a wide variety of steering methods out there.

The first method we tried was a steering wheel and an accelerate/brake button. We had some friends try it out, it quickly became obvious that it was next to impossible to steer a car around a track without slamming into the walls. So this was a no-go.

The second one we tried was tilting the phone to steer. The car accelerated automatically and you could brake by pressing the screen. This was a little better, but people still had problems getting the car around the track. Still not good enough!

The third and last method we tried was an adaptation of the directional steering controls in the Xbox 360 game. We basically made car drive towards where you point. If you point directly behind the car, the car will backup towards your finger. When we had people try this method, it was instantly clear this was the way to do. It even passed the girlfriend-test!

Pow! second screen-shot intermission

Pow! second screenshot

Ok, so now we had cars driving around, but how were we going to assign all the other buttons of the Xbox 360 controller? We decided to put nitro under a double tap. If the car is driving towards your finger, simply double tap and the car will fire a nitro (if you have nitro’s left, of course). Firing weapons was a bit of a tricky one, but we settled on automatically firing the weapons when there is something in front of you. This meant you could mostly concentrate on steering the car, and you didn’t really have to worry about shooting at the same time.

This ties nicely into the earlier point about how the game is played. For iPhone, iPad and iPod Touch, the general audience seems to be way more casual than for the Xbox 360. People want games to be simple, easy to understand, and quick to pick up. They want to be able to turn the game on for a few minutes while they are waiting for the bus or train for example. This made us look at our controls and our game in an entirely different light. We changed our controls to be as simple as we could make them, and we decided to add a quick-play mode. In quick-play mode, you could simply select a pre-made mission, and you were racing. Very few menus to go through before you are racing, and the mission only lasts for about 2 to 3 minutes. Perfect bite-sized action for your iPhone!

Boom! third screen-shot intermission

Boom! third screenshot

Then we looked at our campaign. The campaign for the Xbox had a few missions that were impossible to finish with the new control method on iPhone. We were struggling with properly getting the campaign to work for a long time. We tested the game over a few weekends, and on the Mondays we’d come in with a long list of bugs and things that needed to be improved. On one particular Monday Kees coined the idea of taking the entire campaign out of the iPhone game. At first I was a bit reluctant, because we had spent so much time creating the campaign in the Xbox version that it felt hard to take it all out. We decided to make a bunch more quick-race missions, and to remove the campaign from the game for the time being. Once we had the quick-races in place, I hooked up the Game Center leaderboards, and we started playing. It was a lot of fun, and we were battling for the top leader-board spots within the first few plays. This felt ‘right’, this is what the iPhone game should be, and Kees was totally right. So we developed it a bit further, and we decided to add four categories of race types: Race, Derby, Survival, and Time Trial. Each of these types has 5 different missions, and each one is hooked up to a separate leaderboard. Game Center Achievements are also hooked up to completing an entire set of mission types with a gold medal. We think this new quick race setup is a big improvement over our campaign based setup.

Wham! menu screen-shot!

Wham! menu screenshot

Now, for those that have been waiting for it, the technical stuff! In the Xbox 360 version of Scrap Metal we made heavy use of deferred rendering. Because even on the Xbox 360 this method is shown to be quite performance critical, we thought this would very likely be too slow on iOS, so we decided to switch to a forward shading method. We baked all our lighting into our textures, and we reduced the polygon counts on our meshes. This made the lighting look good, with the restriction that the lighting is static. This meant we lost the ability to change the lighting per mission, something we regularly did on the Xbox 360 version.

The next problem was the framerate. I thought it was actually running surprisingly fast for a mobile device, around 15 to 20fps, but obviously not fast enough to ship with. So we had to do a few more optimizations. The most notable one was to pack all our textures into texture atlases. We use a 2d-box-packing algorithm that can efficiently pack all the little textures into one giant texture, so we don’t need to switch textures with every draw call. This sped up the game by a few frames per second.

Another optimization was to be smarter with alpha polygons. Alpha blending is a lot slower on iOS devices than on the Xbox 360, so it’s critical to reduce the number of alpha polygons. After reducing the number of alpha polygons the game started to run fast.

Another problem we encountered was excessive loading times. For the Xbox 360 we used to load all data at the start of the game. The data was heavily compressed on disc, so when we read the data, we ran a de-compressor on another thread to unpack the data into memory. We had this running on the iPhone, but it turned out to be extremely slow. Loading times were upwards of 20 seconds, and, more importantly, we were keeping all the data around in memory all the time. Bad idea on a mobile device. So after a bunch of tests, and after reading John Carmack’s blog about Rage, we decided to try the memory-mapped-file method. I made a tool that combined all the data files into one big uncompressed archive, and we memory-mapped this file in the game. This means that we didn’t need to allocate any memory to load data, the system would take care of actually loading the file into the memory addresses we were accessing. This turned out to be a huge improvement. These iOS devices are bloody fast when it comes to streaming! In my test app I sequentially loaded a data-file of 600Mb, and I got average speeds of about 300Mb/s. That’s insane! So our loading times went from 20 seconds to hardly noticeable. We now unload all the game data when in the menus, and we unload all the menu data when we’re in game. The loading screens between these two states had to be artificially padded with a second or two so that it didn’t look like a bug. Seriously awesome. I am planning to use this system a lot more in future games, streaming data is the way to go for these devices.

Kablammo! fifth screen-shot!

Kablammo! fifth screenshot

Now lastly a little note about the ‘universal binary’ as Apple calls it. This means that the same app will run on iPad, iPhone and iPod touch. Every time I bought a game on my iPhone and I had to buy an ‘HD’ version of the game for my iPad for two or three times the price, I felt cheated. So early on we decided that the universal binary was the way to go for our game. Since our user-interface system can handle different aspect ratios (iPhone and iPod touch are 3:2, iPad is 4:3), and most of our game is in 3D, we felt that there was really no reason to be charging more for an HD version when we don’t have to do any work at all to make it HD.

So that’s it, I am done writing what I wanted to write. Let us know what you think of Scrap Metal iOS!

(PS: we’re working on an Android version for all you Android fans!)

Posted by: Under: Scrap Metal Comments: 3

What’s going on at Slick?

11/01/2010

Hello!

It’s been a looong time since our last Dev Blog, so it’s about time to tell you guys what we’re up to!

After the release of Scrap Metal (and the many long days before that) we went on a well deserved vacation. About a month later (June) we got back into the office with lots of new ideas for games. Every prototype started off very fast, but then we quickly got stuck after all the technology was implemented. It felt like we had a game-design-block or something! Maybe the reception of Scrap Metal made us weary of trying new ideas? Maybe we were trying to force coming up with new games? It seemed the best thing to do was to relax a bit, and concentrate on something we felt comfortable doing. We decided to split our time between porting Scrap Metal to the iPhone/iPod Touch/iPad for a few days a week, and continuing with new prototypes for the rest of the week. This way, there isn’t as much pressure on coming up with a new game, and it also allows us to think about the prototype for a few days before continuing with its implementation. So far it’s worked out great!

So, a little more about the iOS port. First, I’m absolutely amazed how fast the iPhone/iPod touch and iPad are. A lot of the parts of the game I was sure would be WAY to slow on the iPhone actually turned out to run just fine. Obviously we did have to do a bunch of things to convert the game to the iOS devices.

Scrap Metal was written in C++, so converting the code-base to the GCC compiler proved fairly straightforward. All our tools are in C#, so we’re kind of stuck with half-PC-half-mac development (but that’s ok since SVN works nicely on both operating systems). On the other hand, we don’t need to create entirely new tools for the mac, all I had to create is a tool that grabs all the data and converts it to the format we need in the iOS game. This converter turns out to be really neat: it converts meshes, combines textures into one big texture atlas, optimizes the sound files, and packs everything into big data files that can be loaded quickly.

Simultaneous PC and Mac development.
Simultaneous PC and Mac development (pic taken at home). And, being Dutch, the obligatory glass of milk.

We used deferred lighting on the Xbox 360, so our 3d meshes and lighting were set up for this method. We decided to remove deferred lighting (not to be confused with the deferred rendering in the PowerVR chip), since multiple render targets aren’t supported, and frankly because I had doubts it would be fast enough on the current iOS devices if it were even possible. This meant a lot of work for Kees, because the lighting had to baked into the textures, so he needed to unwrap the meshes (a task he *loves* :) ), create the lightmaps and merge them with the textures. We also felt we needed to reduce the triangle-count on all our meshes to fit on iOS devices. Luckily Kees is very experiences in these kinds of things, so we have it running quite nicely now! We are at about 30fps, but when there are lots of moving physics objects it tends to slow down quite a bit, so this is something we need to optimize still. I’m still trying to get over the shock that these tiny devices are able to handle this game!

Now, on to control methods. This is probably the biggest difference between the Xbox 360 and the iOS platforms besides CPU/GPU power. We tried and threw out a few different control methods. The first one we tried had a little steering wheel at the bottom of the screen, and an accelerate and brake button. This was ok, but not quite as easy as we had hoped. People playing the game were all over the place, crashing into the walls. Everybody had trouble keeping the car under control. The second one was using the accelerator to steer. For this to work we had to put the camera behind the car. This was somewhat better, but people were still all over the place. The third method we tried was simply driving the car towards your finger on the screen. This instantly felt like the proper way to go, and some usability testing confirmed this. We’re sticking with this control method for sure. Also, we can keep our current camera view, which means we don’t have to change any art to allow the camera to be behind the car (such as the backs of certain buildings, which we don’t have at the moment)

We don’t have a release date for the iPhone/iPad version yet, we still have a lot of work to do. It’ll be released when it’s done! :)

– Nick

Posted by: Under: Scrap Metal Comments: 1

Neoseeker preview + X10

02/13/2010

Many thanks to Adrian for stopping by the studio! Here’s a link to the Scrap Metal preview on Neoseeker. We were so excited about certification when he stopped by, we were feeling a little goofy.

Bike in 3D!

It’s great to see the game getting amazing support at events like yesterday’s X10 and from sites like Neoseeker. We’re in the home stretch to launching the game in March – can’t wait.

Posted by: Under: Scrap Metal,Slick Entertainment Comments: 2

Scrap Metal Races through Certification

01/29/2010

We are happy to announce that, after two years of development, Scrap Metal has passed Certification for Xbox LIVE Arcade!
Instead of sitting around waiting for the certification reports, we decided it was about time to leave our trusty desks, exit the Slick Entertainment office entirely and go climb a mountain. Yes, you read that right…

Cert is Done!

We took this picture at the top in anticipation of passing Certification successfully and luckily, we were right. :) Scrap Metal passed certification on the first try and we are on track for a Spring 2010 release, so look for even more great news soon!

Posted by: Under: Scrap Metal Comments: 10

Anaglyph Rendering Reloaded

01/07/2010

Hi everybody. We’re in the home stretch! Finishing Scrap Metal™ has been an incredible amount of work for the two of us, which explains the limited dev blog posts. But, since the game is being shown at this year’s CES, highlighting the 3D feature we put in the game as a cool extra, I figured it might be cool to explain how it actually works.

To make it really simple, the way a human being perceives depth in an object is by looking at it with both eyes. One eye will see the object from a slightly different angle than the other, which allows your brain to triangulate the points you’re looking at. This allows your brain to see the 3D shape. Of course, there are other clues that your brain uses to get a full grasp of whatever is going on around you, but this is the main factor. So, if you artificially cause your left and right eye to see slightly different images in a game, you can fool your brain into thinking that there’s actual 3D information on the screen.

There are many different ways of displaying 3D images. There are full-on 3D television sets now, but they are still quite expensive. Another method is using polarizing glasses, which is used in the 3D movies you can watch in the cinema nowadays. These systems are extremely high quality, but also very expensive still.
One more method that is more accessible to most gamers is anaglyphic rendering. This method uses colored lenses to filter out certain colors for your left or right eye. In fact, you’ve probably seen the glasses you need to use for this method – they are the ones that are red in one eye, and cyan (blue-ish) in the other.

On a TV and computer monitor, colors are displayed by mixing red, green and blue pixels. Now, the anaglyphic glasses filter out the colors so that the red pixels are only visible to your left eye, and the green and blue pixels are only visible to your right eye (Green + Blue = Cyan!). This is the key to displaying the game in 3D! We need to render the game scene from two different camera points, one for the left eye, and one for the right eye, and then mix these two images together so that the left image only affects the red pixels of the final image, and the right image only affects the green and blue pixels of the final image. This image may make things a bit more clear:

Anaglyph Example

I got the idea for adding in the 3D feature to Scrap Metal™ because I had a pair of anaglyph glasses lying around the house that came with a 3d DVD movie. I picked them up and took them into the office and the rest is history.
3D_Glasses
So, if you have a pair of 3D glasses on hand, want to buy some from one of several online stores, or if you’re at CES, you can pick some up at our display at the Microsoft Booth, you’ll love this feature of Scrap Metal™. Here are a few more 3D screenshots to check out (if you have anaglyphic glasses of course)!

3DScreenshotLink13DScreenshotLink23DScreenshotLink3

Click on the thumbnail to view the full image!

Ok, that’s it for now! If you want to hear more about this and other features as we ramp up for launch, subscribe to our Twitter feed (http://twitter.com/scrapmetalgame) to get the latest updates.

– Nick

Posted by: Under: Scrap Metal Comments: 3

Follow us!

titlebutton_twitter titlebutton_facebook titlebutton_youtube titlebutton_twitch

Join our mailing list!

/ /

Dev Blog

October 29 2014

Welcome back followers of the fearsome! This week we have a quick post about some of the thoughts that went into the art of the base potion flasks! When we have to design things that get incrementally better it’s sometimes pretty tricky to get the looks right. You always want the stuff to look appealing […]