0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTTP通信を使うゲームの設計

Posted at

HTTP通信を使ったゲーム

古よりブラウザゲームでHTTP通信を使ったゲームはたくさん作られてきたはずである。
ちなみに私はその歴史も、ブラウザゲームについてもあまり詳しくない。

だがどういうわけかブラウザゲームは作っているので、思う所を書いていく。

状態レス

HTTPは状態を持たない。
クライアントがサーバーにリクエストを送ったらサーバーがレスポンスを返す。
それで通信は終わりである。

いっぽうゲームは状態を持つ。
ゲーム側からすると状態をサーバーに保存してもらいたいという欲求がある。

掲示板なんだよな

結局、HTTP通信縛りがある以上、その形態は掲示板に似ることになる。
つまりゲーム側がSPAに似た設計にして、サーバーと通信しても、それは結局掲示板の発展形にしかならない。
制約として掲示板があるわけである。

この縛りプレイを念頭に置かないといけない。

でも他の人と通信したいんだけど

しかしWebゲームなわけだから、一人で出来るゲームを作ってもしょうがないわけである。
やはりWebで他の人とつながれるなら、他の人と繋がれるゲームを作りたいものである。

ということはゲームのデータをHTTPでサーバーに保存して、それをみんなで共有する、という設計になる。
掲示板である。

この制約でできることはあまり多くない

WebSocketなどであればベースが掲示板ではなくチャットになるので、掲示板よりはリアルタイム性が上がる。
しかしHTTPはベースが掲示板である。
よって出来ることは掲示板の範囲に収まる。
強引にリクエストをリアルタイムで出してもいいが、それだとサーバーの負荷が上がるため、PVが伸びたら現実的な設計にはならないことが懸念される。

どうやってリアルタイム性を演出するか?

面白いのはゲームを通じて他のプレイヤーと繋がっている実感を演出することである。
そうするとたとえばゲーム中に掲示板を作って、その掲示板を通して他のユーザーと交流するなどがある。
だが、それならゲームはおまけで掲示板が主役になってしまう。
どうやってゲーム主役で演出したらいいか?

クリエイト系ゲーム

たとえばゲームステージをユーザーに作らせて、それを投稿させる。
そしてそのゲームステージをみんなで共有してプレイする。
これならゲーム主役のコミュニケーションだろう。
だが、ゲーム中にほかのユーザーとコミュニケーションを取るにはやはり掲示板じゃないとだめである。

ステージデータの更新

クリエイト系でゲームステージを投稿するゲームで、そのステージを他のユーザーが改変できるようにする。
たとえば岩を叩いたら岩が壊れ、その状態をHTTPでサーバーに送ってステージデータを更新する。
これはリアルタイム性がありそうである。
だが、HTTPなので同時に二人にデータが配信されて、一方がデータを更新してももう一方はその更新を受け取れない。ブラウザを更新しないといけない。チャットならブロードキャストでデータが入ってくるが、掲示板だとこういうことができない。

うーん

何か面白いアイデアがあればいいのだが。
HTTPという縛りの中で面白いアイデアが。
なかなか思いつかないのであった。
おわり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?