Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vehicle speed underflows when going backward only in openRCT2 #8507

Closed
LordMarcel opened this issue Dec 20, 2018 · 6 comments
Closed

Vehicle speed underflows when going backward only in openRCT2 #8507

LordMarcel opened this issue Dec 20, 2018 · 6 comments
Labels
bug Something went wrong.

Comments

@LordMarcel
Copy link

OS: Windows 10
Version: 0.2.1
Commit/Build: c457d1

When going forward there is a minimum speed of 1 km/h in all versions of the game. However, when going backward there is a minimum speed of 0 km/h in classic and vanilla, but in OpenRCT2 it will underflow to the minimum forward speed. Here are two examples:

Vanilla/Classic: https://www.youtube.com/watch?v=No22AJ7thXE

OpenRCT2: https://www.youtube.com/watch?v=HjKEKkZI3ZA

This has been in openrct2 since at least late 2016, which is when I first encountered it. For a long time I thought it a thing in vanilla as well but today someone found out it is not.

@ZehMatt ZehMatt added the bug Something went wrong. label Dec 21, 2018
@harrysbird

This comment has been minimized.

@duncanspumpkin
Copy link
Contributor

This will be due to replacing some arithmetic shifts with divides

@killersprout
Copy link

I would like to take a look at this any ideas where to start looking in the code?

@duncanspumpkin
Copy link
Contributor

@bdupree5 it will be very difficult to find where the problem is. Its to do with how the acceleration works at slow values. The code is very messy for this. vehicle.cpp is where the code resides.

@killersprout
Copy link

Ill take your word for it. I don't really want to deal with messy code lol

@w-flo
Copy link
Contributor

w-flo commented Apr 26, 2019

I believe I found a fix for this. The negative velocity goes up from e.g. -6000 at an acceleration of 1 until it hits -4096, then the "magical implicit forward creeping boosters" kick in to speed up the train to +32k (~1km/h) even though they shouldn't while the train is moving backwards. I can send a simple PR next week that will keep the negative speed at -4095 (about 12.5% of the forward creeping speed) that should probably mirror the RCT2 behavior.

w-flo added a commit to w-flo/OpenRCT2 that referenced this issue Apr 29, 2019
In OpenRCT2, when vehicles roll backward on a long, flat track piece,
they would eventually change their direction of movement and move
forward instead, after their velocity reached -4095. The acceleration
due to rolling resistance and drag changes to 0 at that point, which
caused the "implicit boost" up to a velocity of ~+32k (close to 2km/h)
to trigger.

The behavior is different in vanilla RCT2, where vehicles just keep on
very slowly rolling backwards.

This commit disables the "implicit forward boost" for vehicles rolling
backward to mimic vanilla RCT2 behavior.
duncanspumpkin added a commit that referenced this issue May 2, 2019
Fix #8507: Incorrect change in vehicle rolling direction
AaronVanGeffen added a commit that referenced this issue Jul 10, 2019
- Feature: [#485] Rides can now be simulated with ghost trains during construction.
- Feature: [#1260] Option for making giant screenshots have a transparent background.
- Feature: [#2339] Find local servers automatically when fetching servers.
- Feature: [#7296] Allow assigning a keyboard shortcut for the scenery picker.
- Feature: [#8029] Add the Hungarian Forint (HUF) to the list of available currencies.
- Feature: [#8481] Multi-threaded rendering.
- Feature: [#8558] Guest debugging tab.
- Feature: [#8659] Banner and sign texts are now shown in tooltips.
- Feature: [#8687] New multiplayer toolbar icon showing network status with reconnect option.
- Feature: [#8791] Improved tile element flag manipulation in Tile Inspector.
- Feature: [#8919] Allow setting ride price from console.
- Feature: [#8963] Add missing Czech letters to sprite font, use sprite font for Czech.
- Feature: [#9154] Change map toolbar icon with current viewport rotation.
- Change: [#7877] Files are now sorted in logical rather than dictionary order.
- Change: [#8427] Ghost elements now show up as white on the mini-map.
- Change: [#8688] Move common actions from debug menu into cheats menu.
- Change: [#9428] Increase maximum height of the Hypercoaster to RCT1 limits.
- Fix: [#2294] Clients crashing the server with invalid object selection.
- Fix: [#4568, #5896] Incorrect fences removed when building a tracked ride through
- Fix: [#5103] OpenGL: ride track preview not rendered.
- Fix: [#5889] Giant screenshot does not work while using OpenGL renderer.
- Fix: [#5579] Network desync immediately after connecting.
- Fix: [#5893] Looking at guest window tabs other than the main tab eventually causes assertion.
- Fix: [#5905] Urban Park merry-go-round has entrance and exit swapped (original bug).
- Fix: [#6006] Objects higher than 6 metres are considered trees (original bug).
- Fix: [#7039] Map window not rendering properly when using OpenGL.
- Fix: [#7045] Theme window's colour pickers not drawn properly on OpenGL.
- Fix: [#7323] Tunnel entrances not rendering in 'highlight path issues' mode if they have benches inside.
- Fix: [#7729] Money Input Prompt breaks on certain values.
- Fix: [#7884] Unfinished preserved rides can be demolished with quick demolish.
- Fix: [#7913] RCT1/RCT2 title sequence timing is off.
- Fix: [#7700, #8079, #8969] Crash when unloading buggy custom rides.
- Fix: [#7829] Rotated information kiosk can cause 'unreachable' messages.
- Fix: [#7878] Scroll shortcut keys ignore SHIFT/CTRL/ALT modifiers.
- Fix: [#8219] Faulty folder recreation in "save" folder.
- Fix: [#8480, #8535] Crash when mirroring track design.
- Fix: [#8507] Incorrect change in vehicle rolling direction.
- Fix: [#8537] Imported RCT1 rides/shops are all numbered 1.
- Fix: [#8553] Scenery removal tool removes fences and paths while paused.
- Fix: [#8598] Taking screenshots fails with some park names.
- Fix: [#8602] Wall piece collision detection deviates from vanilla
- Fix: [#8649] Setting date does not work in multiplayer.
- Fix: [#8873] Potential crash when placing footpaths.
- Fix: [#8882] Submarine Ride does not count as indoors (original bug).
- Fix: [#8900] Peep tracking is not synchronized.
- Fix: [#8909] Potential crash when invoking game actions as server.
- Fix: [#8947] Detection of AVX2 support.
- Fix: [#8988] Character sprite lookup noticeably slows down drawing.
- Fix: [#9000] Show correct error message if not enough money available.
- Fix: [#9067] Land/water tools show prices when money is disabled.
- Fix: [#9124] Disconnected clients can crash the server.
- Fix: [#9132] System file browser cannot open SV4 files.
- Fix: [#9152] Spectators can modify ride colours.
- Fix: [#9202] Artefacts show when changing ride type as client or using in-game console.
- Fix: [#9240] Crash when passing directory instead of save file.
- Fix: [#9245] Headless servers apply Discord Rich Presence.
- Fix: [#9293] Issue with the native load/save dialog.
- Fix: [#9322] Peep crashing the game trying to find a ride to look at.
- Fix: [#9324] Crash trying to remove invalid footpath scenery.
- Fix: [#9402] Ad campaigns disappear when you save and load the game.
- Fix: [#9411] Ad campaigns end too soon.
- Fix: [#9476] Running `simulate` command on park yields `Completed: (null)`.
- Fix: [#9520] Time Twister object artdec29 conversion problem.
- Fix: Guests eating popcorn are drawn as if they're eating pizza.
- Fix: The arbitrary ride type and vehicle dropdown lists are ordered case-sensitively.
- Improved: [#6116] Expose colour scheme for track elements in the tile inspector.
- Improved: Allow the use of numpad enter key for console and chat.
CorySanin added a commit to CorySanin/OpenRCT2 that referenced this issue Jan 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something went wrong.
Projects
None yet
Development

No branches or pull requests

6 participants