Mirror Networking for UCC Add-on

Hi, Matt, hope things are going well.
While waiting for the first testable version, one question popped into my mind.

I'm wondering how the Add-on will integrate into UCC? meaning, 1) Will the installation overwrite some parts of the UCC code? 2) Or Mirror's UCC modifications will be part of UCC and Mirror installation will just add extra files without any overwrites to UCC?


I'm asking this because patching UCC update is increasingly difficult as I made quite a bit of changes already and I hope I don't have to patch twice everytime UCC update.

Thanks and have a great day!
 
To answer those questions:

1) I am trying to make it as non-intrusive as possible. TPC1 had all the network code baked into the controller which made it really difficult to make it network agnostic. For now, I'm following the network API layer that is seen in the PUN add-on, with Mirror-specific scripts and proxy scripts (ie. NetworkBehaviour versions of various MonoBehaviour scripts).

I have talked to Justin and we've discussed some potential gotchas, so any patches we'll have for UCC will hopefully be merged upstream for him to review and commit to the code base for the next version of the UCC family of assets.

2) If you were to install Mirror now, the installation will just provide you the Mirror framework and not touch any other code. We do have something called the Mirror Weaver (UNET had this too) that will scan your CSharp files looking for Mirror-specific network code (like a hungry Pac-Man looking for tasty network code cherries). That thing is responsible for generating the IL code payloads for network classes to fire over the network.

In the case that Justin does not approve of a patch or a modification, we will definitely be doing a how-to for manual patching so something works as intended. If we didn't, and it had spasms in testing then that would be a major pain in the bum.
 
Hi, Matt, thanks for the explanation. Addon such as Mirror that needs deep integration will always be difficult to integrate properly. I'm just hoping that you and Justin work out a reasonable solution that Mirror can integrate seamlessly.

I can't wait till I can test Mirror integration. Please keeps us in the know.

Cheers!
 
It's the moment you've been waiting for...

MIRROR NETWORKING FOR OPSIVE ULTIMATE CHARACTER CONTROLLER 2.1
CLOSED ALPHA TESTING PERIOD

Development on the Oiran Studio Mirror Networking add-on for Opsive's UCC has been coming along very smoothly (thanks to another partnered developer joining the add-on development team) and I am pleased to announce that we have a closed alpha test period coming up in September 2019. This closed alpha will run for a not-yet-determined time period.

How do I be part of the alpha test?
First come, first serve most likely. People who have expressed their interest in the past will be in line first. We will have a limited amount of slots open, which will allow us to concentrate our development time and efforts rather than having 500+ users filling up our inboxes with messages.

Will I get a copy of the add-on to test?
It is unlikely that you will get a copy of the add-on's source code at this time. But!

You will most likely get a built demo of the controller to play with. This demo may or may not have any weapons, but it will be more so a generic test to ensure movement, abilities and other things are being synchronized across the network correctly.

What are we testing exactly in this alpha test period?
Your task is to run around, attempt to break the network code and report bugs. That's pretty much the test's goal right now.

Okay, shut up and take my money! I want this! Pre-orders when?
If the alpha test is successful, I will try my best to implement a pre-order system. I don't want to take your money if I can't deliver the final product, that would just make us look scammy and unprofessional. We'll make something work out.

All alpha testers will get their names credited in the add-on's documentation as the Testing Squad. This ensures you get recognition for your efforts, since your time is valuable and we want to express our thanks for making the asset shine.

Your participation is essential for making this add-on the best it can be. Don't delay, register your interest today!
 
So do we just reply here to express interest?

Edit:
Wyrm#5464 on Discord. also let a thumbs up on the message.
 
Last edited:
Pretty much. Also leave your discord handle if you have one and I'll get in touch when we're getting ready for testing.
 
Alright, noted you guys down. Lots of attention going on with the discord post too; this looks like it's gonna be a big one...
 
Here's an update video.


Is that the hype train tooting in the background I hear?
Ignore the number of errors in the widget seen here, that's just debugging logs that help notify us of potential problems.
 
Alright, here's the first October update.

The alpha test has been postponed.

As you may or may not know, I aimed to get an alpha out so you guys can run around a scene and help test things. I had hoped to meet a soft deadline of end of September to get the test up and running. However, this unfortunately did not bear fruit mainly due to the fact that IRL work spiked up and while I try to time slice, when things get very busy, game development has to take the back seat and make way for clients that want their devices fixed, etc etc.

I also had to shift gears and work on updating my network code that I contribute to Mirror, which drained me of sanity a few days in a row due to Visual Studio saying there's 6 errors in the transport when Unity happily compiles and runs the code. I've tried all possible fixes that I know of, but it still throws in the towel inside Visual Studio for some reason.

Anyway, since the Photon add-on is the only asset that actually has networking support so far, I've had to look at the code in that asset, interpret, and then figure out how it translates into Mirror code.

This is not an easy job and even if I emulate the PUN add-on itself, PUN is very client-authoritative, and this combined with some things that Justin's add-on does sent me into a spiral of confusion, especially since some of the API is poorly commented. I'm not trying to bash his hard work, but it can be confusing at times to figure out what the PUN add-on does, then figure out what the Mirror equivalent is. Then I have to test it, make sure it works, etc.

I've had to make contact with a few experienced PUN developers and ask what certain functions do. One of the developers who has also been reporting a lot of PUN bugs have preemptively warned me about them, so I can hopefully avoid them while Justin patches his PUN add-on. :sneaky:

Anyway, on the subject of client-authoritative, some parts of the Mirror add-on will not be fully client-auth. Some things like shooting and attacking will be server authoritative, even if you're expecting the client to say "yes I hit him for 90 damage".

I will be doing a video showcasing the current state of the networking add-on, it's basically doing things as I expect but there's a few things that I've had to contact additional people and ask for assistance.

So basically this update is to reassure you that no, I'm not giving up or abandoning it. I just need more time.
 
Sorry for the late response - been busy with a lot of stuff, and this week it seems my internet connection is down!

My team mate has been having issues getting internet connectivity in his temporary accommodation after setting up his PC so I've been busy working on some of his things from our internal list of things in this asset.

So, just to recap, what we have so far:
  • Animation Synchronization
  • Movement Synchronization
  • Character State Sychronization
  • Interacting with rigidbodies (ie. explosive crate pushing)
  • Shootable Weapons... work... even though they are stubbed for some reason (?!)
What is currently broken and needs attention (severity varies):
  • Melee weapons. They are not implemented in full.
  • Disconnecting from the room. The First Person hands lose attachment to the character and NullReferenceExceptions are spewed out of UCC's FPS scripts. I might need to make a script to have a housemaid come around and clean up after UCC being lazy.
  • Taking a knife to PunUtility and figuring out what the heck that is, and if it is even needed for Mirror based networking.
What is not working:
  • Abilities: They do not initialize across the network (as in, on your clients' representation of the remote player) when a client joins. They work for the local clients' player, however. I am suspecting that I need to bootstrap all abilities as soon as a remote player comes into play.
  • Object pooling: I don't even know if this is working or not
  • Runtime pickup weapons: Not sure about this either.
Right now the add-on is running in client authoritative mode with server callbacks for some components. This is not a full server authoritative setup, it's a hybrid setup. Not optimal but it's functioning.

Definitely behind the eight ball here, but I'm gonna do my best to catch up as soon as possible. Stay tuned!
 
Top