オフラインスキルを実装する方法


13

オフラインスキルの例は、EvE Onlineです。キャラクター(パイロット)は、経験を積んでスキルを獲得することはありません。代わりに、キャラクターは、ゲーム内外でトレーニングしているスキルに対してスキルポイントを獲得します。また、ゲームサーバーがダウンしているときでもスキルが向上し続けることはかなり確信しています。

誰もがこれをどのように進めるのか、さらに良いことに、私が開発しているゲームにこのようなものを実装する方法についての幅広いアイデアを持っています。ここでは詳細な説明を探しているわけではありません(ただし、あなたを遠慮しないでください)が、正しい方向を示す道しるべを探しています。

ありがとう!

回答:


17

スキル開発が確定的でかなり線形であると仮定すると、必要なことは、何らかの種類のリアルタイムクロック(システムクロックやサーバークロックなど)にフックし、スキルの開発期間を計算することだけです。

つまり、スキルの開発が開始されたら、タイムスタンプを取得して保存し、スキルが向上したかどうかを確認するときはいつでも、タイムスタンプを現在のタイムスタンプと比較し、デルタが十分に大きいかどうかを確認し、プレイヤーは新しいスキル。


2
トレーニングの速度に影響する属性を変更した場合に、なぜトレーニングを一時停止させなければならないのか、理にかなっています!彼らは必要なデルタを再計算するので...すごい、ありがとう!
ドリームレーン

5
@Dream Lane、これにより潜在的な計算オーバーヘッドを軽減するため。ユーザーがログオンしたときにのみ、獲得したスキル/ポイントを再計算します。したがって、ログオフされた何千人もの人々がオーバーヘッドを負うことはありません。
AttackingHobo

2

プレイヤーがオンラインに戻るまでスキルが使用されない場合、ログオフ時間と残り時間をキュー内のスキルに保存し、プレイヤーがログインすると次のようになります。

timeRemaining = currentTime - logoutTime
while ( timeRemaining > 0 and hasQueuedSkill() ) {
     skillTime -= timeRemaining
     if ( skillTime <= 0 ) {
           popSkill()
           timeRemaining = -skillTime
     }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.