Well, we already have F1 style scoring as well as other various F1 tickers.
I was wondering, if a NASCAR qualifying ticker would be viable to create? I realize it would be very hard however, if anyone can create this insim I would greatly appreciate it. Plus it'll be really cool to have and analyze.
I'm not volunteering to make this, I'm just asking for clarification. Are you talking about the ticker going along the top of screen (showing the current qualifying time for each driver) or are you talking about the display at the lower 1/3rd of the screen showing a 'live' gap between the current lap and the pole lap?
Like Amp, I'm not volunteering to make this but I have an idea of how it could be made...
I have no experience with nodes and stuff, but what I was thinking of is this: (maybe someone with experience in nodes should review it and see if it's possible :$ + I never worked with an array with multiple objects so I would use a database for it)
You could, in an array with multiple objects, save the time for each player for each node and then compare it with your time, sort by time and you have your racing position at that time. At that way you can compare the split between you and the racer in front of you / in the back of you with their time they had on that node.
This could get a bit much for a computer to handle, especially a computer like mine, because if you race with 20 racers on a huge track which has a lot of nodes, your array would just explode.
While writing this, I'm thinking of a client side InSim I downloaded a few months ago to race on the oval... I think it was called LFSRelax and is made by Gai-Luron. I think this also had a real time split between you, the racer in front and the racer behind you.
This is almost exactly what I had in my mind as well.
Can someone please create this live gap timing? It doesnt need to be anything fancy just some stats that display when you are driving (or spectating someone) that shows where you are in regards to the qualifying field on the track.
I spent a few hours with this idea yesterday but I don't think it's possible to make a good system with the node system in LFS currently. The problem is that the number of nodes in the tracks is quite low, so there are generally quite big gaps between the player moving from node to node. In testing I was looking at FOX @ SO4 and BF1 @ KY3 and here's a little of my data for the times between the nodes:
FOX @ SO4
Number of nodes: 533
Average time gap between nodes: 172.82 ms
Smallest gap between nodes: 39.98 ms
Biggest gap between nodes: 360.02 ms
BF1 @ KY3
Number of nodes: 771
Average time gap between nodes: 137.83 ms
Smallest gap between nodes: 19.98 ms
Biggest gap between nodes: 449.98 ms
Given that you're trying to track qualifying where hundredths are important, nevermind 2 or 3 tenths, these gaps are just too much. The end result is that the gap between laps fluctuates quite a lot. I've put together a very rough video which shows the gap between the lap the currently viewed driver ([SR] Teq in this case) is on and the current pole position lap. Here's the link. As you can see in the video the gap changes a lot on almost every update. Also see the attached image for a graphical representation of what I'm trying to say above. I don't think it's going to be possible to make a good system given the LFS limitation so I won't be doing any more work on this, but if someone does decide to pick this up and make something from it good luck and I hope you can come up with something better than me.
Here are a couple of technical details of my application for anyone who's interested:
I'm using a HashMap to store the node data rather than an array or another ADT backed by an array (e.g. Vector, ArrayList) since the retrieval time for a specific node using the HashMap is much quicker than iterating through the array looking for a specific node.
I'm using LFS's minimum allowed gap between requesting car position information (50ms) to try and get the most accurate information available.
amp88: Between the nodes you could interpolate with a 2nd order approximation to update the gaps more frequently. I would suggest updating the displayed gap at a fixed freqency always presenting an interpolated value which is calculated from a model that you update everytime you receive a node update.
Actually, what's slightly more important to me is the place during quali. If you have a ticker that shows the live positions along with the live gap times (like 8th, 9th, 8th, 8th) I would be happy even with the large gaps between the tracks.
Although if it is possible to tighten it up I would of course prefer it to be tighter. but the live positions is what I'm actually aiming for
If your mainly using this in qually then your basically just using this as a ghost for the current fastest hotlap, you don't want live data per say, but you do want to get information about time information outside of the splits, like for example on each node. What you could do then is capture the time it takes for the driver to get to each node, and then compare that against the time it took for you to get to each node, that would give you an approximation on how far you are behind another client.
From there you could compare the absolute fastest times, the person who set the fastest lap or set the fastest sector, and see how far you are from each of them on a per node basis, as all your doing is saving the the time stamp on each time they enter a new node. The margin of error is as said before, 50 ms at most.
Well, if the programmer uses 'nodes', who are updated each few seconds, it can be a problem because in the oval races, the qualification sessions are often decided with a few hundredths or tenths of a second. The qualification ticker would not be that accurate then. E.g. It can show that you are the number one in the last node, but you also can be number 7 when you finished.
Have you watched the YouTube vid which Amp included here? If you do, you would understand why it isn't that accurate.
Yep, that's the problem. On ovals the gaps are so small that any inaccuracy will make a big difference to the result. Despite saying above I wasn't going to do anything more towards this I spent a few hours on it today. Here's a second attempt showing the gap plus a predicted position. It's still not perfect but getting there somewhat. If I can make something that I'm happy enough to release would you like to have some sort of control panel for the application to show you who's on a hotlap and allow you to focus on them instantly to help with the broadcast? I've attached an image showing the fairly basic GUI I'm using at the moment for testing purposes.
Amp88 I would like to thank you very much for developing this ticker for me. I know this must be very hard work as this is very hard to implement and i thank you
Yes I would like a control panel please.
BTW was that LFS TV viewer or were you using the default cameras?
Also, I'm a little worried about the accuracy on the ovals. I know on ovals it'll fluctuate a LOT (it does in real life NASCAR) and i'm not worried about that. I'm more concerned with accuracy. Like I wouldn't like it to say "7th" when the guy's lap got him 3rd
But wouldn't it be easier to settle for an F1-style quali system where you just have the split time compared to P1? And if it would, *cough* would someone mind creating a program like that as well?
That's quite an easy add on for that program as (I suppose) the times of each get saved in a field and your time gets compared to the time in front of you in that node. You could easily change this so your time gets compared to the best time on that node.
But first there should be a solution for the minor accuracies on the oval...
That's what I'm working on improving. At the moment the inaccuracy in the system DOES make it show the wrong position (I got a replay from last season of LFSCART from here) and the gaps are so close that the inaccuracy makes a big difference, as I expected. That's why I'm not at the point of releasing the app because I'm trying to improve the accuracy further.
I actually added that in to the app a little while after I did the above video (but it will be configurable as an option).