【開発記】マサオのジャンピングレース

1.制作ゲームについて


先週、初めてUnityで3Dのゲームを制作しました。
共同制作をしたSOrowさんのシリーズキャラクター、
マサオくんを主役としたアクションミニゲームです。
シンプルな操作で5~10分で遊べますので、
よかったらプレイしてみてください。
オンラインランキングへの登録お待ちしてます!('◇')ゞ

【DL版】 www.freem.ne.jp

【ブラウザ版】 unityroom.com

2.Unityで作ってみた感触


率直なことを言えば、なかなか苦労しました

これまでは3D座標の考え方がまるでなかったので、
最初はVector3クラス自体が「なんぞこれ」といった感じ。

また、慣れないうちはMonoBehaviourを継承した各オブジェクトが持つ
Updateメソッドが毎フレーム呼ばれるという仕様が、
組み方を間違えると逆に求めている動作の障害になったり……。
これまで使ってきたツールなら簡単にぱぱっと出来ることが、
Unityだと妙な回り道をしないとさくっと出来なかったり……。

ただ、逆にUnityであれば超簡単に出来ることも多々あり、
マルチプラットフォームである点や便利なライブラリを活用出来る点など、
Unityならではの恩恵と勝手の違いをじっくりと感じた開発でした。

3.苦労した点


1.データの管理方法

これまではツール側に標準でDB機能がついていたので、
データ管理などは特に迷うことがなかったのですが、
Unityにはそもそもそういうものが存在しない。

使い捨てだけどシーンをまたいだ情報を保存したい時に、
いちいちPlayerPrefabとか使いたくないなあとか
Staticクラスでもいけるけど視覚的に設定したいなあと思い、
調べてみたらScriptableObjectなる便利な機能があったので解決。

シングルトンとの組み合わせは非常に便利でした。

2.ピクチャの状態変更

これまで使ってきたツールであれば、
移動や透明度の変更などがコマンドで手軽に出来たのですが、
Unityではアニメーションを活用する形になります。

ただ、最初はアニメーションの作り方もよくわからなかったので、
ピクチャを透明度0から255(Unityの場合は0~1.0)に60fかけて
表示したいだけなんだけどなあ、さくっとできないかなあ……
なんて不満を持ってました。

3.セーブロード

そんなものはUnityにはなーい! 自分で作るのじゃ!

でもPlayerPrefabを使えば簡単なデータはセーブ・ロード出来るし、
今回はそれでいっか~、なんて思っていたのですが、
テスターさんがUnity経験者だったため、
ハイスコアを改ざん出来てしまうという問題を教えてくれました。

/(^o^)\ナンテコッタイ

仕方がなくJSONと暗号化を用いて
きちんとセーブデータを作成するようにしました。

PlayerPrefabに重要な情報は保存しちゃダメ、ゼッタイ。

4.画面を真っ暗にする

ひじょーに難しかった。

ライトの向きや強さだけを考えればよい訳ではなく、
skyboxの設定やオブジェクトのシェーダーにも深い関わりがあり、
調べた通りにやっても真っ暗にはならなかったり
影響を受けないオブジェクトが存在したりして、
オープニングの冒頭部分だけで無駄に時間かかってたりします。

今回はskyboxをスクリプト側で変更したり
あたかも照らされた風にオブジェクトをアクティブにしたりして
わりと強引に演出しています。

しかしオープニングはオブジェクト生成やカメラワークなど、
Unityならではの演出が出来たので作っててとても楽しかったです。
お気に入り!

4.楽だった点


1.差分管理

パッケージ出力で更新点だけを簡単に差分出力出来るので、
共同制作者間のデータ受け渡しは非常にスムーズに出来ました。

2.Prefabという概念

変更を一括適用出来るというのはやはり作業負荷を大きく減らしますね。

3.ListやLinqが使える

C#サイコー!ヽ( ´ー`)ノ

4.VisualStudioで簡単にデバッグできる

VisualStudioサイコー!ヽ( ´ー`)ノ
Microsoftの回し者ではないです

5.今後について


今回は3Dで作ったものの、今後も3Dで作るかどうかは微妙なところですね。
3Dでもっとしっかりした物を作ろうとした場合、
素材不足になるのは目に見えているので……。

また、Unityというツール自体が、足りないもの、自分で作ると大変な部分を
有料Assetにて補っていくことで個人でもクオリティの高いものを作れるツール、
という印象があるので、もしやるなら有料Assetを購入する必要があるかなと。
でないと超膨大な時間を浪費することになってしまいそう。

でもそこまでいくともうフリーゲームではないよなあという思いもあり、
どのツールでどのぐらいの規模のゲームをどこまでコストかけてやるか、
という点においてはものすごーく思案中です。

でもまあ今回は3Dで作れて楽しかったです。
モデルデータを作ってくれたSOrowさんにはいつもながら感謝です。
そしてプレイしてくださった方々にも毎度感謝です。
未プレイの方はよかったらプレイしてみてください。

それでは。

移行しました

ブログ的な内容をWordPressで管理していたんですが、
備忘録として使っていたはてなに移行しました。

理由としては、下記の通りです。
MarkDownの書きやすさ
シンタックスハイライトの充実

まあWordPressでもプラグインで同じようなことはできるんですが、
なんとなくかゆいところに手が届かない感もあり……。

ひとまず今後はこちらに備忘録やら開発日記やら書いていきます。

【Unity】.NetFrameWorkのバージョン変更

1.事象

VisualStudioにてスクリプトファイルを開いた際、
「定義済の型'system.void'は定義、またはインポートされていません」という内容にて
戻り値の型「void」がエラー扱いになっていた。
他にも多数の警告表示があり、.NetFrameWorkのバージョンが相違しているため、
参照先のバージョンが一致していない旨が一覧に表示されていた。

2.解決方法

  1. File
    f:id:ashutaru1552:20190302131841j:plain

  2. BuildSettings
    f:id:ashutaru1552:20190302131909j:plain

  3. PlayerSettings
    f:id:ashutaru1552:20190302131921j:plain

  4. OtherSettings
    f:id:ashutaru1552:20190302131934j:plain

  5. Configuration
    f:id:ashutaru1552:20190302131945j:plain

  6. Scripting RunTime VersionとApi Compability Levelの変更
    f:id:ashutaru1552:20190302131957j:plain

※Scripting RunTime Versionを変更するとUnityが再起動されます