I had a website with articles (in Russian) on PHP programming, called "PHP in details" with URL "detail.phpclub.ru", so everyone started calling me by the first part of the URL, and I decided not to resist and started using this name. I think, it looks like a silly nickname in English It's 3 years since I handed over the project to other people, and maybe if I were to register now I'd have invented something more creative like Dettaglio
Problems with translation strings: "Replay not recorded" can be the same in English for 2 meanings ("replay hasn't been recorded" and "replay is not being recorded now"). In other languages, Russian in particular, it must be said with 2 distinct phrases. So we need one more string.
IMO, Kyoto oval is almost the same big and quick as Talladega. We need just a short oval.
Watched an IRL race on TV recently. Oh, that's bloody boring! The same problem: only 1 good raceline. If someone manages to get left or right of another car, they go that way 10 laps. The third car rambles behind them with no chance to pass. No slip-streaming like FO8@KY1, no bumpdrafting, just formation flying ...and I'm not an oval basher, I love FZ5@KY1(R)!
I'm going to download RoR tomorrow. Looks promising both in the sence of playing myself and in the sense of development. Reminds the good things of Hard Truck II and 1nsane. It only lacks Kamaz trucks
Besides the mod only worsens the characteristics. You can't make a quicker lap in any of these cars at any track. If someone goes online, he risks a ban for too high speed on the straights, though he won't have any advantage on the entire lap.
BTW, I think, it's possible to make a PHP app. to check the uploaded hotlaps. Run LFS with InSim opened, then run the replay at 32x speed and delete the hotlap if there would be an OOS error.
As for setups, I've figured out that the most important thing for these terrible open wheellers is tyre pressure. Max pressure potentially gives more speed, but it makes them undrivable. Over/understeer regulations distribute tyres heating.
The file swap mentioned here by [RCG]Boosted has been developed further: here is a sketch of a mod. I think, I'll make a separate executable when I install the necessary software (searching for a standalone C++ compiler for WinXP).
It makes
1) something loosely resembling a NASCAR vehicle: XRR with RB4 body, without downforce.
2) something resembling classic F1 cars (like those in GPL):
FO8 without downforce with MRT5 body (can do 380 km/h)
BF1 in the same style (440 km/h :tilt
Think again: NO DOWNFORCE, very hard to drive on non-oval tracks.
Unpack this file into your LFS folder. There are two .bat files which handle files in data\veh folder. Backup that folder to be safe.
Run CARS.bat. It renames some .vob files in data/veh, runs LFS, and when you exit LFS, it rolls the files back. If your system crashed or you closed the batch occasionally, just run rollback.bat.
WARNING! You may spoil your normal setups if you modify them under this mod. Make new setups and adjust them so that modified cars were drivable.
I watched F1 since 92 till 2003, and never was Schumi's fan. I wish he were a real man and after retiring from F1 came to DTM or FIA GT. There we'd see what he's worth. I know he won't.
Schneider is 42, is aimed to win 4th title and NOT going to leave after that. Kristensen is 39, you know how many Le Mans titles he has. I don't think he quits either. Veterans aren't getting older.
Indeed, I agree with the idea that Schumacher could make these years legendary like late 80s, had he accepted a strong teammate. Good point, J.B.!
Driving alone in single player I can get 125 fps if "limit framerate" is [off]. But if I set limit to 100 fps, LFS makes only 92. Set limit to 90 fps, and get 84, and so on downto 50 fps when the limit and the result meet.
Is it just fps limiter that limits the performance more? Or, maybe, when the limiter is [on], some action additioally consumes GPU/CPU resourses?
I support the idea of starting with warm tyres on track for hotlapping. It shouldn't be a timewaste. On the contrary, practice session is better to start from pits. Nobody starts it from the starting grid on the straight.
Looks nice, but placing barriers to separate lanes is discussable. Pro: robbers can make U-turns safely, the cops will need to do that too. Con: people need to learn themselves to drive in proper lane.
Oval rocks, we've figured it out at the race this sunday. FZ50 @ KY1R. Porschari is the only car that has to brake on Ky1. This combination, among ovals, is the most requiring.
Replays and stats
(qual1 and qual2 are 2 parts of the same qualification. the 1st part was made when everyone did their laps. Then came I (being late) and made my lap)
We had a lot of fun. I think, it could have been a close race if everyone were prepared and had proper setups. We had never made "serious" races on oval before, but we just came with open minds and enjoyed it. Watching "NASCAR Back in the day" makes me sleep, but driving on oval among fellows is quite interesting experience.
A suggestion: translatable lessons names, for example as the first part of lesson .txt file. It can be done with translation strings in the language file too, but then it would need to be flexible to handle a different order of words.
How do you define a polygon? Do you split it into triangles?
I know. But the next tick the app will notice that the car is inside pits and will rise that flag again. Dropping flags at splits would prevent punishment for occasional crossing, for example, if someone spinned in the beginning of the lap and crossed the line, he can safely enter pits the same lap.
An idea for a pitlane exit (and enter) AI steward. I post it here, because it contains more technical details than general discussion. Besides, there are many other tools and marshals, so I think it's better for their authors to make this feature, than for me to start another narrow-purpose InSim tool.
Everybody has seen the oval tracks on public hosts: the pit entrance and exit lanes are separated with barriers along the turns, because few drivers follow the marks. Usually a driver joins and at the pits' exit goes straight into the racing line.
The similar, though not that dangerous things may take place on the other tracks.
The idea is to punish those drivers. For usual races, drive-through penalty would be enough. Also there is a quite typical case: a noob joins a host during a race at oval and exits straightforward to the racing line. In this case, it would be safer to make him spectate instantly.
Forcing to spectate can also be applied to those who use the known bug wiyh Kyoto ring pits, which allows resetting from pits on the racing line.
How I'd make the app work
In each case there are two actions together: entering or exiting pits and crossing the line. Line crossing takes place on the same lap with entry/exit. So, for each player we keep an array of data:
1) XY(-1) coordinates
2) XY(-2) coordinates
3) "crossed the line" flag = 1
4) "exited pits" flag = 2
5) "entered pits" flag = 4
6) "joined race right this moment" flag (i.e. the player joined the race or shift+s-ed and hasn't yet left the pitlane) = 8
7) "abnormally accelerated" (to catch car reset) = 16
When a driver enters pit lane, the program sets the player's corresponding flag to "1", and the same for exiting pits. When the driver crosses the separating line, that flag is set to "1". If someone has joined the race (IS_NPL packet received), he also "gets" the flag 6). When crossing a splint or finish line (IS_LAP, IS_SPX packets), all flags are set to 0.
If someone exits pits and crosses the line, we'll have a set of flags: 1 + 2 = 3 (see the list above). If someone enters pitlane crossing a line, it will be 1 + 4 = 5. If someone joins the race and exits from pits, he will have 2 + 8, and if he crosses the line, he will have 2 + 8 + 1 = 11. Kyoto ring pitlane trick: 1 + 2 + 16 (the separating line should continue along the pit lane).
And so on. Simple binary operations. If someone gets a special combination, he is punished. As you see, entering pits may be distinguished from exiting, and punished in a different way, if one cares.
So, the algorythm is the following:
1. get packet of data
2. process it: calculate coordinates, check some conditions and set flags
3. check flags and set punishments to those having specific combinations
that would draw the line. It should be, of course, unique for each track configuration.
Crossing the line basically means that car's movement line crosses this line. We have 2 straights, each set by 2 points and check if they cross and where is the crossing (one point of each straight would be 0, another 1, and we check if the crossing is in this range for each straight).
I haven't found any packet to report pits exiting and entering when driving. So, if pits are needed to be defined, they can be made as set of triangles. Each triangle should have apexes coords and normal vectors per each side (directed inside of the triangle).
(coords of car) - (coords of an apex) will give a vector of car's relative position. Scalar product is positive (not negative) if the car is to the inside of this triangle side. The same for all 3 sides. If all the scalar products for each normal vectors are positive, the point is inside of the triangle.
Another idea: SMX track co-ordinates operating utility
An application that would draw a track and let the user place points and vectors in WYSIWYG mode and give the necessary information:
For a single point:
XY co-ordinates, Z coord of the ground in the place
For 2 points:
1) vector between the 2 points
2) straight line equation coefficients3
3) normal vector to the left and to the right (drawing the normal vector on the map)
For 3 points (triangle):
1) size, square, perimeter, angles
2) normal vectors
For 3 points (angle mode):
1) degrees, radians
2) cosine, sine, tangent and so on
3) bisector vector
Well, maybe even without the latter, but with a possibility to export the values (or just open/save).
P.S. Going to sleep right now. If illustrations are needed, ask me, I'll make them.
There is a problem which is related to all the translation.
When loading a track for a replay, in the end LFS writes "FINISHED" (3a_fnshload) (meaning "finished loading the new track"). I've noticed that after a change of language, LFS shows this string from the previous tranlsation.
Way to reproduce: select one language, open a replay so that LFS would need to load a new track. Let it load and then go back to entry screen, change language in the options and open the same replay. You may select another language and load the same replay once again, and again see that string from the first language.