Working as a Game Programmer

VANQUISH

Filed: Community, Games, PlatinumGames, Vanquish

Hello, I’m lead programmer on Vanquish, Kiyohiko Sakata.

It’s been about a month since Vanquish hit the streets; is everyone is having fun with the game?

I wanted to write this blog entry about what it is like to work as a game programmer. I think that people have a vague idea of what game programming is like, as some sort of difficult job where you just write a whole bunch of code that makes the computer work.

Of course, they are right. Most of the job is staring at a computer screen and writing code. If we consider what sort of code gets written, there is a nearly endless list of different types, and in making a game, these stretch from the tools needed for artists to the development environment needed for game designers to create the game itself. There really is code is in every direction.

But to accomplish an endless list of work, you have to establish a set of clear goals. If you try to pour all of your strength into everything at the same time, all you will end up making is some wishy-washy junk, so you have to figure out where to focus your efforts and what challenges you want to step up to. Doing this allows you to create something of incredibly high quality. Also, if you have too many goals, it won’t work out, as many failed projects fail because they either did a poor job of setting the bar or they were simply too ambitious.

We had two goals for Vanquish. One was to make a true-to-form third person shooter. The other was to develop this game as a multiplatform title for PS3 and Xbox 360.

Since we are a company that has created many action games, we didn’t really have a collective knowledge on how to make a TPS, so we approached initial production as an extension of creating an action game. However, we quickly found this wasn’t going to pound out. The way AI works in a shooter is a different beast, so we played all the major titles made overseas as research, read white papers written by foreign developers, and even talked with some of them directly during development of the game. Each individual enemy’s AI is important in the overall scope of a TPS’s AI, but so is situational awareness of the stage and scene that is playing out. To strengthen this, we created a system that gave us minute control over the situations in the game, making the effort put into the tool chain and development on Vanquish far greater than the norm for us.

Of course, the foundation for the AI lies in our core of our action game skills, so while the game is a “real” TPS, you can also enjoy an action-game-esque feeling, which I am proud to say makes our game a fun experience that is probably something that you don’t see elsewhere.

As for multiplatform development on the PS3 and Xbox 360, the most difficult part about making the same game for two platforms is the technical differences between those two pieces of hardware. Both systems have places where they excel and are deficient, and even if you set out to make exactly the same game on both, you may end up developing to the least common denominator and ending up with a mediocre game on both platforms.

This isn’t a problem if you can fit everything you wanted to make into this lowest common denominator, but we wanted to do a lot with Vanquish, and this type of development quickly showed its limits, so we had to make some decisions on how to move forward. We decided to work on the places where the hardware exceled, then we put a huge amount of energy towards compensating for the places where each piece of hardware is lacking, remembering that the most important thing was to maintain the same visual look and feeling to the gameplay.

This was the hardest goal we set for Vanquish, and with the title being our first shot at PS3 development (we had no prior know how in this area), I was honestly worried as to whether the bar was set too high. We had a really talented staff on the game, but even then, we still had to go outside the company to some really talented engineers at SEGA and elsewhere to help us make up for any areas where our technical expertise was lacking. They stayed with us for a few months, and thanks to their help, we were able to finish up production. As a result, we ended up meeting our goals with a very high quality product, and I feel we were able to pass on that product to gamers around the world.

Finally, I wanted to thank each and every one of you who have played Vanquish. For those who haven’t played it yet, you obviously have some interest if you are on this blog, so I really hope you give the game a shot. At the very least, I am confident in recommending the game as something you will not regret playing, so definitely give it a try!

Tagged: , , , , , , , , , , ,

Gorgies: The Reds That Have You Seeing Red

VANQUISH

Filed: Community, Games, PlatinumGames, Vanquish

Hi. I’m Noriyuki Otani, and I programmed the Gorgies, Burns, and friendly forces in Vanquish. I thought I would take the chance and write a blog and shed some light on the Gorgies themselves.

When I was creating the Gorgies, our “grunts”, the thing I paid most attention to was how to make sure that people wouldn’t realize that the Gorgies were actually going easy on them.

Going easy on the player might be the wrong way of putting it…

For example, when Gorgies faced off against the player, even though you would expect otherwise, you couldn’t fire upon them before they spotted and fired upon you. Even people who were used to shooters and great at aiming couldn’t do it. The worst would be trading attacks, and if you weren’t any good you would lose the exchange, which is guaranteed to stress you out. At Mikami-san’s suggestion, I tuned the game so that there is a gap before the Gorgies fire. It seems really simple, and I am sure that teams with tons of shooting game experience have plenty of know-how in this regard, but we started everything from zero, so this was just one of the many examples of us falling back on our tried-and-true method of “crash-and-build” development.

The Vanquish that emerged from all of these trials has tons of little tuning adjustments where the “game goes easy” to make things more fun to play. There aren’t very many places in the game where you will actually notice these things while playing, but every place we’ve put in these tweaks, we consider them as an act of love from us to you.

I hope you give Vanquish a whirl and enjoy the hell out of those bloody robots!

If you don’t want any of our love, you can get a real taste for what the robots can do to you by trying God Hard mode. I took great joy in not only powering them up in lots of different ways, but also making sure to remove their limiter. Even though our friends usually end up scrap metal, it would make me really happy if you give this mode even just a short try to see what the Gorgies are truly capable of.

Tagged: , , , , , , , , ,

The Technology of Bayonetta – Effects

Bayonetta

Filed: Bayonetta, Community, Games, PGTV

Hi everyone. Kenji Saito here once again.

For this entry, I wanted to talk a little bit about the effects engine in Bayonetta.

Our effects designer, Kudo-san, wrote about effects in his previous blog post, but what you probably didn’t know was that the tools he used to create these effects were actually developed in-house. Moreover, these effects can be created from within the engine while manipulating the game in real-time.

It’s a little hard to explain with words, so please take a look at a real-world example of what I mean.

This video shows creating special effects as we control the character.

So why did we create an environment for real-time effects creation? At PlatinumGames, we use a “crash and build” development style, so things are often changing in the design. To match up with that style, as well as to match with the effect designer’s request that we have an environment where they can quickly check the effects they create, we set-up the in-game effects creation engine. This allowed us to give the effects designers the ability to go about their work in a final game scene-like environment, which in turn allowed them to create high-quality effects in a very productive manner.

Tagged: , , , , , , , ,

On Bug Checking

Bayonetta

Filed: Bayonetta, Community, Games, PlatinumGames

Hi everyone. Programmer Kenji Saito here again.

For my second post, I thought I would give some insight into bug checking.

The minute a programmer hears the words bug checking, or debugging, they will launch into a thousand-yard stare. For programmers, it wouldn’t be an exaggeration to say that this is where their work truly begins.

Just for those who don’t understand what bug checking is, let me explain:

Bug checking is the process of fixing the errors caused by miscalculation or faulty design (bugs). Also, depending on the game, bug checking may also include making sure that the game is performing up to specification.

As I mentioned in my previous post, Bayonetta was an incredibly large program to create, which means that it required an incredibly long time and an incredible amount of effort to debug. Once Bayonetta had all of its features in-place and was finished as a game, it took two months to check for bugs. To give you an idea of the people involved, checking included all the members of the development team plus numerous Q&A testers outside of the company, all working approximately 10 hours a day. And the number of bugs… Well, let’s just say there were many.

Then there is another type of bug to rack your brain upon. Kamiya-san likes to change the game design by calling these issues bugs. This type of bug easily falls into the top three things a programmer never wants to hear. By adding things at the very end, it may make the game more fun, but it may also be adding on the number of bugs as well. Decisions have to be made as to whether it can be done, and those tough calls continued on for days and days. Bug checking is soul-crushing work. Really. It is.

But if you don’t work hard at bug checking, you will see issues result in the level of quality of the game, so we regard it as highly important. Bayonetta’s development team worked very hard to pay close attention to the details, whether it was bug checking or otherwise, in order to raise the quality of our game and make something truly special.

Tagged: , , , , , , ,

On Creating Enemies

Bayonetta

Filed: Bayonetta, Community, Games, PlatinumGames

Hello everyone. I’m Don-san, otherwise known as a third-rate programmer. On Bayonetta, I was mainly in charge of the player and enemy character interactions.

Bayonetta was the first project in a while where I once again teamed up with Kamiya-san. Our previous collaboration was on Devil May Cry, where I was first put in charge of player/enemy programming. Back then, I had no understanding of 3D, so I remember drilling myself in the basics of three dimensions. It was also my first time working on a completely original game, so I guess I didn’t really have a grasp on how to make enemies back then.

However, making an original game was incredibly fun, and I remember making lots of things just because. I remember adding things simply because I had a few extra moments – I would change up the grunt enemies, give them new traits, or increase the number of their variations, or I’d increase the variety of swords that would fly around our “rival character.”

I don’t know if it was because they liked me just making things on my own, but after that, I kept getting asked to program the enemies. I guess I chewed through things too fast, but every time I would be placed on a new team, the number of enemies I was in charge of kept growing. On Devil May Cry, I was in charge of maybe 1/3 of the enemies; however, on Resident Evil 4, I was in charge of them all. On God Hand, I was also placed in charge of programming the player as well as all the enemies in the game. With Bayonetta, I handed off a couple of the enemies to some new programmers here, and thus I wasn’t in charge of everything, but I did take care of 95% of things. And of course, I was in charge of Bayonetta herself. Since I’ve been in charge of enemies for something like 10 years now, there are a few things that I pay particular attention to when creating enemies, and I’d like to share them with you.

1) You Don’t Need a Design Doc

When making enemies, one would think that you need a design doc, but in reality, there ends up being so many changes in the end that it doesn’t really make a difference. (Other than setting a direction to work from in the beginning.) So I don’t really ask or depend on a design doc, and instead I talk with those involved to get a good idea of what needs to be done, and then I take over on my own and make the enemy my way. Especially with Kamiya-san, who tends to not be someone who is very specific from the get-go, opting instead to just shoot ideas at you on the fly, you have to be ready to adapt and adjust at all times.

2) You Should Get Things On-Screen ASAP

Making enemies is frequently about trial and error. If you are able to get things moving on-screen at an early stage, you can figure out if you are off-course and get back on track without much damage. One may think that because one hasn’t thought things out entirely before starting that there would be quite a bit of trial and error; however, as the fundamental game design is prone to change, I need to be able to react quickly to these changes. If you are able to get things up and running early, you are able to conduct even more experiments, which are directly linked to increasing the quality of the work.

3) Don’t Make Enemies That Behave Irrationally

For instance, I absolutely hate enemies that automatically evade or counter at the exact moment the player hits the attack button. The player has done nothing ahead of time to warrant it, so I do often wonder what in the hell the enemy is reacting to that he is dodging all of a sudden. I tend to get cold towards things that make me feel like I am fighting against a computer.

When I make an enemy, I treat it as an extension of myself, so if I feel that I myself couldn’t react and dodge in a certain amount of time, I am not going to allow an enemy to do that either. Nor will I ever let an enemy do some sort of attack that can’t be dodged even though the player is reacting to it. I may be an old man, but I’m a pretty hardcore gamer, so I think I’m pretty good at reacting to things.

4) Do Your Best to Avoid Patterns

Making things pattern-based does allow players to create strategies easily, but I think it ends up feeling more like work than fun. Even when you think that a pattern is fun, there is probably something else to it that is making you feel like you are having a good time, don’t you think? If I am making an enemy, I want people to enjoy what I am creating, so I try my best to avoid patterns.

Furthermore, if a player can block, it becomes a hot-bed for patterns or for the kind of passive gameplay that I am not a fan of. When we made God Hand, only the enemies could block, and I often hear that this was unreasonable. However, I feel that if we would have let the player block too, we probably would have ended up with a monotonous game. So to counter, you can Guard Break in God Hand. It wasn’t made to be unreasonable, instead it is an opportunity.

Of course, in Bayonetta, there is no block.

5) Watch Closely and Stealthily How People Play

When you watch someone play, places where you are overdoing it, or places where things aren’t there yet will become clear, and this will become a great reference. However, when being watched, people try to hide their “go-to moves,” so I try to watch them play in secret. (I’m an expert tip-toer.)

If I spy someone on the development team completely stuck in a groove with a go-to move, this is when I secretly work up a counter to their addiction. (Unforgivable, right?)

Just like patterns, go-to moves spoil gameplay by making it a simple work mechanism, so I tend to counter these moves, especially in the case of powerful enemy characters.

Of course, I don’t find it a problem if a user finds a go-to move in a released game and uses it. That is a matter of an individual’s efforts, and I am happy if they work hard to find these techniques. However, if I catch a developer doing this, I can’t let it slide. (This too, is unforgivable!)

That is all I can really think of right now… Well, actually, there are tons of points I can’t tell people, the kind of glib lines about how I want to do this and that; however, if I get in trouble with everyone here for spilling our secrets that would not be fun, so I’ll leave things here.

In Bayonetta, I’ve based things on the points I listed above, and I made it with the intention of having plenty of things to sink your teeth into. Whether it is Bayonetta’s rival, Jeanne, the giant claw wielding Grace and Glory, or the beast-like Fairness and Fearless, I think they are all “walking the walk” so to speak. Even though the game is tough, Bayonetta’s abilities as a player character are great as well, so I hope that as a result you will all be able to experience a new kind of thrilling, high-speed battle!

Tagged: , , , , , , ,

What in the World Does a Programmer Do?

Bayonetta

Filed: Bayonetta, Community, Games, PlatinumGames

Hi everyone. I’m Kenji Saito, the lead programmer on Bayonetta.

I’d really like for all of you to take this opportunity to understand what a Programmer really does, so I thought I would do so by giving you an insight into my work.

Basically, a programmer takes the ideas from the game director and game designers and combines them with the materials (CG, sound effects, etc.) from the artists, sound designers and company, and then “puts together a game.” Programmers are also charged with creating the development environment for the artists and designers. While this isn’t a job that is immediately apparent, I suppose it correct to say programmers are the unsung heroes.

So what does a programmer actually do? To put it in simple terms, he takes the director’s ideas and translates them into a programming language that a computer can understand. How good or bad a translation it becomes is directly related to the programmer’s skill.

However, with a game on the scale of Bayonetta, the amount of translation to be done is incredible. How about we take a look at one of the source code files for Bayonetta?

This is one of the player character source code files, and it weighs in at around 13,000 lines. The whole of Bayonetta is somewhere around 1.8 million lines of code. (That would be about 170,000 printed pages.)

Kamiya-san has filled Bayonetta to the brim with the many things he holds dear. I really hope you all check it out!

Tagged: , , , ,