前回のネオブログ!
お話の前提としては、前回の投稿
数学的思考力ゲームを作って賞をいただいた話
をご覧ください。
作ったゲームは以下で公開しています。
THE SUGOI NINJA
ぜひ遊んでみてくださいね♡
今回
技術的な話と、制作においてプログラマ視点で思ったことを、覚えている範囲で書き綴っていきます。
ディレクタとゲームデザインやエディタも兼任していたのですが、一応その辺は分離して書いていくつもりです。
自分用の備忘録としても、ですね。後半ほぼ愚痴ですが…w
ディレクタとゲームデザインやエディタも兼任していたのですが、一応その辺は分離して書いていくつもりです。
自分用の備忘録としても、ですね。後半ほぼ愚痴ですが…w
一応、今後このプロジェクトに参加しようかと考えている学生の参考にもなったらいいなーと。たぶん育っていくプロジェクトだと思うので。
ゲーム実装
主な要件は以下の通りでした- JavaScript + HTML5
- enchant.js推奨
- (プラットフォームとして、将来的にはタブレット対応予定)
「なるほど、enchant.jsね……マジか」
「よし、tmlib.js使おう」
という感じでライブラリはtmlib.jsを採用。
こちらについては本当に素晴らしいライブラリだったとしか言うことはありません。
ただ、CSSでいうz-indexの入れ替えが用意されていないのが困った。調べても、同じ問題に当っていた方は見かけて解決まで辿り着いていたっぽいけれど、実装自体は見つからなかったので、Qiitaあたりに書こうかなと。
あとサウンド周りがよくわからなかった、というか締切日最後の2時間くらいで実装したので、普通にWeb Audioを直接叩いてますが、きっとあとで直します。
それとタブレット対応という意味でも、ライブラリのおかげで実装時は一切気にせずクリア。そもそもモバイル向けに設計してないから少しボタンが小さいけれど、スマートフォンでも動作可能を実現できた。
ただしpointingendの挙動に不満があるので暇見てフォークぶっ刺すかissue投げるかしようかと考え中。ボタン外にドラッグしてからのクリックエンドにも反応されちゃうのが、間違って押したときのキャンセルができずにユーザビリティ悪いなぁ…という。
なんか悪いとこばかり並べてしまったけど、ほんと総じて素晴らしいライブラリです。HTML5 Canvasでなんかやりたい人には超おすすめです。たぶん今年は大学で布教しまくります。できればコミュニティに貢献できたらとも考えています。
API実装
問題はこっちです。
Twitterで相当ブチギレてた。
だいぶキてた感じの2月末から3月上旬だった。
- API通信に必要なデータをlocation.searchで取ってる
- インラインフレームで埋め込まれるゲームとAPIエンドポイントが別ドメイン
- にも関わらずAccess-Control-Allow-Originが設定されていないっぽい←???
- サンプルコードは闇実装
これ系は素人の私でも、さすがにやばいだろ…と思わせるだけの何かがあった。
締め切り前、散々中の人とメールでやりとりし、たぶんいろいろやばいよっていう話と、実装怠いからAccess-Control-Allow-Originしろっていうことを言い続けましたが、まあ大企業らしい対応をいただきました。中の人はそもそもよくわかってなかったっぽいし、請けてる開発会社もいったいどんな所なんだろうと…ある意味勉強になりましたよ。
暇な人はぜひ中身見て脆弱性でも探してください。
Global Math
ちなみに、最終的には大変不本意ながら、サンプルコードの闇実装を引用してラッパーライブラリを作りました。
https://github.com/noir-neo/neoGMapi/blob/master/js/neogm.js
今度プログラマにヒアリングを行ってくださるらしいので、たくさん意見してきたいと思います。
それとクリエイター側で自由にデータを保持できないのがブチギレ。
例えばぼくらのゲームではサブクエストを各レベル2つ用意しているから、それのクリアフラグを保持したかった。
- 勝手に使っていいプロパティが用意されてないかな?
- →ない
- ハイスコアというプロパティがあるから、これの数字を調整すればクリアフラグの保持もできるな?
- →ハイスコアとは1回のプレイの累計スコアのこと(←?????)
- →各ステージごとではない
- boolの2進数をサブクエスト2つ*15ステージで30桁→10進数(送信できるスコアは10桁までだから)に直してスコアにぶち込んでやる!!
- →送ったスコアが足されていくから数字が合わない
- ↑の計算方法で、プレイの最初に送るスコアは生、それ以降は前回との差の数字だけ送る
- →やっと解決!!
THE SUGOI NINJAのリプレイデータは、ステージ番号と、8方向の移動に数字を割り振ったらそれの配列だけで保持できるし、実現できたら分析と改善に役立てられてとてもよかったのだけど。
つまり何が言いたいかというと、闇な実装をさせる割にクリエイター側にとってメリットがない。
プレイ時間とか試行回数とかまとめたデータはいただけるらしいけれど。どうも考えのズレを感じます。
もっと言ってしまえば、プラットフォーム自体にクリエイターにとってのメリットが少ない。
今のところ利用者が多いわけでもないし、今どき自作ゲームを公開する場所なんていくらでもある。
学生を良いように使ってやろうっていう魂胆が見えるのが非常にムカつきましたね。クリエイターを舐めてるタイプですね。
まあ、見事に使われたわけですが…。別に利用権をあげたくらいで、入賞商品として少しですがギフトカードもいただいたし、許してやろう。良くも悪くも勉強になった。
まとめ
後半は散々ネガティブなことを書きましたが、コンテストに参加しての変な意味での最大のメリットは期限があるということだったと思います。必要に駆られて時間に追われてやるのはスキルアップにはとてもいいです。大人の人に向かって生意気を言うのもいい経験です。
また別の話ですが、お隣の大学と交流しながら中間発表とかに混ぜてもらった事は、とても良い経験でした。
そんなわけで、何か作りたいけど何を作ったらいいかわからない、なんて人には一つの選択肢としてはおすすめです。これはなんのコンテストでも一緒かもしれないけど。逆に言えばこれに参加することに特別なメリットってやっぱり見つけられないなぁ……
仮に後輩に「Global Mathコンテストってどうなんですか?」って聞かれたら、答えに窮するだろうなぁ……
ネタとしてはまだゲームデザインに関するところが残っているので、また暇なときに書きます。
では。