[Technical] Optimization for AO

I feel like at this point you should just make a qna post clearing up any misconceptions about how the game is programmed, there’s so many unknowns

2 Likes

I agree, would love to have something like this. Definitely will help me and many others think of ideas for optimization.

Personally my issue with optimization lies in ships.
I get on a ship, even think about touching the wheel, and this happens.
image

This is not normal.
Throw ANY other game at my PC and it runs decent enough.
This is unplayable.

Sometimes this happens sometimes it doesn’t.
I’ve done several dark sea runs (unsuccessfully) trying to find the new essence thing to be free from explosion magic and I’ve barely noticed any issues.
I do ONE abyssal diving spot and the game runs at 0.1 FPS.

Its been 10 minutes since I started unloading like 10 sealed chests and its still not done.

1 Like

That’s honestly weird, and if that’s averaging at that then that means you’ve had the ping spike to that for a while.

1 Like

One thing about the game is the big ammount of instances that are used seemingly as the data structure. Instead of instances, which replicate any changes made to them to (all) players regardless of which client needs to know about them, I would say consider using remote events. Considering what the data structure looks like, it might be a herculean task to change it in this way, or maybe not. In any case, that might be one cause of most of the receive?

I don’t claim to know much about the inner workings of the Arcane’s code, but on this I’m almost certain? In general, whenever I have used instance-based replication, even with valuebase instances, it has generally ended in fairly laggy situations.

Also, my Discord user is comt (I am not in Vetcord), and I welcome all valid, intelligent criticism of my code’s readability, performance, and otherwise. I made the following system some time ago, fully understanding what I was subjecting myself to in terms of usage. If anyone can shed light on the buffer library or just anything in general, please do so in a way that can help me improve my understanding of network optimization, if you can.

Replicator: https://hastebin.skyra.pw/raw/oqaberubiv
PropertyMethods: https://hastebin.skyra.pw/raw/sajomatoge
Step: https://hastebin.skyra.pw/raw/oteyalulut
Entity (example event-based OOP class): https://hastebin.skyra.pw/raw/obexipolan

1 Like

Can’t tell if I understood what you just explained - at least the top paragraph - , but I don’t think that you can just get rid of instances for remote events? remote events are just another instance anyways. If you are suggesting to not update properties of instances and check through remote events if the player needs to know them or not, I’d assume that it’s worse for performance because you’d need to check for all the players who need to know those changes and then only send it to them. Property changes happen thousands of times per second, and this would only hurt performance for both the server and client. I haven’t read your code, but I’ll send you any feedback if I find any once I do :slight_smile:

You can get rid of instances for remote events in the scenarios including valuebase instances, and it is a favorite of many developers to utilize abstract objects/instances (using tables and OOP, or otherwise) to replace them. It is not only a way to disable the automatic replication of any given instance’s properties (some of which I guarantee are not needed, especially if they attribute objects that are not in render distance or otherwise) but also a way to keep things very specific, secure, and even capable of easily transmitting tables, instead of using string packing or otherwise for such. I might be biased, but I also think it’s a legitimate concern.

1 Like

so when will it come out? within the year? (geez i hope so)

To be fair, iirc they said something along the lines of “Mesh Deformation comes out in X time!” or something and it came out half a year later or something.

No, it’s done. You can enable it in studio by changing some FFlags. It’s already in some games, they’re just slowly rolling it out dynamically.

Well so far every update since release has been laggier than the last.
During the mistral update I literally couldn’t play the game for weeks because of boat related bugs.
Now I try to do abyssal diving and this happens.

Don’t get me started on how combat goes.

Whatever vetex is doing for optimization, it is not working.
I’d take half a year of delays if not longer for the next update if it meant fixing this shit for good.

It is becoming increasingly difficult to stay positive about this game when I can barely even play it for performance issues that I have nowhere else.

1 Like

I’m pretty sure he’s not doing anymore optimization right now.
The main issues are stuff that’s bogging down the server:
ie. Dark Sea and Fort Castrum
Dark Sea is a non-issue unless a bunch of people are in it though (as far as I know).

1 Like

What’s your computer specs? Mine aren’t all that great but I can still run the game pretty well, expect when raiding Fort Castrum with 3-4 people.