rails + scala でリプレイデータをWebに保存する MouseReplayer 作った

http://mouse-replayer.heroku.com/
https://github.com/alphaneet/sample-mouse-replayer


勉強がてら作ってみました。コードは github に置いてあるのでよかったらどうぞという感じで。


この話を前友人にしたところ「なんでyoutubeやニコ動にアップじゃなダメなの?」
と聞かれて上手く説明できませんでした。


技術的には大したことはしてないですし特に説明することもないので、
ここで作った理由をずらずら書いてみます。
自分の考えをまとめる的な意味でもあります。

  • youtube などの動画サービス
  • HTML5を使ったリプレイヤー
  • Appletを使ったリプレイヤー

ここではこの選択肢の中で僕がなぜアプレットに至ったかをまとめます。

僕が作りたいゲームの方向性

僕はユーザー同士がネットで何らかの形で交わらないゲーム(どういう形で交わるかはさまざま。対戦、協力プレイなどなど)はこれからはもうありえないと思ってます。


ゲーム内通信機能のみというわけではありません。「こーゆーことしたんだー」「へーおもしろいねー」のような軽いSNSレベルなものからコミュニケーションの方法は色々あると思います。


今の自分では P2P を使ったゲームネット網なんて実装できるわけないので(いつかは作りたいと思います)
まずは、昔ながらのゲームの結果を表示するリプレイ機能を作ってみよう。それを Web で管理しよう。
と思ったわけです。

なぜ動画サービス(youtube、ニコ動)のインフラを利用しないのか?

一般ユーザーがゲーム(特に対戦型ゲーム)の動画をアップロードする時一番気にすることはなんだと思いますか?


それは「倒してしまった相手を晒していいのだろうか?」という懸念がかなりウェイトを占めていると思います。
その相手がキ○ガイでしたら炎上してしまいますからね。


僕はお金がないのでやってませんがゲームデザイン的に神だと思ってるゲームに「三国志大戦」というアーケードゲームがあります。(脳内聖帝おつw)
これはユーザーのプレイ動画投稿が盛んでよく目を通しているんですが大体対戦相手の名前欄にモザイク入ってますね。
中には完全に開きなおってる人もいますがね(苦笑)


三国志大戦は名前欄が固定位置なので動画のスキルレベルがそれほどなくてもモザイクをかけれます。
しかし名前欄が動きまくってる FPS 系のゲームでは全てのユーザーの名前にモザイクを入れるのはかなり難しい気がします。


この問題を解決するとユーザーのゲームの動画投稿が草の根レベルまで広がりそのゲームのコミュニケーションは活発になると思います。
動的プレイヤーの良さを列挙しますと

  • 他のユーザーが動画を投稿した場合、自分の名前を「公開」「非公開」「閲覧後許可すれば公開」を選べるようになる。
  • 今までの動画の公開設定を動画一つずつに出来る。
  • リプレイデータは所詮座標と入力データなので動画より軽く、ローカルに保存しやすい。これは個人でインフラを負担する場合大きいと思います。100件以上投稿したら古いのから消すよ^^嫌ならローカルに保存しておいてね☆ミ という形になった場合ユーザーの負担が軽いからです。
  • 動的再生なのでプレイ動画の自キャラのアバターなどを変えやすい。動画の装飾(機能を付ければ)も一度投稿したら終わり!よりやりやすい。

などがあると思います。
youtube などの動画サービスは動的ではないので、後から「あーやっぱりこの動画恥かしいから自分の名前を非表示にしたい>_<」「ちょっといいプレイ出来てるから名前表示してやってもいいかな」のようなことが出来ません。最悪動画を上げなおすしかないですよね。動画を個別に「この動画のユーザー情報は非公開」で「この動画は公開」にしたいのような調整も難しいと思います。


youtube などの動画サービスのメリットといえばなんといっても「インフラただのり」のところですかね。
膨大なトラフィックを捌くというスキルは僕にはないので。


Heroku や GAE 様にお布施(有料版)をすればなんとかなるかなーとは思ってますが、金銭的負担は外部のサービスを利用するより大きそうです。

なぜこれからのトレンドである HTML5Flash(笑)) でなくオワコン技術の Applet なのか

  • 主なターゲットユーザーがPCのヘビーユーザーだから(現状では)アプレットで問題ないと判断したから
  • プレイヤーとゲーム本体を別々の技術で作るのは手間がかかるから
  • HTML5javascript の学習コストが重いから
  • HTML5 の WebSocket が実現するか怪しいから(Web署名を取得すればアプレットではソケット通信が出来ます)
  • HTML5 は新しすぎてまだ早いと判断したから

これからは端末にはブラウザのみでアプリはサーバーで動かす時代です!!
その時代に端末はレンダリングのみをすればいいのです。その技術が HTML5 です。クラウドェ・・・


と、世の中がこういう風に向かっているのは分かっているとは思います。
しかし、個人でWebとデスクトップにそれぞれ専用のアプリを作るのはコストが重すぎると判断しました。


その点 processing ならばほぼ同じコードでアプレットとデスクトップアプリケーションの両方を作ることが出来ます。
そして、僕が作る同人ゲームのターゲットユーザーは大体PCのヘビーユーザーなので、現状はPC環境のみで問題ないと判断しました。


いつかは HTML5 にしてスマフォで見れるようにしたいですが、
僕は javascript を書いたことがないので1から勉強を始めておじいさんになってしまう前にさっさとお金持ちになって誰かにお金払って作ってもらいます。あうとそーじんぐ(すいーつ)


(注)一応 javascript はこれからのコア技術だとは思ってますので多分いつかは勉強します!!!

まとめ

あぷれっと(わらい)

次の目標

練習がてら MouseReplayer の使用動画をキャプチャーしてニコニコ動画にアップロードしようと思います。


次にPayPal が個人名義でどれぐらい使えるのかを調べてみたいと思います。
もしネットで決算できればかなり選択肢が広がると思います。
僕がビジネスモデル的に神だと思っている「Fantasy Earth ZERO」型の収益モデルを構築していけるかもしれません。(これについてはまた今度別に機会に詳しく書くかもしれません)


いつまでたっても本格的なゲーム制作に取り掛かってませんが、
戦略的な構想(ビジネスモデル)が固まらないのに戦術的なこと(ゲーム制作)をしても意味がありませんからね(きりっ
PayPal 弄りが一段落ついたら次こそは本格的に何かのゲームを一本作ってみたいと思います。