CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.61k stars 4.17k forks source link

Foot crank not powerful enough. #18114

Closed Soyweiser closed 8 years ago

Soyweiser commented 8 years ago

Per: http://smf.cataclysmdda.com/index.php?topic=13104.0

"Behaviour: Modifying a bicycle to switch in a Cargo Space and some cargo from inventory produces the report "Bicycle is too heavy for its engines!" and prevents acceleration.

Expected behaviour: Since the bicycle is still light enough for the player to drag (133kg at 223 movement cost on a diagonal), and a foot crank is ostensibly more efficient than walking+dragging, it appears that the weight limit on it is drastically too low, particularly considering pedicabs can easily carry 2+ passengers for an easy 100kg+ payload to transport.

This may be related to the undervalued weight limit on pushing/pulling wheeled vehicles, since in reality pushing a two tonne vehicle to the gas station is very achievable, while in Catacylsm a 250+kg motorbike is "too heavy to shift" for an average strength human."

WizardOfOoo commented 8 years ago

I agree. with gears a bike can move 300+ lbs uphill.

DangerNoodle commented 8 years ago

You will have to re-open this, as testing revealed that simply increasing the power of foot pedals does not change the ability to pedal a bicycle under load.

I had intended to expand that pull request beyond a simple power tweak, but I was unable to figure out where in the source the code would be. It turns out that some hard-coded element is not making it respect how much weight the character can drag.

Cat09 commented 8 years ago

The issue might be in part the relationship between speed/maxspeed and power. the max speeds for vehicles in this game have historically been kind of absurd, and I suspect pedal power is balanced off more sane speeds

DangerNoodle commented 8 years ago

As I stated in the pull request, testing revealed that increasing the power failed to make the bicycle behave sanely in relation to whether it could be dragged.

WizardOfOoo commented 8 years ago

yea... if you up your strength enough with debug you can break the speed of sound with a wheel chair.

Cat09 commented 8 years ago

DangerNoodle (great name), I was commenting on the issue that arises if the hard limit is removed. I wonder if air resistance has any consideration given? in theory you could account for it with a simple # of tiles, or perhaps a surface area of as a stand-in for actual drag estimates. I guess the important thing is the Velocity^2 part of the equation. did some digging, and this is what I found for the strength limit in vehicle.cpp else if ((has_engine_type(fuel_type_muscle, true))){ //limit vehicle weight for muscle engines int mass = total_mass(); ///\EFFECT_STR caps vehicle weight for muscle engines int move_mass = std::max((g->u).str_cur * 25, 150); if (mass <= move_mass) { return (int) (safe_velocity (fueled) * k_mass() / (1 + strain ()) / 10); I would propose removing the weight limit entirely, but instead rely on resistance at wheel and axle. I'm not sure what the code is for that, or how 2 wheels are accounted for. (instability)

dug some more and found some various code for acceleration and aerodynamics and such that I can't quite figure out, seems like it increases k_aerodynamics by the number of parts on a vehicle (on the front of the vehicle?) up to 13(capped...?) but I couldn't find any indication of velocity squared anywhere along the line.

edit: not sure how to keep the newlines in the code section

edit2: looks like rolling resistance also increases non-linearly with speed, though not as much on normal roads as air resistance does.

DangerNoodle commented 8 years ago

Ah, I see. Not sure how to go about handling the idea overall. If you are better able to handle it, that would be excellent.