カテゴリー別アーカイブ: L4D2サーバ

The Lerp Guid(ラープガイド)

http://www.l4dnation.com/general-discussion/lerp-guide-v2-3-4c/訳しました。間違っているところあったら教えてください。

The Lerp Guide v2.3.4c by ProdigySim and Don
ラープガイド v2.3.4c by ProdigySim and Don

What is Interpolation?
インターポレーションって何?(interpolation=改ざん、補完)

Interpolation was meant to help keep gameplay smooth even when packet loss occurs, or when waiting between update packets.
元々インターポレーションはパケットロス(通信障害)やパケット待ち(通信待ち)の状態でも滑らかにゲームをプレイするためにつかわれていました。

When using an interpolation value of 100 ms, the game state you see (all player/object positions) is an interpolated game state that pulls from:
100msのインターポレーションを使った場合、見ている状態(すべてのプレイヤー、オブジェクトの位置)は以下のものから補完された状態になります。
The most recently received game state (last update/tick)
一番最新のゲーム状態
The game state from 100 milliseconds ago
100ミリ秒前のゲーム状態

Essentially, this is going to mean that with cl_interp 0.1, what you see is going to be 100 ms behind the latest game state you received. Add on a ping of 50, and your client is behind the server by a full 150 ms every time it gets an update.
要は、cl_interpが0.1だと100ミリ秒前のゲーム状態でもっとも新しく受信しているものを見ることになります。ピング値の50を足すと、クライアントではサーバから150ミリ秒後に毎回更新されます。

What does interpolation affect?
インターポレーションは何に影響があるの?

Your average player isn’t going to care much about messing with interpolation values at all, but in competitive play it can be very important.
一般的なプレイヤーはインターポレーションの値を気にしないでしょう。しかし、大会に参加するようなプレイヤーにはとても重要になってきます。

How early/late you can deadstop (and where the hunter or jockey appears to be when you do)
どの程度のタイミングで殴れるか(殴ったときにハンターやジョッキーがどの位置に見えるか)
How near or far you appear to be to a Survivor when you scratch or punch them (See: Tank Long Arms)
生存者をひっかいたり殴るときにどの程度近づくか(参考:タンクロングアーム)
How much time you have to skeet/deadstop something before its tongue/charge/pounce/punch lands
舌、チャージ、飛び乗り、パンチが届くまでにどの程度打ち落とし/殴る猶予があるか
How much things will move if you DO start losing packets
パケットロスが発生し始めたときに、どの程度移動するか
How smooth things will look on a frame to frame basis
フレーム間の動作がどれくらいスムーズに見えるか

Basically, lerp can play a lot of different important roles in melee-ranged situations. Most players will benefit from adjusting their lerp from the default value. Note that your lerp value has nothing to do with whether you actually DO lose packets or not. That’s controlled by network conditions entirely. Interpolation is just one solution to combat the jerkiness caused by lost packets and by the wait between packets.
基本的に、ラープは近接距離のシチュエーションで大きな違いをもたらします。多くのプレイヤーはデフォルト値から変更することで得をするでしょう。ただ、ラープ値がパケットロスをしているかどうかに関係が無いことは覚えておいてください。これはネットワークの状態に大きく左右されます。インターポレーションはパケットロスによって動作が飛び飛びになるような状態だと解決策の一つになりまます。

So, an interpolation setting of 0 will make you lose smoothness (most people report jerky commons and SI), but it will give you the most current game state possible on your ping, and usually give you more time to deadstop hunters and whatnot.
それと、インターポレーションを0にすると滑らかさを失い(多くのプレイヤーが雑魚ゾンビや特殊がカクカクすると言うでしょう)、その代わりにあなたのping値でもっとも最新のゲーム状態を得ることが可能になり、ハンターをやその他を殴るのにもっとも多くの猶予を得ることができます。

What should I set my interpolation to?
インターポレーションをいくつに設定するべき?

In general, you want a lerp that’s lower than the default of 100 ms. Some people switch their lerp when changing between survivor and infected side, but any forms of lerp toggling are usually frowned upon. Current Confogl configs watch for lerp changes and announce them, and leagues and tournaments are developing rules about lerp changes.
一般的に、デフォルト値の100よりも低くしたいと考えるでしょう。人によっては生存者と感染者側でラープ値を変更しようとするかもしれませんが、このやり方は多くのプレイヤーから顰蹙を買うでしょう。コンフォグルはラープ変更を監視、それを検知するようになっており、リーグやトーナメントではラープ変更にルールを設ける方向に進んでいます。

For Survivor play you are always going to want a lower lerp.
生存者側では低いラープ値を使うでしょう。
The maximum value generally people use is 67 ms, and the lowest is 0 ms.
よく使われる最大値は67ミリ秒で最小は0ミリ秒です。
Other popular settings: 10 ms, 16.7 ms, 20 ms, 33 ms, 38 ms, 40 ms.
その他の人気の設定値: 10ミリ秒、16.7ミリ秒、 20ミリ秒、 33ミリ秒、38ミリ秒、40ミリ秒。

It’s important to note that the time between ticks on l4d2 is 33 ms, so we basically see a split in preferring < 1 tick of interpolation and > 1 tick of interpolation. Theoretically, many of these values are redundant, and only make tiny differences in what you see on your screen and how the server calculates your position and your hits.
l4d2は33ミリ秒ごとに時が進むことを頭に入れておくことが重要で、そのインターポレイション値がそれ以下か以上かで分かれます。理論上は多くの設定は必要以上に低く設定されており、画面上でどう見えるか、サーバがプレイヤーの攻撃や位置をどう処理するかにはほとんど影響がありません。

For infected, higher lerp values can often be useful, as survivors generally run away from SI. Usually a survivor is going to make sure he/she is just out of the tank’s reach. But, if the tank is using high interpolation, he won’t see the survivor start to move for an extra 100+ ms. When using lerps extremely high, such as 400 ms or 500 ms, this problem is exacerbated greatly. The same phenomenon occurs when other special infected scratch survivors.
Confogl blocks lerps higher than 100 ms for this reason.
感染者にとっては、生存者が逃げていくため大きなラープ値がよくつかわれます。通常、生存者はタンクの間合いに入ろうとしません。しかし、タンクが高いインターポレート値を使っていた場合、100ミリ秒以上の時間生存者が動いていないように見えます。400ミリ秒や500ミリ秒のように大きな値を利用していた場合、この問題は顕著にあらわれます。同じ問題はそのた特殊のひっかきでも発生します。これを防ぐためコンフォグルでは100ミリ秒より大きな値は設定できません。

In general, though, you can still do everything you need to do as Infected with 0 ms, so it’s recommended that you set your lerp to a value you’re comfortable with on Survivor side.
Also, pouncing or charging another player will get harder the higher your lerp is, because the survivor position you see will not match up with the server’s model. You will find more often that you pounced/charged right through a survivor and didn’t hit.
ただ、基本的には0ミリ秒でも感染者側でやる必要のあることができないというわけではありません、だから生存者側で快適にプレイできる値に設定することをお勧めします。また、高ラープ値だと他プレイヤーの位置があなたの見ているものとサーバのものでずれてしまい、飛び乗りやチャージが難しくなります。生存者の隣に着地してしまい失敗することが多くなるでしょう。

How do I set my interpolation?
どうやってインターポレーションを設定するの?

Your interpolation value (lerp) is determined by the following formula based on your client cvars:
ラープは以下の計算式で導かれます。

min( max( cl_interp, cl_interp_ratio / cl_updaterate ), 0.5f )

To put this in english:
日本語にすると
Your cl_interp value is limited to a minimum value of cl_interp_ratio / cl_updaterate and a maximum of 0.5 (500 ms), and is set by the cl_interp cvar value.
cl_interpの値は最小がcl_interp_ratio / cl_updaterateで最大は0.5(500ミリ秒)に制限され、cl_interp cvarで設定できます

Note that for example cl_interp 0.04 results in 40 ms lerp.
cl_interp 0.04だと40ミリ秒 ラープになります。

When setting your lerp, a good idea is to set your cl_updaterate as high as possible, your cl_interp_ratio as low as possible, and then your cl_interp to what you actually want. This will minimize the value of the cl_interp_ratio/cl_updaterate-imposed limit and let you pick what you want for interp.
ラープを設定するいい方法は、まず、cl_updaterateを可能な限り高くし、cl_interp_ratioを可能な限り低くする、そして、cl_interpを調整していく方法です。これで、制限となるcl_interp_ratio/cl_updaterateが最小になり、interpに望む値を適用できます。

For example, I use 16.7 lerp, and my autoexec contains the following
たとえば、私はラープ16.7を使っていて、autoexecは以下のようになっています。

rate 30000
cl_cmdrate 100
cl_updaterate 100
cl_interp 0.0167
cl_interp_ratio -1 // actual value will clamp to the minimum value allowed by the current server(実際の値はサーバに許可されたものになる)

Normal servers allow 60 updaterate and a minimum interp ratio of 1. Confogl servers lock updaterate to 30 and allow interp ratio 0. This kind of a setting covers both bases.
通常のサーバではupdaterateが60、interp ratioが1まで許されています。Confoglサーバではupdaterateは30に固定され、interp_ratioは0まで許されます。上の設定はどちらの場合もカバーしています。

Note that as you can see from the code, it is normally also advised to increase your rate setting to the L4D2 maximum of 30000, which tells the server that you can receive up to 30000 bytes/s which every normal connection nowadays should be able to handle. I also like to keep my cl_cmdrate value the same as my cl_updaterate, although due to engine limitations it technically doesn’t make a difference whether you use 30 or 100 cmdrate.
この設定で言いたいことは、L4D2の最大である30000にしておくことで、サーバに一度に受け取れるサイズを30000バイトだと伝えるということです。、L4D2の最大はこれは最近の環境だと可能であるべき値です。また、cl_cmdrateはcl_updaterateと同じにしておくのが気に入っていますが、実際はエンジンの制限により30でも100でも変わりません。

If you use this snippet, edit the value for cl_interp as you wish depending on which lerp you want to use.
Note that on regular servers such as VALVe’s official dedicated servers, the minimum lerp you will be able to use is 16.7
この設定を利用する場合は、cl_interpの値をお好みの設定に変更してください。
バルブ鯖のようなデフォ鯖では最小のラープ値は16.7になります。

So what lerp should I use?
で、どんなラープを使ったらいいの?

If you are still unsure what lerp to use after reading the guide until here, I would recommend you to stick with the 16.7 lerp for now. If you see too many jerky animations, increase it until you feel comfortable with them. A lerp above 50 ms should give most users completely smooth common infected animations.
ここまで読んでもまだどんな値にしたらいいか決められない場合は、とりあえず16.7にしておくことをお勧めします。それでカクカクするなと感じたら、快適になるまで(cl_interpを)あげてください。50より高ければほとんどのユーザは雑魚ゾンビがカクカクしないと感じるはずです。

Lerp on Net Graph
Net Graphのラープ

The source network graph will show your your lerp value somewhere in the middle. See http://developer.valvesoftware.com/wiki/TF2_Network_Graph for picture.
ソース系のnetwork graphは真ん中あたりに表示されていると思います。http://developer.valvesoftware.com/wiki/TF2_Network_Graphにある画像を見てみてください。(6の左側にあります。)

This value is going to be your calculated final lerp value in most cases. i.e. this value will be the calculated result of the min/max formula above. This can be useful in determining if your interp-related cvars are set correctly.
ほとんどはこれが最終的なラープ値です。すなわち、最小、最大値の式が適用されたあとの値ということです。interp関連の値を決めていくときは有効に使えます。

The COLORS on the net graph are mostly useless to be honest. All they do is make people misread the TF2 Network Graph article and spread stupid rumors like:
色はについてはほとんど意味がないと考えています。TF2 Network Graphの記事を誤解させ、下のような馬鹿が蔓延するさせただけです。

Quote from: Uninformed Moron
無知な馬鹿より
35 on Valve servers is orange, which is okay. That represents a warning of possible lost packets. Yellow IS lost packets.
デフォ鯖での35はオレンジになるけど、パケットロスを警告してるだけだから問題ないよ。黄色がパケットロスしているよ。

I learned all of this from word of mouth and decided to ignore all existing literature on the subject.
私はこういうのが題名にあるものは無視することにしています。

Yellow Lerp: The server’s framerate is such that its own internal update interval is less than your interpolation time. Usually L4D2 servers calculate 30 frames per second, so, again, anything below 33 ms will show up as yellow on a Valve Official/default dedicated server. Of course, your interpolation value will still work just fine. It will just look yellow on network graph. 😐

Orange Lerp: Your interpolation value is set to less than 2 / updaterate. This condition can only appear while the Yellow lerp condition is not triggered. This is also completely bullshit. It’s basically a warning that when you lose packets, you’ll probably see entities jump around. The value they use (2 / updaterate) Is not completely arbitrary. If you actually set your interpolation value to 2 / cl_updaterate or above, you’ll have 2 extra buffer packets in your interpolation range in case any update packet ever gets lost.
Again Orange lerp is all about “What if I lose packets?” It’s only a warning that entities may jump around if a packet is lost.

Neither yellow or orange lerp on network graph are indicators of packet loss or any other network issues.
If you have yellow lerp, asking the server admin to turn up the server framerate is a good idea. In practice, neither of those conditions really matter at all.
黄色でもオレンジでも通信障害やパケットロスを示すものではありません。
ラープが黄色になるなら、サーバ管理者にサーバのフレームレートを上げるようお願いするのはありだと思います。実際はどうという事はありません。

Questions and Myths about lerp
ラープの謎、疑問

Quote from: Random Player

Shouldn’t I set my lerp so it’s close to my ping?
ピング値に近いと設定するべきじゃないですか?

No, lerp has nothing to do with ping. Lerp is merely for creating smooth animations.
The server knows about your current ping and always automatically corrects your hitboxes when calculating hits server-side.
いいえ、ラープはピングには一切関係ありません。ラープはスムーズなアニメーションを作っているにすぎません。
サーバは実際のあなたのピング値を把握しており、サーバ側で計算するときに自動的にヒットボックスを調整しています。

Quote from: Random Player

Won’t my hitboxes be more inaccurate the higher my lerp is? I can even see the difference If I enable the hitboxes!
ラープをあげてもヒットボックスは不正確にならない? ヒットボックスを有効にすると、違いが見えます。

No, the hitboxes you can see with sv_showhitboxes are the server-side hitboxes. When the server calculates whether you hit a shot or not, it knows not only about your current ping but also about your current lerp and moves the server-side hitboxes of other players back in time to correct this offset.
なりません、sv_showhitboxesで表示されるものはサーバ側のヒットボックスです。サーバはあなたが撃った、撃たないを計算するとき、現在のピングだけではなく現在のラープを知っており、この差を訂正するために他プレイヤーのヒットボックスを戻します。

Quote from: Random Player

Don’t I need to time my deadstop differently depending on the ping or lerp of the target hunter? Don’t hunters with higher lerp screw me up?
ハンターを殴るとき、相手のピングやラープを気にする必要はないですか?高ラープのハンターにやられてしまわない?

No, the pounce hit detection from hunter and jockey as well as the charge hit detection are different from the melee hit detection of scratches or tank punches. No matter what ping/lerp a hunter, jockey or charger uses, you always have to time your skeet/deadstop/level/dodge exactly the same. Your timing only depends on your own ping and lerp.
必要ないです。ハンターやジョッキーの飛び乗り、チャージャーのチャージの当たり判定は、ひっかきやタンクのパンチとは異なります。ハンターやジョッキー、チャージャーがどんな値を使っているかは関係ありませんし、打ち落とし、殴る、レベル(?)、よけるための時間は同じです。時間は自身のピング、ラープにのみ依存します。

Quote from: Random Player
My Lerp is a funny color in net_graph! I’m losing packets! ABANDON SHIP! You broke my game ProdigySim!
ネットグラフでラープが変な色で表示されるようになった! パケットロスをおこしている! もうだめだ! ProdigySimのせいでゲームがおかしくなった!

No. Lerp cannot cause packet loss. See above section on colors.
違います。ラープでパケットロスはおこりません。以下のリンクの色についてみてください。

Sources:
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
http://developer.valvesoftware.com/wiki/TF2_Network_Graph
Experiences and extensive testing of several players from the community
ソース:
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
http://developer.valvesoftware.com/wiki/TF2_Network_Graph
コミュニティメンバーの経験と多くの試み

Confoglのヘルスボーナスと管理

LTL盛り上がってるから、最近Confoglはじめた人向けにヘルスボーナス解説してみる。

Confoglでは残り体力がヘルスボーナスとしてポイントに加算されます。
その為、体力の管理が重要になってきます。
参考までに、考え方をまとめておきます。

重要なポイント三つ。
・より多くの人数で生存したほうがヘルスボーナスは大きくなる。
・ヘルスボーナスは仮体力よりも実体力の方が重要。
・ヘルスボーナスは距離が長いマップの方が大きくなる。

肝はこの三つです。

解説
・より多くの人数で生存したほうがヘルスボーナスは多くなる。
ヘルスボーナスは4人分(ダウンを含む)の平均かける生存者数(ダウン含まず)で算出されます。
なので3人が体力100でも一人死んじゃうと
100+100+100+0=300の平均(300/4=75)の3人分の275点しか入りません。おこして4人ではいると295点+あるふぁ入ります。

・ヘルスボーナスは仮体力よりも実体力の方が重要。
残り体力にもいくつか種類がありますが、重要な順に並べていくと以下のようになります。
1.実体力
2.仮体力(ダウン回数0)
3.仮体力(ダウン回数1)
4.仮体力(ダウン回数2)

なぜかというと、仮体力はダウン回数に応じて減らされてしまうんです。
(0ダウンなら0.3倍、1ダウンなら0.17倍、2ダウンなら0.1倍)

・ヘルスボーナスは距離が長いマップの方が大きくなる。
上で3人ゴールした時は275点しか入らないって書いたけど、実はもっと入ります。
まず、どのマップでも固定値でヘルスボーナスは2倍されます。
さらに、距離ボーナスをを400で割った値をかけます。フィナーレなら800割る400でさらに2倍。

具体的な方法。
・より多くの人数で生存したほうがヘルスボーナスは多くなる。
セーフルーム入る時に味方がダウンした場合は、削られずに起こせそうなら起こす。

・ヘルスボーナスは仮体力よりも実体力の方が重要。
削られるなら実体力じゃなくて仮体力。
例えば、仮体力を犠牲にして実体力持ってる人を助けにいくとか、仮体力を削られ役に持っていく。
セーフ前では、ピルはダウン回数少ない人に渡す。

・ヘルスボーナスは距離が長いマップの方が大きくなる。
長いマップほど、体力の管理は気をつける。

以上。加筆修正するかも。
具体的な計算方法は↓。上記内容もそのうち統合します。
http://blog.rino-server.jp//?page_id=432

自分で立てたL4D2(srcds)サーバに繋がらない

せっかく自分でサーバを立てたのに、他の人は繋げるけど自分だけ繋げない人用

connect “グローバルIPアドレス:ポート”で繋いでいるなら、ルータの仕様により繋げない場合があります。
(実際、ほとんどのルータがそうだと思います。)
そんな時は
connect “ローカルIPアドレス:ポート”を試してください。

ローカルIPアドレス(サーバに設定されているIPアドレス)の調べ方

Linux
#ifconfigででてくるinet addrのところ
Windows
コマンドプロンプトでipconfigででてくるIPv4 アドレスのところ

mm_dedicated_force_serversコマンドの場合は
mm_dedicated_force_servers “グローバルIPアドレス:ポート|ローカルIPアドレス:ポート”と指定してください。(間に縦棒”|”挟む)