The Hit: Multiplayer online FPS with 10,000+ NPCs

The Hit

The Hit is a multiplayer stealth-shooter, set in an open-world city with tens of thousands of NPCs. Track down your target and kill them as quickly and cleanly as possible, before the other players can manage it. Try to stay incognito, or photograph other players and take out hits on them.

Hi guys! I’ve been working on this on and off for over a year, but haven’t been able to talk about it for complicated reasons involving a restrictive NDA and a dodgy backer/business partner (which I absolutely can’t go into). As of this month though, I’m once again solo, totally broke, but able to talk freely about The Hit.

This is something I’ve been planning to make for over 20 years (ever since playing Bullfrog’s Syndicate): an open, city-based multiplayer FPS game, with assassinations, espionage, co-op and PvP gameplay. It’s only recently that technology has caught up to the point where everything I’ve wanted to do has become possible, so I left my job in simulations and training, and started work. I’m close to releasing a video and playable demo, so I wanted to test the waters, and see what you guys think.

The game takes place in an open, endlessly repeating city. I’ve got the city and NPCs working, and it’s already possible to have hundreds of thousands of NPCs running in realtime, and synchronised across a network, though that’s actually too many for the gameplay to work well, so there’ll probably only be tens of thousands of NPCs in-game (I know, I can feel your disappointment from here).

I’m working solidly at the moment to get the video and demo together, but I can’t afford to keep working on the game full-time for much longer, so I’ve started my own Kickstarter-type funding campaign here. It’s a per-feature system, so you can actually influence the development by deciding what I spend my time on. If I can fund the game purely through donations, then I’ll be releasing at least the single-player component for free. If I can figure out how to cover server costs, the entire game may end up being free. But if it doesn’t work, I’ll be doing a regular ol’ Kickstarter soon.

Anyway, please check out the site, where I go into a lot more detail. I’ve also started writing a blog, where I’ve so far talked about the main gameplay loop, and some of my intentions behind the game. I’ll gradually be expanding on that, because I have a hell of a lot of features planned (think in terms of Dwarf Fortress), and some long-term dynamic narrative stuff that I’ll talk about much later. For now, my focus is solely on getting The Hit polished and released.

Hope you like what you see.

Dan

Website
Facebook
Twitter
Email


Looks good. Although the second post’s attachments are broken.

The concept sounds very very very promising!

How do you managed to sync thousands of npcs over the network? Im guessing they are done in large batches?

Actually no, I’m using locally-stored data for the NPC movement, and only synching information about the player’s immediate area. It ends up being a tiny amount of data, which means I can keep the game as fast and fluid as a shooter with no NPCs at all.

Thanks, I’ve replaced those now.

I was going to keep this one quiet until after the game was out, but some awesome industry friends have convinced me to share it now.

This is the real reason I’ve been developing The Hit. Everything above still stands, and for now I’m focusing purely on making the best online stealth-shooter I can, but The Hit came out of a need to create a playable framework which could support, and serve as a testing ground for my theories on dynamic narrative generation. I’m not planning on implementing most of this yet, but I hope you find it interesting.

This looks amazing! Good Job!

This all looks impressive so far. Do you have anyone doing music for this? If not, are you looking?

Hey, thanks. I have had one offer of help, from a very talented composer, but nothing’s set in stone yet. I’m afraid I don’t have any money for music at the moment, and I don’t like asking people to work for free, but I do need a track for a trailer very soon. If you have anything that you wouldn’t mind me using in exchange for a credit, then please message me with a link.

So do the NPCs react to when a player does something? I dont think you can assume that they will react locally the same every time?

There’s something I should probably make clear. I’m more interested in the overall experience than creating a perfect simulation of a city. I’m don’t even think that’s close to being possible on current hardware. But it is possible to create an experience of being in a busy city, using a combination of animation techniques and game AI.

Here’s a secret: In the first prototype of The Hit, I fudged everything. The NPCs were completely random, and only the players and the target were synchronised across the network. At the time, I honestly didn’t think there was any way I could synchonise the NPCs, so I just didn’t bother. But it was still great fun to play. The feeling of being in a living city was convincing enough that the randomness didn’t matter. I was even planning to add in a dedicated fudging system, so that, if one player shot an NPC, all the other players would see an NPC die in roughly the same location. Sure, in purely simulation terms, it’s cheating like hell, but every game that features sentient characters ‘cheats’ in similar ways, and they’re a lot more fun because of it.

Eventually, I managed to figure out a way to synchronise the NPCs, and it’s looking like I’ll be able to have every single NPC in the game synched perfectly across the network. There’ll still be some minor differences due to lag, but Halo, Call of Duty, Team Fortress etc. suffer from the same issues.

Plus, one of the advantages of writing my own system is that I don’t need to assume anything. If I thought it was worth the extra lag it would cause, I could send every NPC’s position across the network every frame. Thankfully, I don’t have to.

Testing out the new crowd spawner. 1,000 NPCs in the first pic, 5,000 in the next two, and 10,000 in the rest.

This is what happens when I don’t get enough sleep. Some planned features, and… dreams
http://thehitgame.co.uk/wp/?p=28

Nice. I have actually been making something on the side of my main project similar to this as well. Not quite as amazing but just to test ideas or play with a friend. The idea of my game was just to blend in with NPCs while each player is given a specific NPC to kill.

My networking solution so far was the AI is calculated locally and the master periodically makes sure they are in the right place so none are synced on the same frame and when a major decision is made like to flee or change target those state changes are sent, usually staggered. Seems to work ok with about 100, havent done any major optimisation attempts yet though since as I said its not my main focus.

But this idea has been floating around in my head for a while, probably not as long as you and Im happy to see someone really taking a stab at it! Hope it works out! :smile:

This is unbelievable. I posted The Hit to IndieDB.com yesterday, and right now it’s at #5 in their top 100. I guess I should get a Kickstarter together as soon as possible.

The first trailer’s live!

Can you post some video of this with metrics?
What’s the approach to handling large crowds (1000+) in a single scene?
On my PC I could render 500 animated entities @ 40FPS in a single scene (all visible at once), that’s with no special methods just animated walking around.

@SmellyDogs
This blog post explains how I’m handling the crowds, and I’ll have a more detailed explanation up on the site soon: Blogs recent news | Game Developer

What metrics are you interested in? There’s 10,000 NPCs at the end (even though you can’t see most of them), but I haven’t got any performance metrics yet.