Mirror Networking for UCC Add-on

chrisk

Active member
Hi, Matt, it's been a while since I wrote.
I hope things are going good with the integration.
However, I figured integrating Mirror into UCC is much harder than it originally thought as with all other network projects. ^^

Anyway, I'm still eagerly waiting for something to test.
Since it's going to take a bit more time, how about you make it available as is now so that we can get some ideas?
I really like to take a look how the integration will look like. I hope the integration is seamless without much workaround.
Thanks for the great community work.

Cheers!
 

Matt

Member
Alright, it's been way overdue and I know you guys have been expecting updates and whatnot from me. I'm sorry to disappoint as I've let you down. I'm just going to give a somewhat brief summary of what's going on.

Basically, I'm working on this add-on by myself. I've had some other developers that I've contacted assist me briefly but they've been caught up with their own stuff. One of the assistant developers doesn't seem to want to search the add-on files for lines I've prefixed "TODO" in the repository, so it just adds extra stress on me because I'm somewhat expected to copy paste the code chunk or explicitly throw them a link to the code that's yet to be implemented. I'm not shaming anyone, but the current setup is a mess and I'm going to address that.

As for the add-on itself, the base files are designed around UCC 2.1.7 and have only just recently been updated to 2.1.9 and the latest PUN2 version. I have also been needing to get in touch with Justin as there's a lot of code in the hot path that can possibly be taken out benefiting his PUN add-on as well as mine, but if he doesn't want to, that's his choice. I'll try to optimize the network add-on to avoid any burns on the code hot paths. UCC 2.1.9 has changed a bunch of stuff in the network layer and I need to update the add-on code to handle that. That said though, I don't think I'll have the add-on ready in time for UCC 2.2, so you'll be stuck on the version below the latest and greatest (oldstable).

Fully server authorizing UCC is pretty much going to be asking the impossible. There's a lot of stuff in there that has to be adapted to a server authorative system. So the add-on will be a hybrid, some parts client authoritative, but some essentials will be server authoritative. The PUN add-on code that I'm reading, interpreting, and then writing my own implementation for Mirror.

If you've seen my YouTube videos, I've already got a working prototype of UCC on Mirror architecture running. However, one problem there is that some abilities aren't being started (ie. HeightChange still throws errors) when players spawn. The animator works alright and things correctly get set using NetworkAnimator, but abilities seem to be special. I'll be looking into that.

There's also IRL shit that I've gotta sort out before I get back to developing this add-on. That includes sorting out business accounting (which I will not discuss here), dealing with clients' drama (protip: stay away from overseas web design firms, they are the worst), being effectively immobilized because I damaged my transport (tree stumps, oil pump and sump pump. What a wonderful combo) and other programming contract work.

I am falling behind the 8 ball a lot recently and it's been a mad scramble to keep afloat - as well as back to back IT support call outs. This add-on was one of the many thing that's fallen on the backburner.

So, if you made it this far, I appreciate your patience. I am slowly getting back up to speed. Things should get better from here. I hope to have progress to show in the next week or two.

- Matt
 
Last edited:

chrisk

Active member
Hi, Matt,

It's a daunting task to get networking to work. Besides naming stuff, networking is one of the hardest in game programming. I really appreciate your efforts and I hope you succeed.

Looking at UCC PUN integration, it's written with client authoritative architecture in mind and I have no doubt that Mirror will have different requirements than from PUN.

This is where I'm a bit worried, just like the new inventory integration, in order to have a clean integration, UCC needs some changes and it's impossible without Justin's support. I think Mirror is far more important than PUN and Justin once mentioned about having BOLT(or Mirror) networking stack after PUN. I originally pushed BOLT because it's server authoritative architecture but Justin decided to go with PUN instead.

I can give many reasons why PUN is inferior/problematic but Justing wanted to go with what's more popular at that time. I can't blame him. Right now Mirror is gaining the popularity quite fast and I think it's likely that it will surpass PUN in the near future.

I just wanted to ask Justin to give another chance to take a look at Mirror integration after 2.2 releases. Now that there is someone (you Matt) taking the responsibilities, and the least I expect is that Justin to give you the full support to make the integration seamless.

I hope it works out for the benefit of the many.

Cheers!
 

SkobbejakGames

New member
I need to use Mirror as it seems to be the best solution for Direct/P2P connection. I want to use it in conjunction with Noble Connect in order to get NAT Punchthrough and Relays.

PUN doesn't seem to support Direct/P2P which makes it a lot less viable for smaller devs as we can't afford the costs associated with Dedicated Servers and just hope that the game is successful and don't go into the red.

Being able to do P2P with NAT Punchtrough and Relays allows small devs to rely very minimally on Dedicated Servers as just a back up and for intermediary exchanges (also further alleviated if you get Noble Connects Starter Pack that comes with 100 CCU per month for 5 years for one flat rate as well as coupling it with their SmoothSync and Matchmaking plugins).
 
Last edited:

atriumgames

New member
There was a unity thread going for this and in it it was said that the project was being halted. I also hope thats not the case but from that thread I don't think matt is working on this anymore. Sorry if you are...
 

SkobbejakGames

New member
Awesome, thanks for the update. I think I just need to buckle-up then and get my concept working with PUN then as that would probably be the easiest and most doable in a reasonable amount of time.
 

Amoo

New member
Hi Matt,

I am so looking forward to this! Take your time and take care of yourself first. I look forward to this add-on but I can also wait as long as needed. Please don't work yourself to death trying to rush it šŸ’œ
 

chrisk

Active member
Hi, guys,
I cannot speak for Matt, but this is my take on Mirror integration.
Mirror basically requires CS style network, aka Server Authorative, however, Opsive currently supports PUN, P2P style only.

PUN can give you multiplay quickly but it cannot be used in commercial games. Before Justin started working on PUN integration, I tried to push CS style network but Justin decided to go with PUN first. And he mentioned that he will also try to support CS network after PUN, so there still is hope. I'm on the same boat as many of you and I really wish it becomes a reality.

Anyway, the required network architecture is quite different for Mirror and I think it's up to Justin if he is willing to make the necessary changes.

I think the best would be that Justin and Matt work together just like the awesome Inventory project.

Cheers!
 

Kiu

New member
I really need this, too. I would back this project before it is finished just to keep it going. Or would it at least be possible to get access to the project if it really has been abandoned? Does anybody know the current status?
 
Top