It didn't work. Going to throw the entire thing out and try again with a different system.
I think I know what is wrong with my tickrate system now.
I calculate the amount it steps in time to move forward depending on how much time has passed since the last tick, divided by the expected delay between ticks (1 over w_tickrate, in this case, 1/120th of a second).
The math is sound. I have gone over it again and again and again and again. However:
There is always microscopic differences in latency which are simply out of my control. And because everything is on a single thread, the speed at which the graphics are drawn every frame can have a wild influence on the latency between world updates. There's clue number one.
Clue number two: I do not store the delta anywhere as a member within the world class. I only truncate the result down to an 8-bit counter telling how many ticks to process. The time measurement then gets thrown away because I reset w_lastUpdate every tick without storing the remainder of the w_ticksDue calculation. There's clue number 2.
Clue number 3: certain events within the world only deviate from their intended speed up to a certain point, before wrapping around to being slow again.
I think what's happening is I am constantly throwing away microscopic delays which are introduced during the rendering loop and this causes the world's internal clock to rapidly desync even though it is very close, because it simply forgets about that extra time when calculating w_ticksDue.
Gonna try a fix when I get home.
I'm going to start buying stacks of 4K BD-ROMs to move my old gaming clips and blender projects and stuff to. I can't keep taking care of more and more 8TB hard drives that are going to die someday and having to hoard and replace them.
The price-to-capacity ratio is worse, sure you can get an 8TB WD Blue for 130 dollars now, but those are mechanical and electronic, they get old and die. SSDs, they get old and die and those are twice as expensive. I'm on low income.
Discs only rot and even then they take way longer. I'll be able to procrastinate on revising that old stuff for as long as I am alive.
While I'm deciding what to move to those discs it will also be a good opportunity to finally delete years of stuff I just don't want anymore. The data hoarding is only half because I'm overprotective but also because that shit piles up and gets hard to sift through.
Okay so I've tried about a million different things and everything either just A. goes super speed, B. Freezes after Tick #2 or C. Behaves exactly the same
I am 100% certain this should be working because it is exactly what I did with the FPS cap...
Short C++17 question, expert help wanted
I have been doing some research on the inline keyword in C++, since my IDE (CLion) is... giving it a lot of preferential treatment.
From what I have read, correct me if I am wrong, it is primarily an optimization **when used on functions**. Forcing the compiler to insert the function contents directly wherever it's called when it assembles into opcode, removing the overhead of calling a subroutine, but potentially decreasing efficiency in other ways--low level CPU cache/branch predict stuff the compiler will probably decide for me anyway and that I don't have a great understanding of yet.
However, I cannot find a super clear answer on what cons this may have for *variables*.
Say I have a static variable in a namespace:
namespace stuff {
uint8_t x = 69;
}
What are some potential DRAWBACKS, if any, to making this inline? I can only find information on advantages, but that it should otherwise be left alone because the compiler will do it anyway if it's analysis deems necessary. The consensus seems to be "none" but I want to be sure because there is a lot of bad advice out there.
Thanks
CEO Canithesis Interactive, sysadmin Worlio LLC
wipEout and THE FINALS fan
UNIX enthusiast, Java / C# / C++ Dev
Old computer freak.
Missouri, United States
I made the Firestar Mod Manager for Playstation Vita. Currently working on a danmaku shooter.
Followers of all kinds welcome - no matter your place on the political spectrum, your language or your experience - just be respectful. Posts can range anywhere from deep nerd thoughts to brainless shitposting.
**DO NOT try to contact me from FreeSoftwareExtremist.com. I already have you muted.**