Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
Profile
Links
Recommend
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2017.02.01 Wednesday
developer.valve

カウンターストライク:グローバルな攻撃的なゲーム状態の統合

このページでは、Counter-Strike:Global Offensiveゲームを実行してゲーム状態の統合を設定する際の基本を概説します。

カウンターストライク:グローバル攻勢

サードパーティがサービスをゲームに統合するには多くの方法があります。ゲーム中にステージ照明と火工を起動し、ゲーム中にプレーヤーのPCに接続されている周辺機器の照明や触覚要素を有効にし、同期されたカスタムインタラクティブグラフィックスでストリーミングオーバーレイを補完します。ゲーム状態、記録されたVODに注釈を付けるためにすべてのゲーム状態変化を収集する

ゲームクライアントはデフォルトですべてのゲーム状態を公開し、クライアントのゲーム状態が変更されるとすぐに更新通知をゲーム状態構造としてJSONを使用してローカルまたはリモートのHTTP POSTエンドポイントに送信することができます。それは、プレーヤーがゲームの状態を提出したい場所と中継する通知を知る必要があります。このドキュメントは、第三者がCS:GOゲームの状態と統合してツールとプロセスを開発するのに役立ちます。

 

内容

 [ 隠す ] 

CSの検索:GOインストールディレクトリ

CS:GOクライアントは、エンドポイントに送信する宛先およびゲームの状態コンポーネントを見つけるために、エンドポイント構成ファイルを読み取る必要があります。競争の激しいイベントのシステム管理者は、プレーヤーのためにドライブをイメージする時点でトーナメントプレーヤーのコンピュータにゲームクライアントがインストールされている場所を知っているため、インストールディレクトリの検出プロセスは必要ありません。周辺機器の統合を有効にするためにHTTP POSTエンドポイントを実装するキーボードまたはヘッドセットドライバは、ユーザに既存のCS:GOインストールディレクトリを手動で探すように促したり、次のアプローチを使用して自動的に探します。

WindowsのSteamインストールディレクトリは、レジストリのキーの下にありますHKEY_CURRENT_USER¥Software¥Valve¥Steam。値 "SteamPath"には、Steamインストールディレクトリの名前を表す文字列が含まれています。SteamがインストールされているD:¥Steam場合、Steamライブラリのフォルダが一覧表示されD:¥Steam¥steamapps¥libraryfolders.vdfます。

ほとんどの場合、OSXのSteamライブラリのフォルダファイルは、にあり~/Library/Application Support/Steam/steamapps/libraryfolders.vdfます。

ほとんどの場合、LinuxのSteamライブラリフォルダのファイルはで見つかり~/.local/share/Steam/SteamApps/libraryfolders.vdfます。

CS:GOのインストールディレクトリlibraryfolders.vdflibraryfolders.vdf自動的に検索するプロセスは、共通のCS:GOインストールを探している場所を含め、見つかったすべてのユーザーのSteam Library Foldersを繰り返し処理できるようになりました

SteamがインストールされていてD:¥Steam、CS:GOがSteamインストールディレクトリに直接インストールされている場合、CS:GO設定ファイルの場所は次のようになり"D:¥Steam¥steamapps¥common¥Counter-Strike Global Offensive¥csgo¥cfg"ます。

あなたのサービスでゲームの状態を統合するgamestate_integration_yourservicenamehere.cfgには、csgo / cfg ディレクトリに名前をつけたテキストファイルを置く必要があります.CS:GOは次にゲームが始まる時にそれを取ります。異なるサービスは、独自のゲーム状態統合ファイルをcsgo / cfgディレクトリに置くことができ、ゲームクライアントは登録されたすべてのサービス設定に情報を中継します。

たとえば、私のサンプルサービスは設定ファイルをここに配置します:

D:¥Steam¥steamapps¥common¥Counter-Strike Global Offensive¥csgo¥cfg¥gamestate_integration_consolesample.cfg

gamestate_intergration_node

設定ファイルの例

以下は、プレーヤー自身のゲームプレイ体験を統合するための設定ファイルのサンプルgamestate_integration_consolesample.cfgです:

"Console Sample v.1"
{
 "uri" "http://127.0.0.1:3000"
 "timeout" "5.0"
 "buffer"  "0.1"
 "throttle" "0.5"
 "heartbeat" "60.0"
 "auth"
 {
   "token" "CCWJu64ZV3JHDT8hZc"
 }
 "data"
 {
   "provider"            "1"
   "map"                 "1"
   "round"               "1"
   "player_id"           "1"
   "player_state"        "1"
   "player_weapons"      "1"
   "player_match_stats"  "1"
 }
}

チーム観戦者に接続されたトーナメントオブザーバーのマシンから駆動されるステージ照明の設定ファイルの例を次に示しますgamestate_integration_observerspectator.cfg

"Observer All Players v.1"
{
 "uri" "http://10.0.1.3:8080"
 "timeout" "5.0"
 "buffer"  "0.1"
 "throttle" "0.1"
 "heartbeat" "30.0"
 "auth"
 {
   "token" "Q79v5tcxVQ8u"
 }
 "data"
 {
   "provider"            "1"
   "map"                 "1"
   "round"               "1"
   "player_id"           "1"
   "allplayers_id"       "1"
   "player_state"        "1"
   "allplayers_state"    "1"
   "allplayers_match_stats"  "1"
   "allplayers_weapons"  "1"
 }
}

注: allplayers_weaponsペイロードはゲームアップデート1.35.4.1から利用可能になったため、LANハートビートエンドポイントにのみ使用することをお勧めします。有効にするとペイロードサイズと頻度が大幅に増加するためです。

重要:設定ファイルにUTF8-BOMがないことを確認してください。そうしないと、設定ファイルが読み込まれません。CS:GOを起動した後、コンソールの出力によってファイルが正常にロードされたかどうかを確認できます。

エンドポイントセクションの設定

  • uri:ゲームはこのuriにPOSTリクエストを行います。エンドポイントがトラフィックを暗号化する必要がある場合は、セキュアなURIを指定し、サービス終了時にSSLを使用することを推奨します。スチーム・クライアントは自動的にSSLを使用し、https宛先のエンドポイント証明書を検証します。
  • タイムアウト:ゲームはHTTP POSTリクエストからHTTP 2XXレスポンスコードを期待し、ゲームは前のリクエストがまだ飛行中に次のHTTP POSTリクエストを送信しようとしません。ゲームは、応答が非常に多くの秒間に受信されなかった場合、要求がタイムアウトしたものとみなし、次にデルタ計算を省略したフル状態で次の時間に再鼓動します。この設定が指定されていない場合、デフォルトの1.1秒のタイムアウトが使用されます。

エンドポイントでJSONペイロードブロックが「以前の」または「追加された」というメッセージを受信しない場合、これはゲームクライアントがHTTP 2XX応答を受け取らないことを示している可能性があります。

  • バッファー:複数のゲームイベントが次々に発生する傾向があるため、ゼロ以外のバッファーを指定することをお勧めします。バッファリングが有効になっている場合、ゲームはより大きなデルタを報告するために非常に多くの秒間イベントを収集します。localhostサービスの統合では、これは問題ではなく、バッファリングを完全に無効にするために、サービスのニーズに合わせて調整するか、0.0に設定することができます。この設定が指定されていない場合、0.1秒のデフォルトバッファが使用されます。
  • スロットル:トラフィックの多いエンドポイントの場合、ゲームの状態があまりにも頻繁に変更されたときに、サービスに通知するのを避けるために、この設定では、少なくとも2秒前のHTTP 2XX応答を受信した後、設定が指定されていない場合は、デフォルトのスロットル1.0秒が使用されます。
  • ハートビート:ゲームの状態が変化しなくても、この設定は、以前のHTTP 2XXレスポンスを受信して​​から数秒後にリクエストを送信するようにゲームに指示します。このサービスは、ハートビート間隔を超えるかなりの期間、通知を受け取らなかった場合、ゲームをオフラインまたは非接続とみなすように構成することができます。

ゲームクライアント認証

このドキュメントで提供されている両方のサンプルcfgファイルには、オプションの"auth"構成セクションが含まれています。ほとんどのローカルホストやLAN統合シナリオでは、このセクションは完全に省略できますが、存在する場合、このセクションのフィールドはJSON文字列フィールドとしてエンドポイントに送信され、ペイロードを認証します。エンドポイントは、認証ブロックを含む飛行中のペイロードを保護するためにSSLも使用することが推奨されます。

ゲームの状態コンポーネント

すべてのゲームの状態は、サービスを独立して購読できる独立したブロックに分かれています。たとえば、発射されたすべての弾薬に対する触覚フィードバックを提供するサービスは、"player_weapons"ペイロードと兵器および弾薬データの変更を取得することに関心がありますが、ビデオストリームに注釈を付けるサービスは、"map"コンポーネントの登録のみでマップ名とラウンド数得点した。

サービスを開発する場合は、ゲームで送信されたJSONペイロードを出力し、サービス操作に不要な不要なコンポーネントを削除するために、以下に示すサンプルコンソールプログラムを使用することをお勧めします。

報告されたコンポーネントのデータが変更されると、ゲームクライアントはバッファタイマーを開始し、経過した後、または即座にバッファリングが無効にされた場合、最後の成功したHTTP 2XX応答でペイロードから計算されたエンドポイントから。以前のレポートから変更されたデータの場合、グローバルブロックに"previously"は変更されたゲーム状態の古い状態が含まれますが、新しいデータの場合、グローバルブロックに"added"は新しいゲーム状態に存在するが古いゲーム状態。

サンプルHTTP POSTエンドポイントサーバー

ゲームのペイロードをコンソールに表示するHTTP POSTサーバー実装の例は、https: //nodejs.orgフレームワークを使用してここで提供されています。あなたは、提供されたスクリプトを保存することができますmysample.jsし、実行するnode mysample.jsローカルホストのポート3000でHTTP POSTサーバを起動します。

http = require('http');
fs = require('fs');
 
port = 3000;
host = '127.0.0.1';
 
server = http.createServer( function(req, res) {
 
    if (req.method == 'POST') {
        console.log("Handling POST request...");
        res.writeHead(200, {'Content-Type': 'text/html'});
 
        var body = '';
        req.on('data', function (data) {
            body += data;
        });
        req.on('end', function () {
            console.log("POST payload: " + body);
        	res.end( '' );
        });
    }
    else
    {
        console.log("Not expecting other request types...");
        res.writeHead(200, {'Content-Type': 'text/html'});
		var html = '<html><body>HTTP Server at http://' + host + ':' + port + '</body></html>';
        res.end(html);
    }
 
});
 
server.listen(port, host);
console.log('Listening at http://' + host + ':' + port);

外部リンク

カテゴリー

| whaison | V A L V E Developer Community For S t e a m | 10:44 | comments(0) | - | pookmark |