エンジニアインターンとして2週間アカツキで就業したkeiwさんの体験記をお届けします。ゲーム開発は経験があったものの、これまで触れてこなかったUnityでの開発。課題としてミニゲームづくりに挑戦してもらいましたが、どのような学びがあったのでしょうか。今回はその様子をご紹介します。
こんにちは、2週間ほどインターン生としてお邪魔させていただきましたkeiwです。
今回、2週間で、ちょうど企画フェーズにあったバッテイングセンターのミニゲームをインターンテーマとして挑戦させて頂きました。今後、ハチナイ開発チームによる改修などを経て実際ゲームに登場するかも、とのことですが、自分が作ったものの何割が残れるか楽しみです。
この記事では、そのインターン体験記的なことを書こうと思います。(拙い文章ですが、お付き合いください^^;)
以下、目次です。
インターン開始まで
インターン開始まであと1ヶ月のとき。UnityとC#、GitHubをさわってくるように言われました。ゲーム作りはそれまで、バンバンやってきたのですが、それらはノータッチ。やってきてねと言われたリストは一応一通り試したのですが、他の用事などもあって十分にはさわれず、不安しかありませんでした。
インターン開始!
不安(と期待もあった)を胸に始まった初めてのインターンでしたが、自分が配属されたチームは会社っぽいというよりは雰囲気は高校の部活という感じで、技術的な不安以外はだいぶ緩和されました。ほとんどの読者には伝わらないと思いますが、とくにアイスブレイク担当を指名する愉快な茶番は面白かったし、そのアイスブレイクの内容自体もけっこう面白かったです。スターウォーズ昼食会などもよかったです。
壁、壁、壁!
初めての事ばかりで、当然壁にもぶち当たりました。
まずは、技術的な問題。雰囲気はよかったものの、やはり技術的な不安は的中してしまいました。1か月前からある程度さわってきたとはいえ、ほとんど初心者のUnityやGitHub。けっこう苦戦しました。何よりもMacPCには準備期間もなく、最後まで慣れなかったですね。(普段使っているWindowsやUbuntuもデキるわけではないのですが^^;)
また、今まで個人で何本かゲームを作ってはいたのですが、企画もイラストもコードも全て一人でやってきて、ゲームの内部的なところを人にみてもらうのは初めて。特にプログラムは1か月後の自分が再び編集し始められる程度を目安に書いていたので、人に読んでもらうことを前提とした書き方はなかなか難しかったし、恥ずかしかったです。ただ、細かく丁寧にコメントをしてもらえ、恥ずかしさによる抵抗感はすぐに消えました。
成果報告(一応メイン)
先ほど述べた通り2週間でミニゲームをつくることになりました。 ボールが飛んでくる。タイミングよく打つ。飛距離がスコアになる。というバッティングセンターを模したシンプルなゲームをつくりました。以下にゲームの使用を簡単に説明し、できたゲームのスクショにコメントを添える形で成果報告とさせてもらいます。
簡単な仕様
初めて見た現場の仕様書。ちょっと感動しました。
かなり簡単に書くと、
1:画面内にいるバッターのストライクゾーンめがけてボールが飛んでくる
2:それを画面をスワイプすることで打ち返す
3:スワイプのタイミングと位置に応じて飛距離(スコア)が決まる
というもの。これを10球1セットで遊びます。イメージ図もあり、非常にわかりやすく、また作る前からワクワクしてました。
簡単なフロー
下図のように状態遷移させることで実現させました。
・「初期化1」
10球ごとに初期化が必要なものの初期化
・「初期化2」
1球ごとの初期化
・「準備OK?」
ボールがいきなり投げられるのを防止。タップで「メイン」へ
・「メイン」
高スコア目指してバッティング!
スコア計算はスワイプ終了直後にされる
・「ヒット」
バッティング成功したら、キャラのカットインが入り、
スコアがカウントアップするシーンが入る
・「空振り」
バッティング失敗。タップで「初期化2」に戻り、もう一度トライ!
・「結果」
今回のスコアを表示。
・「最終結果」
今回で最高スコアと今までの最高スコアを表示。
プレイ画面
スコア計算
スコア計算に使う主な要素は3つで、その要素を掛け合わせることでスコアを決定しました。
・スワイプで指を離すタイミング
・スワイプで指を離す位置
・スワイプにかける時間
工夫・苦労した点
工夫・苦労した点はやはりスワイプの判定です。きちんとスワイプしたかどうかの判断は4つのチェックポイントを設け、順に通過させた場合のみ、きちんとバッティングしたと判断するようにしました。通過したチェックポイントは色を濃くするようにし、次回へのフィードバックができるように工夫してあります。
他にも指を離した位置に白い十字マーカーを置くことでも、失敗しても「次こそは」と思えるようにしてあります。
また、タイミングの判定が悪ければ、面白くならないどころか、理不尽さにイライラしてしまうだけので、タイミングの判定にも工夫をしました。スワイプを終了すべき正しいタイミングを把握するために、発射されたボールの位置を把握してストライクゾーンをいつ通過したのかを把握するのではなく、ボールがストライクゾーンに到達するまでの時間を変数でおき、その変数に応じてボールを動かす感じ(変数が0の時がストライクゾーン通過中)で、正確なスワイプを終了すべきタイミングを得ました。
成果報告は以上です。
慣れないツールで、2週間は短かった。やり足りない部分もありますが、自分自身ワクワクしながらでき、先日の簡単なお披露目会では楽しそうにやってもらえたので、おおよそ満足。
反省・その他
初めての場所で初めての事ばかりで緊張しまくりの状態。集中したらちょっと周りが見えなくなる性格もあいまって、雑談とかはあまりできなかった。ちょっともったいなかったなぁ。
今後、同じようなインターンを受ける場合、ただ絵を画面に表示させるだけなどの何もしない状態でも実機で試すまでの一連の流れを3日目くらいまでにやるべきだったかなぁと。
色々とギリギリだった今回のインターン、デザイナーさんに絵素材をお願いする機会もあったのですが、背景絵を翌日にもらえないかと無茶な依頼もしました。でも、翌日にはハイクオリティの絵素材が! 感謝するとともになんか感動してしまいました。
最後に
サポートしてくれたメンターさんをはじめとする野球チームの皆さんや、人事・総務の皆さん、非常に濃密な2週間をありがとうございました。
初めてのインターンがここでよかったです!