Search Unity

Dark Soul's Style World Messages

Discussion in 'Multiplayer' started by LiberLogic969, Mar 17, 2017.

  1. LiberLogic969

    LiberLogic969

    Joined:
    Jun 29, 2014
    Posts:
    138
    How difficult would a dark souls style messaging system be to implement with Unity Networking? If you are unfamiliar with the system it allows players to place objects into the world with messages created from preset sentence pieces. Other players who are in the same area on their own instance of the game can interact and read these messages.

    I really have no clue where to begin looking into something like this since I have zero experience or knowledge about net coding in general.

    While I'm at it... What about the "Ghost Player" and "Blood Pool" networking functionality that's in the souls series? How difficult is something like that?

    Any tips or suggestions on where I should start would be greatly appreciated :)
     
    Last edited: Mar 17, 2017
  2. voodoo

    voodoo

    Joined:
    Jan 12, 2010
    Posts:
    18
    These would require a centralized server hosted by you. The game should use an HTTP request and fetch formatted message data (XML/JSON would be appropriate for this) from the central database for a particular level, which includes an array of message objects, each with the position/orientation and message text. You would iterate this data and instantiate your messages accordingly. For the 'ghost replays', you would likely want to return binary files encoded in your own manner as text-based formats are inefficient for a large arrays of small data.

    Since you don't have net experience I would postpone this type of feature for later as you will need to learn quite a few things: server-side programming and binary format design are both rather deep subjects and that kind of feature isn't integral to the experience, at least from Dark Souls' design view.

    tl;dr How difficult would it be:
    - Game messages: Not overwhelmingly difficult if you already knew how to do it, quite time-consuming if you need to learn server-side programming, what database options there are and what they are best suited for, and how to manipulate them.
    - Replay/binary data: Complex even if you already know how to do it.
     
    LiberLogic969 likes this.
  3. LiberLogic969

    LiberLogic969

    Joined:
    Jun 29, 2014
    Posts:
    138
    Okay, that makes sense if I understood you correctly. I only have an ELI5 understanding of networking, but I've been planning on diving in for some time now. The only thing that really confuses me is the idea of hosting a server. When I hear that I think of setting up a tower of server hardware in my room lol. Im really hoping that's not what you meant!

    Also, when I mentioned "Ghost player" and "Bloodpool" I didn't mean death replay, since that sounds like a complete pain in the ass. I meant ghost player as in when you can see actively alive players running around in the area you are in for a short duration in a transparent form. The bloodpool thing would just show where someone died, no headache inducing replays involved :p

    Thank you for the advice. I will look into the subject more. Is there any preexisting tech/Unity asset/service that you know of that I could implement to achieve any of these things?
     
  4. DungDajHjep

    DungDajHjep

    Joined:
    Mar 25, 2015
    Posts:
    201
    it's simple . You can do it. Just learn unet basic first
     
  5. voodoo

    voodoo

    Joined:
    Jan 12, 2010
    Posts:
    18
    There are virtual servers you can get for development for around $5/mo. These will typically be running Linux, but there are guides online to get basic dev box/webservers up if you have no Linux experience (but do not use what you get running in production as it will not be secure, you'd want someone with experience to work that out once you have a legitimate product on your hands).
    Yeah, this is what I meant, the ghosts are essentially replays either way, that will need to have sequences of actions serialized into a transmittable form, stored online, distributed back to other players, deserialized and acted from. Each one of these steps is not so trivial to just throw in, and I don't recommend it for a small team.
    Unity can already make and process HTTP requests, and C# is perfectly capable of dealing with binary data (if you wanted to learn how to handle it). Otherwise it is a matter of writing a server with a public API to store and access the data created by players; there are many web server applications and many languages that can be used for this. nginx, lighttpd, Apache, ASP.NET, NodeJS, MySQL, MongoDB are some keywords you can search for to start to get a better idea of the scope of this kind of thing.