おれんじりりぃぶろぐ

きっと何者にもなれないエンジニアのブログ

Unity1週間ゲームジャム「さがす」に参加した

概要

f:id:orange_lily27:20191027210758p:plain:w300

UnityRoom主催のUnity1週間ゲームジャム(10/14~10/21)に参加したのでその備忘録的な感想です。

作ったゲームはこちらです。

unityroom.com

お題発表

まずはお題が発表されるのでゲームの企画を考えます。 今回は「さがす」がテーマだったのでそれに合った企画を考えます。 パッと思いついたのが以下でした。

  • 2Dアクション + 探索要素をつけ加える
  • 間違い探しゲーム
  • たくさんある文字の中から特定の文字、単語を見つける

時間がないことは明白なので、この中から選ぶこととしました。 マリオ的な2Dアクションを1度作って見たかったので「2Dアクション + 探索要素をつけ加える」で行くことにしました。

探索要素は暗闇の中で懐中電灯を照らして鍵を見つけるというギミックに落とし込みました。

制作

平日、あまり時間が取れないことは分かっていたので初日の祝日一日で基礎実装を組めるように頑張りました。
とはいえ、あまりに適当ではなくステージの追加などはかんたんにできたほうが良いだろうと最低限の共通部分には気を使いました。
その辺の話は別途ゲームづくりの実装の話としてまとめたいと思います。
あと、普段慣れていないWebGLのプラットフォームならではのハマりどころもあったので早めにビルドは一度しておいたほうが良いです。

おれんじりりぃ on Twitter: "この問題な気がする https://t.co/wNzsQLTapI"

おれんじりりぃ on Twitter: "これに嵌ってた、今の時点で気づいて良かった https://t.co/1N552Gj3bL #unity1week"

投稿

いざ、投稿です。ちょっとだけ遅刻しましたが無事に公開です。 unity roomへの投稿方法は管理人のnaichiさんがまとめてくださっています。

公開にしなければ途中でバイナリを上げることも可能なので一度早めに上げておくのがおすすめです。 一度、公開してもアップデートできるのである程度出来上がった段階で公開してしまうのが良さそうです。
締め切り時間は設けられていますが、遅刻もOKの仕組みです。特にペナルティもありません。
が、お互いに遊び合う評価期間がもう1週間設けられているので投稿が遅くなるほどその点は不利になってしまいます。時間を守ることを目指すのが良さそうでした。

反省

評価結果です。締切から1週間後に評価期間を経て発表されます。

f:id:orange_lily27:20191027204727p:plain:w300

どれもこれも突出する部分がなかったので、次回は1要素でも時間をかけてインパクトを出せる要素を作りたいと思います。
あと、アップロード時にアイコンの指定ができますが、これはプレイ動画のGIFが良かったです。一覧で並んだときにどんなゲームかすぐに分かるのでプレイしてもらいやすくなりそうです。

面白かったゲーム

評価期間中は、誰が自分のゲームを遊んでくれたかが分かります。
ランダムに遊ぶボタンも用意されているのでお互いのゲームを遊びやすく評価しやすい工夫がされています。

自分がプレイして面白かったと思うゲームいくつかメモしておきます。

ノベルゲームでめっちゃ時間はかかりますが面白かったです。

くだらない(いい意味で)んだけど超面白い。 ローグライクとの組み合わせも良かったです。

ねこかわいい。

今後の展開

ステージを増やすのとジャンプの気持ちよさをもう少し探求したらiOS/AndroidのStoreでも公開を目指そうと思います!

まとめ

Unity1週間ゲームジャムはとても手軽に参加できるし、お互い評価しやすいされやすい仕組みになっているのでまったく遊んでもらえないということもないです。 ゲーム趣味で作っている人ならちょっと無理にでも時間作って参加するととても楽しいイベントです!
次回も必ず参加しよう。

git mergeで特定のファイルだけを取り込む

あんまり使う場面はないかもだけど。

git merge --no-commit -Xtheirs {mergeしたいブランチ名}
git reset HEAD {mergeしたくないファイル名}
git checkout {mergeしたくないファイル名}
git commit

-Xtheirsで相手方を優先して取り込む。

参考

UnityでAndroidビルドをする方法

概要

UnityでAndroidのバイナリ(apk)を作成する手順の紹介です。

前提

  • Unity2018.4.6f1
  • Mac

前準備

NDK、SDKのインストール

Androidのil2cppビルドをするためにはNDK、SDKが必要になります。 それぞれインストールします。

Android Studio(SDK)

Android NDK

JDKについては、Android Studioに同梱されているOpenJDKを使用しています。
Android Studioは実際に起動しないと最新のBuild-toolsやSDK Platformはインストールされません。
Toolsに関しては、androidコマンドが存在している25.2以下でないとビルドに失敗する可能性があります。

Preferencesの設定

スクリーンショット 2019-10-13 0.54.02.png (143.7 kB

Unity -> PreferenceからNDK、SDKのパスを設定します。 必要なNDKのバージョンはUnityごとに変わりますがここで確認できます。

余談
ここの設定はマシンで共通になるので、異なるUnityバージョンで必要なNDKが違ってビルドしたい場合は厄介になるかもしれません。 ここにはシンボリックリンクを記載しておいて、ビルド直前にシンボリックリンクと実際のパスを切り替えるくらいしか良い手を思いつきません。

ここまでがビルドの前準備になります。

ビルド

PlayerSettingsの設定

スクリーンショット 2019-10-13 3.03.27.png (167.4 kB)

PackageNameやVersionCodeなどAPK作成に必要な設定をを行います。 Idenfication(PackageNameやVersionCodeなど) 一例 スクリーンショット 2019-10-13 2.59.41.png (13.5 kB)

Configuration(IL2CPPやアーキテクチャなど) 一例 スクリーンショット 2019-10-13 3.01.50.png (124.4 kB)

アイコンやkeystoreの設定もPlayerSettingsで行うことができます。 これらの項目はものによってはGradleプロジェクトで直接設定する方法もあります。アイコンなどは最新のUnityを使っていない場合は、Android側が要求するサイズを追従できず解像度が崩れる場合もあります。

BuildSettingsの設定

スクリーンショット 2019-10-13 0.12.33.png (165.4 kB)

Build SystemをGradleにして、Export Projectにチェックを入れます。 チェックを入れることでGradleのプロジェクトをUnityが作ってくれます。 Export Projectのチェックを外すとapkだけが直接できあがります。

Expotボタンを押します。

エクスポートが完了したらgradle projectのrootに移動します。

ls
build/          gradle.properties   local.properties    src/
build.gradle        libs/           proguard-unity.txt

gradleビルド

gradleビルドをしていきます。

gradle build
...

gradleがインストールされていない場合はMacの場合はbrewでインストールできます。

brew install gradle

余談
複数人開発でそれぞれのマシンでビルドするような場合はgradlewを用意してGradleのバージョンを統一させる方法もあります。(別途記事にしたいと思っています)

gradleビルドが完了したらapkが作成できていることを確認します。

find ./ -name '*.apk'
.//build/outputs/apk/release/app-release.apk
.//build/outputs/apk/debug/app-debug.apk

特定のブランチにあるファイルを別のブランチに移す方法

概要

Gitを使った運用でのマニアック小ネタです。 特定のブランチにしかないファイルを別のブランチに移す方法を考えていきます。

方法① コピペする

単純で分かりやすい方法です。 デスクトップなどにファイルを一時的にコピーしておいて、ブランチを移動してコピペすればファイルの移動が完了です。 しかし、ファイルが増えて来た場合、コピペの手間も増えていってしまいます。 何よりスマートな方法とは言い難いと思います。

方法② Revertコミットを利用する

では、Gitを利用した移動方法を考えてみます。 Gitにはrevertコマンドを使ってあるコミットを打ち消すコミットを作ることができます。

例えば、developブランチにしかないtest1.txtをfeature/add_test_fileというブランチに移動させてみたいと思います。

developブランチで作業

rm test1.txt
git add test1.txt
git commit -m "テストファイルを削除"

これでテストファイルを削除したコミットのハッシュ値が決まるので、revertコマンドを使って打ち消しを行います。

git revert {先ほどのtest1.txtの削除commitのhash値}

打ち消しを行ったので、test1.txtのファイルが復活します。

これでrevertコミットのハッシュ値が決まります。 ここでブランチを移動します。

git checkout feature/add_test_file

移動したら先ほどのrevertコミットをチェリーピックします。

git cherry-pick {revert commit hash}

これで、feature/add_test_fileブランチにtest1.txtを移動させることができました。

まとめ

以上、Gitコマンドを使った小ネタでした!

指定した確率でture/falseを取得する

概要

Unityでゲームを作っている時に指定した確率でtrue/falseを取得するということをやりたかったのでそのメモです。

方法

使われる側

private bool GetRandBool(int rate)
{
    int num = Random.Range(0, 100);
    if (num < rate)
    {
        return true;
    }
    return false;
}

使う側

// 50%の確率でtrueが返ってくる
rate = 50;
bool isCatchMonster = GetRandBool(rate);

Gitコマンド集

概要

自分がよく使うgitコマンドを随時追加していく予定。
gitって難しいな。

コマンド

一つ前のコミットメッセージを変更したい

git commit --amend

ブランチ間の差分を見たい(ファイル名のみ表示)

git --name-only master...target/branch

ブランチ間のfile changedの数を知りたい

git --name-only master...target/branch | wc -l

ローカルブランチを削除したい

git branch -d target/branch

ローカルブランチを強制的に削除したい

git branch -D target/branch

リモートブランチを削除したい

git push origin :target/branch

ブランチ間のハッシュとメッセージ差分をみたい

git log --no-merges --oneline master..develop

リモートのブランチを強制的に優先させる

git reset --hard origin/master

ローカルのoriginブランチが残ってしまう

git fetch --prune

gitがなんか重いな(ガベコレ)

git gc