





🌟 Special thanks to our amazing supporters:
✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Arch Toasty][Benedikt][David Martínez Martí]
Friday News 3 Slow week : June Another week and another post. Unfortunately this week was one of the weeks I was dreading to post about. All work was focused on my end on a single part of networking which Ill get to in a second. Everyone else was busy with their personal work, with nothing they wanted to talk about. We were expecting this to happen eventually, where either not much work gets done during the whole week, or everyone gets lots done, but nothing to post yet. Blog posts encourage people to save up all that work up for a longer post when finished, as a nice and neat story. In the future when this happens Im thinking about just skipping the weekly post if Its too small, or filling it with a mod showcase. Would love to hear what is acceptable with you. Discord Announcements, Nightly branch Weve now got an announcements channel within our server, if you would like to follow it for news feed within your own discord servers. So far the plan is to only use it for blog posts, major game version releases (beta, main). We also went and removed the password from the nightly branch (it was pinned in our server). Please keep in mind that branch is the absolutely most up to date version of the game, and will likely be broken and buggy. Network Controllers To recap our networking layering, We have a low level driver sending data through steam or directly through ip (udp). Next to that layer isolated, we have an instance management system hosting multiple servers which in turn each have an actual 3d world each. The next layer routes data from the low level drivers, into the instances they belong with. Last week, these layers were mechanically complete, just with new packet types needing to be added as we go. This week has been focused on the very next part of the layer, inside the world dealing with the new data thats now flowing. We wanted to simplify the back and forth on startup between a client and the server, body id, client id, desired controller. In the future this will allow us to provide an exact network API so custom clients can be created if desired. After cleaning up the back and forth I went and jumped onto the player controllers so we can get our old player systems running again. A few weeks ago we decided to shift our controllers to be more fully simulated on all clients. This means that we can pick up on various events that were not transmitted before, like a user opening a UI could actually display a fake version of the same UI locally. It's absolutely required for shifting between on foot, cars, planes and zero g. Or allow for local ik selectively per player if desired. But this change brought up new problems where the controller prefabs generate different data on a local client vrs a remote client. A local player might have a camera, then generate a movement entity, plus a local input entity to drive said movement. On the other clients you would not want to have the camera or the input entity. If you left these, pressing move would move the other player as well which would cause desync. This variance of course is handled by the controller spawning system, selecting local, remote / server. But we didnt have a mechanism for taking a templated controller with select synced network parts of it and making sure those all got the same network identity on all clients. Now that we have this system, we have mostly the same controller data on all clients and the variants are accounted for. We are also able to repurpose this system for lua entities, spawned props, cars, etc. With that now out of the way the controllers are looking much simpler. Which is the main goal for this rework. The same controllers on each client allow for interaction, movement, seats, cars to be very simple. Im now working on switching between controllers, On Foot and Seated controllers currently for vr/desktop. Im trying to avoid mutation, so one controller only solves one kind of state a player is in, but this requires very seamless controller switching. One change we had to make with this new setup, involved making the players body part of the controllers. This allows the controllers to drive them, like keeping your hips stuck within a car, on desktop making your character hold onto and turn the wheel with ik. Sorry about the shorter overall post and wordy networking section this week. If theres anything you would like to hear from us, get in touch through discord or steam community. - Lavender Team
[ 6056 ]
[ 2113 ]
[ 2043 ]