ARK: Survival Evolved

ARK: Survival Evolved

View Stats:
tametheark Apr 29, 2017 @ 11:56pm
@Devs, Ark and Counting Resources
Hey, I've noticed in Ark when you harvest with high gather rates it uses a lot of internet bandwith. In Runescape ( programmed with javascript ) if you pick up a thousand of something you don't noticed any high ping, but in Ark if you pick up thousands of resources at a time then the whole server has high ping, not just the player doing the action.

Can you help me figure out how this is being calculated so that I can find a solution? I could take a look at your algorithm or something to help reduce the load on servers.
< >
Showing 1-15 of 15 comments
Hrodh Apr 30, 2017 @ 12:13am 
You realize that 99% of the time, no Dev will answer you here, right?

You have better luck submitting a ticket or at least post on the official forum or their Twitter account...
Last edited by Hrodh; Apr 30, 2017 @ 12:13am
-=pain=- Apr 30, 2017 @ 12:14am 
now time update ?
Bandit Apr 30, 2017 @ 12:23am 
Devs don't even read this forum. They only pretend this is for feedback. You'll only find their paid damage control minions here.
(Banned) Apr 30, 2017 @ 12:45am 
@Op
Ark is way different than a simple browsergame...
I think the engine must be taught to collect and send item requests in bulks, but thats not easy in a realtime environment... and if you dont have experiences with unreal engine, you dont need to offer help, since you cant...
Shrek The Ogre (Banned) Apr 30, 2017 @ 1:03am 
Originally posted by Bandito:
Devs don't even read this forum. They only pretend this is for feedback. You'll only find their paid damage control minions here.

The best comment in this thread
Desertworld (Banned) Apr 30, 2017 @ 1:13am 
Originally posted by Yiconomics:
Hey, I've noticed in Ark when you harvest with high gather rates it uses a lot of internet bandwith. In Runescape ( programmed with javascript ) if you pick up a thousand of something you don't noticed any high ping, but in Ark if you pick up thousands of resources at a time then the whole server has high ping, not just the player doing the action.

Can you help me figure out how this is being calculated so that I can find a solution? I could take a look at your algorithm or something to help reduce the load on servers.
That's not correct. It doesn't use additional bandwidth when collecting lots of items. It tries to write a huge piece of data on your hard drive which often causes a lag for people that players that use slow hdds while people playing ark on ssds don't notice it very often.

Also runescape is absolutely not comparable to this.
In ark:your computer does some work, there are servers that calculate a lot of things in
the background. It's an actual video game that requires a video card
Runescape: a small browsergame that doesnt even require a game engine because it's just a few assets, commands and numbers that get calculated by the server. Even a 20 years old PC could play that game if the browser and all the needed features are up to date (like having the latest Java version for example. Not sure what runescape needs to run well)
Billy Boola Apr 30, 2017 @ 1:14am 
Yeah, but 1 + 1 = 2 and 2 can be sent as one data item instead of two data items of 1 is the point the OP is trying to make I think.
Desertworld (Banned) Apr 30, 2017 @ 2:04am 
Originally posted by Anu Zababa:
Yeah, but 1 + 1 = 2 and 2 can be sent as one data item instead of two data items of 1 is the point the OP is trying to make I think.
And how exactly do you know what is all calculated when picking up multiple items? It's definite more than just 1+1=2

Amount of stacks need to get calculated

The additional weight that gets added to the inventory needs to get calculated

The engrams need to be checked again to see if something is crafteable now

There is a check if the player is currently mounted to add the extra weight to the Dino

And probably there are way more things happening in the background that we don't even notice! These are up to several hundred calculations at least and everything needs to be written into some file..
Last edited by Desertworld; Apr 30, 2017 @ 2:05am
Voldrath Apr 30, 2017 @ 2:07am 
I would presume the server must break those thousands of items into the relevant stacks before applying them to your character one stack at a time. Dose any one know if this is still a problem on servers that use increased stack sizes?

Edit: Also what Desertworld said about engrams and weight.
Last edited by Voldrath; Apr 30, 2017 @ 2:09am
Ghiz' Apr 30, 2017 @ 2:07am 
i don't remmeber exactly when it was, but they did an update to alllow your server to harvest ressources in bulk.
You collect less rare ressources but if you have a high populated server, it can help a lot with your ping problems.
You need to launch the server with a commandline, just look on the past updates you will find it
Ghiz' Apr 30, 2017 @ 2:09am 
@DesertWorld
The server will not calculate like that if you aplly the commandline
He will not do 1+1+1+1+1+... = 100
He will do instead 1hit = 100 resources and few rares resources.
Ghiz' Apr 30, 2017 @ 2:11am 
Found it

Server custom "HarvestAmountMultiplier" now works as it used to, to bias towards yielding rarer items. This is more costly for server performance, so if you want a more "optimized" server with high HarvestAmountMultiplier (but less rare items), you can launch with ?UseOptimizedHarvestingHealth=true

(Banned) Apr 30, 2017 @ 2:50am 
lol....

what happens when you harvest:
you leftclick
your client sends it to the server
the server checks if you can leftclick in the first place
then it checks what is done by the leftclick
in our case its executing a damage effect in a specific area
that area then is checked for entities that can be affected by the damage effect
all these entities have then to be checked:
a.) what amount of health it has
b.) what amount of damage is dealt to it
c.) can this entity be damaged, or is there a blocking collision between it and the damage source?
then something like an "onDamage" event is fired, within this event handler the specific action on damage needs to be computed, in our case its a bush, the creature is a bronto, after all variables are loaded from the 2 interacting entities
so because we have a harvesting bronto here, we need to calculate what and how much stuff is added to its inventory, thats done via rng combined with specific base values
after that is done, we check if the dealt damage exceeds the entitys current left health, if yes, the entity gets removed

the result of this calculation is then send back to the client


this is roughly how it works...
all in realtime, all per ressource node (it has to be like that, since your bronto could explode while tailswinging, and then half of the ressource nodes would not be affected)

to make it more performant, you would have to split the check if affected from the actual ressource calculation and move the ressource calculation to a separate logic, sth. like the server stores the affected ressource nodes per category and then sums it all up and applies the rng to it, and then 1 solid request goes back to the client

the PROBLEM with this approach (what makes it nearly useless, despite its looking good on the forst look) is that the server doesnt know when its the right time to start calculating, or when to send the info back to the client... since its not a simple thing like "bronto hits, 1 hit = x amount, ready" its a dynamically applied AOE that needs to be computed in realtime... if you move away from realtime, maybe the server lag will get reduced, but you can be sure that there has to be a threshold then, and that means an increased lag per player (server f.e. waits 0.5 secs before sending back calculation results) and a higher usage of ram, since the server has to semi-persist the calculation results...

all you could do is make the already existing code more performant (on a microsecond level, since we are talking about potetially THOUSANDS of executions per second) or change it like it is for trees already, where you can only harvest 1 type of tree per attack, or maybe limit it to X amount of bushes affected max (would result in a decrease per swing = rage of the players, simce it looks like a nerf).

the core problem here is the realtime character of the software, you cannot just apply something straight forward to an area based on guesses, that not how software works, every tiny thing has to be checked and calculated before it is used... if your calc algo is bullcrap, well.. then that slows down your software, what is exactly what we experience ingame

i highly doubt the op would even remotely be able to optimize the regarding code in the serversoftware, i also think wildcard will fix those code parts in the last few weeks before they release the game (honestly that will happen in dec 2017, not before).

all what i wrote is guesses based on my 10yrs experience as softwaredeveloper (java, c#, php client+serversoftware) and not based on experience with or a review of the code of the ark serversoftware, take it as a conceptual think-about explanation, not as facts
tametheark May 1, 2017 @ 8:03pm 
I ran 4 servers. I monitored the bandwith everytime I harvested, and what I found is that it was 'counting', which caused more packets. My server was maxing out at 30MB/sec of data transfer from harvesting alone. That's fine with me, since I have 1GB connection, but I know some people would lag if they don't have great internet connection, because of this method.

If I farm 9,000 stone, I want the server to add that stone and tell everyone I gained 9,000 stone, not count 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32.....etc

Do you want to know how I know that it counts? I put on slow-motion and see the numbers counting, you can hear the tick of each number. Use a video recorder and play it back in slow motion.
(Banned) May 1, 2017 @ 10:25pm 
Originally posted by Yiconomics:
If I farm 9,000 stone, I want the server to add that stone and tell everyone I gained 9,000 stone, not count 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32.....etc

Do you want to know how I know that it counts? I put on slow-motion and see the numbers counting, you can hear the tick of each number. Use a video recorder and play it back in slow motion.
Read my post and you will understand why its working like that.
You are NOT farming 9k stone, you are farming X times amount of X stone.
< >
Showing 1-15 of 15 comments
Per page: 1530 50

Date Posted: Apr 29, 2017 @ 11:56pm
Posts: 15