Beta期間が終わって、
Unity Collaborate の容量に制限が出来たみたいです。
容量に空きができないとCloudBuildは動作しないみたいです。
Personal(無料)ユーザーは1GBです。
Personalユーザーで今後も多めの容量を使いたい場合は、
月額 $9 のUnity Teamsに入ると利用できます。
Plus/Proユーザーの場合は無料で使えるようです(2017/11/22)現在
Beta期間が終わって、
Unity Collaborate の容量に制限が出来たみたいです。
容量に空きができないとCloudBuildは動作しないみたいです。
Personal(無料)ユーザーは1GBです。
Personalユーザーで今後も多めの容量を使いたい場合は、
月額 $9 のUnity Teamsに入ると利用できます。
Plus/Proユーザーの場合は無料で使えるようです(2017/11/22)現在
Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
お題をもらって1週間でゲーム作るイベントです。
6回目の参加。
今回のお題は「SPACE」です。
宇宙は無限の可能性を秘めています。
#unity1week
— すし (@mamesiva64) 2017年11月17日
お題「space」でイワシシューティング作りました。
spaceキーでイワシレーザー撃てます。スコラランキングもあります。
11/19 20:00~からプレイできるはずです。https://t.co/UlXWFeGtUY pic.twitter.com/2thI78g5Dq
よくある2Dシューティングです。体力で攻撃変化するボスまで作りました。
稼ぎポイントも入れたりしました。
・イワシアセットが話題だったのでぶっこみました。
#unity1week 人気アセット「イワシ」を使いたいだけ pic.twitter.com/xi33BC1QHY
— すし (@mamesiva64) 2017年11月13日
・キャラバンみたいな2分でスコア競うの作りたかった
#unity1week 進捗。DOTweenPro便利やった。相対パスが使いこなせてないけど。 pic.twitter.com/mPQkFvL9PG
— すし (@mamesiva64) 2017年11月14日
・ DOTweenPRO利用者多かったので導入してみた。
コード書かずに単純アニメ作れるから超便利。
イワシの出現処理もDOTweenPRO。
・地味ですが、敵に弾が当たった時に白く光らせるスクリプト書きました。
Emissionをいじってるだけです。
#unity1week 本日の進捗とバグ。何作ってるのかよくわかなくなってきた... pic.twitter.com/gBbrQeXSwh
— すし (@mamesiva64) 2017年11月15日
・レーザー作成。LineRender制御
・弾幕システム作成(〇way/ばらまき/加速/ホーミング等対応)
・導入したモデルアセット達の仕様がバラバラだったので、白光スクリプトを子列挙使って汎用性高めた。
・敵の細かい制御にはDOTweenに限界を感じたので、Animationにすることを決意
ここら辺で、きちんとステージ配置するかランダムゲーにするか迷った。ステージ配置を選んでしまい大変。
敵配置制御作ったやつ。早回しやスクロール一時停止も対応。2Dシューティングはカメラが動いてしまうと弾が影響うけるのでこれで。Gizmo描画便利 pic.twitter.com/wvuk7Nk3Rn
— すし (@mamesiva64) 2017年11月21日
・敵配置ツールを作る。一応早回しやスクロール一時停止も対応。
・UnityAnimationのイベントを利用して「弾を打つタイミング」「キャラクタのアニメ変更」できるようにした。AnimationEvent便利
土日作業できないので深夜頑張った。
・今までのシステムで敵を量産。ボスだけ追加でスクリプト。
・一応完成!(適切な音楽見つからなかった以外)
キャンペーン中という事なので贅沢に使ってみました。
主人公のイワシ。今回の企画の発端です。
9種類の魚介類
クジラ
隕石群
作者様毎でマテリアルやアニメの仕組みが違うので、
白く光らせる等を行うために
汎用的にできるスクリプトを記載したりしました。
おそらく文字画像を距離情報に置き換えてるので、低用量、高速、拡大しても綺麗を実現している描画です。
論文
http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf
隕石等が動かないのが多少気になるけど、無料でのこのクオリティ。
大好きな、ピクセルアート風パーティクル
今回はテンポいい曲を利用。
随時曲を追加しているいいアセットです。現在Ver4.1.0
似たアセットでiTweenがあるのですが、こちらの方が軽いらしいです。
座標だけでなく拡大回転、色、文字を一文字づつ出すなどが手軽にできます。 パスで曲線移動もできます。
PROはそれのツールが追加されています。
今回初めて使ってみましたが作業効率が格段にあがりました。(殆どノーコーディング)
ただ、一時停止等の小回りやイベント処理はあまり得意でないので
敵の制御はUnity標準のAnimationを利用しました。
こだわりがあったので弾幕、敵配置、制御はアセットに頼らず自作。
柔軟に行けると同時に作業量多すぎて大変でした。
・見積もりが甘く、細かいところまで作りこめなかった。
・アヒルの時も感じたのですが、リアル系はあまり惹かれないらしい
・プレイヤーさんとのジェネレーションギャップやゲーム慣れ程度も想定外
・シューティングの敵配置や動きを比較的楽に量産できる程度の力を得た。
・何だかんだでシューティング一面分できた。
・イワシが輝いてると感じてくれたので嬉しい。
来年は、見た目、シンプル、爽快、セルフブランディングを考慮した方向性で行きたいです。
バズりたい^q^
結論から書くと
8bit深度しか対応してなかったのに
16bit深度のpngを読み込んでバッファオーバーフローしてました。
(iPhone8等のスクリーンショットは何故か64bitカラー)
今まで問題なく動作していたpng読み込みでエラーが発生しました。
初回例外が 0x00007FF81B0B775F (ntdll.dll) で発生しました (Test.exe 内): 0xC0000374: ヒープは壊れています。 (パラメーター: 0x00007FF81B1186B0)。
というエラー。
デバッガで見たらpng_read_image で例外発生している模様
pngファイルのビット深度が8bitでなく16bitだった。
8bitしか考慮していないコードを書いていたので
png_read_imageでバッファーオーバーフローしていました。
受け取るバッファを16bitサイズに対応すると問題なくなりました。
今回の16bitカラーの場合、
リトルエンディアンでなくビッグエンディアンなので入れ替える必要がある。
8bitカラーで受ける場合はそのまま&0xFFで取得で問題ない。
OpenCV2.4.11で
16bitpngをcv::imreadした場合は、
flags=1 の場合 CV_8U(8bitで読み込み)
flags=-1の場合 CV_16U(16bitで読み込み)
で取得できていました。
今までは24bit pngで保存されていました。
iPhone8 iOS11でスクショをとると64bit pngで保存されるようです。
iPhoneSE iOS11でスクショは、24bit pngでした。
アプリ利用者で
iPhoneのスクショを読み込んだ際、
アプリが落ちる、表示されない、色がおかしい等の現象が起こる場合、
24か32bitに変換すると動作すると思われます。
UI.Buttonでボタン押したときに実行されるイベント登録のこれ
押したときに、単純な引数1個までのメソッドなら呼び出せて便利。
自分のスクリプトでも何か行った時に、
登録しておいたものを実行するようにして汎用性持たせたい時がたまにあります。
UnityEventというクラスですぐに実装できます。
・変数追加
[SerializeField]
private UnityEngine.Events.UnityEvent OnFooEvent;
で、Inspectorに出てきました。
実行は、Invoke()です。
以下は、Updateごとに実行されます。
定期的に忘れるし調べ方もよくわからないのでメモ。
AllowDrop = True
DragEnterとDragDrop
(ドロップ許可とドロップ処理)
が必要
// ファイルドロップエンター private: System::Void MainForm_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) { if (e->Data->GetDataPresent(DataFormats::FileDrop)) { e->Effect = DragDropEffects::Copy; } } // ファイルドロップ private: System::Void MainForm_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) { auto files = static_cast<array<String^>^>(e->Data->GetData(DataFormats::FileDrop, false)); System::Windows::Forms::MessageBox::Show(this, files[0]); }
unityroomさんで毎月開催されている(次回から3ヵ月おきになるみたいです)
Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
・一週間でゲームを作るイベントです。
・月曜00時にお題が発表されます。
・日曜20時までにお題に沿ったゲームを作ります。
今回のお題はフロー(流れる)です。
こんなゲーム作りました。クリックで動画再生されます。
#unity1week で作りました。2面とか未完成部分あるけどよろしければ遊んでみてください。
— すし (@mamesiva64) 2017年8月27日
あひるちゃんレース | ゲーム投稿サイト https://t.co/EMK0wRUHvR pic.twitter.com/JUYGyArYay
なんとか5連続で参加できました。
ですが今回は、
ある程度遊べるようになっているものの
順位やクリア時間関連が未対応で時間切れになりました。
最近シェーダー触り始めていて、
Unityシェーダー少し触ってみた。みんな大好き屈折。嘘計算なので法線ちゃんとつかいたい。
— すし (@mamesiva64) 2017年8月14日
サーフェスシェーダーってあるのね。楽。もっと勉強したい pic.twitter.com/hKSAW5R5VS
なんか屈折表現とかポストエフェクトしたいなと思っていました。
流れるといえば水。
ネットを見ていて川で流れるアヒルちゃんとかいいなと思ったので作成開始。
風呂というダジャレも兼ねたいから、
無料の風呂タブを利用してみましたが狭かったり見た目の問題で断念。
ぽちゃぽちゃあひるちゃんみたいな緩いのを考えていたのですが、
アヒルを複数をNavigationで走らせてみると、
レースゲームを作ってみたいという欲求が出てきてレースゲームに決定しました
水上レースなので浮力表現をしてみました。
一定の高さ以下なら、Y方向にAddForce(水に漬かってる面積で割合)でそれっぽく浮いていたのですが、
Twetter見ていたら、
ちなみに前回使った浮力シミュレーションは以下のサイトからダウンロードしたものです。https://t.co/w3czlHrzNG #unity1week
— knegi (@knegitakeyanagi) 2017年8月23日
という情報がありこちらを利用してみました。
Yベクトルの浮力はライブラリに任せて、
XZベクトルをAddForceでゲーム用に細かい制限をかけて行いました。
(最高速度の設定、コイン取得時の最高速度上限アップ等)
・外観
コースの基本はterrainを掘り、オブジェクトをぽつぽつ置いてみました。
・敵の動き
時間がないのでNavigationを利用しました。
そのままBakeした場合、水面下で動いてしまうので
水面下-0.4あたりに板を置きました。
・敵の目標地点設定
敵は、画像の赤い範囲に触れると次のチェックポイントを目標にして進み、
チェックポイントに触れたらその次へという仕組み。
CheckPointManagerが子を列挙して、
それぞれの子の次のチェックポイントを自動設定するようにしました。
これでチェックポイントが増減しても手動でつなぎ合わせる必要がないです。
Gizmoでそれっぽい線も引きました。
・ゴール判定
ゴール地点に判定があり、
ゴール反対側に青いチェックポイントも置き、
ゴールに触れると1週というルールです。
*逆走を考えるとチェックポイントを複数置いてカウンタ管理する必要があります
・オブジェクト
速度が上がる床
速度の上限があがるコイン
ジャンプ台
を作成して、配置。
・その他
滝の裏にショートカット作った
お風呂(無料)
https://www.assetstore.unity3d.com/jp/#!/content/25255
背景(無料)
https://www.assetstore.unity3d.com/jp/#!/content/63714
アヒル(0.27$)
https://www.assetstore.unity3d.com/jp/#!/content/34781
静止画の集中線を
ランダムで回転するとそれっぽいエフェクトになりました。
・細かい所にこだわりすぎて全体を完成できなかった。
・処理が重かった。
CPUもGPUもそれなりに利用したので、MacBookAirでかくついてた。
・シェーダー書くつもりが、UnityのAssetを利用した。
・Unity Collaborate + CloudBuild で、作業しながらWebGL版をビルド
作業の手を止めずにビルドでき、休憩時に動作確認できた。
いろいろ罠にかかったけど便利でした。
*罠については別記事で書くかもしれないです。
・レースっぽいゲーム作れた。
個人的に遊んでて楽しい。知り合いも楽しんでくれた。
時間があればスマホ版目指して完成版作りたいです。
前回、
NotoSansフォントファイルの容量でかすぎるよ(アプリ容量が16MBぐらい増える)
と言ってたのですが、
フォントファイルをサブセット化
(フォントファイルから一部取り出したフォントファイルを作る)
すると軽くなるっぽいので試してみました。
参考にしたのは、以下の記事です。
手順を簡単に書くと、
武蔵システム様のサブセットフォントメーカーを利用して、
第1水準の漢字を指定してサブセット化する。
です。
対象:NotoSansCJKjp-Regular.otf
で行うと、
16MB から 0.7MBになりました。
Unityでビルドした時もアプリのファイルサイズ減りました
Unity.UI.Textで表示した結果は以下の通りです。
上から順に
・未加工(16MB)
・サブセット化(0.7MB)
・Arial(Unityのデフォルト)
です。
微妙に違うのは、
サブセットフォントメーカーに記載されてる通り、
サブセット化する際に情報が一部削除されていると思われます。たぶん。
(「綺」が変わりすぎてるのは、JIS第1水準に含まれてない為です)
フォント形式は、TrueTypeからOpenTypeになっています。
フォントファイルサイズ問題に関しては、
フォントファイルをTexture化する「TextureMeshPro」使ったら解決しそう(未確認)なのですが、
TextureMeshProに移行するのが大変、
フォントサイズ大きくてアプリ容量減らしたいと思う時は試してみるといいかも。