[![どんぱっぱ][2]][1]
[1]: http://globalgamejam.org/2013/%E3%81%A9%E3%82%93%E3%81%B1%E3%81%A3%E3%81%B1%EF%BC%88push-papa%EF%BC%89
[2]: /media/images/20130129.png
「Global Game Jam」という、「その場で知り合ったメンバーで 48 時間でゲームを作る」イベントにいってきました。
前から知り合いが参加していたりしてて気になってたんですが、今回初めて参加してみました。
以下、思い出しながらふりかえった記録です。どこか間違っていたり、自分が覚えてないこともあるはず。
# 初日
仕事終わってから東京工科大学の八王子キャンパスまで電車とバスで。
途中バスの中に FF のチョコボとかサボテンダー、トンベリのぬいぐるみが飾ってあって、さすが工科大!とか思った。
途中他の GGJ 参加者っぽい人とすれちがって、ひょっとして既にご飯たべにいってるんじゃ…と心配になる。
会場着が 19 時半ぐらい。ここでメンバーと合流。ちょうどご飯食べにいくところだったらしい。間に合ってよかった。
ご飯に向かいつつおおまかなあらすじを聞く。とりあえずネタ出しはしたけど、最終的な方向性はまだ固まってない段階。
ご飯を食べつつゲームの話をしたりする。GBA のナポレオン神ゲーとか。
その後帰って打ち合わせ。だいたいのゲームの内容が決まるが、とりあえずプロトタイプを動かしてみないとどうにもならん、ということでひと通り動くものを翌朝 8 時までに作ることに。この時はまあ余裕かなーとか思ってた。
この段階で決まってたのが、確かこんな感じ。
- 主人公は幼女
- 巨人が波を起こす
- ボタンを押すとジャンプできるが、波のどこにいるかでジャンプの大きさとか方向が変わる
- いろいろと取ったら効果がでるアイテムがある
波を起こすとなるとメッシュをプログラムから動的に作れないとねーみたいな話をしてて、
[ここ](http://nanmo.hateblo.jp/entry/2012/06/02/212328)とかを見ながら、でたー!すごい!となる。
その後、ust での企画発表を終えて、だいたいの役割分担。
「波の挙動」「波のメッシュ化」と「波の当たり判定」「プレイヤー制御」「敵制御」が各一人ずつ。
「企画と音素材用意」が二人と「グラフィック」が一人。
自分は当たり判定でした。
# 二日目
最初は[線分と線分の判定](http://marupeke296.com/COL_2D_No10_SegmentAndSegment.html)でいいかなーと思って昔かいたソースを持ってきたりしたんですが、
よくよく考えてみると今回波は動くので、単純に線分と線分だとどうしてもすり抜けてしまうことに気づく。
とりあえずは、主人公の足元一点との判定でいいことになっていたのと、
波は一定間隔ごとに高さ情報を持った配列になることになっていたので、
適当に補間して現在位置の波の高さをとるようにした。
ひと通り実装できて、早速組み込んでみたところ、思った通り動かない。
これは当たり前で、座標変換まわりの話がすっぽり抜けていたためでした。
[Transform.localToWorldMatrix](http://docs.unity3d.com/Documentation/ScriptReference/Transform-localToWorldMatrix.html)とかをなんとか使いつつ、バグとりつつ、やっと動いたのが朝 10 時ぐらい。結局朝 8 時に間に合わなくて、ごめんなさいでした。
その後プロトタイプを遊びつつ、昼ご飯を食べに出かける。徹夜明けの体に太陽がまぶしすぎる。
ご飯食べた帰りに、「ボタン押しでジャンプするんじゃなくて、ボタン押しで波を起こして戦う感じにしたほうがいいんじゃ」というアイデアが出て、さっそく実装される。なんかいい感じになった。
夕方になって、ここまでずっと寝てなかったので、3 時間ほど寝る。
起きたあと、とりあえず新ルールでバランス調整とかしようとするも、
ここで実は当たり判定がうまく動いてないことがわかる。
主人公がジャンプする方向を波の法線から計算しているんだけど、どうも真横にしか飛ばない。
これだと調整どころの話じゃない、ので修正にかかりっきりになる。
結局のところ、法線の計算結果に変換行列の平行移動成分まで加えてしまっていたのが問題だったようで、
とりあえず動けばいいやと係数を適当にかけて返すようにして、やっと動くようになった。
そして朝まで寝る。
# 三日目
三日目はステージ作ったり、バランス調整したり、エフェクトつけたり、バグとったりをみんなでワシワシやってた。
途中、Update()ごとのキャラの移動処理の中で、速度に Time.deltaTime かけずに位置に反映させてしまっていて、
遅い PC と速い PC とで挙動が変わってしまったりしたけど、なんとかなった。
そして完成。発表。終わった。
# 感想
とにかく、楽しかったです。
特に、めまぐるしくゲームが完成していくスピード感とか、
自分の作業がゲームに反映されることでゲームのクオリティにダイレクトに影響しているというのがわかって貢献してる感が味わえたりするところとか。
出来上がったものを見て、「これは自分一人だとどう頑張っても作れなかったな」と思いました。
個人的な作業をふりかえると、もうちょっと効率よくバグを潰せてればなぁ、というところがちょっと残念でした。
ログと画面を見ながらのデバッグは非常に効率が悪いので、単体テスト書くべきでした。
あと、他のチームメンバーがほとんど学生だったんですが、みんな情熱にあふれていて腕前もすごくて、
「すごい!熱い!」と思うと同時に、「自分も年とったなぁ」と思いました。
そんなわけで、[「どんぱっぱ」](http://globalgamejam.org/2013/%E3%81%A9%E3%82%93%E3%81%B1%E3%81%A3%E3%81%B1%EF%BC%88push-papa%EF%BC%89) よろしくお願いします。
GGJ2013にいってきました
2013-01-29