You have to elaborate. UNET has no cost, but if you are talking about the Unity Multiplayer Services. I think the best option is to do it yourself. Unity uses a matchmaker to store server info. That should be really easy to write yourself as a Rest API. As for the Relay features, things can become a bit more tricky. What I would suggest doing is to write a stun facilitor. That should not be too difficult, but sometimes that won’t succeed and you have to use a relay which is what Unity offers. So I guess you could write your own relay aswell.
All this is assuming you are going for a player hosted model in the first place. You have to elaborate on your requirements.
Cost all comes down to what you are actually going to use in your game, and how that applies to the various price models. As already mentioned by TwoTen, UNET itself is a free networking API built into Unity. Hard to beat free.
If you haven’t figured out exactly what services your game will need, that’s where you need to start. After you have that all figured out then you can start to look at pricing for those specific services.
For example, I’m currently building a game using UNET. My game design doesn’t use 3rd party match making, lobby, relay, or other cloud services, so my UNET costs are exactly $0. My game design does require server hosting, so I will end up having hosting/bandwidth costs when the game outgrows my test server. Your game though will undoubtedly have a completely different network architecture than mine, so your needs and potential costs will be entirely different.
I think part of the problem is a misunderstanding of the pricing model. You only pay for bandwidth over the relays, so if a ton of people try out your game for a few minutes and never pay it’s not a huge deal since they won’t have used that much bandwidth. If you are using lots of bandwidth then people must be playing your game so you should have no problem paying.
All that said, I still think unity would be ridiculously expensive if you have every player connect via relay, which is kind of the default way unity does things when you use the matchmaking. What I recommend is looking for ways to reduce your use of the relay servers. @TwoTen had some good ideas regarding the stun facilitator.
If you don’t want to worry about all that and want a cheap solution that just works I highly recommend my own NAT Traversal asset. It will handle punchthrough and port forwarding and falling back to relays and all the connection juggling involved so that you don’t have to think about any of it. The end result being that your players only use the relays when absolutely necessary bringing your costs way down.
You can also take a look at our Smooth Sync asset to further reduce your bandwidth by doing things like compressing floats.