[16.25] Express belt animation stops at a specific time
[16.25] Express belt animation stops at a specific time
After a certain time of the game, the animation of Express belt just stops. But it does not stop working. Animation T1-T2 belts continues to work fine.
This does not depend on the graphics settings or mods.
I played a very long time in this save, with the release of 0.15. Maybe at the specified second there is some overflow of the animation counter?
P.S. i'm using google translate, sorry for that.
This does not depend on the graphics settings or mods.
I played a very long time in this save, with the release of 0.15. Maybe at the specified second there is some overflow of the animation counter?
P.S. i'm using google translate, sorry for that.
- Attachments
-
- factorio-current.log
- (13.73 KiB) Downloaded 172 times
-
- mods.zip
- (3.55 MiB) Downloaded 150 times
-
- save_1_minute_left.zip
- (68.26 MiB) Downloaded 220 times
Re: [16.25] Express belt animation stops at a specific time
Thanks for the report.
Fixed for 0.16.26
I think this makes you record holder of the longest played map with belts
Fixed for 0.16.26
I think this makes you record holder of the longest played map with belts
Re: [16.25] Express belt animation stops at a specific time
Did it really overflow some counter?
Re: [16.25] Express belt animation stops at a specific time
You could say that. There was
frame = (int32_t)(tick * animation_speed)
where result of (tick * animation_speed) is double, so when it got larger than max int, casting it to int clamped it to max int (because that's how float -> int cast behaves, it doesn't wrap around as normal integer arithmetic)
frame = (int32_t)(tick * animation_speed)
where result of (tick * animation_speed) is double, so when it got larger than max int, casting it to int clamped it to max int (because that's how float -> int cast behaves, it doesn't wrap around as normal integer arithmetic)
Re: [16.25] Express belt animation stops at a specific time
People using signed types when they never needed or wanted the negative variant -.-posila wrote:You could say that. There was
frame = (int32_t)(tick * animation_speed)
where result of (tick * animation_speed) is double, so when it got larger than max int, casting it to int clamped it to max int (because that's how float -> int cast behaves, it doesn't wrap around as normal integer arithmetic)
If you want to get ahold of me I'm almost always on Discord.
Re: [16.25] Express belt animation stops at a specific time
Dude! Do You really gamed over 9942 hours on this save? Without speeding up ts's like 3.4 years gaming 8 hours a day O.o
-
- Filter Inserter
- Posts: 841
- Joined: Mon Sep 14, 2015 7:40 am
- Contact:
Re: [16.25] Express belt animation stops at a specific time
He could have been playing on a higher game.speed setting.SQLek wrote:Dude! Do You really gamed over 9942 hours on this save? Without speeding up ts's like 3.4 years gaming 8 hours a day O.o
Re: [16.25] Express belt animation stops at a specific time
132 days = 3200 hours, and all at normal speed, just 24/7. And I know, I'm a little crazy - but someone mining bitcoins, well, I'm the mining ores in Factorio. So meditative...
Thanks for answer.
Thanks for answer.
Re: [16.25] Express belt animation stops at a specific time
Yes, 16.26 fixed belts. However, the same problem still remained for express splitters and underground belts.
Re: [16.25] Express belt animation stops at a specific time
If you're doing this in C++, it's much worse than merely "clamping". Casts from floating point types to integer types that result in overflow cause full blown nasal demon undefined behavior!posila wrote:You could say that. There was
frame = (int32_t)(tick * animation_speed)
where result of (tick * animation_speed) is double, so when it got larger than max int, casting it to int clamped it to max int (because that's how float -> int cast behaves, it doesn't wrap around as normal integer arithmetic)
Re: [16.25] Express belt animation stops at a specific time
That's fine. It does the same thing on all of the platforms we support or multiplayer wouldn't work (and it does). We also rely on signed integer overflow/underflow which works as you'd expect it to on all of the platforms we support with tests and everything.retep998 wrote:If you're doing this in C++, it's much worse than merely "clamping". Casts from floating point types to integer types that result in overflow cause full blown nasal demon undefined behavior!posila wrote:You could say that. There was
frame = (int32_t)(tick * animation_speed)
where result of (tick * animation_speed) is double, so when it got larger than max int, casting it to int clamped it to max int (because that's how float -> int cast behaves, it doesn't wrap around as normal integer arithmetic)
If you want to get ahold of me I'm almost always on Discord.