Tonight's live stream: networking performance

Note: 9PM GMT-5 instead of GMT-4 because we are no longer on daylight savings time.

Over the past week, I’ve been working on network-related performance. This included creating a lag simulator and embedding some other debug code in various places to see where I was doing dumb things. I’ll explain how I did all that and if there is time fix one of the last big performance issues.


A successful live stream. I got through everything I wanted to get to and finished a little early even.

Chapters have been added for folks who like to skip around. Preview here:
0:00 Introduction
1:24 Lag Simulator
7:45 SimEthereal “bug”
10:10 Main thread watchdogs
12:15 Test config
13:30 Demonstrations
22:00 Start loading objects on a background thread
23:30 SiO2: EntityContainer
25:15 SiO2: WorkerPool
28:50 Implementing Job methods
31:38 Test and Fix
38:00 Aside: stuff about ‘volatile’
40:30 Back to test and fix
47:00 Does it work?
51:15 Showing that model lighting is working
52:25 Next Release
53:50 Platforming is easier
55:30 Wrapping up

1 Like

Thanks for this week’s live stream!

Sorry if this is a dumb question but regarding SimEthereal “ObjectStateMessage”, what is it for?

Without looking deeper into it, is it responsible for sending position data of a batch of objects at once? or is it meant to be able to send any kind of data using that?

And are you going to change it to be sent over UDP in future SiO2 releases?

SimEthereal’s ObjectStateMessage is what sends over the state of all of the objects… ie: their position, orientation, parentage, etc… The whole point of SimEthereal was to send object sync information over UDP so this is a pretty egregious error and it’s only because of how efficient the protocol is that it was not obvious right away.

Yes, the change has already been committed to SimEthereal and will be in the next release. Anyone building from source can get it already. (This does not directly have anything to do with SiO2 as the two are separate libraries.)

1 Like

Oops, yeah I meant SimEthereal, my mistake. :wink: