implementing level editor by HTML


レベルエディタを実装中です。
今は DyncmicObjLoader があるので全部 C++ でレベル (ステージ) を書くのも十分アリなんですが、それとは別に、レベルエディタ的なものを実装してそれをゲームの一要素にしたいと考えています。


exception conflict が、サーバープレイヤーが動画を配信しながらプレイして視聴者が気まぐれに乱入、という遊ばれ方をしているのを見て、これに加えて見てる人が敵出したり敵に指示出したりできたら面白そうだ、と考えていました。
直接ゲームにつないでるプレイヤーは STG な一方、見てる人はそのプレイヤーを阻止する RTS になるイメージです。
見てる人が気軽に敵出したり敵に指示出したりできる、となるとそれはブラウザ上で動くことが必須であり、事実上 HTML であることが必須です。
そういうわけで、HTML でレベルエディタです。


上の動画はとりあえずブラウザでゲームの状態を表示しつつ、クリックで敵出す処理が動いたところ。
これを実現するには当然ゲーム本体に HTTP サーバ機能を実装する必要がありますが、これは Poco というライブラリのおかげで非常に楽にできました。(実装例)
表示部分には WebGL を使っています。WebGL は三角形出す最小限のサンプルが見当たらなくて割と苦労しました。(ので、自分で最小サンプルを作ってみました)
サーバー -> HTML の状態の反映は、HTML から Ajax でリクエストを送信し、サーバーは必要なデータを JSON 化して送りつけることで実現しています。今は補間処理はなにもやってないのでカクカクですが、いずれ滑らかになる予定。
(主に Poco のおかげで) 意外と実装は簡単で、しかし面白い要素になりそうな気がする、というのが今の感触です。


最近のゲームを見てて、アンロック要素は今作にも是非入れたいと考えているんですが、RTS モードで出せる敵の種類は面白いアンロック要素になりえそうです。
exception conflict で有志がやってくれた、スクリプトでゲームの内部状態を見て動的に難度調節する、というのもより高いレベルで実現できそうです。
体験版はサーバー機能はないけどクライアントとしてはネットワークモードをフルに遊べる、とかしておけば集客力を得られるかもしれません。
他にもなんか色々応用の余地がありそうな気がします。
あと、私は基本的にスマートフォンやタブレットでゲームは遊びたくない派ですが、こういうサテライトゲームに使うのはアリかもしれないという気がしていて、いい実験台になってくれそうです。



夏コミ申し込みました。
今回は落選しても委託で何か出すくらいの気概です。