[DiscordArchive] do you use any NoSQL, out of curiousity ?
[DiscordArchive] do you use any NoSQL, out of curiousity ?
Archived author: <o> • Posted: 2024-03-12T00:27:19.316000+00:00
Original source
you're probably misunderstanding the parts of their approach i was referring to, i was not talking about threaded chunk updates, but the reducing of complexity in visibility notifiers and updatedata rendering. virtually all large-scale servers these days have some variant of _that_ implemented - it's the only way to have anywhere close to acceptable launch events on a largely populated server. fixing those requires very little overthinking or overhauls, you can do it in like 2 weeks if you just want acceptable results and cut the usual corners.
threaded chunk updates is a whole other beast, and is where novus guys (and i think you too, if i understand you correctly) are actually kind of correct - it's slapping a half-baked solution on top of mostly self-imposed problems.
_ultimately_, threading chunks is where you end up at the end of the day to push things to their limits, but a much more sophisticated implementation than what nost had. i see very little reason for emulators, or even most servers, to bother with that when we know so many more attainable bottlenecks that can just be fixed directly.
Archived author: Takenbacon • Posted: 2024-03-12T06:59:30.172000+00:00
Original source
Gotcha. Yeah I misunderstood
Archived author: Takenbacon • Posted: 2024-03-12T06:59:44.072000+00:00
Original source
You are right, visibility is pretty hilariously slow
Archived author: Takenbacon • Posted: 2024-03-12T07:10:21.106000+00:00
Original source
I was fairly happy with how my visibility rewrite worked out. It still isn't perfect but it made a ridiculously drastic improvement. Basically, the only grid searcher is the per player periodic visibility tick that happens every couple seconds. On that tick the player basically just stores a direct pointer of all currently visible objects and also adds a self reference to the object that they can see as well. That way every call, let's say sending out a packet, just loops the visible players list, and no need to call a hashmap check on every object either because they are already known visible. Super quick
Archived author: Takenbacon • Posted: 2024-03-12T07:15:56.256000+00:00
Original source
I do understand what nost was going for but they did it in an odd way if I recall right. I think they had weird arbitrary separations in the continent, literally just randomly drawn lines or something like that.
While I did eventually have to add instancing per zone I still think overall it was a much cleaner approach with more clear borders. Certain zones are treated as their own map and you are seamlessly teleported when moving across zone borders. It's obvious with objects disappearing on the borders but it was the best that could be done tbh. Northrend for example is just too damn slow and holds up the rest of the world tick
Archived author: robinsch • Posted: 2024-03-12T07:19:43.490000+00:00
Original source
depending on how many hard boundaries you want in your game you can also just avoid a lot of optimizing by implementing instanced continents, since they usually are the slowest map to update
Archived author: robinsch • Posted: 2024-03-12T07:20:03.346000+00:00
Original source
and TC already has everything you need to implement it, instances
Archived author: robinsch • Posted: 2024-03-12T07:21:01.302000+00:00
Original source
the client doesn’t really care being transferred to the same map (client wise). Server side if you do a lot of transfers you would look into moving most of the process that is thread safe to the map context
Archived author: robinsch • Posted: 2024-03-12T07:22:32.674000+00:00
Original source
if you overuse it there are some things you would have to fix, pooling, transports, escorts across boundaries, …