To me, that sounds like you are deleting a lot of objects. (obj/Del()). My game used to have that problem. So any object that has many of them being deleted often, such as Ki Blasts, I had to instead send them to the void (0,0,0) and reset their vars, then re-use them as "new blasts" next time a new blast is needed.

Like, you are triggering the garbage collector too much, or so I've been told.
We rarely hard-delete objects, and recycle the ones that are created and removed the most (spell effects and the sort).

Most of our CPU usage comes from file writes, which BYOND handles very poorly. It's an RP heavy game that logs a lot of stuff very often.

Most of the "lag" that's left is coming from the client in most cases, we've been working on narrowing down and resolving those.
In response to S10Games
S10Games wrote:
BYOND needs to change its name to "make generic single player games or online casual games with 0 depth or MUDs"

Man you're an idiot, Lummox's explanation was quite good, did you even read it? I doubt it given your replies..

Lets say you bake a cake, and the cake is disgusting, is it your fault for making a shitty cake or will you just blame the milk/eggs for being shit?

I really, really think the games you play are poorly optimized, or their FPS is set that low to accommodate for the poor performance.

BYOND used to be sub-par in regards to performance, true. But that was a while ago now, and the only ones still shouting "BYOND IZ SHIT" have no idea how to code efficiently or how to do things the proper way. It has gotten a lot better to the point where I can lift my Server-side FPS to 30+ and still miss approximately 100 ticks over the course of a few hours. I'd find that impressive given that was really not possible before.

How did that happen? Everyone got their shit together and started throwing in performance fixes. And BYOND started improving roughly around the same time.


Enough ranting, TL;DR: I think your games aren't very well optimized/written and it is absolutely not BYONDs fault completely these days.
In response to Lummox JR
Something interesting i found and confirmed with the help of Kaiochao, is that when dreamseeker is put under stress of OBS(Open Broadcaster Software), the game no longer has the FPS issues.
Another thing that gets rid of the issues i found is if you open the task master right click dreamseeker, go to details and set the affinity so it no longer uses all your CPU cores but only one CPU core(CPU10 for example), aswell as set the priority to high, also gets rid of the fps issues.

Which makes me suspect that having multi core cpus, dreamseeker can't deal with it.
That's actually very interesting, but it's likely not an issue with having multiple CPU cores that's the problem, it's likely having it running on the first core (which it always will by default, as a 32-bit single-threaded application) is causing it to be more subject to fighting for resources with other processes using the same core by default.

Shifting it to a specific core (especially a higher one) is going to be shifting it to a less utilized core in most cases and probably allows for the process more freedom with CPU resources.

I did indeed see quite a marked improvement when doing what you said, so it's definitely got some merit, but it's still likely just allowing it to handle some poor optimization better. A lot of issues are still heavily reliant on the code behind the game and how much is being pushed through the rendering process and the sort.

It does mean that whatever bottleneck is causing the hiccups is small enough for it to be overcome by freeing up just that little bit of resources for the process. So there's probably something on the engine's side that could be improved to handle it better (alongside figuring out where the bottleneck is coming from in your code).
In response to Nadrew
Its not a small improvement on my side, its a big one. From the usual 40-50 fps struggiling to maintain with stutters and freezes, to 58-60 fps after the changes.
I'm not really sure where you're getting those numbers though, like Lummox said, your measurements aren't going to be accurate.

The improvement isn't all that major on my end, things are smoother in some cases, but I still see hiccups where I normally would (heavy lighting changes and lots of action).

GPU usage is fairly high for the process as well, so there's probably some rendering churn going on, but I actually solved a big source of it through the code and it reduced GPU usage by about 8%. So it could be the engine or it could be the code, the game's server-side usage isn't too bad, with about 60-80% CPU usage with 130-150 people online, and a good chunk of that comes from a very basic file write proc, but we've made big improvements there too. (I wrote a DLL that made it a lot better, SS13 adopted it -- unfortunately the way BYOND on Linux handles symbols for linked libraries, we almost entirely negated those gains)
I'm glad to know you found an improvement on your end, although I suspect you're slapping a Band-Aid on a larger issue: need for optimization. I'd still be happy to take a look at your source and see if there's anything I can suggest to improve performance in the code itself.
In response to Lummox JR
I didn't say its a fix, but this raises the question, why exactly the engine poops on multi core cpus and works alot better on single core cpus.

Its definitely something you should look into and see what can be done about it.
I'm running multi-core and the engine runs just fine.
In response to Lummox JR
Have you actually hosted games on servers that arn't in your own house and actually see how "fine" the games run? Thats what im talking about. Do those kind of tests.
What you're talking about in that case is network performance, not server or client performance, and network performance is not CPU-bound. If you saw a change from switching what core you run on, that means either the server or client end, or both, is bogging down for you.
My game server runs at 0% CPU, as a client on my computer ends is using 0.1%-0.2% CPU, and if i use all my cores on the game it runs like poop on my end, but when i switch it to only use 1 core it becomes playable. Like i said its not my computer thats the issue nor is the code. Theres defenitly something going on with how dreamseeker handles the cpu core usage or whatever, it clearly prefers single over multi.

Edit: Even the developers of the Total War: Warhammer 1-2, admitted that the engine clunks the client when multi cores are used, and idealy people set the affenity to the higher unused ones to get the game to run properly. Which is what gave me the idea to try this in the first place because i remebered them talking about it.
Best response
Thing is, you keep ruling out your code. You can't do that. A vanilla install runs most games just fine without needing to resort to those changes.

Also, if it has trouble running on the default core, that might suggest you've got something else running (like another 32-bit app) that's interfering in some significant way. That is, it could still be your system, just not anything like a slow CPU/GPU which we've ruled out.
I must admit I did see *somewhat* of a change when switching Dream Seeker and Dream Maker onto the least used cores I had (6&7), it felt a bit smoother I guess? But I doubt it is much to go on, and I doubt it will mean anything useful. Or even if it was placebo or not.


Also @510Games the last time I ran Warhammer on less than all of my cores the game ran absolutely trash (And it does so with or without all my cores any way, that IS an example of bad development that isn't on your end)
Page: 1 2