As you may all know, Blocklands (or rather TGEs) vehicle physics are.. err.. not very good. Vehicles often get stuck inside bricks or eachother, other times they just pass through eachother. Terrain and interior collision is slightly better, and have often been used as a replacement for bricks, but since they'll be removed in the next update, the current physics just won't cut it.
It's not just the collision physics that are bad, though; the general handling model sucks. None of the cars that I've tried out, let it be the default jeep or Phydeoux/Barnabas sports cars, handle anything like cars. The only word I can think of is "sterile". The cars give absolutely no feedback what so ever, and the little handling that exists feel awkwardly floaty. The engines are very poor as well. For example, there is no variable torque curve, nor are there any gears. I know, Blockland isn't a racing game, but when a modern games vehicles are worse than the ones of
a game released 12 years ago, you know something is wrong.
As you may have noticed, I'm not very good at writing running text, so I'll just divide the post into sections, starting off with:
The physics engineVehicles should have a greater gravitational accelerationEarlier in this post I mentioned that vehicles feel 'floaty'. This is because they are: they seem to fall slower than a real-life object due to a lower gravitational acceleration than on earth. This causes them to topple over very easily.
The simple solution would be to raise the gravity multiplier for vehicles.
Objects should have inertiaOne thing I've noticed about BL's vehicles is that they have a static center of gravity. It is not affected by any applied forces. All body roll you see from acceleration/braking/turning are caused by the
yawForce / rollForce / pitchForce attributes in the vehicles configuration file. This the main cause of the poor handling/feedback.
The solution to this problem is to give vehicles inertia. This basically means that the vehicles center of gravity will change dynamically dependant on the forces applied. This would also make the life of modders easier, since there would be three properties less to worry about.
At the current moment I can't think about anything else that's physics related, so I'll move on to the next part:
HandlingEven though the most severe issues can be cured by fixing the physics engine, there are more things to the handling. Thing such as suspension movement, tire grip and engine power.
Tire gripThe tire grip of BL's vehicles seems to gradually decrease the faster you go. I'm not sure if this is a linear or an exponential decrease, but I do know that it's periodical.
On a real car, however, this is not the case. When you start to loose traction, the tire looses grip slowly until a certain point where it starts loosing traction very quickly.
Suspension movementIn Blockland, a vehicle's suspension can only travel in two directions: up and down. On a real car, however, it moves in all directions: up, down, forwards, backwards, left and right. Also, some cars also have their suspension mounted in such a way that the springs are leaning inwards; this helps them to handle lateral forces (eg turning) better.
The solution to this would be to, besides adding separate spring/damping values for all three dimensoins, allow modders to set the suspension angle. You could also go one step further and add a system with beams, similar to the one Rigs of Rods uses (except no demolition), though this might be too complicated for both the coders and the modders.
A "real" drivetrainIn BL, when you press the
W (or whatever key you have assigned for walking) key to accelerate a car, all the power is transmitted instantly. It's like turning a switch, and is far from what a real combustion engine, even an electrical engine, works like.
A real engine produces different amounts of power depening on the current RPM. A regular combustion engine, let it be diesel or petrol, produces almost no power at idle, but probably tens, if not hundreds, of times the power at it's peak.
Rigs of Rods has a very good, yet simple take on this:
First, the engine's rev range is specified.
Then, the peak power is specified.
Lastly, an ordered list of key RPM's and the available torque (in %) is specified
It could look something (but not exactly) like this:
[Engine]
rev_range: 950, 7500
peak_power: 5000
avail_power: 950, 0.1
1500, 0.2
2000, 0.4
3000, 0.65
4500, 0.8
6000, 0.9
7000, 1.0
7500, 0.8
Out of these values the game then creates a torque curve for the engine.
Of course, an engine like this wouldn't work very well with only one gear ratio; it wouldn't be able to deliver power efficiently. Therefore this change would require a gearbox.
Rigs of Rods (yet again) uses a list of gear/differential ratios, but I think this would be too complicated for users.
Instead, the maximum speed for each gear should be specified, like this:
[Gearbox]
//first gear, second gear, third gear, fourth gear, fifth gear
forward_gears: 30, 60, 85, 105, 130
//reverse gear:
reverse_gears: -35
Gear changes are done either manually or automatically, depending on induvidual user configuration. In order for the latter to work, two new entries in the engines section would have to be made:
shift_up: 6750
shift_down: 3000
These should be rather self-explanatory.
Most of Blocklands vehicles are four-wheel driven, but sometimes you might not want this. For example, you'd probably want a Formula 1-car to be rear-wheel driven only. There is a function called
setWheelPowered, but it only accepts boolean values and also causes a console error.
A better way to do this is to add a power bias setting to the gearbox section:
power_bias: 0.5
Setting this value to 0.5 (as shown above) would divert the power equally to the front- and rear wheels, setting it 1 would divert it to the rear wheels, and setting it to 0 would do the opposite.
Better brakesMost driving games (and most games with vehicles in them) have separate foot- and handbrakes. While the car is moving forwards the foot brake is activated by pressing the "reverse" key and vice versa. In Blockland, however, pressing the reverse key puts the car into reverse gear. Instead BL users are confined to the spacebar, which at least I find very awkward, especially since this nullifies the possibility of a separate handbrake.
Another thing which is missing, besides the features mentioned above, is the ability to set the brake bias. Most cars divert more braking power to the front wheels than the rear wheels, for two reasons:
1) The car's center of gravity is shifted forwards when braking
2) Diverting too much braking power to the rear wheels could cause the car to spin.
A
brake_bias entry in the brakes section would have to be made. It works similarly to the
power_bias entry.
Speaking of the handbrake, modders should be able to set whether it applies to the front- or the rear wheels (or all four for that matter).
That's really everything I can come up with for now. If you find any inconsistensies, or just want to give me suggestions, feel free to tell me.