2.28.2010

Problems and Solutions: Halo 3 (Part 1)

Halo 3 is one of the best games of our generation. As indicated by sales and it's still very strong online population, it's a very well-made game and has very fun gameplay. In particular, it's multiplayer is the reason you'd still play it today. For some people, it's the reason they play video games at all. I can't count how many Xbox Live gamertags I see that are Halo related, even when playing other games online.

I've played Halo 3 since the day it came out. I was one of the few nerds that paid in advance and got my copy at midnight.. as if playing the next day offered some sort of disadvantage. I've created groups dedicated to playing some cool custom games on the Halo franchise and Halo 3's settings took it to the next level.

While I have a lot of complaints about the design decisions they made in this game, I'm going to start off by mentioning some great things the game did. Also, be prepared because this post is going to get really long.


  • Saved Films

    These may be keeping the high population of players around more than the average gamer would think. Even in Bungie's VidDoc that came out before the game, they said Saved Films and Forge would hopefully keep people playing this game for years to come.

    Their saved films are flawless in terms of data accuracy. I've never seen something different during the game than showed on the saved films. For years people have always wondered how cool it was if they could record every game they played and go back to watch the awesome stuff that has happened. I, personally, have made 6 youtube videos loaded with cool clips I gathered and edited from games I played. I even launched a website to put film clips and screenshots in direct competition with one another to win prizes. It's truly amazing.

    (Shameless plug: The first of my six videos)

    The unfortunate thing is that it saves a copy of the film according to what happened on that user's system, instead of taking the film from the host's system (which is what really counts and appears much less affected by latency). The files are tiny, too, so transferring these after the game is over would only take a few seconds and I'm sure could be done while other things we going on (considering you can download files from file shares while you're still playing the game with no interruptions).

    I'm sure the way they record films is actually record the stream of events that happens during a game, which is the same information that is sent over a network during an online game. They probably decided that since they had all of that data available, they might as well save it so they could piece together simulated films of the game, synced with a microtime function, while still being able to explore it from every angle. Truly, brilliant.

    I expect this to be mimicked for years to come, and we'll all say "remember when Halo 3 did that before anybody?"


  • Online, 4-player Co-Op Campaign

    Halo 3 was the first game to ever do 4-player, online campaign. Not only that, they added more interactivity with a scoring system, and you can even save your films from the campaign, too.


  • It's Halo... how bad can it be?

    The Halo franchise really defines the online/multiplayer first-person shooter genre of this era. If you make a Halo game and stick to the roots, honestly, how bad can it possibly be? Not to mention, the stats on Bungie.net are probably the most robust stat libraries in video gaming history. There are even other web sites and programs you can download to analyze Halo stats. What other console-based game franchise has ever been able to boast such a huge following just for in-game statistics, where people will leave the device they use to play the game, to another device just to look at numbers? It's crazy, if you think about it.

    They took the ideas they started with Halo:CE and Halo 2 and ran with them.




So, cool! We all agree that Halo 3 is a great game in it's own right. It still has a huge online population and it's basically owned that top spot (or more literally in the top 3 or 4) for the most online players in a console game for about 5 years now.

However, I really can't help myself when I nearly constantly complain about things they easily could have and should have fixed along the way to provide better balance in gameplay. I've had a lot of time to digest this, so here's the first few things I've come up with after all my time of complaining and thinking.




Problem: Re-Spawn Coding

I know, Bungie has addressed this by revealing the exact way they programmed this to get rid of people constantly complaining. But, I'm not here to complain about the way it works, because it works exactly how they programmed it. I'm here to complain about their programming design.

Bungie went out of their way to explain that every spawn point has a score that is calculated based on several factors. As I understand it, those factors are teammate proximity (raising the score), enemy proximity (lowering the score) and a recent death in the area (lowering the score).

When you play it, you'll find that literally about once per game (depending on the settings), you'll either spawn right next to an enemy, they'll spawn right next to you or you'll be under fire the second you spawn. So, you think "This spawning AI doesn't even work!", but the truth is that it's actually working just like it should.

Their problem when programming it is that they assign proximity based on an area from a particular event. Let's say for example (this is not literal) that the effect radius of whatever event that might impact the spawn score is 15 meters. So, within those 15 meters, every spawn point is either negatively or positively affected by that event. It doesn't matter if the spawn is 1 meter or 15 meters from that event.. they both receive the same addition or subtraction to their spawn score based on the event. This is why you see people spawn right in front of you when you know there's a spawn point about 5 meters away that's more covered. Both have the same score.. they just randomly chose two that were equal.

Instead of assigning set area around the event that impacts the score, calculate these scores based on ACTUAL distance. Let's say we're impacting the score based on an enemy's location. Automatically it should assume the spawn that is the furthest from an enemy (at least outside of a particular range.. say 50 meters) is ideal because it'd be calculated with basic arithmetic. This should be the most heavily-weighted factor in spawn score because spawning next to enemies when the other side of the map is open should never, ever happen.

And to save processing power, instead of re-calculating this score every time the screen re-draws (60 times per second.. and I'm not sure if they calculate this frequently), calculate it once per second. To keep up with this, only allow players to spawn ON the second, not exactly however many seconds from when they died. Save processing and keep things accurate.

Also, a tweaking to the weighting on points given based on each event would be helpful, as well as going through the maps and making sure each spawn point exists for a reason, rather than haphazardly throwing them around the map. Spawn points should be concealed, but still in a position that gives neither the person spawned or the enemy an advantage. A bad example of spawn placement is the little nest to the side of the bases on Valhalla.. nothing is over there and it's easy to spawn camp if you have that side of the map controlled. And to make matters worse, they rate teammate presence so heavily in spawn score, if one guy is sitting in that nest, not playing, your entire team will almost always spawn there over and over. Maybe a 4th factor should be included so the same player doesn't keep spawning in the same area many times in a row.

It'd be nice to get rid of territorial spawns in games that don't have a set objective location. Spawn-camping on a map like The Pit is out of control and there's no reason to have territorial spawns in a Slayer game. It practically encourages spawn-camping, and there's nothing less fun in a game like this than spawning in an unsafe area.

Ultimately, spawning will never be perfect because there's a few other factors you can't possibly keep track of within reason, such as which way somebody is looking so nobody will ever be spawned within somebody's field of vision. But, considering I've seen times, even today, where I spawned within breathing distance of an enemy several times, the spawning coding really needs some work.

Implementing a change like this would take just a few minutes from somebody who already knew the layout of the coding. At least leave the programming open so a patch can regulate weighting of events if it needs to be tweaked later.




Problem: The Old Battle Rifle Debate

I'm really not about to take sides on the old Battle Rifle debate. For what it's worth, I've always been a supporter of the less-BR crowd more than anything, but I don't think that it influences my opinion on the matter either way. I'm speaking strictly from a sensible design perspective.

With that said, I believe Bungie uses the Battle Rifle WAY too often. Half of the games in matchmaking are Battle Rifle starts, even on maps where it's not necessary. If it's a huge map like Valhalla, then I have no problem with that. But spawning with Battle Rifles on a map like Midship.. err, I mean Heretic, is nonsensical. It only piles onto the spawning problem against a good team because they'll be on the high ground, firing away at helpless, recently-spawned enemies. Is there really a reason to haphazardly distribute a powerful weapon that can hit anybody from any advantageous point on the map?

It totally kills the depth of the game to almost constantly have to choke down Battle Rifle starts, and it makes nearly every short-range weapon obsolete. There's no bad range for a battle rifle because it's accuracy is so diverse. It also shows up statistically when at the end of most Battle Rifle games, more than half of the kills in the game are with a Battle Rifle.

But, their logic is that people like to use Battle Rifles, and Halo is a competitive game, so do whatever is popular. The solution to that is to separate them more strictly and let people choose what they want to play individually, but that's an entirely new issue.

In reality, a Battle Rifle should be a massive upgrade to your starting weapon because it's the best weapon in the game in terms of versatility and power when everyone on your team has it. It should have relatively scarce ammo and any given map should have no more than four on it.

Why?

Because it adds value to the weapon. It generates a point of interest on the map, and if you limit it, it makes a wider array of weaponry practical to use.

My opinion is that games should be SMG starts for moderately-sized maps, and Carbine starts for large maps (due to it being less accurate and having less ammo). It gives players the freedom to roam and explore, rather than be punished for ever being alone (or spawning alone). Again, I'm not asking the game to cater to my play style, I'm asking for balance and moderation in every aspect of the game. Overpopulating a game with a very powerful weapon kills depth, and by the look of the Bungie forums, it pisses people off, too.

I know, the obvious answer to this is "stick with your teammates.. use teamwork.. shoot better".

In reality, it should be universally accepted that not everyone plays video games to be hardcore and win every time. Most people play games to have fun.

Some people think starting with one of the best weapons in the game is fun. Alright, great! So, make a playlist that caters to those peoples' demands. They can hang out in that list or a variety of lists all they want and they won't complain. Likewise, create other playlists without Battle Rifle starts so people that want balance and diversity (as well as a less competitive environment) can hang out there.

One style of play shouldn't dominate every single list, even if it is the most popular opinion. Different lists should cater to different preferences, rather than step on each others' toes. Otherwise, what's the point of making so many playlists and constantly changing them?




Problem: Needless Changes from Halo 2

Personally, my three favorite weapons in Halo 2 were the Magnum, the Brute Shot, and the Needlers.

The Needlers actually improved from Halo 2 to Halo 3, and they needed to be improved because they were terrible in Halo 2. So, that was a great change.

But the Magnum was awesome in Halo 2. You could fire it as fast as you could press the button. It had moderate power and combining it with any other dual-wielded weapon was great because of the speed and accuracy you'd gain. In Halo 3, they decided to make it a clumsy, inaccurate, weak weapon. In reality, the change didn't need to be made at all. Right now it's basically a less powerful, less accurate, slower version of the Battle Rifle, without a scope. Even paired with another Magnum, it's really hard to win a fight against a Battle Rifle at any range. There's really no reason to ever pick it up, and it has to be the least popular weapon in the game... I never see people using it unless they start with it. Why make the change? There's no reason to.

The same goes for the Brute Shot. In Halo 2, it packed power and it was very unusual. The shots would bounce off any surface before exploding so it made it a weapon that was devastating in the hands a skilled user. It was essentially a weaker, more interesting version of a Rocket Launcher. In Halo 3, it might as well be exactly that.. a Rocket Launcher that can barely kill somebody in a full clip. The shots don't bounce and they don't do as much damage. I can understand the damage argument, but it's not like the Brute Shot was ever an overwhelming weapon in Halo 2. It was a weapon to go for if you needed something to use, much like a Carbine. It wasn't a weapon that controlled the game or was good for several guaranteed kills. There really wasn't a reason to make the change. Now it's a more boring weapon, and people never go out of their way to pick it up.




Problem: Weapon Switching

I can't count how many times I've come to a few weapons on the ground and wanted to pick a certain one up. I'll constantly wrestle and spend time moving around inch by inch in hopes that the one I want will pop up, so I can grab it. I've died many times because I couldn't get the right weapon I wanted.

There's a pretty easy fix for this. Keep in memory the last 4 or 5 weapons the player has dropped in favor of another weapon. The ones that are dropped the most recently should be the last choice among a pile of weapons. So, if I came up to a Magnum and an SMG, and I was holding a Plasma Rifle, and I dropped the Plasma Rifle, that should be the last one it prompts me to pick up if there's more than one possibility. I wouldn't drop that weapon if I didn't want to pick another one up. So, stop prompting me to pick it right back up if I'm already standing over another weapon!




Problem: Veto System and Map Loading

At random, a game setting and map combination is given and players can veto it in favor of another randomly selected game and map combination. The problems are:

1 - You have no idea what game/map combination will come up if the one you see first is vetoed, so voting to veto can either benefit you or backfire based on what you want to play.

Instead of displaying only one, display two different game/map combinations and allow the players to vote on either one or the other. Whichever one has more votes gets selected, and use a random number generator to break a tie. If people don't vote, they don't get an opinion on what they'd rather play. They shouldn't mind, otherwise they would have voted!

Besides, people veto pretty much anything just because they have the power to. Put it to a vote, not a veto, so people can make a more educated decision.

2 - The game and map loads before asking for a veto. What's the point of spending all that time to load something if there's a chance it will need to be unloaded 30 seconds later? It wastes a lot of time while waiting for a game to get set up.

Have the veto or vote done before any loading takes place. Save the time of the players and facilitate a streamlined gaming experience. Finding a game and finally getting to play should take significantly less time than the game itself.

3 - Weighting of randomly selected games are set by an employee at Bungie, when programming could do their job and satisfy people based on what they select.

It's simple. Keep a percentage figure of veto records for each game/map combination on record. Whichever game/map combinations are vetoed more get less of a weighting when they are included for random selection. Let the players indirectly and directly decide what's randomly selected for them to play.




Problem: Network Latency

I really don't notice any difference between Halo 2 and Halo 3's network coding. But, network coding should be simple. It should be sent before any other processing is done so things like framerate issues can't bog down the connections of other players. Still, it's rare to get a 12-16 player game with virtually no latency because I have a feeling it's mixed in the shuffle of processing priorities.

All you'd have to send are basic toggles for visuals' sake (like firing/not firing) which is hardly anything, the player's position and the direction the player is facing. Things like damage dealt should also be sent so it can be processed on the other person's box accordingly, as soon as possible.

Still, this is a pretty minor problem compared to a lot of other games.




This is enough for just one post. It's already ridiculously long, but there are still a few more design decisions that should have been changed with a little critical thinking and a little proactive testing, to make the game better. Part 2 to come soon.

1 comment:

  1. Couple things, first Bungie was not first to have game recordings on console, or first to store game data to record, that goes back to the days of quake and doom. I believe Halo is the first console shooter to record demo's. Secondly, Halo 3's spawning really isn't that bad, yes it could perhaps have been done better, but respawn logic is some the hardest things to do well. It takes a lot of tweeking and a lot of work to get something that doesn't suck. For the BR part, I think the problem isn't the br, but that half the weapons suck compared to everything else. Hell half the stuff I wouldn't drop an AR for, or even bother to pick up if I had no secondary. Basically I think they gimped a lot of the close range stuff because people always complain about it. Also the net code for Halo 3 is not the greatest but net code in games is extremely complicated, annoying, and hard to do. There's only so much it can be optimized and Halo 3 does a fairly good job of it, especially when you take into account that these games aren't being run on dedicated servers. For client as host Halo 3 is actually amazingly good on the net side.

    ReplyDelete