20

ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の
Page 2: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

1997年から積み上げて来たオンラインゲーム開発のノウハウの集約体であり、次のような分野に効率的な適用が可能です。多様なサービス経験を基に、ネットワーク上で考慮しなければならない多くの状況に対して耐性を持っており、ユーザの利便性と簡単にアクセスができるインターフェースを備えております。したがって、オンライン/モバイルゲーム開発の経験が少なくても簡単にサーバーを製作できるようにサポートしてくれるMiddlewareです。160個のゲームプロジェクトに適用されました。

ProudNet概要

効率的 適用

数々の国でサービス提供可能な オンライン/モバイルゲーム

レイテンシや通信量に敏感な オンライン/モバイルゲーム

サーバー開発経歴者の採用が 困難な開発社

短期間内にリリースしなければならない ゲームプロジェクト

サーバー : Windows Server 2008 以上 クライアント : Windows, Android, iOS

この機種間のクライアント同士でのマルチプレーも可能

運営体制

Visual Studio

Unreal Engine 3,4, Cocos2D-X, Unity3D など

クライアント : C++, C#, Java

サーバー : C++, C#

MS SQL Server, MySQL

支援開発環境

Page 3: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNet適用プロジェクト 1

160個以上の

ゲームのプロジェクトに適用

Page 4: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNet適用プロジェクト 2

ProudNetを使った “タッチモンスター”

ProudNetチャットサーバー1つにつき (サーバープロセス)

5万名の同時接続者を処理しました。

“タッチモンスター”

Page 6: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNet適用プロジェクト 4

105個のプロジェクト “未公開”

Page 7: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNet適用社

Page 8: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

リリース作品

APSTUDIO Bolts and Blip online

LOTS ENTERTAINMENT Hovorun Online

GameOn Studios S4 League

Nexon Vindictus

ActozSoft OZFestival

FAMILYGOLF FAMILYGOLF

STAIRWAY GAMES RUSTY HEARTS

ONNET TOUR GOLF ONLINE

INPLAY INFERACTIVE F.E.A.R. ORIGIN ONLINE

GRAVITY Ragnarok Online II

PLUTOGAMES MERCURY RED

T3ENTERTAINMENT Warcry

STUDIO Wicket Relic Online

IRONNOS POWER RANGERS ONLINE

L&K LOGIC KOREA MIRROR WAR_Reincarnation of Holiness

SEED9 GAMES Ghosts 'n goblins online

JCR SOFT Dark Blood

Dreamers Education Talklish

Marvelquest Mini fighter

ONNET TANKACE

GameUs HEROES IN THE SKY

NNG Lab Seoyugi

Funtree BORN TO FIRE

ANI PARK Chagu Chagu

Identity Games Project D

A.STORM Herowarz

Emobi Games (Vietnam) "2112"

Nuri Star Ducks WILD BUSTER

NEOVIAN FOOTBALL LEGEND

GamEng PlayEng

SGTY (China) Shura King

PC オンラインゲーム (31)

DigitalFrog Delphinia Chronicle

Pocket Joy Coco Family

Npic Mobile Magic Masters Online

Wemade Entertainment Touch Fighter

Nexon Korea Nexon All-stars

Black Pearl Studio Black Sun

Minoraxis Reign of Conquerors

Wemade Entertainment Moon Wolf

SEED9 Touch Monsters

KNETP Akasha

Banana Fish The Lord of the Sky

Zigzagsoft Dual Masters

Company 100 Metal Breaker

Snow Family Guardians League

Nexus Games Seven Knights

Ikinagames Here We Go

Pure Games Vendetta

Phoenix Games BOWLING KING

Isac Entertainment snowbro for kakao

Buffstone Montowers

Howling Soft Sand Storm

モバイルゲーム (21)

Page 9: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 1

韓国、中国、日本、アメリカ、香港、シンガポール、マレーシア、ドイツ、オランダ、ベトナム、イタリア、フランスなどでProudNetの基盤サーバー起動中

MMORPG、 FPS、 、アクションゲーム、レーシングなど多様なジャンルに導入

Vindictus(Nexon)、MIRROR WAR(L&K)、ghosts ‘n goblins online (CJ E&M)、Red Blood (BIGSPOON Corp.)、Chagu Chagu(CJ E&M)などのオンラインゲームと Moon Wolf(Wemade)、Touch Monsters(SEED9)、Seven Knights(Nexus Games)などのモバイルゲームで使用

検証された性能と安定性

ProudNetのサーバーは大量の同時接続者とたくさんのトラフィックを処理します。

高性能サーバー

ゲームサーバー開発でマルチコアプログラミングは欠かせないが過去にはサーバープログラムがマルチコアをよく活用できない場合が多かったです。そのためにサーバーCPUの数だけサーバープロセスを浮かせる古典的な方法がありましたが、この方法も1つのサーバープロセスで多くの同時接続者を処理しなければならない場合、例えば、MMORPGでゲームワールドがプレイヤーで賑う限界がありました。ProudNetは1つのサーバープロセスとエンジン内部、そしてユーザ定義関数すべてマルチコアを活用できるように作られています。また、マルチコアでコールバックされます。そして、シングルコアモードも提供します。

サーバーマルチCPUコアを活用

サーバー運営体制でTCP、UDPパケット処理のためにKernel_UserMode転換が発生します。Kernel_UserMode転換は多くの処理時間を消耗し、サーバーの性能を落とします。ProudNetの内部ではこれを最小化し、同時接続者をたくさん処理できます。.

最小限の Kernel-User Mode 転換

Page 10: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 2

ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の間違い、またはゲームロジックの構造的な問題の可能性があります。

ProudNetはこのように間違いによる問題を防止するためにUser RoutineとNetwork I/O Routineを別々のThread Poolで処理する機能を提供します。またゲームサーバーを間違いなく開発した場合にはこの機能を非活性化させるオプションを備えています。.

2つのThread Pool Mode

分散サーバー構成で、Thread Poolとサーバーインスタンス間の関係を一対多構造で作るのは簡単ではありません。しかし、これは効率的なサーバー性能のために必要で、これがない場合Kernel Timeが上昇し過ぎて、サーバーの性能が落ちる可能性があります。

ProudNetはこのような問題を防ぐためにThread Poolとサーバーインスタンス間の関係をユーザが好きに結べるように構成できています。それで、最小限のKernel Timeを維持しながら、高性能のゲームサーバーを開発することができます。.

自由なThread Pool 関係構成

ProudNetの環境適応型ネットワークプロトコル(Adaptive Network Protocol)は多様なネットワークの悪条件と様々な使用ケースに対して耐性を持っています。

ProudNetのネットワークプロトコル階層が深いにもかかわらず、IPパケットヘッダ使用量を減らす技でサーバーとネットワーク処理の効率を却って上げています。

環境適応型ネットワークプロトコル

Page 11: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 3

キャラクターの移動や機関銃の乱射のように頻繁に送り、同期化の速度が重要なメッセージは、UDPを使ってメッセージをUnreliableに送って、他のメッセージはTCPを使ってメッセージをReliableに送ります。この技法はアクション性が高いオンラインゲームではよく使われている技法です。

UnreliableメッセージングのためにUDPをSocket APIで使うのは簡単ですが、UDPはTCPとは違って、プロトコルが安定的ではないので、UDP自体は多様なネットワーク環境で不安定であったり、ハッキングに弱いです。また、不安定なネットワーク環境でUnreliableメッセージングが使用できたら、アクションが多いオンラインゲームでは、効果的なので使わざるを得ないのです。

Unreliable:ネットワーク環境による損失、到着損失を保障しない方式ではあるが、転送速度は速いです。

Reliable:損失が起きないことを保障し、到着順序を保障する方式です。

ProudNetのUnreliableメッセージングプロトコルは単純UDPより高い安定性を提供します。 → DDOS攻撃などを防ぐために、保安設定がされている場所やソフトウェアを使うゲーマが多いです。しかし、このようなことが、UDP通信中に発生するICMP パケットのせいで、Malware誤認(False Positive)を起こし、通信障害やサーバーとの連結障害を誘発する場合があります。ProudNetはこれを防止するための 機能が内装されています。 →中国など、一部の国ではUDPの通信量が多い場合、インターネット自体を不安定にさせます。 ProudNetはこれを解決するための通信制御機能とパケットヘッダ圧縮機能、及び、様々な技術を内装しています。 →中国など一部の国ではUDPがインターネットゲートウェイを通る途中、複製や毀損が起きます。 ProudNetはこれを防止する機能を内装しています。

UDPの様々な問題点を克服

通信量が多いゲーム開発では、通信料過多によって、レイテンシや連結障害を誘発します。例えば、MMORPGでHealerの素早い対応はゲームプレイでは重要な部分であるため、もし通信量が超過すると、大きな不満を引き起こすかもしれないです。

ProudNetはこのような問題を解決するためにQoS(Quality of Service)、もしくはネットワークThrottling技術を内装しています。特に、QoS機能はゲーム中の音声チャットでも効果的に使えます。(メッセージ優先順位機能&重複メッセージ交替機能)

エンジン階層でのQoS機能

Page 12: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 4

オンラインゲームでハッキングは、よくある被害例であるため、メッセージ暗号化が必要なときがあります。例えば、ユーザアカウント情報を安全に転送する時、ホスト間の暗号キー交換とメッセージ暗号化過程が必要です。

このために、ProudNetはクライアントとサーバー間、及びP2Pメッセージングに対しての強力な保安レベルの暗号化機能とパケットスニフィング、及び複製、造作に対してのブロック機能を内装しています。.

メッセージ暗号化機能

RSA&AES or

Fast Encryption

RSA&AES or

Fast Encryption

RSA&AES or

Fast Encryption

프라우드넷은 암호화 메시징에

RSA&AES나 Fast Encryption를 선택할 수 있습니다.

Page 13: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 5

P2P通信は音声チャットやプレイヤーキャラクターの動きを同期化するために使われています。P2Pを上手く活用すると、サーバーの負荷を減らしながらもゲームの反応性を高める効果があります。しかし、安定性の高いP2P通信を作ることは大変難しいことです。

各種ネットワーク環境で様々な難関にぶつかりながら作ったとしても、P2P通信の連結と連結を解除する過程、リレーサーバー通信などには、ゲームサーバープログラマーも難渋します。

ProudNetはクライアントとサーバーが通信とP2P通信を単純化されたAPIで簡単に使えます。

→P2Pが連結されるまで待機したり、不安定な状態で連結が切れたかどうかを検査する過程でゲームのプログラムソースを乱す必要がありません。

ProudNetはホールパンチング、リレー機能を一緒に内装しています。リレーサーバー関連作動の繋がりはProudNetの中だけで成されます。

→したがって、ユーザの立場では、ホールパンチングとリレーを別々に構築する必要がありません。

ProudNetはP2P通信連結の待機時間がないという特徴があります。

→ロビー型ゲームですぐゲームスタートができます。その上MMORPGゲームでクライアントとサーバー間通信とP2P通信を混用するワールド同期化技法も使えます。またサーバーでのマルチキャスト量はクライアントの一部をルータで使って節約する機能も提供します。

強力な P2P 通信機能

Page 14: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 6

ブロードバンドインターネットが上手く構築されたところでは、P2Pが円滑であるが、中国や東南アジアなど、ADSL2+やそれ以下の速度の回線を使うところでは、円滑ではない場合があります。それはP2P間の通信速度の遅さが原因で、解決しないとP2P通信の途中に様々な問題が発生します。それだけではなく、インターネット共有機(NAT Router)の作動が止まる可能性もあります。

ProudNetはこれを予防するため、一定量以上の送信量はサーバーリレーをする機能とパケット節約機能などが内装されています。

トラフィックコントロール機能

インターネット共有機でつながっているコンピューター同士で、P2P間UDPで通信することはTCPに比べて作りやすいが、UDPは損失の確率があるプロトコルです。このような場合、P2Pでチャットメッセージを送る際、メッセージが漏れる問題が起きる恐れがあります。しかし、TCPのような信頼性の高い(損失がなく、順序も保障される)メッセージングメカニズムを直接開発するのは煩わしいことです。特に、P2P間の通信量が多い場合にはSilly Window Syndromeなどを予防するための複雑なアルゴリズムを具現しなければなりません。

ProudNetはこのような問題を解決するために、TCPと似ている方式のARQ技法を内装して、P2P間でも信頼性があるメッセージングができます。

P2P間 Unreliable & Reliable メッセージング支援

安定的なP2P通信でホールパンチングは始まりに過ぎません。長時間たくさんのP2P連結や高い通信量でも生き残れる技術の方がより大切です。ProudNetはこれに対し、最高の技術が内装されていて、インターネット共有機を何人かの人が使うには問題ありません。しかし、ネットカフェーまたは中国ではインターネット共有機1つに何十台から何百台までのコンピューターを連結して使う場合があります。このような場合、多すぎるP2P通信がたくさんのインターネット共有機内のポートマッピングエントリーリストでいっぱいになりインターネット連結が切れる現象がしばしば発生します。

ProudNetはこれを予防するためにポートマッピング再使用機能とJust-in-timeホールパンチング機能を内装しています。 → 一部インターネット共有機はポートマッピングエントリーを適切に管理することができなくてインターネット連結の障害を呼び起こることもあります。

ProudNetはポートマッピングエントリーが重なる問題が起こらないようにする機能を内装しています。 →SymmetricNATルータ同士のホールパンチングのため、ポートマッピング予測技法はすでに知られていますが、タイミングがよくないとポートマッピングが多量発生し、インターネット連結障害を起こす不作用があります。.

高いホールパンチングの維持率

Page 15: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 7

P2P連結のためにホールパンチングをしたとしても、トラフィック使用量やルータの状況によってホールパンチングはいつでも蒸発する可能性があります。これをコントロールできないと、一緒にプレイしていたプレイヤーがいきなり動かなくなったりするなど様々な問題が発生します。

ProudNetはP2P連結状態が悪い場合と良い場合を感知し、ホールパンチングとリレーを適切に活用します。ホールパンチングが蒸発するとしても、ProudNetの立場では連結の切れではなく、ちょっとのレイテンシなのです。ゲームサーバー開発者にはP2P通信が常に維持できるという仮定の下、安心してゲームプログラムを開発できます。.

ホールパンチングリレー自動転換機能

MMORPG同時アクセス者サーバーマシン1台に13.000受容

P2PDirectP2P維持率(中国82%&ヨーロッパ80%&東南アジア84%&韓国96%)

中国P2PDirect and relayedP2P維持率100%

MMORPG攻城戦の安全率98%(サーバー:上海&クライアント:四川)

性能事例

ProudNetは真のマルチプラットフォームのマルチプレイを支援します。ProudNetを使ったゲームサーバーはPCクライアントとスマートフォンクライアントとブラウザクライアントでアクセスした人々が一緒にマルチプレーができるようにします。

C++、C#、JAVA、ActionScriptでProudNet基盤のオンラインゲームを開発した後、Unity基盤のブラウザ&スマートフォン、Flash基盤のブラウザそしてWindow基盤のPCで一緒にプレーできます。今後、ネイティブiOSとアンドロイド正式バージョンがリリースされる予定であり、マーマレードなども支援する予定です。

PC/モバイル/ブラウザ支援

Page 16: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 8

1つのゲームサーバーマシンで全ての同時接続者を処理するのは難しいです。したがって、分散サーバー構築は選択ではなく必須です。しかし、分散サーバー構成を開発するのは煩わしいことです。特に、サーバー間でもクライアントとサーバー連結関係を維持しなければならないが、この過程は開発途中に間違いを起こす恐れがあります。.

ProudNetはサーバー間の通信モジュールを支援し、この通信モジュールはゲームサーバーモジュールと同じくマルチコアを活用しこのような機能を提供します。サーバー間の通信でもマルチコアの使用は重要です。ProudNetのサーバー間の通信モジュールはゲームサーバーモジュールと同じくエンジン内部もマルチコアを使用し、ユーザルーチンコールバックもマルチコアを活用します。.

分散サーバー処理モジュール

Page 17: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 9

ゲームサーバー開発でデータベースの連動は難しいテーマです。ゲームサーバー処理時間に対し、長い時間が要求されるデータベース接近時間は、ゲームサーバーのプログラムを複雑にします。また、ゲームデータベースはアクセス頻度が凄く高いです。(プレイヤーレベルアップ、アイテム獲得など)

ProudNetはこの2つの問題を解決するためにデータベースCacheシステムを提供します。 →自由なDBスキーマ及びConstraintsを持つ場合にも安全にCacheします。 →非独占的アクセス機能も支援し、これは部分的有料ゲーム(F2P)のアイテムの決済サーバーでデータを安全にアクセスできるようにします。

データベース Cache システム

Page 18: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 10

ゲームプログラムのクラッシュを簡単に収集し、分析できます。しかし、モバイルではクラッシュダンプ機能ができません。

スーパーピア(ホスト)選定機能はFPSゲームなどで効果的に活用されます。

ホスト間の時間同期化機能はアクションゲームで正確な勝負判定のために活用されます。

その他の機能

開発の利便性を考慮したクライアントとサーバー間の通信

ProudNetはRemote Method Invocation(RMI)機能を提供します。この機能は、メッセージ送受信ルーチンを人間の代わりに機械が生成する役割をします。人間が直接に作成したのと比べて性能の低下はありません。常用化されたオンラインゲームのメッセージの種類が数百から千種以上あることを考えると、この機能は、開発する時間を短縮させる効果はもちろん、ふとした間違いで見つけにくいバグが作られるのを徹底的に封鎖してくれるというメリットもあります。ProudNetはゲームクライアントとサーバー間の通信モジュール、分散サーバー用通信モジュール、データベースCacheモジュールを提供します。ゲームサーバー開発者はこの機能を利用し、簡単で自由にサーバーの構成ができます。

ProudNetのヘルプは全体500ページに構成されており、より簡単で分かりやすくするために続けてアップグレードをしております。

開発利便性

Page 19: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

ProudNetの特徴 11

モバイルゲームが人気である現在視点ではハッキングに関するセキュリティととともに実時間マルティプレイは大事なイシューであります。 クライアントでだけゲームロジックを実装、処理する時、ゲームロジックは簡単にハッキングされます。 特に、アプリ中での購買をハッキングする場所には買出損失に繋がります。 これを解決する最終的な方法はゲームロジックをサーバーで処理することです。 ゲームロジックをサーバーで処理すると、正常的なIAPで購買しないアイテムを使用することができる方法はないのです。

ハッキング問題をサーバーサイドゲームロジックで解決し、ウェブサーバーの低い反応性からも自由になれます。

つまり、モバイルゲームでProudNetの効果は安定的なリアルタイムマルチプレイを提供し、ゲームロジックをサーバーに移しながらも高い反応性を確保します。

また、クラウドサーバーでレイテンシに敏感な処理をP2Pで処理する際にはProudNetが適合です。

モバイルゲーム最適化

Page 20: ProudNet · 2017-06-22 · ProudNetの特徴 2 ゲームサーバーでゲームロジックルーチンの実行時間があまりにも長い場合、クライアントのアクセス障害が発生します。これはゲームサーバーの開発者の

㈱ Nettention

Nettentionはゲームソフトウェアの開発技術を絶え間なく研究・開発する会社です。Nettentionが開発したゲームサーバー&ネットワークエンジンProudNetはもはや多くのゲーム開発社から選んでいただいてますが、我が社はこれに満足せず専門技術力と心を尽くした技術支援を行っております。

Nettentionは正道を歩きます。

狡いやり方と便法で作られた成果は砂上の楼閣です。Nettentionは基礎を築きながら研究開発します。

Nettentionは忍耐します。

正しい道への道のりは遠く険しいです。しかし、これを妥協せず、我が社は最上の成果だけのために進んで行きます。

Nettentionは革新を追い求めます。

正しい道を忍耐し、進みながらNettentionが求めるのは革新です。幅広い知識と深く練磨された経験で、恐れず革新を追求するのが我が社の姿勢です。

Nettention Co., Ltd.