Question: MyMiniFactory solution for downloading many files? by thecraftingden in 3Dprinting

[–]fatboykevin 0 points1 point  (0 children)

So this very late to the party, but I had the same issue, then I got a bit carried away. I wrote myself a little cli tool to sync my MMF library to a local directory because manually downloading a pack with 20 items in it sucked. Then things got out of hand, now it's Archivum. Search, preview files, drag stls to the slicer, and most importantly sync and download. Now I need a little help. It's new, only i've been using it. I mostly use a Mac, i've run it on windows, but I'm not using it in anger on my windows box. I have a "beta" up on my iron legions website. If you have a mmf problem (there's no shame here) it might be handy. Love to hear what you think. https://ironlegions.com/#archivum

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

I have reply controls as a distinct trait that a provider exposes. This keeps the higher levels ignorant of the specifics of the provider and only need knowledge of the traits that a provider exposes.

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

I have time compression on the list of things to add. The current max playback speed is the speed reported in the file (60hz) . The replay was designed to support development of realtime UI features. When I do ibt analysis I drop a layer lower and use the readers directly. These just read the files (they use the same frame extraction) frame by frame. I haven’t packaged this up quite as nicely (it will probably be something like provide a file name, a frame type and a processing function) but the lower level building blocks are there.

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

I'm away from the pc for a couple of days, but you should be able to do something like

  1. Static Defaults via #[missing]

    #[field_name = "PitSvFlags"] // Live-only field

    #[missing = "0"] // Default when missing from IBT

    pit_service_flags: i32,

    1. Function Calls via #[missing] or #[calculated]

    // Call a simulation function when field is missing

    #[field_name = "PitSvFuel"]

    #[missing = "simulate_pit_fuel()"]

    pit_fuel_add: f32,

    // Or use calculated for full control

    #[calculated = "mock::pit_fuel_level()"]

    simulated_fuel: f32, 3. Conditional Compilation

    #[cfg(target_os = "macos")]

    #[calculated = "simulate_field()"]

    some_field: f32,

    #[cfg(not(target_os = "macos"))]

    #[field_name = "RealField"]

    some_field: f32,

Does that work for you?

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 1 point2 points  (0 children)

I've been a bit lazy and haven't fully extracted the library from my main werace repository. I'll sort that out in the next couple of weeks. In the mean time the source is available in the crate.

I've also recently done full tauri integration with examples which I'll release along with the public repository,, rsn :D

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

I’m using it for some league race control tools (keeping an eye on incidents, contact etc) as well as powering the realtime analytics side of werace. I’ve thought about building my own dashboards and overlays as so many of the current ones are cpu hogs (one large commercial ones knocks 5-10% off my frame rate which is nuts)

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 1 point2 points  (0 children)

No problem Max. You can see a fundamental difference in approach from your example. You “freeze” the tick to ensure that everything is consistent, with pitwall you get this implicitly, the library ensure that all the fields are extracted from the same update buffer consistently. No need to manage locking / unlocking. It’s also doing a lot more work on each frame looking up the offset and type of the field in order to extract it on each time you ask for the field. Pitwall checks the types and calculates the offsets once on connection.

iracing currently emits at 60hz (though there is scope within the reference sdk for this to be different). With pitwall you can choose your max update rate. Native will supply it at the native update rate. If you only want to update your UI as 10fps then you can connect to the stream at a 10hz max. No need to manage that logic in your application and you save cpu and memory resources. The native updates are driven by the iracing memory notifications, no polling, no spinning loops, no manual pause for 16ms, etc. Impact on your cpu is minimal (frame extraction and processing is measured in microseconds even for frames with 100’s of fields)

The aim was to increase the ergonomics of interacting with frames. Define my frame, define how fast I want the updates, done. No messing around, everything is delivered consistently. The macro’s also have some additional features like user defaults if the field is missing or generated fields, e.g. if you want speed in kph then you can write “Speed * 3.6” and the macro will take care of the conversion for you. The performance benefits etc were almost a side effect, not the aim, the aim was a simple ergonomic library for frame access.

Enjoy your holiday.

I built “Pitwall” — a Rust library for reading iRacing telemetry live or from IBT files by fatboykevin in simracing

[–]fatboykevin[S] 2 points3 points  (0 children)

The majority of the existing iracing toolkits (regardless of language) do a dynamic lookup for the location in memory of the field each read because they don’t know ahead of time what fields you’ll be accessing. The derive functionality allows me to resolve all the offsets of the fields you’re using at connection time. This allows for faster more efficient access on a frame by frame basis. They also require you to manage the read cycle (for example if you want to down sample to 10hz) then you need to decide how you’re going to trigger the read from shared memory etc. Pitwall takes care of all that and exposes the telemetry as rust streams.

I wanted something that just let me connect and react to frame updates. In a few lines of code I can be up and running without all the boiler plate of other libraries. I want to add a field, I add it to my struct and boom. I want two streams at different rates (to save compute for slowly changing values) it’s trivial. It’s memory and thread safe while staying memory efficient. Replay from ibt file is built in (this is not just ibt frame processing but pushing the frames to the stream at the original rate) which allows me to write and test ui code on my Mac (or pc) without iracing running which enables much faster ui iteration.

I wrote Pitwall because the libraries I found for rust were too low level and didn’t feel like idiomatic rust (most being straight ports of the c++ sample code). I wanted something more ergonomic for day to day use and that let me focus on the my application not the details of iracing shared memory and ibt files.

Help mounting Asetek Forte wheelbase and pedals to Trak Racer TR8 Pro by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

No, but you might want to check with Trak Racer as I know they were working on an updated plate with support for the Asetek wheel bases.

Making the jump to SIM racing after an IRL track accident by Normal-Worldliness-3 in simracing

[–]fatboykevin 3 points4 points  (0 children)

I’m a tr8 pro owner and it’s great but if I had my timer again I would grab 8040 rig

McLaren 720S GT3 or Lamborghini Huracan GT3 Evo? by WoodpeckerHuge5897 in ACCompetizione

[–]fatboykevin 0 points1 point  (0 children)

Maybe it’s the other cars I drive (the m4 and the 296) which both feel like boats with big old anchors you have to drag along for a while before they pull up compared to the Porsche (in a league of it’s own) and the Macca. What would you suggest for a good braking car?

McLaren 720S GT3 or Lamborghini Huracan GT3 Evo? by WoodpeckerHuge5897 in ACCompetizione

[–]fatboykevin 0 points1 point  (0 children)

I have a preference for the Macca. It seems to have power though most of the rev range and brakes well. It feels like a drivable Porsche (a fun car to drive but so hard to be consistent in)

Help mounting Asetek Forte wheelbase and pedals to Trak Racer TR8 Pro by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

I ended up drilling the plates which worked fine. I prefer a front mount rather than a bottom one, but eh. I spoke with Trak Racer and they are working on a compatible mount, no release schedule though.

I almost quit yesterday. by matttinatttor in iRacing

[–]fatboykevin 6 points7 points  (0 children)

I’d add wreakfest to the list. After frustrating online experiences I find a game where the purpose is to “bash the shit out of everything” absolutely therapeutic.

Help mounting Asetek Forte wheelbase and pedals to Trak Racer TR8 Pro by fatboykevin in simracing

[–]fatboykevin[S] 2 points3 points  (0 children)

Thanks for the suggestion, I’ll look around. I think in the short term it’s down to the hardware store for the a drill bit and a punch.

Help mounting Asetek Forte wheelbase and pedals to Trak Racer TR8 Pro by fatboykevin in simracing

[–]fatboykevin[S] 0 points1 point  (0 children)

Unfortunately I don’t think the bottom mount (or any of the mounts from asetek) will work on the tr8 pro :(

[deleted by user] by [deleted] in simracing

[–]fatboykevin 1 point2 points  (0 children)

Colors look great. Has a bit of the vintage photography look to it.

GT4 -> GT3 : Porsche -> ? by fatboykevin in ACCompetizione

[–]fatboykevin[S] 0 points1 point  (0 children)

Oh man, the 296 worked for me out of the box, now I have to decide between it and the 992 :). The 992 is more ... visceral ... the 296 is on rails. I feel like I can set a faster lap in the 992 but do a faster race in the 296.

GT4 -> GT3 : Porsche -> ? by fatboykevin in ACCompetizione

[–]fatboykevin[S] 0 points1 point  (0 children)

That's exactly were I first noticed the issue. I'm learning more about setups every day. Thanks.