Slick Entertainment is a two-man outfit operating in Vancouver, which readers might know as the company that brought popular 2D platform game N to the Xbox 360 alongside Metanet, as N+.
Both of Slick's members used to work for Killzone developer Guerrilla Games in Holland (when it was known as Lost Boys Games), and are currently making a top-down vehicle racer/shooting/demolition game for Xbox Live Arcade. That game is Scrap Metal.
In this interview, conducted after the game had gone to alpha, we discuss the game's network code, damage arbitration, physics system, and even the implementation of 3D using red and blue glasses.
Speaking to Gamasutra, Nick Waanders, the engine coding half of the team, breaks it all down, and shares his thoughts for how to make it as an indie:
Building Scrap Metal
With Scrap Metal, you built your own engine?
Nick Waanders: Yeah, we did. Well, we did development on N+ together with Metanet first, so we had an engine that we could use. We took the base of it, because N+ was 2D and Scrap Metal was 3D, and we had to add our own 3D engine. That's what we worked on. Luckily, Kees, my partner -- my business partner I mean [laughs] -- is the technical artist, so he got a lot of the pipeline setup. I did a lot of the engine programming.
Nice, so it is really just a two-person...
NW: Yeah. The only guy that we also hired is a guy who does music. He's the same guy that did music for Killzone and Killzone 2, so we're really pleased that we can get him. We worked with him at Guerrilla Games, and he was super happy to make our music.
What were the considerations when building or modifying this engine? Are you tailoring it specifically for the platform? Or are you more forward looking with it?
NW: We're trying to not really nail it down to a platform. The way that it's set up is that anything that's platform specific is in only the lower layers. Obviously, when you actually ship on a platform, your code has to be a little bit more specific at certain parts. That's fine. As long as it's contained, then it's fine, right? So, that's what we did. It's C++, so we're not hooked to any system that way.
The rendering engine right now is based on [the 360] tech, but the background can be completely changed and still work. So, if we wanted to port to another system, we could. But right now, because we're only two guys, we have to focus on one system, and that's basically Xbox Live Arcade right now. So, maybe after. If it does well enough and we actually have some money, we might spend it on porting it to other systems.
How has the networking been? You're probably testing it on the test stuff that Microsoft has for XBLA. Some people have found that the test environment and the live environment are not necessarily the same.
NW: Yeah. That was one of the things we also found out with N+. You just don't know what kind of internet connection a person has, right? It's really hard to test for that. They have tools to do tests with it. That's what we're using. We are planning to do some tests with other people that are across the country, in Europe, or whatever, and say, "Hey, download this from Partnernet, and we can do a game and see how it runs." That is going to be one of the struggles because, like I said, we're just two guys. Four-player testing is a little bit hard.
It seems like it necessitates you becoming much more of a code virtuoso because you have to be able to understand networking as well as physics and engine stuff.
NW: Yeah. I remember one time at Relic... I think we either needed a network programmer or the network programmer just left or something like that. So, I got pulled in a room by a lead with another guy -- two other guys, I think -- and he was like, "So, we need somebody to do the network." I was like, "I don't want to do it." And now I have to. You know what? That's kind of also the charm of a small company? You have to do everything, just embrace it, just do it. Actually, I have to say that network programming is fun in a lot of ways, too. It's not just annoying. It's actually fun as well.
We learned a lot from N+. That network system was slightly different. It was more based on online RTS games because that's what I knew from Relic. This one is specifically for racing, so the whole network system is better. It deals a lot better with prediction and that stuff. When you're driving yourself, you don't notice any changes in your car dynamics. It's just the other cars that might be a little bit jumping all over the place, even though we're trying to minimize that, too. It's just a different approach.
You also have physics and real time damage, it looks like. Do you just have specific damage states or is it actually contextual?
NW: The cars are basically built out of I think 12 different parts, and they all have different locations on the car. So, when a car gets damaged, we know which direction it's coming from, so it damages specifically those parts. So, they'll de-color. The shader will make it not as shiny and make it all crumbly looking. And it will deform a little bit. After a certain point, they just fall off. That's when the physics take over.
The reason we did that was actually two-fold. First, it looks good. Second, it's all physics-driven, so we don't have to animate anything. For two people, it really is all about a "where can we cut corners" kind of thing. So, we chose to it that way, and it still looks sweet. It's really two-fold.
Itís your own physics engine, right?
Most games that I play, if ever there's going to be some crazy glitchy stuff, it has to do with physics.
NW: Oh yeah. We had all that. [laughs] Like you said, it's our own physics engine, so when that stuff happens, we can look at what's going on and try and fix it. The other thing is there are multiple ways of doing physics. There's impulse-based physics and there's one that more iterative, which relies on the way you iterate over your contact, and that's the way you work it out. That's the one we use, and it's a little bit more robust and clearly calculates what's going to happen purely theoretically. This is way more like, "Okay, this object is here. What's going to happen?"
Especially in multiplayer, if you get multiple machines working together, stuff can go out of sync, so you want to make sure that your physics engine is super robust and stuff doesn't explode. It was the design choice from the start, but I've done many, many physics engines at previous companies, so I kind of knew that the old way didn't really work. I call it the "old way," but it's not really the old way. It's my old way. [laughs] It didn't really work. So, I switched it to this. It's basically based on the library... I don't know if you really know it? Box 2D? It's just a library, just a 2D box falling down, but it's a really good solid engine. It doesn't explode really fast at all, so it's great. That's exactly what we needed.
When you have multiple players colliding and deforming and stuff like that, how are you determining damage arbitration in multiplayer?
NW: That's interesting because that's where it gets really tricky. Basically, the way it works is you have one car. Your own car is purely controlled by you, and all the stuff that happens to your car is decided by you.
On your local machine?
NW: Yeah. So, if I crash into you, I send you a message saying, "I did this much damage to you." I think we send a message like every half-second or three times a second or something like that. "I did this much damage in this direction or location." You get the message, and it goes, "Oh, okay." And it damages yourself. That's when I see it back. So, it's all locally arbitrated. On a PC, I don't know how we would do it because the PC is a little more tricky when it comes to network traffic. On Xbox, it's all encrypted. So, that's a good thing. We can do that and make it all locally authoritative.
Origins of Slick Entertainment
What did you guys do at Guerrilla? I know you were at Guerrilla, but I don't really know the full extent of your background.
NW: It was actually before Guerrilla was Guerilla. It was Lost Boys Games. We worked on a title called Knights. It never actually saw the light of day unfortunately. Kees was the lead artist, and I was the lead programmer. So it was basically the same as we are now, except now we're a two-person shop. Joris de Man was the music guy. There was like three teams. At one point, they had to cut down. Our team got cancelled, another team was cancelled, and Killzone was the one they went through with.
So, have you been indie ever since?
NW: No, actually I went to Relic. Pretty much when our project got cancelled, I went to Relic and I worked on Homeworld, Dawn of War, The Outfit, and a couple more other titles.
Kees went to Bioware actually. He worked on Mass Effect and Knights of the Old Republic. At one point, a friend of mine gave me a call and was like, "Hey, I need somebody that can develop this Xbox Live Arcade game. You want to do that?" I said, "Well, how am I going to do that?" "Start your own company." I was like, "That sounds good." [laughs] So, I quit and started my own company. That's basically how it started. And by chance, Kees moved to Vancouver. Since I've worked with him, I knew him. So I said, "Hey, do you want to come work at Slick Entertainment?" He was like, "Sure, when can I start?" That's basically how it all started.
What is your plan to market your game as an indie?
NW: We went to PAX, and we put out some blog videos with our faces in it, which is interesting to do. It's quite different than what I expected it to be, but it's fun. We were kind of nervous in the beginning. We're trying to get the hang of it. Yeah, so that's what we're trying to do. It's only a two-person studio, so you don't need a lot of sales. I mean, it's great if it does... The thing is, Xbox Live Arcade gets quite a lot of coverage by itself, so we're super happy that we're on there.
Yeah. I've heard mixed reactions from a lot of developers. It's great because it's a really good platform to get stuff out and people really pay attention to it, but also it's got a lot of frustrating points because it winds up being quite a bit like retail because of placement, and not always being 100 percent in control of your pricing and other things.
NW: That's true. I guess it comes with the platform. It's their platform. They can do what they want. They should, right? As an indie sort of studio, it's always a bit of a nervous time. It's like, "Okay, we have this game. We think it's good. But we want to have it on Xbox Live Arcade." You have to try and sell it to them. That's kind of a nerve-wracking thing, right? That's why we were super happy that they actually picked it up. I was like, "Nice!" you know?
What were your influences with this game? It calls to mind a lot of games of the past, especially European top-down racers.
NW: I was really into Supercars and Supercars II. I really liked those games. Death Rally on the PC was huge. I really liked that game. What was the other game? Oh, Ironman, of course, on the PC. One screen. VGA. Good old stuff. Those are kind of the games that I grew up with. Kees grew up with a few different ones but also the same. When we started this game, it was like, "Okay, what game do we want to make?" Kees said, "Oh, I wouldn't mind like a top-down racer." I said, "That's exactly what I was thinking." We pretty much decided right there. We didn't even need week one meetings like at big companies nowadays. We just decided.
That's good. That's a good way to know you can work well together if you're like, "Well, I guess we both want to make the same thing."
NW: It doesn't make it hard, yeah. [laughs]
It seems like you've done some work to keep it away from the sort of brown that it was in the earlier days.
NW: Yeah. The first video we put out, a lot of people were saying, "We want more color." Partly, I think it's due to the YouTube-style video because the color kind of disappears. There was, we thought, quite a lot of color in the level, but we did put more in, some more bright colors. The downtown track, especially, has all these neon marks everywhere. It looks a little more flashy.
It strikes me as one of the things that is just kind of how the industry is today. Your game is more realistic looking, and so you're playing on tracks that are more brown and have actual dirt.
NW: Yeah. That's like, "How do you make it not brown?" [laughs]
It's a little difficult to get it out of the brown stereotype when you have rusty cars and ground tracks.
NW: Well, we're definitely working on it a lot. We did add some tracks that are basically asphalt tracks, so if you have a dirt car, it might not perform as well. We still have both sides. Asphalt cars will run great on asphalt tracks, and asphalt tracks will look different and have different styles, like the downtown track with all the neon lights. We have sort of a marina where there are like pools around. We're trying to make it a little bit more varied.
Are you using Microsoft for your quality assurance and all that?
NW: Yeah. They're really good. We had a playtest already, and they helped us out lots. We have two control methods in our game right now. One is directional, and one is like an RC car. We only added our RC Controls when we sent it into playtest, and like 50 percent of the people just couldn't drive. We were like, "Okay, this is good." Now we took it and put in a different control method, and we're going to be playing it through a couple more times, I think. We need all the help we can get, so yeah, they're doing a great job.
Red Versus Blue
You also decided to put some 3D into the game. Why did you decide to do that?
NW: I've always been into the whole virtual reality thing. It never really took off. It's kind of a shame. It's so cool, right? My dad is in Holland still, and I'm over here. So, we're sending each other pictures, and we thought, "We should just have 3D pictures." So, he sent me a bunch of those red and blue looking glasses. At one point when I was programming the game and trying to fix bugs, I was like, "I wonder how hard it would be to actually get the red and blue glasses to work with the game." And it actually wasn't that hard. So, I put it in. I thought, "Oh, this is actually quite good."
So, that's why we decided to just leave it in when we brought it to last year PAX to see what people thought. It seems a lot of people are actually picking up on it. A lot of people hate it -- or not a lot -- but some people are just, "Oh, you've got to take that out. That's horrible." Okay. [laughs] You can turn it off. It's just a fun feature to have. Old school games had it. Magic Carpet had it. I don't know if you remember Magic Carpet. You could pick up those little pearls.
Yeah, wasn't it Bullfrog?
NW: Bullfrog, yeah. I was super into that because of the 3D thing. I thought, "This is so cool." A few other games had it, but since then, I've never really seen it anywhere until last year with the Gamma 3D... The guys, Phil Fish from Fez and stuff, organized it, I think. I thought, "Man, that's right. That was so cool. I wonder if we can put that in Scrap Metal to see how it looks." It looked pretty neat, so I figured, "Yeah, why not keep it in?"
The one thing that strikes me is that it's not necessarily needed for this game.
NW: No, not at all.
It's not very 3D or depth-oriented because you have a relatively flat plane.
NW: On some tracks, it does because we have these big light posts and stuff. They kind of come toward you. We thought that was kind of cool. Basically, it's just a render engine feature that we just enabled for the game. We used it in the editor a few times. You can sort of look at a few things. Sometimes you can't really see what's behind the other things, so switch it to anaglyph mode, put your glasses on, and "Oh, okay."
What exactly did the 3D implementation entail?
NW: Well, basically the way it works is, say you have red and cyan. So, cyan is right between green and blue. It's like the polar opposite of the color spectrum. So, one eye basically only sees red, and one eye only sees... Well, not exactly like that.
Basically, there's a filter that you use on your left and right eye image, and that makes them blend together, and only the left eye will see one part, and only the right eye will see one part. So, basically what we do is we render our game out in split screen from two cameras that are slightly apart, looking at the same subject. So, you get your left eye image and your right eye image, and that's what we blend together over on top of each other with the color matrix multiplication, and that's basically it. That's really all there is to it.