Search Unity

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

Discussion in 'Works In Progress - Archive' started by Dan-Stubbs, Mar 27, 2014.

  1. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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
     

    Attached Files:

  2. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    Last edited: Apr 3, 2014
  3. carking1996

    carking1996

    Joined:
    Jun 15, 2010
    Posts:
    2,609
    Looks good. Although the second post's attachments are broken.
     
  4. indiegamemodels

    indiegamemodels

    Joined:
    Jan 25, 2012
    Posts:
    269
    The concept sounds very very very promising!
     
  5. xt-xylophone

    xt-xylophone

    Joined:
    Mar 18, 2013
    Posts:
    14
    How do you managed to sync thousands of npcs over the network? Im guessing they are done in large batches?
     
  6. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.
     
  7. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    Thanks, I've replaced those now.
     
  8. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.

    http://www.gamasutra.com/blogs/DanStubbs/20140402/214565/Dynamic_Narrative_in_The_Hit.php
     
  9. PixelHeadHD

    PixelHeadHD

    Joined:
    Jun 4, 2013
    Posts:
    93
    This looks amazing! Good Job!
     
  10. AgentParsec

    AgentParsec

    Joined:
    May 5, 2012
    Posts:
    403
    This all looks impressive so far. Do you have anyone doing music for this? If not, are you looking?
     
  11. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.
     
  12. xt-xylophone

    xt-xylophone

    Joined:
    Mar 18, 2013
    Posts:
    14
    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?
     
  13. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.
     
  14. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.

    http://imgur.com/a/eWZwn#0
     
  15. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
  16. xt-xylophone

    xt-xylophone

    Joined:
    Mar 18, 2013
    Posts:
    14
    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! :D
     
  17. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    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.

    http://www.indiedb.com/games/the-hit
     
  18. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    The first trailer's live!

     
  19. SmellyDogs

    SmellyDogs

    Joined:
    Jul 16, 2013
    Posts:
    387
    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.
     
  20. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    @SmellyDogs
    This blog post explains how I'm handling the crowds, and I'll have a more detailed explanation up on the site soon: gamasutra.com/blogs/DanStubbs/20140402/214565/Dynamic_Narrative_in_The_Hit.php

    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.
     
  21. Dan-Stubbs

    Dan-Stubbs

    Joined:
    Jul 14, 2010
    Posts:
    46
    Just made this video to show to a friend, and figured it was worth sharing here. Crafting!