My second play test

I had my second play test today, and it was a LOT more fun. It was the same four of us as last time except that I was paired with Aaron versus Matt and Gordon. Aaron came by my desk before the match started to remind me to do research during the game. I definitely remembered this time.

We played our match on the map I used for the screen shot I posted. It is a fairly large map, so I decided to go full on air and played as UEF. I started out by building a mass extractor, power generator, and an air factory. I then built on the other 2 mass spots in my base, another air factory and then sent an engineer out to build on 2 more mass spots near my base. I built a few fighters and started scouting around to see what was up. I built a few bombers and went after one of Gordon's mass extractors. Unfortunately he had it protected with mobile AA and a couple AA defense so I backed off. I built a third air factory and a radar station.

I put my air factories on repeat build building 1 fighter and 2 gunships and start to mass up a group to do some hunting. I also put some defenses in my main base and a bit around my outlying mass extractors. Once I have about 14 or so gunships and about 8 fighters I go after the mass spot I backed off from before. I blow up his mass extractor and pull my gunships out as his fighters head in. He did not chase me. He rebuilt the mass extractor so I grabbed some more gunships and fighters, bound the groups to keys, and went after mass extractor again.

I sent in my gunships first and started wreaking havoc, taking out the mass extractor first. He brought in his fighter again, but my fighters intercepted them first. He took out a chunk of my fighting group, but I came out on top. I grabbed some more units, formed them up, and went after another mass extractor. This time I didn't meet any resistance.

Since I didn't meet any resistance I decided to move in on his main base. I kept my fighters out of AA range and only sent them in to take out the fighters that Matt was sending in to help defend Gordon. I sent my gunships after his mass extractors first, then his power generators, and then went after his factories. I was mopping up the rest of his units when he decided to control-k his ACU in an attempt to take out my gunships to save Matt from the same fate. Unfortunately, the game desynced at that point (still alpha, so it happens). Total game time: about 18 minutes.

I have said it a few times, but I will reiterate it here; the new economy does not affect the gameplay at all. It is just as fast paced as Forged Alliance, if not more. The match we had was incredibly fun now that I have research down. Can't wait to play again next Friday.

I'll never use that in real life

I know I am not the only one that said "I'll never use that in real life" in my math class. Boy was I wrong. I got the opportunity to work on another really cool feature for Supreme Commander 2 today, but it required some math that I have never had to use before. It makes me wish I had focused more on math in high school. I've had to learn about vectors, quaternions, and matrices, and a heap of other stuff.

The most recent example of this was doing Oculus' Ball Lightning. Up until Wednesday Oculus' Ball Lightning would appear below him when summoned. This just looked sloppy and quite stupid. So, Wednesday morning I went in and changed it so that the Ball Lightning spawns in front of him, no matter what direction he is facing. This part wasn't difficult. What took some doing was making it so that the Ball Lightning (trying really hard not to type Balls, btw) would spawn in a row instead of all on top of each other. There was no function available to lua to do that, so I had to create a function in code callable from lua to get a vector cross product. Works great.

The 1.2 patch for Demigod was completed Wednesday. Stardock just needs to update impulse to support DLC before they can release the patch. Apparently, they also want to run a beta before releasing 1.2 to the general public. The delay is a good thing because it gives Patrick a chance to track down the desync on player disconnect issue before 1.2 is released. I have the utmost confidence that he will be able to track it down.

There has been some work recently on more screen shots of the game, so hopefully those make it out to the public soon. There has been a lot of work lately on the naval side of things and I am sure the fans will be quite pleased. I just wish I could post more details about it. My most recent SupCom 2 project was a blast. I had damn near every member of the team come by to check out my work today, including Chris Taylor. I can't wait for the supporting effects to go in, it will look awesome.

Cautiously optimistic

As promised I took some time out today to talk to Patrick, our multiplayer engineer, about the frozen connectivity screen. Unfortunately he didn't have the time to put more effort into trying to repro the issue(he had put in a lot already, but we don't have a testing team so it is hard to test), so I had him tell me where I should look in the code. After a while of stepping over code in my head I found an oddity. After going over it with Patrick we think we have found the source of the issue and, as a bonus, it may be related to the desync problem.

A while back Stardock had us make a couple significant changes. One, we removed the in-game kick voting system and replaced it with an automatic kick handler. Two, we removed the desync window and added the Invalid Game State system the ends the game if a desync is detected. I think when these two items were added something was missed and now if a player DCs (loses connectivity to one or more players) they get kicked, but the kick handler doesn't get called. This causes the game to freeze until the game has a reason to try and activate the kick handler again (like someone else leaving the game).

The desync is another matter, but is related. Our working theory is that Impulse is either closing the socket and/or sending the game garbage data for a player. Currently, this should cause another endless connectivity screen, but it may cause a state where some players have the DCd player as a human and some have them as an AI, which would cause a desync.

We are going to try to set up some tests tomorrow, but it isn't something easily tested without a dedicated testing team, so no guarantees that this works. We are pretty confident we have the endless connectivity screen issue figured out, but not sure about the desync issue.

Now, for some SupCom 2 news.

Disclaimer: The following statements are in no way a set of system requirements for Supreme Commander 2 and should not be taken as such.

Lots of people have been asking about the requirements for SupCom2, so I decided to run a quick test (needed to test pathfinding anyway). I spawned in 500 bots (with Fog of War on) and told them to move, all at once, to a place where they would have to go around some rocks and up a few ramps. I was able to maintain between 25 and 30 fps (zoomed in) and a sim speed of +9 without and issue. This is on a Core 2 Duo 6600 and 2 gigs of ram. This was on a release build and there still some optimizations to be done. Not sure how Forged Alliance would handle that. Again, the disclaimer above applies.

Birth of a Demigod, part 3

This is the third and final part of a multi-part series that I am writing to give people an idea of what actually goes into the creation of a demigod.

Once the animations are finalized and in-game (and just before effects go in) another pass needs to be done to make sure each demigod's abilities are timed to the animations. This involves scaling the animation to to fit the ability. For example, for Demon Assassins Spine Attack the animation had to be scaled so that Demon Assassin's tail was in the right position just as the cast time finished and the actual ability function started. The ability function also had to be changed so that the projectile was spawned into the game world at the tip of Demon Assassin's tail. This kind of scaling and adjusting has to be done for each ability to make sure everything looks right.

Next on the list is icons. We need icons for each unique ability the demigod possesses, an icon for the game lobby, an icon for the demigod chooser screen, and an icon for the in-game scoreboard. Each of these icons needs to be created, have alpha layers applied,and be converted to the proper format. After they are in the right location they need to be referenced in each demigod's blueprint so the game knows where to find them.

Once all the icons are in place and they are tested to be working we need to add each demigod's lobby movie. Each movie is essentially a scene rendering in either Maya or 3D Studio (not sure which was used) that has a transparent background. This rendering is then converted to a .bik file which is referenced in each demigod's blueprint. Each demigod also needs a victory movie.

Once that is all done, or mostly done, we book time with a voice actor to do the voice overs for each demigod. The sound studio is on the other side of the building, so I not sure how that process works exactly. I imagine the voice actor is given a script of phrases to speak into a microphone and an idea of what kind of voice we are going for. I'll see if I can get more info from our sound guy.

Lastly, we have a hefty amount of play testing to make sure the demigods play like they are supposed to. We have to insure that the abilities work right, that they are balanced, that their animations and effects work properly, and that sounds and such are firing off properly. We also have to get someone to translate all of the new strings so that we can localize them for foreign languages.

This is it for part 3 and the Birth of a Demigod series. I hope this gives you some insight into the amount of work that goes into making a demigod.

The game is actually fun

I got my first play test in today and I have to say the game is fun. It was me and Matt versus Gordon and Aaron. I didn't end up doing all that well for 2 reasons. 1) I started out playing like it was Forged Alliance and I built too many factories and 2) I neglected my research.

I didn't really notice a difference playing with the new economy. Queuing was a bit of a hassle if I didn't have the resources, but I hope that gets changed a bit. Creating hordes of units was just as easy with the new economy as it was with the old. You queue up the units you want built and turn on repeat build, not hard. The factories build quite a bit faster than in Forged Alliance so the games pace is really nice.

I got assigned to Demigod again today to add in the Demigod lobby movies and add a few new features for the next patch. I hope to set aside some more time Monday to see if I can repro that desync bug. If I can't repro it I'll just have to hope Spooky and his friends can.

Supreme Commander 2 development is in high gear. We have another milestone deadline approaching and there is still a lot of work to get done. There has been a lot of performance optimizations going in lately so the game is running really smooth now. The game I played today was on a release build (not as optimized as a retail build) and there were only a few hiccups.

Some of the new features going in make me wish I could go add them to Forged Alliance. Overall, I think a lot of the people whining and moaning about the game are going to be in for a nice surprise, if they even bother to take a look at the game. The team has been hard at work fixing a lot of the things the fans have been clamoring for. Don;t get me wrong, there is still a lot of work to be done and fans will have to get used to the new economy system (not that hard, seriously), get used to research (again, not that hard), but with the new features going in and the engine optimizations I think the fans will be in for a seriously fun game.

I have been getting question about the missing screen shot. Well, I was given permission to post the screen shot a little too early it seems. Apparently Square Enix saw the screen shot posted on the Gas Powered Games forums and followed it back here, although I am not sure how. So, I got asked to take the screen shot down. No big deal, at least you guys got to see it before it was taken down.

If anyone is curious what are office looks like there is an intel video up with brief glimpses of our work area. You can see some of the team, including me. It is more of an advertisement for intel, but there is some gameplay footage as well. Might be worth a look: http://cariplus.co.cc/2009/10/intel-ssd-gas-powered-games/

Birth of a Demigod, part 2

This is the second of a multi-part series that I am writing to give people an idea of what actually goes into the creation of a demigod.

At this point, most of the work is in Shana's capable hands. She is responsible for editing the abilities so they are balanced and to make sure they function as advertised. She also makes sure that the abilities in work for that demigod. If any problems arise in functionality or if she wants an ability to work differently she lets me know so I can code in the necessary fixes or changes. She also re-organizes up the skill tree for each demigod.

During this process work has been getting done on each demigod's model and animations. After the models were completed, along with a few of the animations, it was my job to set up the animation state machine. The state machine tells the game what animation to play when the demigod performs certain actions like running, attacking, casting, and any special abilities the demigod possesses. The state machine also tells the game what sounds to play during those animations and at what point. It also houses information about model scale and meshes. Since we don't have sounds or meshes yet I comment that stuff out for now.

One the initial state machine is set up for each demigod and the animations check out my work on the new demigods is done for a little while, unless some ability bug crops up or something. Our modelers, animators, and artists continue to work on getting the animations finished an in the state machine and getting meshes done and in-game. Once an ability's animation is in-game the ability blueprint also has to be changed to reference that animation.

At this point sounds also start making it into the game. Sounds for things like getting hit and attacking. Also, some placeholders for VOs and such can also be added in. There also needs to be sounds for casting and sounds for each special ability.

After my short break once I had the state machines in place it was time to go back and add in the achievements for each of the new demigods. The achievement information for each demigod is stored in a file that tells the game the name of the achievement, which demigod's achievement it is, and the conditions for the achievement. I also had to alter some of the other demigod's achievements that required you to do something to every demigod in the game so that they referenced the new demigods as well. I also had to change the tracking system a bit so that it tracked things needed for the new achievements.

Once all of the animations are in place and the abilities are solid it is time for the effects guys to do their magic. We had two guys, Matt and Gordon, working on the effects for the two new Demigods. They made a competition out of it. They each took a demigod and did the best job they could with the effects and played against each other to show them off. Unfortunately, there was a problem with Demon Assassin's Warp Area ability, which I detailed in an earlier post, that caused the match to be a little one-sided. The good news is the effects turned out quite nice.

This is it for part 2. Part 3 to come soon.

Another Demigod bug bites the dust

Well, I am fairly certain I was able to fix the problem with using an ability against an enemy and then having your hero stop to attack the nearest thing. Monday I will try to take a look at why some abilities cancel abilities in progress and some don't. Hopefully I can get the time to track that down, but no guarantees. I still have a lot of tasks on my plate for SupCom 2.

Looks like I am going to start assisting on the AI here in the next week or so. I am going to start play testing to get a feel for it before I start working on the AI. Not sure yet what I am going to be doing exactly, but I like working on AI so I am sure I will enjoy whatever AI work comes my way.

I am excited to get a chance to play the game. There is so much work to be done that to stop and play the game just feels wrong. I guess that is a feeling I am going to have to get over. Playing the game is part of my job and I just have to adjust my mindset to accept that fact; it isn't playing, it is work. It just happens to be fun work.

I have to say, this is the first job I have had where I actually look forward to working. Don't get me wrong, all things equal, I would rather be home with the family. But, if I have to have a job to go to, this is it. I think a lot of the people that work at GPG have the same mindset, and it shows.

Some really interesting features went in this week to make the game even less micro intensive and to make the end game battles more epic. The main focus of this project has been making things more about battles, less about micro, and I think it works. I will get a better idea in the next week or so during play tests and give you my opinion.

Changing the game - one piece of code at a time

One thing I really love about this job is I get to go into the code a fix some of the things that really bugged me about Forged Alliance. Hopefully during this milestone I will get an opportunity to improve even more things.

The effects for the new demigods are finally in and they look awesome. The ability icons also made it in today. One of our artists got them together this morning and I got the lovely task of going through them all and setting up alpha channels, making them look more button-like, exporting them as .dds files, and then fixing the blueprint and ability files to point to the new icons. It was actually kind of fun getting to do something completely different.

I also got a chance to tweak a few more things. I unintentionally made Demon Assassins Warp Area way overpowered yesterday. If you used it with only one target in range that target would get hit for every warp. Now there is a maximum number of times a singe target can be hit. I also put the finishing touches on Occulus' Blast Off ability. I definitely think Demon Assassin is more fun to play, but I'm not a General person. If you like Generals, Occulus will be more your style.

I have been trying to hunt down every bug I can for 1.2, but a some of the ones that have been reported recently I just can't repro. The main one I tried to hunt down today was the report of a desync that was "99.9% reproducible" by having one team control the map. I had the game running and creating a desync log every tick so that I could track down exactly what was desyncing, but I could not reproduce that bug. If I get time tomorrow I think I am going to take a look at the weapon targeting code and see what I can do about the demigods auto attacking nearby stuff when you want them to attack something else.

Now, for the news you have been waiting for. My screen shot got approved today. Keep in mind, the game is still in alpha stage, so what you see here can (and probably will) change. Enjoy.

Image removed at the request of
Square Enix

Birth of a Demigod, part 1

This is the first of a multi-part series that I am writing to give people an idea of what actually goes into the creation of a demigod.

My first task after being hired by Gas Powered Games was to set up the new demigods. This is definitely a lot more work than I expected and over a far greater time than I had anticipated. The normal starting point would be creating the concept for each demigod. The concepts for Demon Assassin and Occulus were already done before I got there, so I can't comment on that phase.

The first thing I had to do was create the blueprint for each new demigod. Basically, I just copied over Regulus' blueprint as template and edited it from there. The main focus for the first pass was making sure the categories were correct and that the weapon was set up properly. No detail at this point, just the basics. I also had to use Regulus' model in-game as a stand in for Demon Assassin since no model existed for him at this point. For Occulus, there was a very basic model. It basically looked like a golden Buddha statue.

Next, I had to code all of the abilities. For an active ability there is a blueprint for each level of the ability that lists things like how much damage the ability does, what the ability can target, cool down, cast time, etc. Inside that blueprint we can add ability specific stuff like how many target Oculus' chain lightning can hit. Each one of those blueprints use a single function to actually perform the ability. The function handles setting up emitters, beam effects, impact effects, and dealing damage. Also, there needs to be a buff blueprint for any buffs that are applied, any kicker abilities there may be, and any debuffs that are applied. Coding and testing abilities was probably the longest part of the demigod creation process for me.

To actually get the abilities in game I had to create a skill tree for both demigods. This tells the game what abilities are available for the demigod and at what level. It also tells the game how to display the skill tree in-game. I also had to list the skills in the demigod's blueprint. The skills listed in the blueprint tell the game what the pre-requisites are for each skill and what each skill enables and and disables.

Occulus required a little more work because he is a general. So, I had to create the blueprints for his summonable minions as well. All of the work so far has been using temporary models, temporary effects (if any at all), and temporary values for abilities. The balance person is the one that will go back and put in the actual values for abilities. But, it is fun playing around with an uberly over powered demigod for a while.

One thing I forgot to mention, when wiring up abilities you also have to make sure you do it in such a way that makes them easy to modify. For example, all the values needed to modify chain lightning, from the damage, the number of targets it hits, to the delay between chains, is modifiable in the blueprint. So, if Shana, who is the one that did the balance work on the new demigods, wants to make a modification to chain lightning, she doesn't have to mess with the code. She just has to change a value in the blueprint. This means she doesn't have to track me down to get something changed every time she wants the ability changed a little bit. This makes her job and my job easier.

This is it for part one. Hopefully, I will continue with part 2 next week.

Well, I managed to survive the week. I wont hear whether or not Square Enix approved it until Monday, but I don't think there will be an issue. The game is pretty solid. We had some downtime Friday since we had to lock down the code so we could compile a build for SE. Most people got in some play tome to test the build. A few guys got together and had an hour long slug fest (they turtled a lot).

During the downtime I got some polish work done on Demigod. I think I finally got Occulus' Chain Lightning ability working well. These new demigods are awesome. Demon Assassin is still my favorite, but Occulus is definitely fun. Being able to zap a big group of grunts with lightning is very fun, especially now that it works right. Before, there was a high probably of hitting one or two before the chain stopped.

Looking forward to next week. Should be a bit milder pace and I have made it through all of my priority 1 and 2 bugs.

Essential websites

While working there are some essential websites I have open. I have the basics like gmail and twitter as well as the GPG forums, Demigod forums, Uber Entertainment forums, and my blog page. While coding in c++ there is a lot of downtime. Whenever I make a change I have to rebuild the game so I can test my changes. Building can take 5 or 10 minutes, sometimes longer if I change a header file or if I have to sync with the repository first. During the downtime I take a look at some of the sites to read posts, check email, and view comments.

We also have a web accessible internal bug tracker that I have open. It lists all of the known bugs on all projects. This is where we post any bugs that we find and those bugs get assigned to someone to fix.

The other site that I have found very useful is pandora.com. Most people in the office wear headphones while they work (myself included, now) and listen to some form of music. A lot of people bring in music on iPods or iPhones and either load it onto their machines or listen directly from the player. The music helps me focus. I seem to get more done.

This week has definitely been hectic, but the game is looking more polished by the day. I have gotten a chance to work on some really fun stuff lately. Tomorrow I will spend the morning working on Demigod again. I have to polish a couple skills a bit more now that their effects are in. I think Shana also had a couple more requests for me.

The effects for the new demigods are going in. They are really starting to look nice. Still no idea when they are going to be completely done, but progress is being made.

Our effects guys rock

Coding something and seeing it become part of the game is a whole different experience than coding for a mod. I used to get an incredible sense of gratification when I would finish adding a new feature to the AI or the Lobby Enhancement Mod. Now, not only do I get an even bigger sense, but my co-workers can share in the enthusiasm.

I finished adding a new Cybran ACU weapon upgrade today that I have been waiting to do for a while. Code-wise it was pretty cool. Nothing too complicated, but I have a vision of what it will look in-game, and my vision looks awesome. Now, the thing I like about our effects guys is they get just as excited about doing a really cool effect as I do imagining it.

So, I told the guy that was going to be doing the effect for this new weapon upgrade what I imagined it should look like. I got to see a rough version of the effect before I left work today and it was looking really nice. I can't wait to see the finished product.

Overall the game is looking a lot nicer. It is amazing how much effects can change the feel of the game. Stuff that seemed kind of overlooked in SupCom is getting the royal treatment for SupCom 2.

We really do listen

If you haven't noticed, I updated the site this past weekend. The old site scheme was really bland. I like this one a whole lot better and I hope you do too.

The team working on SupCom 2 is a truly dedicated group of people. I would estimate a quarter to third of the team working on SupCom2 put at least one days of overtime in per week, often more. Now, for those of you who do not know, game developers don't get paid overtime and Gas Powered Games does not normally require overtime. This means when a game developer at GPG works overtime it is because they want to, not because they have too or because they are trying to make some extra money.

The team also listens to fan requests. Today was a great example. I had just finished coding in some more research system support when or lead effects guy (who also does a lot of content engineer work) brought up adding a new feature using the new stuff I had just coded in. The reasoning behind the idea was that it has been a feature requested by the fans since vanilla SupCom that was never implemented. He figured since we have the system set up as part of the new research support, we might as well look into adding this new feature as well. Hopefully it gets the green light tomorrow.

What a way to end the week

We had a company outing to the movies to watch Zombieland. That movie was hilarious. Things have been so hectic this week it was nice to have some down time and laugh.

Next week is the last week of milestone 13. For those of you who do not know, milestones are simply points in the project where certain features are supposed to be in the game and working. At the end of each milestone we create a build of the project and send it to the publisher for approval. The publisher expects the features that are supposed to be included in the milestone to be working. That is why it can get hectic towards the end of a milestone. These last few milestones have been especially hectic because they were really short.

Once the publisher approves a milestone we can breathe a small sigh of relief and continue working on the next milestone. Luckily milestone 14 is about twice as long as 13. Hopefully, for the next project I will get a better understanding of how milestone dates are chosen and such. I came into SupCom 2 too late to get an understanding of how that is determined.

In the midst of all the chaos, I was still able to finish my Demigod work Thursday. Patch 1.2 is really starting to shape up. I can't wait to see the new Demigods after all of their effects are in place. Should be really nice. Demon Assassin is still my favorite.

I expect next week to be just as hectic, if not more so. I also expect some more tasks to be transferred to me from other people's backlogs, since mine is so short at the moment. It is only short because the bulk of the work I have left for milestone 13 is bug hunting. Hopefully, I inherit some more cool projects.