2024.10.21
お互い疑心暗鬼になりがちな、経営企画と事業部の壁 組織に「分断」が生まれる要因と打開策
ゲームロジックからデザインまで完全オリジナルの押し相撲ゲーム「オシマル」の紹介(全1記事)
リンクをコピー
記事をブックマーク
宮城采生氏:小学生開発者の宮城采生です。よろしくお願いします。
(会場拍手)
僕は2年前から「ふうセン」「オシマル」の2つのゲームアプリを作ってきました。運良く両方とも大会で優勝しています。開発環境はMacでUnityとC#を使っています。昨年末から4ヶ月ほど「Kids Creator's Studio SEASON2」(KCS)に参加しました。
プレゼン前半はPV動画を使い「オシマル」の紹介になります。後半はスライドにてRaycastまわり、自分なりのコードルールや工夫をお話します。ではさっそくPVを見てください。
この動画はKCSで作りました。
簡単なストーリーを考え、絵コンテを作成しました。このとき初めて絵コンテについて学びました。Premiere Proはフェード、カメラムーブ、音声を付けました。Illustratorでは構図やパースを取りました。
Photoshopで絵を描きました。また、レイヤーで画像エフェクトを作りました。スマートオブジェクトでエレベーターの動きも付けました。レイヤーの前後処理で動物が箱に入るところを表現しました。このシーンはUnityのカメラアニメーションで作りました。ゲーム説明はこの動画を見てください。
このアップデートはKCSの期間中に行いました。マルチモードは対面式にしました。マッチングはお客さんがたくさんいないと見つけられないので、この方法にしました。今回はプロのPVを見てグリーンバック合成でやることにしました。緑の布は、近所で買った普通の布です。
また、KCSのメンターさんから自分を登場させたほうが良いというアドバイスがあったのもきっかけです。「オシマル」はおもしろいのでダウンロードしてください。
プレゼン後半の内容はこの2つです。
「オシマル」ではブロックの重なりや塗りこみのバグの対処に苦労しました。重なるといっても、この図のようにいろいろあります。このエピソードで未熟な小学生の頑張りを感じてもらえたらと思っています。
1作目の「ふうセン」ではバッチ処理をゲームに反映するのにOnTriggerを使っていました。僕のこのときの方法は、細長いコライダで串刺しをするので重なったオブジェクトの判定に弱いです。
Raycastは引数の理解が難しいのですが、「オシマル」ではこれを使う必要がありました。触った表面の情報がほしい場合、Raycastですべきで、最終的にはスケーリングも併用し問題を解決しました。
次はここにたどり着くまでの経緯です。プロトタイプからあったこのバグはタッチパネルの実装時に目立ちました。ゲームを固めるのを優先し終盤にやっと着手しました。
いざ調べ出すとコリジョンの設定やフィジクスレイヤーを見直しても問題なし。いろいろ考えても原因がわからず家族に相談したところ「上から見ていてもわからない」と言われました。いろいろな角度から見る姿勢が大事ですね。
UnityEditorでカメラを動かして確認をしたら、なんとコリジョンがすり抜けていたのではなくブロック生成時にY軸上に重なっていたんですね。プログラム以前の問題でしたね。想像より簡単な問題で、ちょっとズッコケました。
Raycastはよく使われる手法ですが、パッと見は難しそうなんです。すぐにこれを使えばよかったのですが、使いなれない方法は想定外の不安があり勇気が必要です。しかし、臆病になって「もっと簡単な方法を試そうかな」と考えてしまい、新しいバグを作ることになりました。
iOSだけブロックが氷のように滑ったのでXcodeのプリントで座標を確認するとブロックが少し浮いていて「PCとiOSでなぜ違うの?」と悩みましたが、もう少し考えてみるとそもそも重力が働いていないのが問題と気付きました。
実は数日前にY軸上に積みあがらないよう、生成時のPosYと物理演算のPosYをフリーズしていました。これが残っていたのがバグの原因です。
この対処が多すぎてゲームの調整がしにくいので止めました。夢中でいると迷路にハマりますね。この他にもいろいろ試して遠回りしました。時間もアイディアもなくなり、決心してRaycastを使いました。大会に間に合うには運も必要でしたね。
僕のコードルールを紹介します。
メンバ変数とローカル変数で先頭の文字を使い分けます。パッと見てわかるのが大事です。変数や関数の名前はどうしても開発中に変えたくなるので、あまり悩まないようにしています。
Unityではインスペクタが最高に便利です。秒間数十回も値が変わる変数も動いているのが見えます。そのためにはpublicとSerializeです。
この画像はステージの配置用データリストです。ファイルを使うほうがスマートですが、まずはインスペクタを利用するのが一番だと思います。
ゲームは型の種類が多いので、覚えるためや見やすさのためにも僕は型を書くようにしています。
Visual Studioのおかげでスペルミスは少ないのですが、計算順や比較演算子のミスはとりあえず動くので、見落としがちです。ですが、絡み合うと解決が難しいですね。簡単な間違いこそ見つけにくく、また、見つけるとへこみます。
VSは強力でも画面上では見つけにくい場合は紙にプリントして確認しました。
難しい関数などは、あまり間違えません。使い方の勘違いはありますが、パターンがだいたい決まっていて使いながらわかってくるので大丈夫です。
慣れてくると少し難しい処理や一気にたくさんのコードを書きたくなります。失敗しやすいので細かくエラーチェックをすべきですが、一発でうまくいくと快感です。
でも、勢いで書いたコードは全部書き直しになることも少なくありません。「恋は盲目」とシェイクスピアはそう言っています。僕のプログラムはそんな感じです。アプリ開発は超楽しいです!
ご清聴ありがとうございました!
(会場拍手)
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗