Absolutely and there is just server lag happening.
But from what I was informed of the base problem is GPortal.
Absolutely and there is just server lag happening.
But from what I was informed of the base problem is GPortal.
Iām going to explain what it is going on in a bit more laymanās terms, and in a way that I mostly understand them. It may not be 100% correct, but it will be good enough to work with (and if Xevyr or Testerle want to correct me on anything they are free to do so).
Effectively what is going on here is you have the datatable of items. In fact its literally just called itemtable. Datatable is a fancy word for spreadsheet. Its got a little more functionality than that, but we can literally export to and from spreadsheets when working with these tables. Modders who are a bit more organized than me will actually work with them in excel or googlesheets outside of the devkit and just import them in.
Each field has a value declared for it in some variable form. In the case of stack size, this is integer. And if Iām correct on this, this is a value between -2,147,483,647 to 2,147,483,647.
The reason this is important is when working with variables in a program like a video game is you have to declare their memory value before they can be used. For integers this is 4 bytes. Each stack is going to take 4 bytes. Regardless if it has 1 stone in it, or 1,000⦠if they increased the stack size to 1,000,000 it would still take⦠4 bytes. Its for this reason that increasing the stack size from 100 to 1,000 was a good move, or at least one of the reasons. So 10 stacks taking up 40 bytes became 1 stack taking up only 4 bytes.
Now youāre probably wondering⦠4 bytes is not alot. If I have 1,000 large chests filled up with items. Weāre talking about 180Kb. Thatās kind of a fart in the wind for most bandwidth providers. And well yes I could say that on a very busy server, storage size can add up enough to have āsomeā impact. Weāre quickly seeing that its not the biggest cause of latency or lag on a server or a client. It still is some when you have a large community server of 500-2500 players who play at various times and they each have loads and loads (50-100+ containers) of storage. But the memory value itself isnāt that significant. They could save some memory there by using a variable type that takes like 2 bytes⦠but being limited to only a stack size of ~32,000 is probably not a good idea.
But hereās the issue. The datatables on their own, and in this case the itemtable isnāt enough. It doesnāt just āworkā. Thereās nothing in UE4 that says⦠oh this is an itemtable, just use that for everything. This is kinda what has been tried to be explained to you. Without context the glorified spreadsheet doesnāt do anything. It also doesnāt tell the game whatās in a storage container.
The itemtable pretty just has attributes of item, stack size, what it looks like in the icon, the little descriptions, weight, and if its a weapon it will have its damage and armor penetration value, and so forth.
What you need to tell the game to look for specific attributes is a blueprint. This holds the logic (or the backend as you referred to) to point to the various rows and columns in the spreadsheet we call the itemtable. As Xevyr showed you, you got to see the blueprint logic for a storage container asking the itemtable what the value of a stack size is.
So the way items are loaded depends on what action is being done. Thereās a LOT of blueprints that interact with items, from combat to storage, do what happens when you drop them on the ground. These blueprints only ever use the attribute of an item they need. For example weight of an item isnāt called when being called by a thrall or stored in a chest. Only when you are carrying it.
For a chest or vault, only the stack size, icon, and name is called. When you click on it, then the weight, descriptions, and other data for that little window to the left showing you the attributes are then loaded.
This isnāt just how UE4 does it. UE5 does it this way too, or rather can. That blueprint has to be setup by the one developing the program or video game. And I assume Unity, CryEngine, and other engines do similar things (they probably call their versions of blue prints something else). Having a database of common variables and using some function to call on those attributes is pretty much normal across the board. The only games I can think of that donāt do this are early 8 and 16 bit games that are programmed entirely in assembly, and I assume the dev environments still use spreadsheets or something of the like to make things easier and use some form of converter. I know I can do this in modern development environments for making Homebrew NES games or their romhacks.
But this leads to where sometimes storage can be an issue for a server. While it doesnāt take much memory, it does take processor cycles (aka working that CPU on the computer the server runs on) everytime a storage container is active. Its active not simple when its opened. But also when you are close by (since you can preview its contents). A server doesnāt load the 4 bytes and is done for each slot in a container. It does it every time its active, and it has to give that information to everyone in the general area. As well as when its opened, closed, destroyed, given new items and has items taken. Its why when you walk into a base with an exceptional amount of storage⦠you get a slow down. Remember these servers donāt handle things in a vacuum. They handle everything else that happens in the game and communicate that information as its needed to everyone logged in.
Now on the topic of how Testerle and Xevyr responded⦠I donāt wish to speak for them. But something I would like to point out is their frustration in this issue. Its a frustration shared by many server owners, modders, and a few enlightened players. There is a ton of myths floating around about what causes issues on a server.
One an individual server if a owner limits things, or does things in a way that is out of ignorance⦠they are entirely free to do so. Its their server, their rules. But the unfortunate side effect is when players play on said server. They tend to bring those myths with them. And yes sometimes when a server owner does something out of ignorance, they will get positive results. The issue is they do not understand why. The bigger issue is when another player believes that and makes their own server with similar rules without understanding why.
Why does this become a problem? When they donāt understand why what they are doing works, they also donāt understand why it doesnāt work in some situations. Thatās when the blame shifts. Frequently it shifts to Funcom. Which in itself doesnāt affect much (well it does too, in a similar way). But also frequently it shifts to mod authors. Mod authors get a ton of crap on a daily basis.
Mod authors will get bug reports and complaints about things that have NOTHING to do with their mods, but its not always apparent that this is the case. Especially when users skip troubleshooting steps thinking those steps are not relevant and a waste of time. But when this happens, it wastes the mod authorsā time when they have to investigate or even respond to the issue. When this happens, it delays development on the mod. And guess who that hurts? Everyone.
So when people run their servers in ignorance it has an impact on everyone in the community.
You have have noticed a slight bit of hostility from mod authors in this thread. Iām not going to condemn nor condone what was said, but I will explain why I believe they responded in such a way. These players like you and I who decided to take a step further and contribute in a way to give back to the community.
They use very expensive hardware, use very valuable time, and have an extensive expertise, and for many a very talented artistic ability to produce wonderous creations for all of us to enjoy. All at a cost to themselves and only to themselves. They do this because they honestly do care, they do love our community.
So when you argue with them in ignorance and do not have the open mind to listen to what they are saying, arguing with them instead of simply asking questions, this akin to biting the hand that feeds you.
And for those reading this who donāt use mods. Understand that these modders provide an invaluable service to Funcom when it comes to bugfixing. There is been a ton of bugs and issues that quickly get fixed simply because a modder was able to catch it in a blueprint. The modding community is an extremely important aspect of Conan Exiles, even for non-modded servers and our consoles friends.
Now as for what actually contributes to lag on a server⦠Xevyr said it was placeables. Heās correct here⦠this is a big one. I disagree that its the biggest contributor for the servers in question though. Those servers run with the option of logged out players stay in world. That alone can cut the size of a database by more than half. Now I donāt know what its impact is on the processing side of an online server, but if its cutting the actual saved game (game.db for exiled lands) in half⦠its gotta have some major impact on the performance. I would love to see Funcom disable this on their PVE servers just to see how it affects performance. The reason being is those are some chonky boi servers after being up for nearly 7 years.
And before storage concerns, but after placeables. I would say followers. Thatās a lot of extra moving around by entities the server has to keep up with. Entitites that have way more going on with them then wild NPCs.
After that it would be buildings⦠sorta. Now this one is a theory, but its one that Iāve been able to observe. But when a building is expansive, and when I say that I mean covers a very wide area. It seems to put more of a load on the server. So in Conan Exiles, the server loads in areas as they are needed. If youāre the only one on a server, your area is the only place the server loads. Its going to run like a well oiled machine.
Once forty players are online. Then it gets interesting. If they are in different areas. They load 40 different areas. If they are in the same area⦠well its one area loaded, but now its facilitating 40 clients talking to each other. People online is poeple online.
Anyway what this means for buildings. Very wide area encompassing buildings that cover multiple areas, well have to load that for the person in even one area. The reason for this is there may be stability concerns. Definitely decay for servers with it enabled. And to an extent, it has to be loaded. No one likes seeing a half rendered building. Well the half rendered building still happens because thereās only so much the server will do for a single player.
Iām being very vague with this building rendering and area thing because I only have the basic observational knowledge of it. I havenāt actually delved into how that works. Iām not certain all of it is even available in our devkit. Someone more knowledgable can confirm or disprove anything Iāve said on this point. But I donāt believe Iām very far off the mark here.
Talked about players and well its related with the issue about building area, as it directly exacerbates it, and it exacerbates every other issue. No one is going to argue with more players being more lag here.
Finally it would storage. Its pretty far down the list. Its still important though. I went into pretty good detail with my limited knowledge to why this is. But its hardly the top issue. But the issue with too much storage can actually contribute to too many placeables. Its why we tend to favor larger amounts of slots so we donāt need to use them.
And actually there is one more thing. Building amount. Yeah, the amount of building pieces used has an impact of course. Probably one of the least amount of impact, that is until it gets way way out of hand. If thereās a community of 500 people (remember⦠a 40 slot server only means there can be 40 people online at a time⦠not total amount of people who play in a 24 hour a day, 7 day a week period of time) and each person has a 10,000 piece build. Then the server will begin to feel it.
Thankfully there has been optimizations to make this bearable. It used to be way way worse. Also⦠foundations donāt put any more strain on the server than any other building piece placed onto them. Iāve been able to personally disprove that one years ago⦠Iām not going into that one again. Someone else can do that.
But there you go, hopefully this post explains a few things and my own ignorance isnāt too annoying to those who actually know what they are talking about Like I said, they are free to correct me if they wish.
Whoa @Taemien I managed to get halfway through that before I started my reply
Iām not sure you should have bothered to be honest as the gif I posted earlier perfectly sums up the recipient of your explanation
They could very easily go ahead and Google to find out that Unreal engine does NOT come with an inventory system⦠at all⦠not even UE5⦠not to mention 4⦠which is why there are so many tutorials on how to make one and so many marketplace systems for saleā¦
But that would make their whole argument fall apart which was built on the premise that Unreal Engine somehow loops through and creates every individual item as a memory object within a stack⦠in their inventoriesā¦
So weāre clearly talking with a flat-earther⦠or someone who shares that method of thinking anyway where they will dismiss facts, even when faced with overwhelming evidence⦠because they are religiously convinced that what they know is the truthā¦
Now to address your post, I did mention above that items do have optimizations in place.
For starters the items themselves do not even use unreal engine replication⦠the server and the clients have completely disconnected individual instances of items, so they can load all of that static data from the ItemTable that you mentioned each on their own end just by knowing what items the inventory is supposed to contain.
Funcom then does a manual stat update for only the stats that deviate from those default values.
Thatās why the ādata chainā () or rather what Anglinex above did not recognize as a simple blob of bytes containing very little information is actually so short, it only saves the values to the database that have been altered or need to be kept track of (like stack size).
(A good example of this in practice is when Funcom alters the damage of a weapon in the itemtable⦠if you had a weapon damage kit on a weapon, that means the value was saved to the database, while if you didnāt, then it would load up the static definition from the ItemTable. Meaning that unupgraded weapons would reflect the new change, while upgraded weapons would keep the old value)
So bottom line, the inventory system is fairly well optimized as well, it could be much⦠much worse (and I think it used to be as some of what I described above might not have been like that originally)
You explanation is kind of correct, but you are talking from a UE4 point of view, meaning not how actual programming works but how the UI deliver information to the user. Which is fine, as you say you are explaining them in layman terms.
Increasing the size of a stack from 100 to 1000, is a good idea, but only due to how much is required to craft things. They could have decreased the cost of all items and it would have been equally fine. So this is mostly done due to a design choice made by Funcom rather than anything else, because it give them a larger range for setting the cost of crafting items.
The normal way you would program something like this and 99.9% certain that it is also how Funcom does it, is using classes/objects and instances (which are programming terms).
So all items you collect in the game are based on the same class. So a stone is in principle the same as wood is, only the content of the attributes are different.
All sharing the same ones which describe an item, such as Name, Weight, Icon, ID, PlayerID, StorageID, Amount, burnable, burn time etc. Some of these are also what you can see in the dataset of the database, depending on which they store, they probably donāt store values that isnāt needed.
I havenāt looked at their dataset, so how exactly they have organized them I donāt know, as they can do in different ways.
Meaning that materials might not be organized the same as weapons or armor, as these might be separate classes taking care of that, because they have other unique attributes, like armor, damage etc.
Handling these things in programming is very basic, that this isnāt the issue, Funcom would absolutely know this, any student of programming would. There is no such thing as blueprints in programming, it is a UE4/5 term for something kind of similar to a class in traditional programming.
Which is also why it would be insane to create the game to loop through each item count, it is simply not how anyone would do it in programming. I canāt think of a single example of where anyone would do something like that unless you needed something to happen to individual items. But that is not the case here.
Itās based on C++, Blueprints are merely a visual representation of it. Itās Unreals native visual scripting language. So once they get interpreted, the same thing will be happening in the background.
It makes it really easy to expose parts of the code so that it can be very easily altered.
For example the way Conan is set up is that most of the classes have a base C++ class as their outermost parent that houses some of the core on-demand functions that need to run fast etc. Then thereās one or more child classes based on that in form of a Blueprint which then provides the logic and ties all of these together. Typical parent - child hierarchy with stuff inheriting from one-another.
The picture I showed you above is basically calling the GetIntStat(statID) C++ member function of the game item class and returning the result as an integer.
But yes, itās object oriented programming.
That is also what I would expect.
Exactly. Also why the majority of the things mentioned in the thread is irrelevant. Because these are so basic, that unless it is implemented outright idiotic, these are not what is causing the issues.
And again (Canāt remember if it was to you or someone else I said this) the developers are clearly not incompetent, otherwise they couldnāt even have made the game in the first place.
I went to the jungle area earlier and killed a lot of the gorillas there when scouting and im not lying when saying that I think out the 20-25 I killed maybe 2 werenāt having some issues. Like being stuck running in place, not reacting despite hearing them agro, there are a lot of issues, whether it is server related or not, or AI or maybe even both or something third, the matter of the fact is, that it really ruins the game experience, it is not particularly fun fighting bugged enemies. The game is already not particularly difficult when you reach end game, so having buggy enemies makes it even worse.
You saw how long my post was, I wasnāt going to give the full Programming and Logic class as a comment.
Iām just glad the worst criticism I got was that I shouldnāt have bothered. So I definitely appreciate that, thanks @Xevyr
I only bothered because sometimes people feel attacked when too much jargon or āhigher knowledgeā is thrown at them. If Anglinex wants to toss what I said out as well as everyone elsesā well then thatās entirely on them. No can say no one tried.
And while I donāt really like some of the tone used with them, I do wholeheartedly understand that its from frustration and where that frustration comes from. It is what it is.
Yea, Iām certainly not holding any grudges and I tried to the best of my abilities to throw time and patience at this discussion.
Even when I got frustrated it was sort of⦠switching over to being silly rather than actually being angry or anything.
So Anglinex, apologies for the teasing, even if you donāt believe me when I say that the inventories are not stock unreal and donāt go around in a circle like a crazy child for no reason Maybe one day you will reevaluate this
Iām not frustrated either, but I think that itās okay to call BS by its name, especially when itās so vehemently propagated
if you just leave something like that uncommented, you end up with urban legends like āfoundations produce lagāā¦
I donāt know about lags.
But one thing is certain on PlayStation. If you try to build a huge number of foundations in a small footprint, youāll probably log in one day and see the whole thing deleted, like you never ever started it.
It happened to me twice, itās a number between 50 to 60 thousand foundations. Your whole week of building in this spot is totally erased.
But i believe that this has to do with the possibilities the particular machine has for the game and not the other way around.
Ps. Single player of course.
Once I lost an entire castle. The thralls were hoovering mid air, @stelagel !
console⦠no need for urban legends
.
Omg, thanks, i lmao
So true, so true!
Itās not an urban legend. itās outdated information. There is a difference.
Foundations producing lag was entirely a myth. Thereās nothing outdated. Foundations havenāt produced lag (outside of what any building piece does) since the Big Bang to Present.
Someone thought they saw something in the devkit nearly 7 years ago and started a rumor that just wonāt die. Anyone who believed them or the rumors propagated them is literally being superstitious. Youāll have better luck with moonstones and chickenbones producing something meaningful.
3 or so years ago when I was doing RP we tested the myth of foundations being more intensive on peopleās system and found it to be true. We made a building using foundations, took it down and rebuilt it using ceilings on top of pillars. Despite the second having more building parts, it caused less frame drops. We then tested it again 5 times in different parts of the map. Each test showed the foundation building causing more issues then the ceiling on pillars building.
If you want to say it got fixed between then and now thatās fine. However saying that it was never an issue when the personal experience of hundreds of people says it was, isnāt going to win over any hearts or minds. Telling people what they experienced first hand was never true is going to result in them writing you off and continuing to believe what they know.
If itās true that foundations today are not an issue then tell people āItās no longer a problemā, not āYouāre wrong it was never a thingā.
Oh I donāt know sā¦t about these and how these systems work my dearest @Anglinex. I play, i observe, i share.
To this giant sā¦thole i aināt dig in. When i see something work weird, i try to understand how to avoid it, or to find a workaround. But with gaming options, nothing else.
Sometimes the less you know the best it is!
Iām going to tell you right now that it was never an issue and as I said anyone who believes it now is wanting to due to superstition and not rationality. You only saw what you wanted to see. Not reality. Or an outright falsehood.
The idea that foundations caused lag was a fabrication, period.
Youāre not going to win anyone over by rejecting reality. It was a problem and now itās not. We can at least agree that itās not an issue today. Donāt care when it stopped being an issue, just matters that itās not anymore. That is the message to spread. Rejecting empirical evidence, corroborated by multiple experiments and rightly 120-ish players doesnāt help the cause.
It was an issue and now isnāt.