Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

Question How do solo/small indies handle multiplayer costs and support for Steam games? (e.g. Lethal Company)

Discussion in 'Multiplayer' started by darthdeus, May 12, 2024.

  1. darthdeus

    darthdeus

    Joined:
    Oct 13, 2013
    Posts:
    94
    This may be a bit of a broad question, but https://store.steampowered.com/app/1966720/Lethal_Company/ being made by a single person made me re-think about how I view multiplayer. For a long time I considered it something to be out of scope for a small developer, but as I'm seeing more and more small games be successful I'm starting to ask myself is maybe I'm missing some info here.

    Now to clarify, I do understand that making a multiplayer game is more complex than singleplayer, but also having been programming for 20+ years and making games for almost 10 it almost feels that maybe I could actually do it.

    The thing is, I've always been worried about things like "server costs" and "support". Now I understand, there's many many ways to do multiplayer, and with Unity's ever changing offerings and the asset store, I feel like there's probably things that I'm missing that are useful for small indies.

    Having worked on backend stuff and SAAS startups I feel that doing anything that is maintained by the developer is completely out of the question tho, at least without hiring people, and I can't imagine that everyone who makes a coop multiplayer game on Steam ends up hiring a devops person to look after the servers during weekends?

    I understand there's offerings like Photon and probably the new Unity's multiplayer services (a bit hard to keep up with those), but seeing the pricing on this stuff makes me wonder how any indie would ever ship a multiplayer game and just "see what happens", or how it would work for games that don't end up being successful without turning off the servers.

    Speaking specifically for Steam, it looks like there's a way to get p2p networking for free if I understand correctly? https://partner.steamgames.com/doc/features/multiplayer ... but it's possible I'm missing something here.

    Are there any other options for "free p2p" or in general maintenance-free low/zero cost co-op multiplayer for desktop/Steam games?

    I'd love to for example release a small free game with coop just to try things out, but if that means paying any of these big cloud services that's already way past my budget for such a project. I get the whole "once you start making money you can pay for it", but from the perspective of one person shipping a game and moving on, I'm only really interested in solutions that have about as much maintenance overhead as releasing a singleplayer game (other than fixing bugs of course).
     
  2. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    6,922
    Given that you're an experienced developer and understand that multiplayer is more difficult than singleplayer, and more costly to develop, you're almost there. ;)

    The misconception some developers have, where multiplayer approaches are doomed to fail, are:
    • scoping the game the same way as singleplayer, as in: whatever works in singleplayer got to work in multiplayer too, right? (hint: no)
    • not considering the time it takes to test each feature in multiplayer (simply said: you "enter playmode twice" at a minimum)
    • not considering the costs of multiplayer services, whether its developing them or paying for them - there is no easy solution
    I don't know the game you linked but judging from its trailer I tend to conclude that:
    • coop is a wise choice! It's a whole lot easier to make than competitive multiplayer
      • you don't need to consider players cheating
      • you don't need complicated tech like client-side prediction or server-side rollback to determine, for example, whose shot actually killed the beast?
      • you can pretend each player plays on his own, except the state gets synched to others, which allows for some networking shortcuts like client authoritative movement and client-side physics simulation
    • it seems very simple in terms of interactivity
      • players can walk around, they can grab and hold stuff, and drop it elsewhere
      • players have to combat very, very few enemies at any given time, perhaps not even fight them but rather flee and trick them into traps
      • it's a slow game, lag isn't much of a factor here
    • it supports very few players?
      • it doesn't say anywhere but I guess the typical game session would be 4 players, perhaps at most 6 or 8
      • service costs are likely minimal .. what would that game need? Relay, Matchmaking, Lobby, Server hosting. Maybe voice chat, maybe cloud save. But the game would likely work okay with any of these, or by using the cheapest solutions available (ie steam relay).

    Have you run an actual ROI estimation?

    The Steam multiplayer charts can be very revealing. They're typically like 1 Mio CCU for the top stop (CS:GO) and then half and a quarter million for places 2 and 3. Once you're leaving the top 20 you're looking at several 10k CCUs and past 200 you're hard pressed to find any game even close to 10k CCUs.

    You can rightfully assume your game will not even be in the top 500 yet it would still be a great success for you competing with the likes of Red Dead Online or Tomb Raider, yet your CCU will be just around 1,000.

    You could then plug in those numbers for the services you may need to use and make some best guesses, or use high and low estimates to understand the range you may be within.

    1,000 CCUs from the top of my head I would say you're looking at expenses between $1,000 to $10,000 per month. Here comes the tricky part: optimizing your ROI while the game grows or shrinks.

    Perhaps you can afford to pay 10% of your net sales, perhaps you can find one hotspot and be able to lower that to 5% just by making a simple update to your service usage calls. Or maybe you did not expect how players might play your game and suddenly you're seeing 30% cost because players like to shuffle their inventory items around and you make several service calls per drag & drop operation. It hurts, but it's fixable, perhaps only save the inventory state when it gets closed.

    That's the things that matter in terms of cost, and to some degree user experience. I bet you understand what I'm getting at. You have to not just make the game and publish it, you have to profile and measure everything you can to find ways to optimize its cost structure. Most of that can actually happen before the game goes live though where it doesn't hurt your bottom line as much, if at all.

    Then you'd have to stick to singleplayer. Multiplayer games are always "live service" games unless you leave EVERYTHING to the user by making your game "LAN multiplayer only" or "couch coop/pvp".

    Even for a simple retro multiplayer deathmatch shooter with nothing but relay and matchmaking you do want to observe your ROI, and make optimizations in regards to that. A very successful launch with highly inefficient service use could eat up much of your income, perhaps even lack of liquidity endangering your company. Or planning for a big launch and then seeing only a few dozen players show up.

    Multiplayer is about flexibility and constant monitoring at least during launch and whenever something out of the ordinary happens.
     
  3. darthdeus

    darthdeus

    Joined:
    Oct 13, 2013
    Posts:
    94
    Thanks for the detailed reply, I feel like there might be a category of multiplayer that you missed, or maybe that I'm misunderstanding.

    I understand the part about ROI and cost calculation, but like you said, using a pay-per-CCU service turns this into a "thing that has to be maintained", which puts it outside of what I'd be able to work with. But there's also things which seem to be just relayed P2P without the need to monitor/maintain anything.

    There seems to be an extra option between "LAN multiplayer only" and "live service", which is P2P relay networks. The two examples I know of, but only just discovered is:

    - Steam P2P Networking, (also has matchmaking/lobbies), which from my understanding is a completely free bridge to basically do "LAN over internet" via P2P, completely eliminating servers?
    - Epic P2P, just found this right now, never touched it, seems free
    - Unity Relay, also just found this, doesn't seem to be free

    I almost feel like I must be missing something here. I get that for a competitive game anything like P2P won't work, but lets say we restrict ourselves to non-competitive co-op only, seems like at least Steam's solution should actually eliminate all the parts of the "live service"?

    Looking at the docs for Mirror, they also seem to confirm that Epic's relay is free (2.Player Hosted + Relay/NAT punchthrough) at the bottom. Mirror also has a section on Steam NAT punching & relay.
     
    Last edited: May 13, 2024
  4. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    6,922
    Notice the keyword here: seem. ;)

    It's "Relay". The whole idea of advertising this as "P2P" is completely misleading. The relay IS a server. There is no direct peer to peer connection. It's a peer to relay to peer connection. This may seem nitpicking but I think the differences are important: a) there is more latency due to the additional bidirectional hop and b) the game architecture still remains client-server based.

    If one of these services provides "NAT punchthrough" or "UDP hole punching" then the clients may in fact be able to negotiate a true direct p2p connection. But if this fails the service will likely transparently revert to relay-based connection.

    See, and here is where P2P as a means of two clients talking directly to each other is not the same as P2P in the sense where the game architecture requires that each client has a fully synchronized state of the game and every change made by any player is sent to every other player.

    One is a network layer P2P (direct connections) and the other is the game architecture P2P (every client is authoritative and fully synchronized).

    The P2P game networking architecture has largely faded out of existance beginning with the new millenium due to its numerous issues (cheating, latency for everyone determined by client with highest latency, desynch ends session for everyone, no late joining).


    What you can do in its cheapest form is:
    • allow clients to "host" an online session
    • allow peers to "join" a specific session
    • use a (P2P) Relay service
    You can leave it up to players to, for example, send their friends their IP address or more easily a "relay code" (6-8 characters) they can enter to join a specific session. This bypasses the need for Lobby and Matchmaking. You could add both at a later time.

    The Relay services, if you look at the fine print, may still have limitations. Either you have to start paying past a given threshold or it stops working past a given threshold. There is also the factor of latency. If a relay service is completely free it may come with a much higher latency for most players than a paid-for service which hosts several relay servers in any given region.

    For example the equivalent of having one central european relay in the Netherlands vs having one in each densely populated area in every major european country. Perhaps even leaving it up to you how and where you scale - perhaps your game runs wild in eastern european countries and central asia but completely tanks in the rest of the world. You want to be able to best service those regions where your game is hot. Free is unlikely to provide that, possibly not even the insight into where your players are from.


    And that's what I mean by "LAN only". You can make that work over the Internet with a free relay service but it will never play quite as nicely as on the LAN. It may still work for a coop game.

    The question is: is it worthwhile to spend the extra effort to create a multiplayer game that, for most players at least, will feel more or less crippled or dated. It may actually be harder to sell because you need not just convince "that gamer" but also a few of her friends. This works by word of mouth only.

    Whereas a live-service game with at least matchmaking, where you can just say "take me online and through me in a game with a bunch of weirdos", is able to grow organically. That's also where you cross the threshold from minimal effort multiplayer to live-service multiplayer.
     
    darthdeus likes this.