JP2017038808A - オンラインゲーム開発システム - Google Patents

オンラインゲーム開発システム Download PDF

Info

Publication number
JP2017038808A
JP2017038808A JP2015162952A JP2015162952A JP2017038808A JP 2017038808 A JP2017038808 A JP 2017038808A JP 2015162952 A JP2015162952 A JP 2015162952A JP 2015162952 A JP2015162952 A JP 2015162952A JP 2017038808 A JP2017038808 A JP 2017038808A
Authority
JP
Japan
Prior art keywords
communication
online game
information
client terminal
game
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015162952A
Other languages
English (en)
Inventor
勝 長久
Masaru Nagahisa
勝 長久
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atomitech Inc
Original Assignee
Atomitech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atomitech Inc filed Critical Atomitech Inc
Priority to JP2015162952A priority Critical patent/JP2017038808A/ja
Publication of JP2017038808A publication Critical patent/JP2017038808A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】より高品質なオンラインゲームを開発するシステムを提供する。
【解決手段】開発したいオンラインゲームの構成を表す通信指向型状態遷移図を作成し、この状態遷移図に基づいてオンラインゲームの各プラグインを開発する。クライアント端末およびゲームサーバの間で行う複数の通信を1つに集約することで、通信障害発生時のリカバリをより容易にする。
【選択図】図5

Description

本発明は、サーバおよびクライアント端末の間で行う通信を伴うオンラインゲームを開発するシステムに関する。
近年、オンラインゲームの需要が高まっている。オンラインゲームとは、ゲームのプレイヤーが操作するゲーム端末が、ゲームのプレイ中またはその前後に、ゲームサーバなどの他コンピュータと通信するタイプのコンピュータゲームである。したがって、オンラインゲームを開発する際には、プレイヤーがゲーム端末上で実行するクライアント側のアプリケーションソフトウェアに加えて、ゲームサーバが実行するサーバ側のアプリケーションソフトウェアをも用意する必要がある。
オンラインゲームでは、複数のプレイヤーが同じゲームサーバと通信することによって、それぞれのプレイヤーが他のプレイヤーと協力することも、反対に競争することも可能である。複数のプレイヤーが同時に影響し合えるタイプのオンラインゲームを、ここではリアルタイム型オンラインゲームと呼ぶ。
また、オンラインゲームでは、自分のプレイ結果データをゲームサーバ上に残すことも、反対に他プレイヤーのプレイ結果データをゲームサーバから取得することも可能である。複数のプレイヤーが非同期的に影響し合えるタイプのオンラインゲームを、ここでは非リアルタイム型オンラインゲームと呼ぶ。
オンラインゲームは、上記のような優位性を持つ半面、ゲーム端末およびゲームサーバの間の通信に障害が発生した場合にこれを克服する必要がある。そのための工夫は、クライアント側およびサーバ側の両方のアプリケーションソフトウェアに、オンラインゲームを開発する際に予め用意しておくことが好ましい。
上記に関連して、特許文献1(特許4072017号)では、状態推定装置に係る発明が開示されている。この状態推定装置は、観測により時系列に入力される観測信号に基づいて、その観測を行ったシステムの内部状態を推定する。この状態推定装置は、濾波推定手段と、予測推定手段とを有する。ここで、濾波推定手段は、観測信号と先に推定した内部状態と予め設定された推定規則とに基づいて、現在の内部状態を推定するものであって、観測信号の種類に対応して多段接続される。また、予測推定手段は、内部状態と予め設定されたその内部状態を遷移させる状態遷移規則とに基づいて、未来の内部状態を推定するものであって、内部状態の種類に対応して多段接続される。
また、特許文献2(特許4402667号)では、タイミングチャート処理システムに係る発明が開示されている。このタイミングチャート処理システムは、ハードウェア及びソフトウェアでの処理タイミングを表すものである。このタイミングチャート処理システムは、関連情報取得手段と、処理期間情報取得手段と、タイミングチャート作成手段と、見積もり手段と、表示手段とを有することを特徴とする。ここで、関連情報取得手段は、ハードウェア及びソフトウェアでの処理相互の関連を表す関連情報を取得する。処理期間情報取得手段は、ハードウェア及びソフトウェアそれぞれの処理期間を表す処理期間情報を取得する。タイミングチャート作成手段は、取得された関連情報及び処理期間情報に基づいて、ハードウェア及びソフトウェアのいずれかでの処理を契機とするハードウェア及びソフトウェアそれぞれの処理にて構成される一連の処理における、ハードウェア及びソフトウェアそれぞれの処理のタイミングを特定して表したタイミングチャートを作成する。見積もり手段は、作成されたタイミングチャートに基づいて、一連の処理に対して見積もられる期間を見積もり処理期間として演算する。表示手段は、タイミングチャートの画像及び見積もり処理期間の情報を表示する。ソフトウェアの処理期間を表す処理期間情報は、処理期間の最大と最小とを表す情報を含む。タイミングチャート作成手段は、ソフトウェアの処理期間の最大と最小とを区別して当該ソフトウェアの処理タイミングを表すタイミングチャートを作成する。見積もり手段は、一連の処理に対して見積もられる最大の期間と最小の期間とを見積もり処理期間として演算する。
また、特許文献3(特許4864867号)では、モデル検査支援装置に係る発明が開示されている。このモデル検査支援装置は、状態遷移系として表されたシステムの動作に関する仕様と制約条件とを記述したモデル検査プログラムから、システムの動作に関する仕様に基づいて可能な全ての動作シーケンスを生成し、生成されたそれぞれの動作シーケンスにおいて制約条件が満たされているかどうかを検証するモデル検査器で検査されるモデル検査プログラムを生成する。このモデル検査支援装置は、仕様入力部と、モデル生成部を有する。ここで、仕様入力部は、システムの動作に関する仕様とシステムに求める性質である制約条件とを表形式の情報として受け取る。モデル生成部は、この表からシステムの動作に関する仕様と制約条件とを抽出して所定のモデル記述言語によってシステムの動作に関する仕様と制約条件とを記述したモデル検査プログラムを生成する。
この表は、状態遷移表と、制約条件表と、アクション表と、条件判定表とを有する。ここで、状態遷移表は、システムで発生するイベントとシステムの各状態に対応して、システムが実行するアクション名と次に遷移する状態とを記述する。制約条件表は、状態遷移表で定義された状態毎に、当該システムを構成する要素の値を記述する。アクション表は、アクション名に対応して、当該アクションの実行によるシステムを構成する要素の値の変化と、システムを構成する要素の値で表される当該アクションの実行前後で成立していなければならない条件とを規定する。条件判定表は、状態遷移表において記述可能になされた、アクションあるいは遷移の実行が可能か否かを判定するための判定条件を、システムを構成する要素の値として記述する。
モデル検査プログラムは、システムの動作に関する仕様を、状態遷移表と、条件判定表と、アクション表で規定されたアクションの実行によるシステムを構成する要素の値の変化とに基づいて記述し、制約条件を、制約条件表と、アクション表で規定されたアクションの実行前後で成立していなければならない条件とに基づいて記述する。
また、非特許文献1(大規模RPGのためのシナリオ記述言語と統合開発環境の開発)では、RPGやアドベンチャーゲームに分類されるビデオゲームにおいてシナリオを記述する言語と、この言語を用いるIDE(Integrated Development Environment:統合開発環境)とが提案されている。
また、非特許文献2(ゲームプログラムのシナリオに基づいた状態遷移系を生成するシステムの提案)では、ゲームプログラムにおけるオブジェクトやシナリオ、プログラムが走るマシン環境などを単位としてまとめ、その振る舞いを個別のゲームプログラムの状態遷移として記述し、ゲーム全体の振舞を、個別の状態遷移の積としてコンパイルするシステムが提案されている。
また、非特許文献3(FDRによるRPGシナリオの検証)では、複雑に分岐するストーリを含むRPG(Role Playing Game:ロールプレイングゲーム)のシナリオを、複数のキャラクタによる行動の集合と捉える、キャラクタ指向開発が提案されている。
また、非特許文献4(レゴプログラム向け状態遷移図設計支援システム)では、状態遷移図に対する状態指向という概念の提案がなされている。また、そのような状態遷移図の有用性を評価していくために、レゴのプログラミングに状態指向の状態遷移図の概念を取り入れた状態遷移図設計支援システムが提案されている。
また、非特許文献5(「モデル検査」のススメ(ゲームシナリオ進行編))では、コンピュータゲームにおけるシナリオ進行を検証するにあたって、ソフトウェア工学において検討されてきた「モデル検査」を用いる手法が提案されている。
また、非特許文献6(高品質ノベルゲーム開発基盤の提案)では、ノベルゲームを開発するにあたって、DSL(Domain Specific Language:)、FSP(Finite State Processes)表現、モデル検査、香盤表などの利用が提案されている。
特許4072017号 特許4402667号 特許4864867号
清木昌、「大規模RPGのためのシナリオ記述言語と統合開発環境の開発」、2003年3月、[平成27年8月6日検索]、インターネット<URL:http://www.ipa.go.jp/files/000005647.pdf> 金城拓実、河野真治、「ゲームプログラムのシナリオに基づいた状態遷移系を生成するシステムの提案」、日本ソフトウェア科学会第21回大会(2004年度)論文集、2004年9月発行、[平成27年8月6日検索]、インターネット<URL:http://www.ie.u-ryukyu.ac.jp/~kono/papers/kono/2004/jsss-kinjo-2004.pdf> 長久勝、「FDRによるRPGシナリオの検証」、2007年、[平成27年8月11日検索]インターネット<URL:http://www.slideshare.net/mnagaku/fdr-rpg> 今井康平、紫合治著、「レゴプログラム向け状態遷移図設計支援システム」、2012年03月08日発行、「研究報告ソフトウェア工学(SE)」第2012−SE−175巻、第7号、第1〜8頁 長久勝、「「モデル検査」のススメ(ゲームシナリオ進行編)」、2013年、[平成27年8月11日検索]、インターネット<URL:http://www.slideshare.net/mnagaku/cedec2013mnagaku4946> 長久勝、「高品質ノベルゲーム開発基盤の提案」、2014年9月11日、[平成27年8月11日検索]、インターネット<URL:http://www.juse.jp/sqip/symposium/2014/timetable/files/happyou_B2-3.pdf>
より高品質なオンラインゲームを開発するシステムを提供する。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
以下に、(発明を実施するための形態)で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、(特許請求の範囲)の記載と(発明を実施するための形態)との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、(特許請求の範囲)に記載されている発明の技術的範囲の解釈に用いてはならない。
一実施の形態によれば、オンラインゲーム開発システム(2)は状態遷移図作成機能部を有し、状態遷移図作成機能部はオンラインゲームの構造を表す通信指向型状態遷移図を作成する。
前記一実施の形態によれば、サーバおよびクライアント端末の間で行う通信の不具合をリカバリし易い、高品質なオンラインゲームを開発することが出来る。
図1Aは、オンラインゲームを運用するシステムの一構成例を示すブロック図である。 図1Bは、図1Aに示した各コンピュータの一般的な構成例を示すブロック図である。 図2Aは、機能指向的な方法で開発された従来のオンラインゲームにおいて、クライアント端末およびサーバの間で行う理想的な通信の一例を示すタイムチャートである。 図2Bは、図2Aに例示した通信で起こり得る通信障害の一例を示すタイムチャートである。 図2Cは、図2Bに例示した通信障害を復旧する方法の一例を示すタイムチャートである。 図3Aは、通信指向的な方法で開発されたオンラインゲームにおいて、クライアント端末およびサーバの間で行う理想的な通信の一例を示すタイムチャートである。 図3Bは、図3Aに例示した通信で起こり得る通信障害およびその復旧の一例を示すタイムチャートである。 図4は、通信指向的な方法で開発するオンラインゲームの一構成例を表す通信指向型状態遷移図である。 図5は、本発明のオンラインゲーム開発システムの一構成例を示すブロック図である。 図6は、本発明のオンラインゲーム開発システムの一構成例を機能別に示すブロック図である。 図7Aは、本発明のオンラインゲームの開発方法の一構成例を示すフローチャートの一部である。 図7Bは、図7Aに示したフローチャートの残りである。
添付図面を参照して、本発明によるオンラインゲーム開発システムを実施するための形態を以下に説明する。
まず、本発明によるオンラインゲーム開発システムで開発するオンラインゲームについて説明する。なお、ここでは主に非リアルタイム型のオンラインゲームの場合について述べるが、これはリアルタイム型のオンラインゲームに係る権利範囲を排除するものではない。
(実施形態)
図1Aは、オンラインゲームを運用するシステムの一構成例を示すブロック図である。
図1Aに示したオンラインゲームシステムの構成要素について説明する。オンラインゲームシステム1は、クライアント端末11、12と、ネットワーク20と、アプリケーションサーバ21と、ゲームサーバシステム30とを含んでいる。ゲームサーバシステム30は、ゲームサーバ31と、運用管理ユーザインタフェースサーバ32と、ゲームデータベース33とを含んでいる。
図1Aに示した各構成要素の接続関係について説明する。クライアント端末11、12と、アプリケーションサーバ21と、ゲームサーバ31とは、それぞれ、ネットワーク20に接続されている。
その他、ゲームサーバ31と、運用管理ユーザインタフェースサーバ32と、ゲームデータベース33とは、相互に接続されている。なお、この接続関係は、ネットワーク20を介していても良いし、図示しない別のネットワークを介していても良い。
図1Aに示した各構成要素の動作について説明する。クライアント端末11、12のそれぞれは、例えば、パーソナルコンピュータや、ゲーム専用機器や、スマートフォンなどの、オンラインゲームのクライアント側アプリケーションソフトウェアを実行可能で、かつ、通信機能を有する情報端末であり、ネットワーク20は、例えば、インターネットや、LAN(Local Area Network:ローカルエリアネットワーク)などの、複数の端末を通信可能に接続するネットワーク回路である。アプリケーションサーバ21は、オンラインゲームのクライアント側アプリケーションソフトウェアを、ネットワーク20を介してクライアント端末11、12などに供給するサーバである。ゲームサーバ31は、オンラインゲームのサーバ側アプリケーションソフトウェアを実行し、かつ、ネットワーク20を介してクライアント端末11、12で実行されるクライアント側アプリケーションソフトウェアのそれぞれとの通信を行う。運用管理ユーザインタフェースサーバ32は、ゲームサーバ31の運用管理や監視を行う。ゲームデータベース33は、オンラインゲームで利用される各種データのうち、不揮発な情報を主に格納し、必要に応じてゲームサーバ31に提供する。
図1Aに示したクライアント端末11、12、アプリケーションサーバ21、ゲームサーバ31、運用管理ユーザインタフェースサーバ32およびゲームデータベース33のそれぞれは、例えば、所定のプログラムを実行するコンピュータとして実現可能である。
図1Bは、図1Aに示した各コンピュータの一般的な構成例を示すブロック図である。
図1Bに示したコンピュータ100の構成要素について説明する。コンピュータ100は、バス101と、通信装置102と、演算装置103と、記憶装置104と、入力装置105と、出力装置106と、外部記憶装置107とを含む。ここで、図1Aに示した各コンピュータは、図1Bに示した構成要素のうち、一部だけを含んでいても良いし、他の構成要素をさらに含んでいても良い。
図1Bに示した各構成要素の接続関係について説明する。バス101は、通信装置102と、演算装置103と、記憶装置104と、入力装置105と、出力装置106と、外部記憶装置107とに接続されている。
その他、通信装置102は、ネットワーク20に接続されていることが好ましい。また、外部記憶装置107は着脱可能な記憶媒体108に接続されていることが好ましい。
図1Bに示した各構成要素の動作について説明する。バス101は、複数の構成要素の間で通信を仲介するネットワーク回路である。なお、図1Bではバス101を象徴的に表しており、実際には複数のネットワーク回路に分かれていても良いし、これら複数のネットワーク回路のそれぞれが図1Bに示した複数の構成要素の一部だけに接続されていても良い。
演算装置103は、例えばCPU(Central Processing Unit:中央演算装置)などであって、プログラムやアプリケーションソフトウェアを実行する。
記憶装置104は、例えばRAM(Random Access Memory:ランダムアクセスメモリ)や、不揮発性のストレージなどを含み、プログラムや、アプリケーションソフトウェアや、各種のデータを格納し、必要に応じてこれらを演算装置に提供する。
入力装置105は、例えばキーボードや、物理ボタンや、液晶ディスプレイと一体型のタッチパネルや、カメラモジュールなどであって、利用者による操作や、外部環境などに基づく各種信号を入力して演算装置103に提供する。
出力装置106は、例えば液晶ディスプレイや、スピーカや、バイブレーション機能部などであって、演算装置103の出力信号を外部に出力する。
外部記憶装置107は、例えば光学メディアドライブなどであって、記憶媒体108としての光学メディアなどからプログラムや、アプリケーションソフトウェアや、データなどを読み取る。
次に、オンラインゲームを開発するにあたって、従来の機能指向的な方法に対して、本実施形態で提案する方法が通信指向的であることについて、ゲーム内の一場面であるバトル開始時に行う通信を例に挙げて説明する。
ここでは、プレイヤーが選択した番号に対応するステージマップ上に予め配置された複数の敵キャラクターを、他の参加メンバから提供される複数の味方キャラクターと協力して倒すことを目的とするバトルについて考える。クライアント端末で実行されるクライアント側アプリケーションソフトウェアは、バトル開始時に、ステージマップ情報と、敵配置情報と、参加メンバ情報とを、ゲームサーバ31から取得する必要がある。ここで、ステージマップ情報はステージマップを定義し、敵配置情報は敵キャラクターの種類や位置関係を定義し、参加メンバ情報はプレイヤーに協力してくれる参加メンバとその味方キャラクターを定義する。
図2Aは、機能指向的な方法で開発された従来のオンラインゲームにおいて、クライアント端末およびサーバの間で行う理想的な通信の一例を示すタイムチャートである。
図2Aに示したタイムチャートでは、クライアント端末11で実行されるクライアント側アプリケーションソフトウェアが、ステージマップ管理機能111と、敵配置管理機能112と、参加メンバ管理機能113とを含んでいる。ここで、ステージマップ管理機能111はステージマップ情報を管理しており、必要に応じて指定したステージのステージマップ情報をゲームサーバ31から取得する。同様に、敵配置管理機能112は敵配置情報を管理しており、必要に応じて指定したステージの敵配置情報をゲームサーバ31から取得する。同様に、参加メンバ管理機能113は参加メンバ情報を管理しており、必要に応じてバトルに参加する参加メンバ情報をゲームサーバ31から取得する。
さらに、ゲームサーバ31で実行されるサーバ側アプリケーションソフトウェアも、ステージマップ管理機能311と、敵配置管理機能312と、参加メンバ管理機能313とを含んでいる。ここで、ステージマップ管理機能311はステージマップ情報を管理しており、クライアント端末11からのリクエストに応じて指定されたたステージのステージマップ情報を提供する。同様に、敵配置管理機能312は敵配置情報を管理しており、クライアント端末11からのリクエストに応じて指定されたステージの敵配置情報を提供する。同様に、参加メンバ管理機能313は参加メンバ情報を管理しており、クライアント端末11からのリクエストに応じてバトルに参加する参加メンバ情報を提供する。
機能指向的に開発された従来のオンラインゲームでは、クライアント側アプリケーションソフトウェアに含まれるステージマップ管理機能111、敵配置管理機能112および参加メンバ管理機能113が、それぞれの機能によって分割された設計に基づいて通信を行う。同様に、サーバ側アプリケーションソフトウェアに含まれるステージマップ管理機能311、敵配置管理機能312および参加メンバ管理機能313も、それぞれの機能によって分割された設計に基づいて通信を行う。
図2Aに示した例では、まずクライアント端末11において、バトル開始時に、ステージマップ管理機能111がステージマップ管理機能311に向けてステージマップ情報リクエスト201を送信する。また、敵配置管理機能112が、ステージマップ管理機能111とは無関係に、敵配置管理機能312に向けて敵配置情報リクエスト202を送信する。さらに、参加メンバ管理機能113が、ステージマップ管理機能111および敵配置管理機能112とは無関係に、参加メンバ管理機能313に向けて参加メンバ情報リクエスト203を送信する。
次にゲームサーバ31において、ステージマップ管理機能311は、ステージマップ情報リクエスト201を受信すると、ステージマップ管理機能111に向けてステージマップ情報211を送信する。また、敵配置管理機能312は、敵配置情報リクエスト202を受信すると、ステージマップ管理機能311とは無関係に、敵配置管理機能112に向けて敵配置情報212を送信する。さらに、参加メンバ管理機能313は、参加メンバ情報リクエスト203を受信すると、ステージマップ管理機能311および敵配置管理機能312とは無関係に、参加メンバ管理機能113に向けて参加メンバ情報213を送信する。
次にクライアント端末11において、ステージマップ管理機能111は、ステージマップ情報211を受信すると、ステージマップ管理機能311に向けてステージマップ情報アクノリッジ221を送信する。また、敵配置管理機能112は、敵配置情報212を受信すると、ステージマップ管理機能111とは無関係に、敵配置管理機能312に向けて敵配置情報アクノリッジ222を送信する。さらに、参加メンバ管理機能113は、参加メンバ情報213を受信すると、ステージマップ管理機能111および敵配置管理機能112とは無関係に、参加メンバ管理機能313に向けて参加メンバ情報アクノリッジ223を送信する。
ここで、ステージマップ情報211と、敵配置情報212と、参加メンバ情報213とがクライアント端末11に揃うと、クライアント側アプリケーションソフトウェアに含まれるバトル機能が動作を開始する。
次に、ゲームサーバ31において、ステージマップ管理機能311がステージマップ情報アクノリッジ221を受信し、敵配置管理機能312が敵配置情報アクノリッジ222を受信し、参加メンバ管理機能313が参加メンバ情報アクノリッジ223を受信すると、サーバ側アプリケーションソフトウェアはクライアント側アプリケーションソフトウェアのバトル機能の動作開始を状況的に認識出来る。
このように、機能指向的に開発されたオンラインゲームでは、複数の機能がそれぞれに分割された通信を行う。図2Aに示した理想的な場合はこれで問題無いが、通信障害が発生するとその復旧が困難となることを説明する。
図2Bは、図2Aに例示した通信で起こり得る通信障害の一例を示すタイムチャートである。図2Cは、図2Bに例示した通信障害を復旧する方法の一例を示すタイムチャートである。図2Bおよび図2Cに示した例では、図2Aに示した例に、いくつかの違いを加えたものに等しい。したがって、図2Bおよび図2Cのうち、図2Aと重複する部分については詳細な説明を省略する。
図2Aに示した例と比較して、図2Bに示した例では、第1の違いとして、ステージマップ情報リクエスト201の送信時に通信障害201aが発生している。その結果、ステージマップ管理機能111では、ステージマップ情報211を受信しないままタイムオーバー201bが発生する。
さらに、第2の違いとして、参加メンバ情報213の送信時にも通信障害213aが発生している。参加メンバ管理機能113では、参加メンバ情報213を受信しないままタイムオーバー203bが発生し、参加メンバ管理機能313では、参加メンバ情報アクノリッジ223を受信しないままタイムオーバー213bが発生する。
また、図2Aに示した例と比較して、図2Cに示した例では、第1の違いとして、ステージマップ管理機能111は、タイムオーバー201bが発生した後、ステージマップ管理機能311に向けてステージマップ情報リクエストの再送201cを行っている。その結果、ステージマップ管理機能311およびステージマップ管理機能111の間で、ステージマップ情報211およびステージマップ情報アクノリッジ221を送信する通信が回復する。
さらに、第2の違いとして、参加メンバ管理機能113は、タイムオーバー203bが発生した後、参加メンバ情報リクエスト203の送信を再度行っている。その結果、参加メンバ管理機能113および参加メンバ管理機能313の間で、参加メンバ情報213の送信と、参加メンバ情報アクノリッジ223を送信する通信とが回復する。
ここで、クライアント端末11に揃ったステージマップ情報211、敵配置情報212および参加メンバ情報213は、それぞれがゲームサーバ31から送信された時刻が、タイムオーバー201b、203b、213bの影響により、大きく異なることに注目されたい。
オンラインゲームの場合は、期間限定イベントなどと呼ばれる期限付き仕様変更によって、バトルの各種条件が所定の時刻を境に切り替わることが少なくない。つまり、タイムオーバー201b、203b、213bなどの影響により、クライアント端末11に揃ったステージマップ情報211、敵配置情報212および参加メンバ情報213の間で整合性が取れていない可能性を考慮して、予め対策を用意する必要がある。そして、このような対策の難易度は、整合性を取るべきデータの総数に応じて上昇する可能性がある。
例えば、タイムオーバー201b、203b、213bなどの間に、ゲームデータベースの更新などの永続的な情報の変更が発生した場合は、タイムオーバー後にデータの再送を行う前に、変更の取り消しが必要になる。したがって、情報の変更は、その取り消しが可能でなければならない。
このような困難を回避するために、発明者は、オンラインゲームの通信指向的な開発方法を提案する。発明者は、クライアント端末およびサーバの間の、情報の整合性の観点から、一連の処理は不可分なものとして扱われるべきであって、通信も1回の情報交換で完結させるべきであると考える。ここで、一連の処理とは、例えば、ステージマップ管理と、敵配置管理と、参加メンバ管理の処理のことであるが、この例に限定されない。
図3Aは、通信指向的な方法で開発されたオンラインゲームにおいて、クライアント端末およびサーバの間で行う理想的な通信の一例を示すタイムチャートである。なお、図3Aのうち、図2Aと共通する部分については詳細な説明を省略する。
図3Aに示したタイムチャートでは、クライアント端末11で実行されるクライアント側アプリケーションソフトウェアが、ステージマップ管理機能111と、敵配置管理機能112と、参加メンバ管理機能113とに加えて、集約通信機能114をさらに含んでいる。集約通信機能114は、クライアント端末11がゲームサーバ31との間で行う通信を集約する。図3Aの場合、集約通信機能114は、図2Aで示したステージマップ情報リクエスト201、敵配置情報リクエスト202および参加メンバ情報リクエスト203からなる3つのリクエストを、単独の集約情報リクエスト231に集約してゲームサーバ31に向けて送信する。
さらに、ゲームサーバ31で実行されるサーバ側アプリケーションソフトウェアも、ステージマップ管理機能311と、敵配置管理機能312と、参加メンバ管理機能313とに加えて、集約通信機能314をさらに含んでいる。集約通信機能314は、ゲームサーバ31がクライアント端末11との間で行う通信を集約する。図3Aの場合、集約通信機能314は、図2Aで示したステージマップ情報211、敵配置情報212および参加メンバ情報213からなる3つの情報を、単独の集約情報232に集約してクライアント端末11に向けて送信する。
集約通信機能114は、集約情報232を受信すると、集約情報アクノリッジ233を集約通信機能314に向けて送信する。
ここで、集約情報232がクライアント端末11に届くことは、ステージマップ情報211と、敵配置情報212と、参加メンバ情報213とがクライアント端末11に揃うことに等しい。このとき、クライアント側アプリケーションソフトウェアに含まれるバトル機能が動作を開始する。
集約通信機能314が集約情報アクノリッジ233を受信すると、サーバ側アプリケーションソフトウェアはクライアント側アプリケーションソフトウェアのバトル機能の動作開始を状況的に認識出来る。
このように、通信指向的に開発されたオンラインゲームでも、機能指向的に開発された場合と同様の通信を行うことが出来る。次に、通信障害が発生しても、その復旧が容易であることを説明する。
図3Bは、図3Aに例示した通信で起こり得る通信障害およびその復旧の一例を示すタイムチャートである。図3Bに示した例では、図3Aに示した例に、いくつかの違いを加えたものに等しい。したがって、図3Bのうち、図3Aと重複する部分については詳細な説明を省略する。
図3Aに示した例と比較して、図3Bに示した例では、第1の違いとして、集約情報リクエスト231の送信時に通信障害231aが発生している。その結果、集約通信機能114では、集約情報232を受信しないままタイムオーバー231bが発生する。
さらに、第2の違いとして、集約通信機能114は、タイムオーバー231bの後、集約情報の再送231cを行っている。その結果、集約通信機能314および集約通信機能114の間で、集約情報232および集約情報アクノリッジ233を送信する通信が回復する。
ここで、例えばクライアント端末11がバトルを開始する前に各種情報をリクエストする段階のままタイムオーバー231bが発生していたとしても、リクエストを受信していないゲームサーバ31も同じ段階に留まることになる。したがって、タイムオーバー231bの後に通信が回復すれば、クライアント端末11に届いた集約情報232に含まれるステージマップ情報211、敵配置情報212および参加メンバ情報213は、ゲームサーバ31から送信された時刻にも差は無く、したがってさらなるリカバリ処理は不要である。
また、仮に通信障害が集約情報232の送信時に発生して、タイムオーバーが集約通信機能314で発生した場合は、クライアント端末11は各種情報をリクエストする段階にとどまり、ゲームサーバ31だけがその次のバトルの開始を認識する段階に進む、という問題が発生し得る。このような場合も、集約通信機能314にキャッシュ機能を設けるだけで、さらなるリカバリ処理は不要となる。
ここで、キャッシュ機能とは、集約情報リクエスト231などのリクエストへの返答として送信した集約情報232などの情報を所定の記憶領域に格納しておき、再度同じリクエストを受信した場合には格納しておいた情報を記憶領域から再送する機能である。上記の例では、ゲームサーバ31がバトルを開始する段階に進んだまま、直前の段階に戻ることなく、集約通信機能314は一度送信した集約情報232を集約通信機能114に再送することが可能となる。このとき、通信障害のリカバリ処理が簡略化されているのみならず、ゲームサーバ31の計算量も節約出来ていることに注目されたい。
このとき、タイムオーバー後にクライアント端末11がゲームサーバ31に向けて再送する集約情報リクエスト231は、ワンタイムセッションIDを含んでいることが好ましい。ワンタイムセッションIDを参照することで、ゲームサーバ31は、受信するリクエストが、初めて送信された新しいリクエストであるのか、それとも過去に送信されたリクエストと同一のリクエストであるのかを判別出来る。すなわち、ゲームサーバ31は、受信したリクエストが1つ古いワンタイムセッションIDを含んでいる場合には、キャッシュ機能により返信済みの情報を再送し、受信したリクエストが正規のワンタイムセッションIDを持つ場合には、集約通信機能314により初めて受信した新しいリクエストに対応する新たな情報を返信することが出来る。
図3Aおよび図3Bに示したように、クライアント端末11からゲームサーバ31への全ての情報リクエストと、ゲームサーバ31からクライアント端末11への全ての情報提供とを、1回の情報交換で済ませることで、図2A〜図2Cを参照して説明した従来の通信で必要とされた複雑なリカバリ処理について考えずに済む。
本実施形態では、クライアント端末11およびゲームサーバ31の間で、送受信する頻度を下げ、1度に送受信するデータを複雑化する。このことは、クライアント端末11およびゲームサーバ31の間で行う通信の解読をより困難にし、不正アクセスへの悪用を防止する効果をもたらす。さらに、ワンタイムセッションIDの採用により、リクエストのコピーを悪用した不正操作や、複数のクライアント側アプリケーションソフトの同時利用による意図的競合状態下での攻撃行為を防止する効果が得られる。
図3Aおよび図3Bに例示した、通信指向型のオンラインゲームを開発する方法と、この方法を実現するための開発システムとについて説明する。
図4は、通信指向的な方法で開発するオンラインゲームの一構成例を表す通信指向型状態遷移図である。
図4に示した通信指向型状態遷移図の構成要素について説明する。図4の通信指向型状態遷移図は、UML(Unified Modeling Language:統一モデリング言語)の表記法を拡張して表されており、合計8個の状態ノードN00〜N07と、合計13本の遷移エッジE01〜E13とを含んでいる。
ここで、状態ノードN00〜N07は、オンラインゲームのプレイ中に切り替わる複数の内部状態をそれぞれ表す。図4の例では、各状態ノードを、角を丸めた長方形で表している。この長方形の上部には、各状態ノードのタイトルが表示されている。この長方形の下部には、各状態ノードの詳細を表示しても良いが、図4では省略している。
また、遷移エッジE01〜E13は、状態ノードN00〜N07の間で行われる状態遷移と、状態遷移の際にクライアント端末11およびゲームサーバ31の間で行われる通信とを表す。各遷移エッジは、遷移元の状態ノードから遷移先の状態ノードに向かう矢印と、その際にクライアント端末およびゲームサーバの間で通信される入出力データとを含んでいる。矢印の下に配置された文字列のうち、スラッシュ記号「/」の左側部分に、遷移元の状態から遷移先の状態に遷移するきっかけとなる遷移トリガを示し、右側部分に、通信の名称と、クライアント端末11からゲームサーバシステム30への入力データと、ゲームサーバシステム30からクライアント端末11への出力データとを、「出力データ=通信の名称(入力データ)」の形式で示す。
第0状態ノードN00は、通信型指向状態遷移図の開始点を示す。第1状態ノードN01は、クライアント端末11によるゲームサーバシステム30へのログイン状態問い合わせを完了した状態を示す。第2状態ノードN02は、クライアント端末11がゲームサーバシステム30へのログイン処理を完了した状態を示す。第3状態ノードN03は、クライアント端末11がゲームサーバシステム30からお知らせ取得を完了し、メニュー画面を表示している状態を示す。第4状態ノードN04は、クライアント端末11がゲームサーバシステム30からステージ一覧取得を完了し、ステージを選択する画面を表示している状態を示す。第5状態ノードN05は、クライアント端末11がゲームサーバシステム30からアイテム一覧取得を完了し、アイテム購入画面を表示している状態を示す。第7状態ノードN07は、クライアント端末11がステージ番号や参加メンバをゲームサーバシステム30に送信し、バトルを開始するために必要なステージマップや敵配置の情報取得を完了し、バトルを開始して終了するまでの状態を示す。第6状態ノードN06は、クライアント端末11がバトルの勝敗をゲームサーバシステム30に送信し、獲得アイテムの通知を受け、バトルの結果を表示している状態を示す。
図4に示した各構成要素の接続関係について説明する。第1遷移エッジE01は、通信「ログイン状態問い合わせ」を伴う、第0状態ノードN00から第1状態ノードN01への状態遷移を示す。第2遷移エッジE02は、通信「ログイン処理」を伴う、第1状態ノードN01から第2状態ノードN02への状態遷移を示す。第3遷移エッジE03は、通信「お知らせ取得」を伴う、第1状態ノードN01から第3状態ノードN03への状態遷移を示す。第4遷移エッジE04は、通信「お知らせ取得」を伴う、第2状態ノードN02から第3状態ノードN03への状態遷移を示す。第5遷移エッジE05は、通信「ステージ一覧取得」を伴う、第3状態ノードN03から第4状態ノードN04への状態遷移を示す。第6遷移エッジE06は、通信「アイテム一覧取得」を伴う、第3状態ノードN03から第5状態ノードN05への状態遷移を示す。第7遷移エッジE07は、第4状態ノードN04から第3状態ノードN03への状態遷移を示す。第8遷移エッジE08は、通信「バトル開始」を伴う、第4状態ノードN04から第7状態ノードN07への状態遷移を示す。第9遷移エッジE09は、第5状態ノードN05から第3状態ノードN03への状態遷移を示す。第10遷移エッジE10は、通信「アイテム購入」を伴う、第5状態ノードN05での自己ループ遷移を示す。第11遷移エッジE11は、第6状態ノードN06から第4状態ノードN04への状態遷移を示す。第12遷移エッジE12は、通信「バトル終了」を伴う、第7状態ノードN07から第6状態ノードN06への状態遷移を示す。第13遷移エッジE13は、通信「アイテム消費」を伴う、第7状態ノードN07での自己ループ遷移を示す。
図4に示した通信指向型状態遷移図で表されるオンラインゲームの動作について説明する。まず、第0状態ノードN00において、オンラインゲームのクライアント側アプリケーションソフトウェアをクライアント端末11上で起動する。第0状態ノードN00の次は、第1遷移エッジE01を介して第1状態ノードN01に遷移する。
第1遷移エッジE01において、クライアント側アプリケーションソフトウェアは、クライアント端末11がオンラインゲームにログインしている状態にあるか否かをゲームサーバシステム30に確認する。
もし、クライアント端末11が既にログインしている状態にあれば、第3遷移エッジE03を介して第3状態ノードN03に遷移する。このときクライアント端末11は、メニューに表示するためのお知らせを、ゲームサーバシステム30に問い合わせる。
反対に、もし、クライアント端末11がまだログインしていない状態にあれば、第2遷移エッジE02を介して第2状態ノードN02に遷移する。このとき、クライアント端末11は、ログインに必要な情報をゲームサーバシステム30に伝え、ゲームサーバシステム30はログインを受け入れた後の通信に使われるワンタイムセッションIDをクライアント端末11に送信する。このとき、クライアント端末11はプレイヤーにIDやパスワードなどの入力を求めても良いし、予め記憶されているIDやパスワードなどを自動的に利用しても良い。
第2状態ノードN02において、クライアント端末11がオンラインゲームへのログインを完了した状態となる。第2状態ノードN02の次は、第4遷移エッジE04を介して第3状態ノードN03に遷移する。このときクライアント端末11は、メニューに表示するためのお知らせを、ゲームサーバシステム30に問い合わせる。
第3状態ノードN03において、クライアント端末11は、お知らせなどを含むメニュー画面を表示する。メニュー画面には、プレイヤーが次に取れる行動の選択肢が表示されていることが好ましい。図4に示した例では、プレイヤーが次にとれる行動として、アイテムの購入と、バトルとが選択可能である。なお、メニュー画面には、さらに、プレイヤーの各種パラメータや、プレイヤーが所持する各種アイテムの種類および数量などが表示されても良い。
第3状態ノードN03のメニュー画面において、アイテムの購入を選択した場合は、第6遷移エッジE06を介して第5状態ノードN05に遷移する。このときクライアント端末11は、現在購入可能なアイテムの一覧データを、ゲームサーバシステム30に問い合わせる。
第5状態ノードN05において、クライアント端末11は、アイテム購入画面を表示する。アイテム購入画面には、ゲームサーバシステム30から取得した、現在購入可能なアイテムの一覧が表示される。
アイテムの購入は、一覧表示された購入可能アイテムをプレイヤーが選択し、かつ、アイテムごとに設定された対価を支払い、プレイヤーのアイテム所持数をクライアント端末11およびゲームサーバシステム30の両方のデータ上で調整することで完了する。アイテムの対価は、例えば、オンラインゲームに特有の仮想通貨や、ネット上で流通可能なオンライン通貨などを利用して支払われても良い。
アイテムの購入を行う場合は、第10遷移エッジE10を介して、第5状態ノードN05に自己ループ遷移を行う。このとき、クライアント端末11およびゲームサーバシステム30は、アイテム所持数や、仮想通貨などの増減に係る通信を行い、クライアント端末11はアイテム購入が完了した旨をプレイヤーに伝える通知をゲームサーバシステム30から取得する。
アイテムの購入が完了し、またはアイテムの購入を取りやめ、メニュー画面に戻る場合は、第9遷移エッジE09を介して第3状態ノード03に戻る。このとき、クライアント端末11およびゲームサーバシステム30の間で行う通信は特に無い。
第3状態ノードN03のメニュー画面において、バトルを選択した場合は、第5遷移エッジE05を介して第4状態ノードN04に遷移する。このときクライアント端末11は、現在利用可能なステージの一覧を、ゲームサーバシステム30に問い合わせる。
第4状態ノードN04において、クライアント端末11は、ステージ選択画面を表示する。ステージ選択画面には、ゲームサーバシステム30から取得した、現在利用可能なステージの一覧が表示される。ステージの選択は、一覧表示された利用可能ステージをプレイヤーが選択することで完了する。その後、第8遷移エッジE08を介して第7状態ノードN07に遷移する。このとき、クライアント端末11およびゲームサーバシステム30は、バトルを開始するために必要な情報に関する通信を行い、クライアント端末11でバトルを開始できる状態とする。
第7状態ノードN07において、クライアント端末11は、バトル画面を表示する。バトル画面では、第4状態ノードN04で選択されたステージ上に、プレイヤーの自キャラクターや、協力してくれる参加メンバの味方キャラクターや、敵キャラクターなどが表示されても良い。
第7状態ノードN07において、バトル中にアイテムを消費する場合は、第13遷移エッジE13を介して、第7状態ノードN07に自己ループ遷移を行う。このとき、クライアント端末11およびゲームサーバシステム30は、指定されたアイテム所持数を減らす通信を行い、クライアント端末11はアイテムを消費したことで得られる効果を処理する。
バトルが終了すると、第12遷移エッジE12を介して第6状態ノードN06に遷移する。このとき、クライアント端末11は、バトルの終了状態をゲームサーバシステム30に通知し、獲得アイテムの情報を得る。
第6状態ノードN06において、クライアント端末11は、バトルの結果画面を表示する。その後、通信を伴わない第11遷移エッジE11を介して、第4状態ノードN04に戻る。
第4状態ノードN04において、ステージの選択を取りやめ、メニュー画面に戻る場合は、第7遷移エッジE07を介して第3状態ノード03に戻る。このとき、クライアント端末11およびゲームサーバシステム30の間で行う通信は特に無い。
以上に説明したように、図4に例示した通信指向型状態遷移図では、オンラインゲームの内部状態の切り替えが、クライアント端末11に表示される画面の切り替えに対応しており、かつ、クライアント端末およびサーバの間で発生する通信は、画面の切り替えタイミングに合わせて行われる。ここで、クライアント端末11およびゲームサーバシステム30の間で行われる通信が、1回の状態遷移ごとに1回に集約されていることに注目されたい。
また、図4に例示した通信指向型状態遷移図は、オンラインゲームの内部状態の切り替えが、クライアント端末11に表示される画面の切り替えに対応しているため、オンラインゲームの開発者にとって直観的に理解し易い。通信指向型状態遷移図は、オンラインゲームの構成という抽象的な概念を、複数の開発者の間で高精度に共有するためのツールとしても有用であり、その結果、オンラインゲーム開発の生産性向上につながる。
また、クライアント端末11およびゲームサーバ31の間で、定義された状態遷移が守られているかを確認しながら動作が可能であるため、正規の通信に割り込まれて行われる不正などに対し、耐性を持つことができる。この際、通信指向型状態遷移図から、画面の切り替えを捨象し、通信に注目した抽象化を行って、通信を伴わない遷移エッジを取り去った状態遷移を使うことが出来る。
次に、図4に例示したような通信指向型状態遷移図を用いてオンラインゲームを開発する方法と、この方法を実現するオンラインゲーム開発システムとについて説明する。
図5は、本発明のオンラインゲーム開発システム2の一構成例を示すブロック図である。
図5に示したオンラインゲーム開発システム2の構成要素について説明する。図5のオンラインゲーム開発システム2は、クライアント端末11と、ネットワーク20と、アプリケーションサーバ21と、ゲームサーバシステム30と、開発用ゲームサーバ41と、開発用ユーザインタフェースサーバ42と、開発用ゲームデータベース43と、開発用端末44と、プラグインリポジトリ45と、テスト用ゲームサーバ46と、開発用クライアント端末13とを含んでいる。ゲームサーバシステム30は、ゲームサーバ31と、運用管理ユーザインタフェースサーバ32と、ゲームデータベース33とを含んでいる。
なお、クライアント端末11と、ネットワーク20と、アプリケーションサーバ21と、ゲームサーバシステム30は、ゲームサーバ31と、運用管理ユーザインタフェースサーバ32と、ゲームデータベース33とだけを抜き出すと、図5に示したオンラインゲーム開発システム2が図1Aに示したオンラインゲームシステム1を含んでいることが分かる。
図5に示した構成要素の接続関係について説明する。開発用端末44は、プラグインリポジトリ45と、開発用ユーザインタフェースサーバ42とに接続されている。開発用ユーザインタフェースサーバ42は、開発用ゲームサーバ41と、開発用ゲームデータベース43と、開発用端末44と、プラグインリポジトリ45とに接続されている。プラグインリポジトリ45は、ゲームサーバ31と、テスト用ゲームサーバ46と、開発用ゲームサーバ41と、開発用ユーザインタフェースサーバ42と、開発用端末44とに接続されている。開発用ゲームサーバ41は、開発用クライアント端末13と、開発用ゲームデータベース43と、プラグインリポジトリ45と、開発用ユーザインタフェースサーバ42とに接続されている。開発用ゲームデータベース43は、開発用ユーザインタフェースサーバ42と、開発用ゲームサーバ41に接続されている。テスト用ゲームサーバ46は、ネットワーク20と、ゲームデータベース33と、プラグインリポジトリ45とに接続されている。ネットワーク20は、クライアント端末11と、アプリケーションサーバ21と、ゲームサーバ31と、テスト用ゲームサーバ46とに接続されている。ゲームサーバ31は、ゲームデータベース33と、運用管理ユーザインタフェースサーバ32と、ネットワーク20とに接続されている。ゲームデータベース33は、ゲームサーバ31と、テスト用ゲームサーバ46と、運用管理ユーザインタフェースサーバ32とに接続されている。運用管理ユーザインタフェースサーバ32は、ゲームデータベース33と、ゲームサーバ31とに接続されている。クライアント端末11は、ネットワーク20に接続されている。アプリケーションサーバ21は、ネットワーク20に接続されている。
図5に示した構成要素の動作について説明する。
開発用端末44は、オンラインゲーム開発者が直接操作する端末である。開発用端末44には、通信指向型状態遷移図を生成するためのUMLツールや、各状態ノードおよび各遷移エッジにそれぞれ対応するプラグインを生成するためのプログラミング開発ツールなどがインストールされていることが好ましい。なお、開発用端末44は、プラグインリポジトリ45を検索して既存のプラグインや雛形プラグインなどを読み出し、これらを流用し、または改良しても良い。開発用端末44は、開発者のそれぞれが有していることが好ましく、その総数は複数であっても良いし、それぞれの開発用端末44で異なるプログラミング言語を使用しても良い。
プラグインリポジトリ45は、自動生成された雛形プラグインや、過去に開発されたオンラインゲーム用プラグインを格納しており、必要に応じて開発用端末44に提供する。なお、プラグインリポジトリ45は、内部に格納されたプラグインのそれぞれについて、再利用の可否や、ソースコードの開示の可否を管理する機能を有していることが好ましい。開発者がソースコード管理システムを特に指定した場合、プラグインリポジトリ45の他に、指定されたソースコード管理システムに、プラグイン一式をコピーする。この場合、指定されたソースコード管理システムが、プラグインリポジトリ45に相当するものとして振る舞う。プラグインリポジトリ45に用意されたプラグイン一式において、雛形プラグインについては、開発用端末44を使って、意図した働きを行うように、プログラミング作業を行う。プラグインリポジトリ45に用意されたプラグイン一式に対するプログラミング作業が完了したら、開発用ユーザインタフェースサーバ42は、プラグイン一式を、開発用ゲームサーバ41に配備する。
開発用ユーザインタフェースサーバ42は、設計情報として開発用端末44で生成された通信指向型状態遷移図に基づき、プラグインリポジトリ45に登録されたプラグイン一式を開発用ゲームサーバ41に配備するなどの処理を行う。設計情報として開発用端末44で生成された通信指向型状態遷移図は、開発用ユーザインタフェースサーバ42に送信され、雛形プラグインを自動生成した上で、プラグインリポジトリ45に登録する。この際、通信指向型状態遷移図で、既に開発済みでプラグインリポジトリ45に登録済みの通信が指定されていた場合、雛形プラグインは生成されず、登録もされない。
開発用ゲームデータベース43は、本番用のゲームデータベース33と同様に、オンラインゲーム内の不揮発な情報を格納する。開発用ゲームデータベース43と、本番用のゲームデータベース33とは、テーブル構造などが同じ構成ではあるものの、別々の実体として設けられる。
開発用ゲームサーバ41は、開発中のオンラインゲームに合わせてプラグインを配備したゲームサーバである。開発用クライアント端末13や、開発用ゲームデータベース43との組み合わせで、開発中のオンラインゲームをテストプレイする環境が構築される。
テスト用ゲームサーバ46は、ゲームサーバ31の補助として動作する。オンラインゲームがリリースされて、一般ユーザなどへのサービスが開始された後に、プラグインの改修や、ゲームデータベース33の更新などが必要となり、その結果としてゲームサーバ31の振る舞いが変わる場合がある。このような場合に、回収や変更を行った後のオンラインゲームの検証を、本番環境に準じたテスト用ゲームサーバ46を用いて行う。この検証を経た後、本番環境用のゲームサーバ31の更新が実行される。
なお、クライアント端末11、ネットワーク20、アプリケーションサーバ21、ゲームサーバ31、運用管理ユーザインタフェースサーバ32およびゲームデータベース33の動作については、図1Aを参照して既に説明したとおりであるので、ここでは省略する。
図6は、本発明のオンラインゲーム開発システム2の一構成例を機能別に示す機能ブロック図である。
図6に示した機能ブロック図の構成要素について説明する。図6の機能ブロック図において、本発明のオンラインゲーム開発システム2は、状態遷移図作成機能部51と、プラグイン作成機能部52と、開発環境構築機能部53と、本番環境構築機能部54とを含んでいる。
状態遷移図作成機能部51は、状態プログラムモジュール作成機能部511と、遷移情報集約機能部512とを含んでいる。
プラグイン作成機能部52は、プラグイン格納機能部521と、既存プラグイン検索機能部522と、雛形プラグイン提供機能部523とを含んでいる。
開発環境構築機能部53は、開発版プレイ機能部531と、テストプレイ機能部532を含んでいる。
図6に示した構成要素と、図5に示した構成要素の対応関係について説明する。
状態遷移図作成機能部51は、開発用端末44および開発用ユーザインタフェースサーバ42のうち、状態遷移図の作成および加工に用いられる部分に対応する。
状態プログラムモジュール作成機能部511は、開発用端末44および開発用ユーザインタフェースサーバ42のうち、状態遷移図の状態遷移情報からゲームの状態遷移を監視するプログラムモジュールの作成に用いられる部分に対応する。
遷移情報集約機能部512は、開発用端末44および開発用ユーザインタフェースサーバ42のうち、状態遷移図の各遷移エッジに含まれる通信の定義を集約し、プラグイン作成機能部52のための情報の作成に用いられる部分に対応する。
プラグイン作成機能部52は、開発用端末44と、開発用ユーザインタフェースサーバ42と、プラグインリポジトリ45のうち、プラグインの作成に用いられる部分に対応する。
プラグイン格納機能部521は、プラグインリポジトリ45に含まれる記憶領域のうち、プラグインの格納に用いられる部分に対応する。
既存プラグイン検索機能部522は、プラグインリポジトリ45のうち、プラグインリポジトリ45の記憶領域から既存プラグインを検索するために用いられる部分に対応する。
雛形プラグイン提供機能部523は、開発用ユーザインタフェースサーバ42のうち、雛形プラグインの提供に用いられる部分に対応する。
開発環境構築機能部53は、開発用ユーザインタフェースサーバ42と、プラグインリポジトリ45とのうち、開発環境の構築に用いられる部分に対応する。
テストプレイ機能部532は、テスト用ゲームサーバ46、ゲームデータベース33およびクライアント端末11のうち、テストプレイに用いられる部分に対応する。
本番環境構築機能部54は、開発用ユーザインタフェースサーバ42およびプラグインリポジトリ45のうち、本番環境の構築に用いられる部分に対応する。
図6に示した各構成要素の動作を、図7Aおよび図7Bを参照して説明する。
図7Aは、本発明のオンラインゲームの開発方法の一構成例を示すフローチャートの一部である。図7Bは、図7Aに示したフローチャートの残りである。
図7Aおよび図7Bのフローチャートは、第0ステップS00〜第15ステップS15の、合計16のステップを含んでいる。
第0ステップS00は、本発明のオンラインゲーム開発方法の開始点を示す。第0ステップS00の次に、第1ステップS01を実行する。
第1ステップS01において、状態遷移図作成機能部51が、通信指向型状態遷移図を編集する。ここで、状態遷移図作成機能部51は、通信指向型状態遷移図を、最初から生成しても良いし、既存の通信指向型状態遷移図を流用しても良いし、既存の通信指向型状態遷移図を改良しても良い。
第2ステップS02において、状態プログラムモジュール作成機能部511が、通信指向型状態遷移図から、状態遷移情報を取り出す。
第3ステップS03において、状態プログラムモジュール作成機能部511が、取り出した状態遷移情報から、状態プログラムモジュールを作成する。作成されたプログラムモジュールは、クライアント側の通信呼び出し履歴をサーバ側でチェックし、状態遷移図の通りにゲームが進行しているか、ゲームの状態遷移を監視する機能を有する。
第4ステップS04において、遷移情報集約機能部512が、通信指向型状態遷移図から、各遷移エッジの通信の情報を取り出す。取り出された各通信の情報は、プラグインとして実装されるため、プラグイン作成機能部52に渡される。
第5ステップS05において、プラグイン作成機能部52が、遷移情報集約機能部512から受け取った各通信について、対応するプラグインが在るか否かを、既存プラグイン検索機能部522を用いて判定する。もし、対応するプラグインが既にプラグインリポジトリ45に格納されていれば(YES)、第5ステップS05の次に第7ステップS07を実行する。反対に、もし、対応するプラグインがプラグインリポジトリ45を検索しても見つからなければ(NO)、第5ステップS05の次に第6ステップS06を実行する。
第6ステップS06において、指定された通信のプラグインの雛形を自動生成する。生成された雛形プラグインは、プラグイン格納機能部521により、プラグインリポジトリ45に格納される。第6ステップS06の次に、第8ステップS08を実行する。
第7ステップS07において、見つかったプラグインを、開発に使えるように、プラグインリポジトリ45内でコピーを行う。コピーすることで、元となったプラグインに影響を与えることなく、プラグインの改造など派生開発を行うことが可能となる。
第8ステップS08において、プラグイン作成機能部52が、第5ステップS05の段階で、遷移情報集約機能部512から受け取っていた各通信について、対応するプラグイン(雛形も含む)が、プラグインリポジトリ45に揃っているかを確認する。揃っていれば(YES)、第8ステップS08の次に第9ステップS09を実行する。揃っていなければ(NO)、第8ステップS08の次に第5ステップS05に戻る。
第9ステップS09において、開発用端末44上で、雛形プラグインに対するプログラミング作業の進捗を確認する。プログラミング作業の終わっていない雛形プラグインが残っていれば(YES)、第9ステップS09の次に第10ステップS10を実行する。プラグインに対するプログラミング作業が終わっていれば(NO)、第9ステップS09の次に第11ステップS11を実行する。
第10ステップS10において、開発用端末44上で、雛形プラグインに対するプログラミング作業を行う。第10ステップS10の次に第9ステップS09を実行する。
第11ステップS11において、開発環境構築機能部53に含まれる開発版プレイ機能部531が、開発中の最新のプログラムを使って、開発用ゲームサーバ41と、開発用ゲームデータベース43と、開発用クライアント端末13に、開発版プレイ環境を構築する。
第12ステップS12において、開発版プレイ機能部531が、開発用ゲームサーバ41と、開発用ゲームデータベース43と、開発用クライアント端末13とを用いたゲームのプレイに問題が在るか否かを判定する。もし、プレイに問題が在った場合(NO)は、第12ステップS12の次に第1ステップS1に戻る。プレイに問題が無い場合(YES)は、つまり、オンラインゲームのプログラムが完成した場合は、第13ステップS13を実行する。
第13ステップS13において、開発環境構築機能部53に含まれるテストプレイ機能部532が、開発版プレイ環境と同じプログラムを使って、テスト用ゲームサーバ46と、ゲームデータベース33と、クライアント端末11に、テストプレイ環境を構築する。
第14ステップS14において、テストプレイ機能部532が、テスト用ゲームサーバ46と、ゲームデータベース33と、クライアント端末11とを用いたゲームのプレイに問題が在るか否かを判定する。もし、プレイに問題が在った場合(NO)は、第14ステップS14の次に第1ステップS1に戻る。プレイに問題が無い場合(YES)は、つまり、オンラインゲームのプログラムが、テストプレイ環境でも問題ないと分かった場合は、第15ステップS15を実行する。
第15ステップS15において、本番環境構築機能部54は、本番用のゲームサーバ31および運用管理ユーザインタフェースサーバ32のシステムを構築し、オンラインゲームは完成する。
このように、本実施形態によるオンラインゲーム開発システムは、通信指向型状態遷移図に基づく開発方法を用いることによって、オンラインゲームの開発をその設計手法からカバーしている。その一方で、従来の手法は機能指向型であって、通信モデルや各機能のレイヤからしかカバーしておらず、このような観点から本実施形態によるオンラインゲーム開発システムはより高品質なオンラインゲームの開発を可能にする。
また、本実施形態によるオンラインゲーム開発システムでは、複数の通信を1つに集約することによって、通信のモデルがより単純になり、仮に通信障害が発生してもそのリカバリがしやすい。その一方で、従来の手法はオンラインゲームの開発者が高い知見を有しない限りその品質が下がりやすい。このような観点からも、本実施形態によるオンラインゲーム開発システムはより高品質なオンラインゲームの開発を可能にする。
以上、発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。また、前記実施の形態に説明したそれぞれの特徴は、技術的に矛盾しない範囲で自由に組み合わせることが可能である。
1 オンラインゲームシステム
2 オンラインゲーム開発システム
11 クライアント端末
12 クライアント端末
13 開発用クライアント端末
20 ネットワーク
21 アプリケーションサーバ
30 ゲームサーバシステム
31 ゲームサーバ
32 運用管理ユーザインタフェースサーバ
33 ゲームデータベース
41 開発用ゲームサーバ
42 開発用ユーザインタフェースサーバ
43 開発用ゲームデータベース
44 開発用端末
45 プラグインリポジトリ
46 テスト用ゲームサーバ
100 コンピュータ
101 バス
102 通信装置
103 演算装置
104 記憶装置
105 入力装置
106 出力装置
107 外部記憶装置
108 記憶媒体
111 ステージマップ管理機能
112 敵配置管理機能
113 参加メンバ管理機能
114 集約通信機能
201 ステージマップ情報リクエスト
201a 通信障害
201b タイムオーバー
201c ステージマップ情報リクエスト再送
202 敵配置情報リクエスト
203 参加メンバ情報リクエスト
203b タイムオーバー
203c 参加メンバ情報リクエスト再送
211 ステージマップ情報送信
212 敵配置情報送信
213 参加メンバ情報送信
213a 通信障害
213b タイムオーバー
221 ステージマップ情報アクノリッジ
222 敵配置情報アクノリッジ
223 参加メンバ情報アクノリッジ
231 集約情報リクエスト
231a 通信障害
231b タイムオーバー
231c 集約情報リクエスト再送
232 集約情報送信
233 集約情報アクノリッジ
311 ステージマップ管理機能
312 敵配置管理機能
313 参加メンバ管理機能
314 集約通信機能
51 状態遷移図作成機能部
511 状態プログラムモジュール作成機能部
512 遷移情報集約機能部
52 プラグイン作成機能部
521 プラグイン格納機能部
522 既存プラグイン検索機能部
523 雛形プラグイン提供機能部
53 開発環境構築機能部
531 開発版プレイ機能部
532 テストプレイ機能部
54 本番環境構築機能部

Claims (10)

  1. サーバおよびクライアント端末の間で行う通信を伴うオンラインゲームを開発するシステムであって、
    前記オンラインゲームの構造を表す通信指向型状態遷移図を作成する状態遷移図作成機能部と、
    前記通信指向型状態遷移図に含まれる複数の状態ノードにそれぞれ対応する複数の状態プログラムを作成する状態プログラムモジュール作成機能部と、
    前記通信指向型状態遷移図に含まれる複数の遷移エッジにそれぞれ対応する複数の通信の情報を取り出す遷移情報集約機能部と
    を具備し、
    前記複数の状態ノードは、前記クライアント端末に表示される複数のゲーム画面にそれぞれ対応し、
    前記複数の遷移エッジは、前記複数のゲーム画面の切り替えにそれぞれ対応する
    オンラインゲーム開発システム。
  2. 請求項1に記載のオンラインゲーム開発システムにおいて、
    前記遷移情報集約機能部は、
    同一の状態遷移に伴って前記サーバおよび前記クライアント端末の間で行われる複数の通信を、1つの通信に集約する
    オンラインゲーム開発システム。
  3. 請求項2に記載のオンラインゲーム開発システムにおいて、
    前記遷移情報集約機能部は、前記複数の通信の一部を、前記クライアント端末または前記サーバのキャッシュ機能で代用して省略する
    オンラインゲーム開発システム。
  4. 請求項2または3に記載のオンラインゲーム開発システムにおいて、
    前記遷移情報集約機能部は、集約された前記1つの通信に、1度だけ有効なワンタイムセッションIDを用いる
    オンラインゲーム開発システム。
  5. 請求項1〜4のいずれか一項に記載のオンラインゲーム開発システムにおいて、
    前記状態遷移図作成機能部は、前記通信指向型状態遷移図を、UML(Unified Modeling Language:統一モデリング言語)形式で作成する
    オンラインゲーム開発システム。
  6. サーバおよびクライアント端末の間で行う通信を伴うオンラインゲームを開発する方法であって、
    前記オンラインゲームの構造を表す通信指向型状態遷移図を作成することと、
    前記通信指向型状態遷移図に含まれる複数の状態ノードにそれぞれに対応する複数の状態プログラムを作成することと、
    前記通信指向型状態遷移図に含まれる複数の遷移エッジにそれぞれに対応する複数の通信の情報を取り出すことと
    を具備し、
    前記複数の状態ノードは、前記クライアント端末に表示される複数のゲーム画面にそれぞれ対応し、
    前記複数の遷移エッジは、前記複数のゲーム画面の切り替えにそれぞれ対応する
    オンラインゲーム開発方法。
  7. 請求項6に記載のオンラインゲーム開発方法において、
    前記複数の通信の情報を取り出すことは、
    同一の状態遷移に伴って前記サーバおよび前記クライアント端末の間で行われる複数の通信を、1つの通信に集約すること
    を具備する
    オンラインゲーム開発方法。
  8. 請求項7に記載のオンライン開発方法において、
    前記集約することは、
    前記複数の通信の一部を、前記クライアント端末または前記サーバのキャッシュ機能で代用して省略すること
    を具備する
    オンラインゲーム開発方法。
  9. 請求項7または8に記載のオンラインゲーム開発方法において、
    前記複数の通信の情報を取り出すことは、
    前記1つに集約された通信に、1度だけ有効なワンタイムセッションIDを追加すること
    をさらに具備する
    オンラインゲーム開発方法。
  10. 請求項6〜9のいずれか一項に記載のオンラインゲーム開発システムにおいて、
    前記通信指向型状態遷移図を作成することは、
    前記通信指向型状態遷移図を、UML(Unified Modeling Language:統一モデリング言語)形式で作成すること
    を具備する
    オンラインゲーム開発方法。
JP2015162952A 2015-08-20 2015-08-20 オンラインゲーム開発システム Pending JP2017038808A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015162952A JP2017038808A (ja) 2015-08-20 2015-08-20 オンラインゲーム開発システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015162952A JP2017038808A (ja) 2015-08-20 2015-08-20 オンラインゲーム開発システム

Publications (1)

Publication Number Publication Date
JP2017038808A true JP2017038808A (ja) 2017-02-23

Family

ID=58206010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015162952A Pending JP2017038808A (ja) 2015-08-20 2015-08-20 オンラインゲーム開発システム

Country Status (1)

Country Link
JP (1) JP2017038808A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109663356A (zh) * 2018-08-22 2019-04-23 四川三思德科技有限公司 一种游戏在线生成系统及其工作方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196291A (ja) * 2003-12-26 2005-07-21 Fujitsu Ltd ユーザインタフェースアプリケーション開発プログラム、および開発装置
JP2009223366A (ja) * 2008-03-13 2009-10-01 Nec Corp ソフトウェア生成システム、ソースコード共通化方法、及びソフトウェア生成用プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196291A (ja) * 2003-12-26 2005-07-21 Fujitsu Ltd ユーザインタフェースアプリケーション開発プログラム、および開発装置
JP2009223366A (ja) * 2008-03-13 2009-10-01 Nec Corp ソフトウェア生成システム、ソースコード共通化方法、及びソフトウェア生成用プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109663356A (zh) * 2018-08-22 2019-04-23 四川三思德科技有限公司 一种游戏在线生成系统及其工作方法

Similar Documents

Publication Publication Date Title
US10122826B2 (en) Posted information sharing system, information-processing system, information processing method, storage medium, and computer platform
JP6006986B2 (ja) 投稿情報共有システム、情報処理装置、情報処理方法および情報処理システム
US20160008720A1 (en) Management device, management method, terminal device, control method, and program
JP6159511B2 (ja) 情報処理システム、情報処理装置および情報処理方法
JP2014200395A (ja) サーバー装置、及び、プログラム
US20160144282A1 (en) Posted Information Sharing System, Game Application Executing System, Storage Medium, and Information-Processing Method
JP5132825B1 (ja) ゲーム管理サーバ装置、ゲーム管理サーバ装置用プログラム、および、端末装置用プログラム
EP3493140A1 (en) Program, terminal device, and information processing system
JP4173903B2 (ja) オンラインフラッシュゲーム提供システム、オンラインフラッシュゲーム提供方法、フラッシュゲームを実行するためのウェブページを提供する方法、方法実行プログラムを記録した保存媒体およびウェブページを提供するウェブサーバ
JP2007066197A (ja) 環境情報送信プログラム、環境情報送信方法およびサービス制御システム
JP7395734B2 (ja) ビデオゲームでのサーバベースのヘルプマップの生成
JP2017038808A (ja) オンラインゲーム開発システム
CN109104472B (zh) 区块链网络组网方法、装置、设备及计算机可读存储介质
JP2018166680A (ja) プログラム、ゲーム装置及びサーバ装置
JP5203533B1 (ja) ゲーム拡張装置、ゲーム拡張方法およびゲーム拡張プログラム
JP6437610B1 (ja) アクセス認証システム
JP6412667B1 (ja) ゲームを提供するためのサーバ、方法、及びプログラム
JP5576419B2 (ja) ゲームサーバシステム
JP5668492B2 (ja) データ処理装置、コンピュータプログラム及びデータ処理方法
JP2013111438A (ja) ゲームシステム、ゲーム装置、ゲームプログラムおよびゲーム制御方法
US20110131404A1 (en) Apparatus and method for visualizing game packet data
JP4908538B2 (ja) ワークフロー処理装置、プログラム及び方法
US20130325909A1 (en) Server device, information-processing method, storage medium, information-processing system
JP2024022297A (ja) ゲーム情報処理方法、ゲーム情報処理装置及びコンピュータプログラム
TWM596913U (zh) 智慧獎勵系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180717

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20191002