ゲームシールドSDK 高度な機能ガイド

4月 08, 202510 mins read

📄 ドキュメント説明

このドキュメントは、GameShield SDKであまり使用されない高度な機能について説明します。特定のシナリオでプロジェクトに役立つ可能性があります。必ず事前に基本機能のSDK説明書(統合方法・動作原理を含む)を参照してください。サンプルプロジェクトは「demos_advanced_functions」フォルダにあります。

 

🔧 ポート競合の解決方法

1. 問題の背景
  • 0.01%以下の確率でクライアントデバイスでポート競合が発生
  • 2つの主要シナリオ:
  • 他アプリがポートを占有(例: 127.0.10.21:600)
  • 同一デバイスで複数アプリを同時起動(モバイル端末特有の問題)
2. 自動ポート切替機能
Csharp

// シールド起動前に設定(全プラットフォーム共通) 
dunSetAutoChangePort(1); // 1=自動切替有効 
clinkStart(key);     // シールド起動 

📝 実装例:

Csharp

int new_port = dunGetCurrentTCPPort("127.0.10.21", 600); 
connect("127.0.10.21", new_port); // 新しいポートで接続 
3. 各プラットフォーム対応

プラットフォームコード実装Windowsextern "C" CLINKAPI_API void dunSetAutoChangePort(int val);Androidpublic native void dunSetAutoChangePort(int val); (com.dun.clinkapi.Api)iOSvoid dunSetAutoChangePort(int val); (ClinkAPIクラス)Unitypublic static void dunSetAutoChangePort(int val)

🌐 クライアントIP取得機能

1. 使用シナリオ
  • ユーザー認証時のログ記録
  • 不正アクセス検知システム(IPベースの分析)
2. 実装方法
Csharp

long long ip = dunGetClientIP(); 
if (ip != 0) { 
  string ipStr = $"{ip/256/256/256%256}.{ip/256/256%256}.{ip/256%256}.{ip%256}"; 
} 
3. 注意事項
  • 戻り値0: シールドが正常起動していない状態
  • 全プラットフォーム対応:
Objective

// iOS例 
long long dunGetClientIP(); // ClinkAPIクラス 

⚠️ トラブルシューティング

Q. 自動ポート切替が動作しない?

dunSetAutoChangePort(1)をclinkStart()より前に呼び出しているか確認

Q. UDPポートで接続エラーが発生?

dunGetCurrentUDPPort()で最新ポートを常に取得するよう実装を修正

📌 技術文書スタイルガイド

  1. 用語統一:
  • 「ポート競合」→ 一貫して「ポート競合」を使用
  • 「シールド」→ GameShieldの機能全体を指す場合に限定
  1. 数値表現:
  • パーセンテージ: 「0.01%以下」→ 「0.01%未満」
  • IPアドレス: 「127.0.10.21」→ 変更なし(技術表記維持)
  1. コードブロック:
Objective

// Objective-C例 
[ClinkAPI dunSetAutoChangePort:1]; // iOS実装 

✍️ 翻訳者注記

  • 日本語技術文書によく見られる「です・ます調」を避け、簡潔な常体を使用
  • 英語略語(SDK/IP/UDP/TCP)はそのまま表記(業界標準のため)
  • コールバック関数の説明に「※」を活用して補足説明を追加


 

Image NewsLetter
Icon primary
Newsletter

私たちのニュースレターを購読する

ボタンをクリックすることで、私たちの利用規約に同意したことになります