New Studio Racing Template!

Good catch! I’ve updated it to use an Atomic model so this shouldn’t be an issue now

Currently it relies on the Atomic streaming mode which ensures all instances are replicated at the same time. If you’re not using streaming, you’ll need to add WaitForChild()s to all of the client scripts to ensure that they wait for the instances in the car to replicate.

5 Likes

Unfortunately complex physics assemblies like this are difficult to edit, here are a couple tips for adjusting the size of the chassis:

The main issues will occur because attachments in the chassis don’t stay lined up when you resize or move parts of the car.


Just the chassis, no modifications


Resizing the Chassis causes the steering rack and anti roll bars to become un-aligned, since they are attached to it


These attachments need to be re-aligned with their counterparts to keep the constraint from breaking

If you’d like to change the position of the rear wheels, you can select both wheels, the anti roll bar, and the attachment in the chassis to move them together

In order to do the same on the front, you’ll also need to select the steering rack part and steering rack attachment in the chassis

If you’d like to change the width of the wheels, update the FreeLength of the corresponding anti roll bar spring to match its CurrentLength
image
image

For the front wheels, you’ll also need to update the length of the steering rod


image

18 Likes

Thank you so much for all of this information!, This will help a lot of players. In my case in trying to scale down the model. It would become unstable even with the attachments and constraints being correct and or aligned. The issue turned out to be the mass of the AntiRollBars. By increasing their density so that the mass of the AntiRollBars measured around 2.248 the vehicle became stable and worked perfectly!

2 Likes

Ooo apologies but another question, Is it possible to add multiple seats?

1 Like

You can definitely implement multiple seats, the relevant server code you’ll want to look at is in Car.Scripts.Server.Occupant, which forces a player to sit in the driver seat when they interact with the drive proximity prompt. You can extend this to add prompts for passenger seats.

The client code is in Car.Scripts.Client.ClientController and Car.Scripts.Client.Input.exitHandlerAsync. It disables jumping so the player has to manually exit with a button, but you could probably skip all the client code and have them exit normally.

3 Likes

Just resizing the spheres normally works and won’t move constraints around.

2 Likes

These cars are fun to use on an infinite desert too!

Also, an annoying bug I have noticed is that the camera jitters whenever there is a lag spike. When driving around my desert, every time the chunks generate and the frames drop by a bit, the camera jiggles. You can see it around 10 seconds into my video.

6 Likes

Honestly, This is one of the best templates I’ve seen to date. All I think it needs is a little fixing on the camera switching, as I think there should be 3rd and 1st person along with a type of cinematic view.

3 Likes

Are more prefabs for track going to release, things like jumps, crossings, pieces to transition to offroad, bridges, etc?

This is a nice easy solution, but if you’re wanting something a little more accurate I tackled a similar issue recently where really curved tracks might cause some players to appear Infront of others when they aren’t because of a tight bend or something.

The solution I came up with is to generate a curve that goes through all the nodes (checkpoints) of the track; I found a catmull rom spline worked well for me. Then when getting distance to checkpoint, use the closest point on that curve from the player which you can use to get players positions on the curve for a more accurate position that takes the layout of the track into account.

I’ll leave this here for whoever needs it explaining, if you’d like a more detailed account feel free to hmu.

Blender - and thanks for this callout - I’ll apply a fix for the next time we patch!

3 Likes

Try checking out this curriculum - there are some helpful tips and tricks in there.

I use Substance Designer to create all of my game textures. Substance is an Adobe product and has a licensing cost, but there are free alternatives like Material Maker

1 Like

@ADAMW3D the game now seems to be under review? Racing - Roblox

image

roblox’s own moderation took against their own game :skull:

I reported it as a bug after this and it affected the name of the game on Roblox Studio

I hope it can come back :pray:

All endorsed vehicle models are removed from the Toolbox as well (from a year ago):

Likely related to the deleted game. Now they can experience false moderation first hand :stuck_out_tongue_winking_eye:

5 Likes

that looks great… i forgot what to say

The same thing is happening to me. Every time something streams in or out (which happens basically all the time in a city environment like in my game), the camera does the same zooming effect. I thought it had something to do with me rigging a custom car model wrong, but like you said, it just seems to be a thing that happens when lag occurs.

1 Like

This is a very nice template! Great use of art, and great gameplay! It’s also very easy to customize! :100:


My good friend @poogah05 and I replaced the car body and tires with custom ones he had made as submissions for season 20 in Jailbreak, and we drove it around with a few friends in a Jailbreak map he has. :grin:
(P.S. There is a cool ramp jump featuring @poogah05 around 1:15 in the video.)

9 Likes


I love the new Template, and I have published a game using it with some modifications to the vehicle and map (HyperCar Racing - Roblox).
I am wondering how to add a wins system to the game, so when a player comes in 1st, they are given a point in Wins leadertats (which I added). If anyone has suggestions that work, please lmk. I’ve tried multiple ways such as :

local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
character:WaitForChild(“HumanoidRootPart”).Touched:Connect(function(part)
if part.Name == “Finish” then
local wins = player.leaderstats.Wins.Value + 1
player.leaderstats.Wins.Value = wins
end
end)
end)
end

-but so far, no go.

4 Likes