Skip to content

Commit 16a9704

Browse files
authored
Update readme
Adds some more info about threaded version and remove some waffle
1 parent 3e09ed4 commit 16a9704

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,20 @@ If you haven't already, make a empty GameObject with the Mirror **Network Manage
5353
### Why should I use Ignorance over Unity LLAPI?
5454
Unity LLAPI is old, obsolete and no longer mantained by Unity Technologies. It is currently on heavy life-support until they get their act together with the new Unity Multiplay system. Plus, it was held together by bandaids and bubble-gum. Depending on what you threw over the network, you'd get random latency spikes and packets would go missing even in Reliable delivery mode.
5555

56-
Ignorance aims to replace it with a stable and high performance transport system that allows you to forget about low-level networking stress and spend more time focus on **making** the game you want to make.
56+
Ignorance aims to replace it with a stable and high performance transport system that allows you to forget about low-level networking stress and spend more time focusing on the gameplay.
5757

58-
### Why are you using Mirror's LateUpdate vs Threads?
59-
This is Mirror's design, not mine. Ignorance tries it's best to address all the packets coming in and out every frame.
58+
### Ignorance Classic vs Ignorance Threaded
59+
As of the latest version of Ignorance, there are two versions included in releases and this repository. They are as follows:
6060

61-
Since LateUpdate is frame-rate dependent, the lower the framerate the more latency you'll encounter due to how the backend is polled. Ideally if you're going to use this transport you're better off using setting your server to use at least a tickrate of 30 ticks per second. Any less (ie. below 30) and you're risking the server getting choked. All transports have this design issue.
61+
- Classic: This one pumps the ENET Backend every LateUpdate tick, and if any events come in, they will be fired all in that tick. This is the "tried and true" transport pumping method.
62+
- Threaded: This one pumps the ENET Backend with a configurable timeout and uses seperate server and client incoming and outgoing queues. Network Events get placed into their respective queues and are pumped until the server or client is disconnected respectively. During every LateUpdate tick, the incoming queues are drained, ready for more network activity. This allows maximum performance, at the expense of some stability as Unity threading can be very tempermental at times.
6263

63-
I do have a threaded version of Ignorance that unfortunately suffers Unity shitting the bed under heavy load due to the really disappointing Mono implementation of threading support.
64+
If performance is essential for you, use the **Ignorance Threaded** version of Ignorance. This will give you maximum networking performance. If stability is essential, use the **Ignorance Classic** version of Ignorance.
65+
66+
### Important note
67+
Since Mirror and all transports use LateUpdate to process their network code, there might be a chance that at very low framerate (ie. you are really stressing the server or creating lots of GameObjects in which Unity has to load from disk) that the networking gets overwhelmed, regardless of classic or threaded versions of Ignorance. It is essential to keep your server's frame rate running as high as possible as this will reduce latency and in-game lag. You will be able to tell when the server is under heavy stress when networked objects get very choppy and/or the client starts hanging.
68+
69+
Until Mirror changes how they manage their transport code, we are stuck with having to deal with this design issue.
6470

6571
### I have a bug!
6672
[Check the current open bug reports and/or report a new one here](https://github.com/SoftwareGuy/Ignorance/issues) and I also recommend you be present in the Discord so I can ask for further info and/or you can test fixes for your bug reports.

0 commit comments

Comments
 (0)