About train lags using physics

えっとですね、サーバーには処理のリミットがあるのでリミットがかかってる気がします

The server has a processing limit, so I feel that the limit is applied.

ちなみに自分は日本人です(笑)

まさかの日本人とは有り難いです :slight_smile:
リミットというのはPhysicsRealが100%になっているところですかね?
だとするともうすでにゲームエンジンの限界にきているということになりますが…。

joint数が多いというのもあると思います。
localで任せた方が速いのがrobloxなのでいったんlocalに任せてみたらいいのではないでしょうか?

サーバースクリプトを扱うのは初めてなので時間がかかりますが挑戦してみます。
Thank you for your support.

上手く動きました!ありがとうございます!

It worked! Thank you!

1 Like

sorry.
It seemed to work, but the behavior is still jerky.
I wrote the following script with reference to this URL and put it in ServerScriptService. Is this enough?

script:
game.Players.PlayerAdded:Connect(function(player)

game.Workspace.Model.PrimaryPart:SetNetworkOwner(player)

end)
日本語

大変申し訳ないのですが…。
上手く動いたように見えましたがまだ挙動がギクシャクしているようです。
URL参考にスクリプトを書き、ServerScriptServiceに置いたのですが、これだけでは何か足りないのでしょうか?

コードを見せてもらえますかね? 書き方に問題があるのかも…?

スクリプトは先ほどの投稿のscript内にあります。それだけしか書いていません。
これはもしかして連結されている客車などすべての車両に適用しないといけないということでしょうか…?

そうですね。 こんなコードを使って一気にオーナーを設定できますよ:

local pathtomodel = --列車へのパス
local pathtoplayer = --プレイヤーインスタンス

for _,part in pairs(pathromodel:GetDescendants()) do
    part:SetNetworkOwner(pathtoplayer)
end

ごめんなさい…超初歩的になってしまいますけどプレイヤーインスタンスというのは自身が操作するキャラのことですよね?
単に(Players)ではだめなのでしょうか…?
それともやはりGame.Players.(個々の名前)みたいに指定してあげないとだめなのですかね?

そうなのですが、大きい何人も人が入るゲームだと処理を分散させるため近くにいるプレイヤーをOwnerにします

That’s right, but if it’s a big game with many people, you should make nearby player owner in order to distribute the processing.

localを使うのは好きではないね。hackerごめんなさい、あのことばはわかりませんよは電車の速度を大変増やすことができます。パーツ数を減らすべきだと思います。

English

I don’t like using local. Hackers can greatly increase the speed of the train. I think you should decrease the number of parts. Sorry for any mistakes in my Japanese!


こんな感じにしてみましたが、エラーを吐いてしまいました。。
根本的に知識が不足しているみたいです。申し訳ないです…。

I’m sorry to have a conversation in Japanese.

自分の書いたコードが間違ってました…

local pathtomodel = --列車へのパス
local pathtoplayer = --プレイヤーインスタンス

for _,part in pairs(pathromodel:GetDescendants()) do
    if part:IsA("BasePart") then
        part:SetNetworkOwner(pathtoplayer)
    end
end

こっちはうまく動くと思います。

良いですね!日本語をまなびますよ!

でも、それを読みました?

①列車へのパスはModelでも大丈夫でしょうか?
どこかの記事にBasePartしか実行できないと書いてありましたので…
②プレイヤーインスタンスがよく分かりません。。
getPlayerServiceで取得するとplayerかnilしかダメですとエラーが出ました。

Of course I read it. Thanks for the advice.
However, I really want to run a locomotive in physics, so I am asking questions knowing that it is impossible.

1 Like

大丈夫です。 コードはmodelのパスを指定するようにできてます。

まあ、まずは

game.Players.PlayerAdded:Connect(function(player)
    local pathtomodel = --列車へのパス
    local pathtoplayer = player
   ...
end)

でやればいいと思います :slight_smile:

1 Like

1から10までありがとうございます…!
vehicleseatに座っているときと地面に立っているときでそこまで速度に差がないのでおそらく成功したと思います。
StatsのPhysicsRealも50~66%まで下げることができました!
本当にありがとうございます!

1 Like

That’s why it’s recommended to use sanity checks.

It’s nearly impossible to do that if the model is owned by the client.