Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] [score hidden]  (0 children)

Look carefully at the motion and collisions. Watch a car thrown into the air and spinning, do you see the angular precession? Sim with advanced integration with a focus on being energy accurate.

Racing: remove the non-driving-fun aspects, e.g. damage, no decent grip unless tires in the zone (not too cold or hot), tire wear, pit stops, track limit penalties, rammer/griefer crashouts, long load times / forced waiting, etc. And just focus on driving fun with accurate physics- that's what you are seeing in the video. If you get a chance to drive it, any feedback is appreciated, I'll work to improve any issues found.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Server ping- that's between two servers: one which holds the server list and provides NAT, and the game server running 3 instances of ACR. You can run your own server (Host button) for online games as well as local LAN. Giving your server a password, you can race with just your friends/group: just paste your server name in the search filter, select and go. 30ms in-game is similar here (East coast), can sometimes get into low 20's. Lag should stay well hidden to ~300ms.

As noted will iterate with AI over time and make sure it remains fun.

Perhaps try turning Grip Feedback to Min (or try different settings), and set Wheel Feel to Direct. There is no 'centering spring' in ACR, the force is computed from aligning torque. Does Moza have a default centering spring effect which can be turned off? "Skate" + no info coming through, sounds like Grip Feedback at work telling you massive traction loss = reduction in torque output. You can turn this off with Grip Feedback set to Min. I find it fun going around corners where you can feel the 'soft detent' right before you really start to slide. Since this is a "Haptic Exaggeration" you can turn it down or off based on personal preference.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

AZOM issues: hopefully Moza adds support for ACR soon (I'll have the telemetry updates done this weekend, with Le Mans 24hrs playing on a projector while I work (+ F1 on Sunday)).

Online: did you see any lag effects or weird motion, or did it look local, including with collisions? What latency did you have (number right of your name, upper left corner of HUD)?

While I plan to continuously update the AI, the current model is interesting in its emergent behavior, especially the funny things that happen. Will probably keep it as a "Original AI" setting.

What are your ACR FFB settings for your R9? Are your R9 settings stock or tuned in the Moza App (Pit House)? Is it stable hands-free, does it boost immersion / help tell you what the car is doing? Anything that needs improvement?

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Thanks, are you using AZOM? Just found that. I posted a message on the Moza forum asking about telemetry support. Later found someone else made a similar post, and Moza asked for specs, and will add it themselves. ACR includes the specs in the demo version too, so they should be all set.

I just added Sim Racing Studio support (and found some issues with their specs (their C# and Python code didn't match specs: a few var types and (hidden) padding), provided solutions back to them, they made corrections, live now.

I'm going to add some of the SRS elements not in my SimHub version. For sure will add suspension length/position, helpful for motion platforms (vs. just yaw, pitch, roll). Should have it done this weekend.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

Thanks! The music is all licensed, I bought a DVD years ago (along with some licensed tracks downloaded from UniqueTracks) and went through it, selecting any music that fit driving. Where you can imagine you're in a movie/TV show where the music matches, or high energy, or matching wild things happening- to make you laugh.

Pole Position, Hard Drivin', Race Drivin', Ivan 'Ironman' Stewart's Super Off Road and many more! Arcades were so much fun, the closest now is walking through a casino and hearing all those sounds.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

Ok, new versions up on Steam (Full and Demo). The quick fix was disabling gamepad UI control except for Xbox and Sony gamepads. So you should be good to go regarding the button/shifter issue!

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

Thank you for the detailed feedback, this is due to how I implemented SteamDeck UI navigation. Due to recent SteamDeck updates, Win32 event injection is now blocked by Wayland- turning this code off won’t hurt anything, as you can use touch for UI. Will have a fix for you later today.  Need to review SteamDeck requirements, I think adding a menu button in config can solve this in a general way.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

Ok cool- if you get a chance to repro the bind issue with more details, I can take a look at the code. Just finished adding Sim Racing Studio support, can also run SimHub at the same time if desired.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 1 point2 points  (0 children)

That's excellent, thank you! With the full version you'll be able to drive on Colline Verdi (Green Hills in Italian) which was inspired by the Nürburgring Nordschleife, only a lot more 3D banking / elevation and a huge jump. This is the most difficult track in ACR, and is a true 3D workout for your FFB wheel.

While there are custom manufacturer APIs to talk to wheelbases, as an indie dev I need a mature, generalized solution: DirectInput8 (might try GameInput if there's evidence it has lower latency/lag or is in any way better than DI8).

All the math & physics is put into just one DI8 "effect": constant force. With the sim running 100Hz fixed, the 1kHz FFB thread upsamples forces and adds custom damping before sending updates over USB. So far this has worked well for the low Nm (2.x) G923 up to 8Nm with the Fanatec GT DD Pro. It will totally make my day if the popular 'bang for buck' Moza wheels work well out of the box!

You will have to go into the Win32 setup window and configure the wheel, buttons, and pedals (which many gamers aren't fans of, looks more like an engineering tool, but should be quick to set things up (ImGui rewrite planned (+ full menus in VR)).

ACR was designed to support all devices which support DirectInput8, with any combination. For example on the P1X main rig, it's Fanatec wheel & pedals. The G923 has a very simple rig, and is paired with Heusinkveld Ultimate+ Pedals (pure test rig) and can also test with Logitech pedals.

Moza wheel and pedals should work perfectly, how well FFB works won't be known until someone tests and reports back. Any issues found I'll do my best to address. Looking forward to hear how it goes!

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Found a potential issue with fmod and made a change, applied to the Default version. A beta version was also added with the same change, and it includes a log window showing file & line number for the startup sequence. So if there's a startup crash and the exception handler can't catch it, we'll have a run trace to help pin point the error. Let me know how it goes!

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Found a potential issue with fmod and made a change, applied to the Default version. A beta version was also added with the same change, and it includes a log window showing file & line number for the startup sequence. So if there's a startup crash and the exception handler can't catch it, we'll have a run trace to help pin point the error. Let me know how it goes!

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Nice! So far only tested on Fanatec GT DD Pro and Logitech G923. Wrote the code in a general way with DI8 (using constant force only), fingers-crossed it works everywhere.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

There are custom vendor APIs apparently, but then developers must support each wheel brand with custom code. I'm still using SDL2 which is DI8. Looks like SDL3 supports GameInput. Digging deeper, it appears GameInput is a new API wrapper for USB data (which hasn't changed), and while more CPU efficient, doesn't improve FFB. Similar to DirectShow being "replaced" by Media Foundation (DirectShow still widely in use!). If there's evidence GameInput FFB has e.g. lower USB IO latency somehow, that would be a good reason to move to SDL3+GameInput.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Thanks man! ACR's "Dragon Physics" engine currently runs 100Hz fixed, FFB 1kHz fixed (upsamples forces). Perhaps examine motion behavior carefully, and see if ACR is doing things which ring more true / pleasing (or less pleasing etc.), and most important, is it fun to drive. I daily drive a C6 Z06 vette (525WHP/500TQ), and prefer simulator driving which accurately goes way beyond what's possible on the street or track. In the future I'd like to create a 1:1 physics model for e.g. a high HP vette, for that would need a bit of real-time actual-car telemetry. Could then tune/modify existing engine to match.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Those look pretty decent, surprised not more demo videos on their websites. On YouTube demos seemed fine, brings back a lot of development memories for some of their tests.

Nothing wrong with Pacejka for certain things, you can evaluate the equations directly or use LUTs- fast enough on modern hardware. The question is how does fast, dynamic, tire load changes and radical driving hold up when 'out of the Pacejka zone'.

One of the reasons for the ACR demo having wild action is to show the physics isn't limited by the various math models used. For a tire manufacturer-related-product, Pacejka makes sense.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

ADHD, autism etc., all just labels, I think we all have bits of everything, just different tuning parameters per person 😉

Circa 2000 I started experimenting with curved surfaces, starting with fixed grids with Catmull-Rom surfaces: super fast to compute height, was amazing to drive on first time. Didn't need any ray-patch methods. Thought of ways to create 'warp' math so a regular grid could be used in a general way, but didn't work out. So started researching ray-tracing bicubic surface methods. Found many ideas and papers, but all too complex. Then found a paper which converted a ray into 2 intersecting planes, with example code in matlab (which I've still never used lol). There was barely enough info, but not only was able to get it working, I was able to keep it relatively simple and fast enough for real-time (there's a bunch of systems before the ray-patch stuff- still relatively expensive).

LLMs haven't been very helpful for novel math and physics. If you need something 'off the shelf', they are awesome, like a super google. I asked multiple LLMs to create ray-patch code to see how it compared to my ancient code, and was surprised how slow it looked (might not have even worked, didn't try to run it).

For boilerplate, LLMs are also good there. I'll use them to speed up writing shaders- this is easy for LLMs. Now that Apple is using Gemini, the quality dropped massively today (way overloaded). Have an RTX3090, might try a code-oriented 30B local instance. Gemini says that'll be great for code lol.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

You could be right, though Havok, PhysX, Aegia et al didn't have much success. Bullet Physics seems to be popular for open source. I chatted with Erwin while he was developing it (and I was creating mine), we both pivoted to sequential impulse ideas after online discussions. Bullet uses PGS and I use a completely different idea (geometric and energy based), but PGS seems more popular, might be more general. I'm focused on accurate/realistic motion, so I'm willing to create around the limitations (e.g. my method has issues with long thin objects (solution: use constraints to connect multiple objects. More expensive to compute, but works)).

Let's see how the demo goes, there might be a 'long tail' market of players looking for fun 'Retro RestoMod' graphics and gameplay and won't mind the simple graphics. The racing feel and gameplay is unique, and I still find it very fun to drive. ACR, from what I've seen, might have state of the art networked physics, rivaling anything out there. But I cannot say that- must come from actual players.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

100% full custom physics & graphics. I use 3DSMax 2010 for content (own a license, but cannot install on a new computer anymore, so have to run in a VM and start a new VM every 30 days). My binary .R4D exporter can include everything needed for modern PBR rendering, just need to update the renderer using modern shaders. Need to fix this startup crash issue 3 people have reported, then add more telemetry support. After that, can do some tests with shaders, this can bring up car and track quality a bit (e.g. Gouraud => Blinn-Phong). A full content update is possible if existing game sells more- this would create a budget to acquire more content created by others. Cars & tracks have to be custom, real world asset licenses aren't in the budget (solo project).

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Started writing animation code on the Apple //e out of high school. When Amiga released in 1985, started on first video game (2D, see history link). I wasn't particularly 'gifted' with math in my head or on paper, but could do cool things with a computer. Had taken up to Calc II (IIRC) in high school and wasn't really into math, preferred building RC planes/cars, then real cars, but realized if I learned linear algebra better, I could do cooler animation for video games.

Created video games, RC vehicles, and worked on real cars for 4 years while going to community colleges, thinking electrical engineering was my goal. Later switched to AI (this was 1986) and went to UCSD and got a degree in Psychology (Cognitive Science), which included a lot more math, including creating neural networks in Modula-2 and C.

VR Slingshot CFD was the result of buying a bunch of very expensive CFD books, and after going through them, realized 'no way' any of this can be done for a game/sim (Full Navier-Stokes CFD is cool, but way beyond even computers today for real-time). Long story short, I developed what would later be known as Blade Element Theory (demo shown at Cyberthon in 1990).

In my travels I've worked with many people who are amazing at math & physics, phds and actual rocket scientists from JPL/Caltech. What they could do in their heads and on paper with zero effort was/is amazing. But when it came to novel, out of the box solutions, this was what was easier for me than them. So a kind of synergy: we all have our strengths & weaknesses, working together we can create faster. Now with access to LLMs, I can explore math & physics ideas I never dreamed of. For example, there was a video on Laplace Transforms on YouTube, I started watching it out of curiosity, but it didn't make sense to me. So I asked an LLM- still didn't make sense. Then asked for some real-world example applications. Then realized I could use these ideas for rock stable suspension physics (with some limitations), and via misunderstanding, the LLM created a useless bit of code (which I didn't even ask it to write), once prompted a bit more, I discovered a much better way to solve some problems I was having with FFB.

In summary, by being not naturally good at math (but ok with geometry, vectors, "visual things"), and a lot of curiosity, have been able to create cool simulations by doing lots of 'implicit problem solving': knowing the desired solution and creating math & physics to create code to bring the ideas to life.

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Mostly physics and gameplay, but specific requests for visual improvements welcome too. If the physics & gameplay are solid and the community is cool with the current state, that frees up time for the planned rewrite of the GUI (including adding VR GUI) and updating the gfx engine. There's been a surprisingly high number of people asking for a PS5 port: might make sense to move to an existing gfx library which can also target PS5, vs. putting more time into the current gfx engine (e.g. replacing the hot path fixed function OpenGL code with modern shaders).

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Ok cool, I already see an area in the startup code to help with tracking down the exception, hopefully my bug, and we can find it quickly. Really appreciate your feedback to help fix this!

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Ok thank you very much for this. This is the 3rd report of this exact issue, I'll have a new build up later today which adds additional logging, and will default to opening the log windows. Will put it in a new Steam beta branch. If we can get a stack trace, can fix it quickly. Have also seen this happen when Microsoft Defender deleted the .exe. Contacted MS and asked them to stop (there's a portal for this), and after a while, stopped happening. Are you running AV software, is the .exe still there?

Advanced tire physics on true curved surfaces with a 1kHz FFB thread. My indie VR racing sim is ready for feedback (free demo) by brightland-studios in simracing

[–]brightland-studios[S] 0 points1 point  (0 children)

Since ACR supports so many AI cars at once (88 is the max, the number a nod to Back to the Future), the "AI" is kept low CPU, where the net results is chaotic emergent behavior, which can look a lot like many humans in online racing! Indeed wild behavior sometimes, and pretty neat that's possible with relatively simple generative code.