OK, here are few simple examples, don't mind the graphics.
So first of, as said before, penalties serving needs to go either to pitlane, or it should be added to the time at the end of race. In case they leave it as it is, there should be algorithm that can with ease recognize if a car is on fast lane or not, and if it is on fast lane, penalties shouldn't drop for short races.
For longer races pitlane should be used for 10/20sec penalties with 20sec ones waiting 10sec in pit alone as a stop, without possibility to change tires, repair or refuel. And those should be mandatory to serve next lap ASAP, or more comes.
Now to assigning penalties.
If one brakes anywhere on track where no brake zone is, for example brake checking as it is called, he/she should get instant penalty.
For overtaking on straights like on pic below, there should be algorithm that takes speeds in consideration, and if there is difference in, for example 5% then there should be algorithm that can recognize fair play.
Red car keeps it's movement (1 & 2), blue one can either stay behind (1) or move to the right (2 & 3) in order to overtake. If blue stay behind, and bumps red, there shouldn't be any penalties IF they are out of red zones (later explained).
If red one makes move for defending to the right, if there is no space to move and red hits blue, even if red is in front, red should get penalty.
If there is space to move and red is in position (3), blue has now choice to either follow red (2) or move back to left (3) and proceed overtaking.
If red in this situation moves back to the right, no matter if it hits blue or not, red should get penalty for obstructing blues racing.
Even if racing parallel on straights or not, if in any case one of the cars try to push other out of the track, it should get penalty ASAP. Cars need to leave always car width for each other.
Next example is entering corner in parallel
This is basically self explanatory, black lane is ideal/racing lane.
Now, there are three situations that can occur here.
First one is if both, red and blue go parallel in corner, there should be script that simple monitors two cars if they leave car width for each other. As said, this is only valid if both cars go all way parallel. Simple bumps should be tolerated here as long as width is there.
Second one is if blue outbrakes red one, and simple he uses his ideal lane to proceed through corner, this way red is behind.
Third one is if blue brakes early enough so red can still be in front and keeps his ideal lane to proceed through corner.
And of course in first of the situations, if any of the cars is in front without obstructing other one, they should simply proceed with their racing lanes.
In any of the situations if one car pushes other out of track, penalty is assigned to the one that did it.
Third thing I'll discuss is before, mid and after corner hitting
As seen in picture there are three zones in this S chicane.
Red one is braking zone, determined for each car class and taken in account avg DR of group for example.
Blue is coast zone, this zone may not be presented in all of situations, because some of the turns are simple brake, accel ones.
Green is acceleration zone, short part of the track after turns determined for each car class
Three simple scenarios:
- In red zone, if red hits blue, he'll get penalty according to speed difference and by how much is blue affected.
- In blue zone, bumps are tolerated, if blue is too slow, penalty for blue, if red is too fast, penalty for red. There should be tolerance in speeds and speed difference here.
- In green zone, if blue is slow, it'll get penalty even if hit by red from behind (if DR are same for both cars). Slower the blue is, more penalty he'll get. DR should here have a lot of influence. For example if DR of blue is lower then DR from red, red could potentially get penalty for hitting.
Every corner has these zones and are pretty obvious for each car class.
In a case where one car makes mistake by pushing hitting or anything other to the other and getting advantage over other car, penalty is distributed to the car if that car doesn't give position to the affected car in next 15 or so seconds.
If a car in front looses control, the car from behind shouldn't get penalty if it is too close to the car that lost control. There are like tons of assists in this game, and game alone can recognize if car is loosing traction etc. Also yaw and gyro are pretty easy to implement for simple use of monitoring so I really don't see a reason this should be hard. This is also the only reason why should one brake out of red zones and not get penalized if hit from behind (case of non-brake checking).
White lines on both side of driving asphalt should be track limits with exclusion of kerbs (in case of pics above, green/white/red ones only) wich are considered asphalt/driving part of track. Anything else should be considered to be penalized. Only situations where it shouldn't be case is on straights where no red/green zones are. There should be also an option for how many tires are allowed out of the track, if 0 is selected, white lines and kerbs are limits, if 3 is selected, one wheel needs to be all the time in side of white lines and kerbs.
And at the end of the day, there should be also calculated, or better said added speed differences between cars in regard of DR rating, together with tolerance to bumps and hits.
And SR rating, well, higher SR is, harder you should be penalized, but also, there should be a bit higher tolerance to hits. SR should reflect how clean you are and not to be abused, so even if two A+ SR drivers hit each other with no consequences, there shouldn't be any penalties or SR drops. Where if lower SR driver hits higher one, there should be penalties on side of lower one.
All this is not so hard to implement, and one cannot tell me this is impossible. Every track has these zones predefined, every player knows them, after all, we all brake approx in similar spots, we all have approx similar fast lanes. There are differences but it is marginal, especially if we are in same DR ranking.
These things should be fixed ASAP.