2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
ゲームロジックからデザインまで完全オリジナルの押し相撲ゲーム「オシマル」の紹介(全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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには