jgforceで素材やゲームがforkできるようになった

jgforceっていう企画がある。
毎回説明するの大変なので詳しいことは過去記事を見てくれ。


そのjgforceのプロトタイプをまた更新した。
今回は素材やゲームを「fork」出来るようになった。
さあ気が向いた人は見てくれ。
http://jgforce.com
これでver 0.1かな。重要な機能が三つあって、そのうち二つまでのデモが出来たって状態。
※いないと思いますが安定しているバージョンではないので、本気では使わないでください。一応。


さあいい加減誰か一緒にやろう!
いつまで俺一人にやらせるつもりだそこの君!一緒にやりたい人はこのブログの最後を見てくれ。

forkとライセンス

今回作ったものはいわゆるfork。forkってのは要は「コピー」っす。
自分のをコピーするだけじゃなくて、他人のもコピー可能で、しかも改変可能。


これにより素材Aから素材Bを作る、ゲームCからゲームDを作るってのが出来るようになった、と。
例えばFF5を基に自作ゲーム作りたいなぁと思ってる人がいる場合、このプラットフォームにFF5が登録されてればそれをforkすれば実現出来ちゃいますよという話。


で、今回作ったのはそのforkなんだけど、このforkは主にライセンスの問題がでかい。
ライセンス問題はgithubとかjsdo.itとかがやっているように、ユーザが勝手に解決してよって話にも出来るしそれはそれでいいけど、詳細割愛するけど俺はちゃんとやろうと思った。
jgforceでたとえば素材を公開しようとすると、こういう設定欄がある。


ここでライセンスを選ぶんだけど、このライセンスはまたこういう細かい設定によって作られたライセンス。


上記設定から「利用者はこのコンテンツを別サイトで配布してもよい」と「利用者はこのコンテンツを販売してもよい」をYESにすると、CC-BY、いわゆるクリエイティブ・コモンズのライセンスになったりする。
ライセンスはいろいろあるので、ユーザはいくつかよく使うライセンスをお気に入りして、公開時にお気に入りライセンスの中から選ぶ形。


で、このライセンスの内、たとえば「このコンテンツを改変したコンテンツを作る事が可能」がNOであればその素材は使うことは出来るけど改変することは出来ない。
または「改変コンテンツのライセンスはこのライセンスに準ずる」であれば、再度公開しようとした時にライセンスを変更することは出来ない。
などの制約がある。


もちろん抜け道はいろいろあるんだけど、最低限こういうライセンスチェックくらいはしてあげないと素材利用者しんどいよねって事で、一応ちゃんと作った。

ライセンスとリビジョン

ライセンスが絡んでくるとまた厄介なのがリビジョン。
たとえば2012年4月まではCC-BY*1で公開されていたけど、その後CC-ND*2になりましたみたいなコンテンツがあったとして、あるユーザが2012年3月の時点で継承した素材を作っていたらどうなるのかっていうと、継承した時点を優先にしたかった。


ということで、システム側としても最新の素材だけ管理してればいいって話じゃなくて、2012年4月以前と2012年4月以後で分けて管理しないといけない。
この時期ごとのデータをリビジョンとして、2012年4月時点のリビジョンが1、2012年4月以後はリビジョン2とすると、継承した素材がリビジョン1を基にした素材であればライセンス違反ではない、継承した素材がリビジョン2を基にした素材であればライセンス違反ということになる。


てことで一応リビジョン関連の機能も作った。
バージョン管理システム作りたいわけじゃないので、リビジョンごとのデータ差異を探す機能とかは作りこんでないけどね。

使い方

まず http://jgforce.com に行って、画面左の見にくい場所にあるメニューを注意深くクリックしてログインする。
Twitter認証しろとかいうのでしてあげて、ユーザ名決めてユーザ作る。


ログイン後は左の方に「素材管理」ってメニューがあるので、クリックするとこんな画面になる。


まあ最初は素材欄は空だ。自分の素材をアップしたければ、エクスプローラとかから適当にD&Dしてアップする。
でも今回の機能はそこが肝じゃないので、「公開素材」って書かれてるタブをクリックする。こんな感じの画面になる。


いくつかある公開素材の素材横についてる「利用」ってボタンを押す。
するとしばらくして素材が青く光って「利用済」って情報が出ると思うので、それが出たらもっかい「自分用素材」のタブをクリックすると、さっきの素材が自分の素材として"fork"されてる。


その素材のライセンスがSA系、いわゆる改変自由だけどライセンス変えちゃ駄目なやつだとライセンス変更して公開は出来ないとか、改変禁止だと改変出来ないとか、そういう感じ。
素材の変更については、自分用素材のタブから各素材の横についてる「修正」ってボタンを押す。公開とかもここで出来る。
他にもいろいろ機能はあるけどライセンス設定以外は全部蛇足みたいなもんだ。


ゲームもforkは出来て、ゲームはなんか適当にゲーム選択して遊ぶ画面を出すと、画面下の方に改変可能なゲームだったらこういうボタンが出てる。


ボタンクリックするとforkする。
あとはまあ素材と大体同じ流れ。
素材は改変不可であっても公開素材であればforkできるけど、ゲームは改変不可だとそもそもfork出来ないとか、多少差異はある。


ゲームのライセンスと素材のライセンスがかちあってるケースとかはありえるので、その辺どうしようかと思ったけど、少なくとも"fork"に限ってはゲームと素材を切り離せると思ったのでチェックしてない。


ただ商用作品利用不可な素材を利用しているゲームをクリエイティブ・コモンズで公開するとかは、本当は不可能。クリエイティブ・コモンズはデッドコピーの商用利用可なので、ゲームの素材が商用利用不可なのにゲームが商用利用される可能性を排除しきれない。
てことで欲を言えば、商用作品利用不可な素材を使ってるゲームがCC-BYで公開されるのは防ごう、とかしたいんだけど、ゲームに使われている素材をすべてチェックするのがちょっと難しかったので今は出来てない。

注意点

主にセキュリティ的な問題がいくつか。

  • 公開してない素材も別ユーザが使えてしまう
  • 改変禁止なゲームもパス構成がわかってるユーザなら普通にデータを盗める
  • 別ユーザの素材を使ってるゲームもそのまま公開できちゃう
  • 継承元素材を削除したりすると結構システム的にぶっ壊れる

他いろいろ。
これ以外に重要なのは「二つ以上の素材を継承して一つの素材を作ったらどうなる」とかかな。考えはあるんだけど。
セキュリティ関係は、サーバインフラがレンタルサーバだとちょい限界があるのと、一部ちょっと手抜き。

今後の予定

今後も一人でやっていくならって話だけど、こんなのを予定。

再開機能

リプレーと同じ要領で、リプレーを高速再生させてリプレーデータが無くなった段階で人の手にスイッチすれば、ゲームの再開が可能。
これはやり方わかりきってるし、実装も難しいことじゃないんだけど、再生用とプレー用でクラスを分けちゃった設計ミスの関係で腰が重くてまだやってない。


このゲーム再開機能のいいところは、いつブラウザ閉じてもいいってところ。
駄目なところはロードにすげぇ時間がかかるってこと。
1時間以上プレーするようなゲームの場合はこれだけだと厳しいので、これとは別にスナップショット機能が必要になる。


これに関連して、別の人のリプレーの途中から自分が再開する、ってのも面白いかなと思ってるんだけど、どうだろうね。
将棋とかには面白そう。動画再生には無い魅力になる。
これは技術的な難しさはないけど、元のリプレー作者がお怒りにならないよう機能設計注意しないとね、という感じ。


あと技術的に、コネクションレスの録画・再生システムなので、現在プレー中なのかそうでないかってのが取れない。
このため、プレーの総時間ってのもとれなくて、リプレーのシーケンスバーとかの実装もちょいと難しい。
再開機能を考えるにあたり、どこから再開するかってのが重要になるので、この辺りの仕上げも考えないといけない。

マルチタッチやアナログ入力対応

今のリプレー機構はマルチタッチに対応してないっていう、対スマフォで考えるとちょっと致命的な弱点があるので、直したい。
直したいんだけど貧乏だからデバイスがなくてテストできないんだよなぁ。これはSurfaceenchantMOONとかのタブレットPC系にも言える話。


こうやればいけんだろってイメージはあるので、作るだけなら早いんだけど。
WiiとかKinectとか入力デバイスも多様化しているので、テスト環境整えるだけでもイニシャルで100万以上は普通にかかると思うんで、個人だと正直テストきつい。悩み中。

その他やりたくないもの

要は俺がやるより他の人がやった方がいいんじゃねーのって思う機能があるんだけど、協力者いないんじゃとりあえず俺が最低限仕上げないといけないよなぁって部分はこんなところ。

  • 素材の検索とかはまだ実用レベルじゃないので修正必須
  • ローディング中とかの演出
  • サンプルゲーム増強。変なシューティングしかないしな
  • 素材やゲームの削除機能とか

これは一例で、他にも山ほどあるけどな。ランキングとかさぁ。
まあどの道Webページは全修正するつもりなんだけど。

作業分担案

このjgforce、一人で出来るとは思ってないんで誰か一緒にやろうぜ。何度も言ってるけど!
とはいえ何やんのって話があると思うので、SlideShareに逃げずに軽くまとめる。


まず今のフロントエンドは所詮モックアップなので、基本UIを全修正したい。ださいんで。
デザイン得意な人誰かやってくれ。
結構スマフォ対応が重要だと思う。製作はPCメイン、閲覧はスマフォメインってのがいい気がする。


あと売り込みする人。
前も書いたけどクリエイターはもっとお金をもらうべきだと思っているので、NAVERまとめのようにPVベースの収益配分できる形がベスト。
てことでデザイン側と協力しつつクライアントと交渉して、うまいこと広告とってきてくれ。AdSenseとかでも公平にシェアできんならそれでもいい。


サンプル素材やサンプルゲームを作る、または素材屋さん等と交渉して集めてくる人も必要。ここは最低2人くらいいないときついかも。
GL-Shooter*3のような弾幕ゲー、ぷよぷよみたいな落ち物ゲー、ローグライクの3本くらいリプレーに向いた目玉があれば十分だと思うんだ。あとの候補はホラーとか重力ゲーとかか。
RPGやアドベンチャーはリプレーが盛り上がりにくいので、初期の公式サンプルとしてはいまいちだと思われる。


俺自身はRPG系やシューティング系のツクール的なエンジンや、cocos2d-html5pixi.jsをベースにしたリプレー可能なエンジンとか書くわ。
ゲーム作ってもいいけど、俺のゲーム作成能力って多分まだいまいちだから、エンジン側のがプロジェクトには貢献出来ると思う。
Web側は正直、デザインうまい人に任せてAPIやサーバ管理は補助するぜってレベルに引っ込んだ方がいいとは思ってる。


あと別にいなくてもいいけど、お金もってるすごい人がいるなら動画配信とかも考えよう。
プレー録画とは別に動画も配信可能って形。ニコニコのゲーム実況なイメージ。
よくわからんけど、お金持ってる人はそういう金が必要で貧乏人が真っ先に除外しそうなプラスアルファ考えてくれ。あと気が向いたら俺にスマフォとかテスト環境くれ。テスト全部やるんで。


その他諸々、分野がプラットフォームであるため結構分業しやすいと思うんだけど。
別に誰かエンジン書いてくれてもいいしさぁ。ほらさぁ。


誰か一緒にやろうぜ。
やろうぜぇぇぇ!
学生さんとか法人さんとか外人さんとかでもむしろ歓迎。


気が向いた人はメールとかコメントとかTwitterとか、なんかくれ!
tsugehara@gmail.com




これで反応が無くてももう一回だけ、「再生機能」を入れた段階での再告知まではこのやり方で粘る予定。
それで駄目だったらBlog告知作戦は諦めて、おとなしく別の方法を探る。