2014年12月31日水曜日

GetComponentsInChildren経由で子のGameObjectをListで取得

GetComponentsInChildrenはTransformの配列で返してくるので、LinqでGameObjectの参照を拾いつつListにする。
何回も使う人は拡張メソッドにするといいかも?

List<GameObject> objects = GetComponentsInChildren<Transform>()
                            .Select(trs => trs.gameObject)
                            .ToList();

Linq習い中なのでSelectがよくわからず、最初はTransform[]で取った後ForEachでListにいちいちAddするとかいうスーパーバカな方法で無理やりやっていました。
これですっきり。

MonoBehaviourを継承しているクラスなら、こんなことせんでも

List<MyClass> myClassList = GetComponentsInChildren<MyClass>().ToList();

でOK。

2014年12月10日水曜日

PS Vita 「Cardboard Cat EP」 Ver 1.04配信

PS Vita 「Cardboard Cat EP」
先ほど最新バージョンのVer 1.04が配信されました。
多数の修正点を盛り込んでおります。詳細はこちら。



タッチ精度が良くなった!リトライが早くなった!誤タッチ誘発UIが無くなった!

あたりが重要ポイントです。
すでにお買い上げの方も、更新をお願いいたします。



(↑PS Vitaブラウザから踏む用リンク、PCからは見えません)

VitaでPS Storeを起動して、右上の「PlayStation®Mobile」ボタン→ジャンル「アクション」でたどりつけます。

PCからも見えるストア情報はこちら(直接購入はできません...)

ちなみ、新しいPVを作りました。




今回の修正パッチは遊んでいただいた色々な方の意見を盛り込んで作っています。

もし、お気づきの点があればコメントくださいませ~。

2014年12月1日月曜日

PS Vita 「Cardboard Cat EP」 パッチ情報

PS Vita専用タイトル「CardBoard Cat EP」好評発売中!
デジゲー博展示の折、いろいろなメディアに取り上げていただき、大変うれしく思っております。








(↑PS Vitaブラウザから踏む用リンク、PCからは見えません)

VitaでPS Storeを起動して、右上の「PlayStation®Mobile」ボタンからどうぞ。今なら新着からたどれます。
PCからも見えるストア情報はこちら(直接購入はできません)

さて先日、次バージョンとして「Ver 1.04」を申請しました。審査に問題がなければ2週間のうちにアップデート可能になる見通しです。
いろいろ修正点はありますが、一番大きいフィーチャーは「背面タッチパネルの検出仕様を変更」したことです。

これまでは、指一本タップにしか反応せず、ほかの指が触れている状態では反応しませんでした。

Unity for Vitaの機能的にはマルチタッチが検出できるようになっているのですが、 このゲームの場合は
「全部の指で同時押しして、しらみつぶしに罠を探す」をされてしまうと、難易度に影響が出るので制限していました。

ただ、Vita本体を片手しっかりホールドしようとすると、どうしても持っているほうの指が背面タッチパネルに触れてしまうことがあるんですよね。。。

デジゲー博でもその説明に苦心したので、まずここをマストで修正しました。
今回のバージョンから「複数の指が背面に触れていてもOK」になります。ただし、連打は0.15秒間隔にしています。

その他、リトライの高速化や「表のタッチスクリーンを使う罠のレベルで死んだとき、タイトルへ戻るボタンを誤爆してしまう」という状態を回避するため、
確認メニューを出すようにしています。

リリースノートっぽく書いた修正点は以下のとおり。

Ver1.04 アップデート内容
 ・部屋の移動時、まれにクラッシュが発生していた問題を修正しました。
 ・背面タッチパネルにおいて、他の指が触れていてもタッチ検出ができるように修正しました。
 ・死亡→リトライのロードを高速化しました。
 ・Titleに戻るボタンをタップした際、確認メニューが出るようにしました。
 ・トゲ罠の当たり判定が大きすぎる問題を修正しました。 ・起動時ロゴをボタンでスキップできるようにしました。
 ・一部の部屋で見えない壁が存在していた問題を修正しました。
 ・一部BGM演出が間違っていた箇所を修正しました。
 ・ゲームスタート時に意図しないタイミングでタッチパネルが反応していた問題を修正しました。
 ・シナリオメッセージのCloseボタンのデザインを修正しました。(○にした)
 ・ゲーム進行のセーブ中にその旨のメッセージが出るようにしました。
 ・部屋移動時に背面タップをすると、前の部屋と一瞬だけ入れ替わる不具合を修正しました。
 ・ボタン操作可能な個所でその旨を説明を追加しました。
 ・「スタートボタンでポーズする」のチュートリアルテキストを追加。


ちなみに現在の「Ver 1.02」から1つ飛んでいるのは、デジゲー博展示版が1.03だったからです。

今回は修正パッチなので、ゲーム内容は変わっていません。
次のアップデートにおいてはバランス調整とステージギミックの追加、海外版の制作を予定しています。簡単なタイムアタックかスコアアタックも入れたいなと。

また、今回の経験についてLTします。 

12/18(水) 『Unity お・と・な のLT大会2』

にて、Unity for PSMを使った開発についてLTする予定です。
よろしくどうぞ!

2014年11月16日日曜日

PS Vita専用タイトル「CardBoard Cat EP」リリース!


 

まずはともあれ、動画をご覧ください。※音はありません



PS Vita向け即死系トラップダウジングアドベンチャー「CardBoard Cat EP」
PlayStation Store内「PlayStation®Mobile」にて 154円にて販売開始です。



(↑PS Vitaブラウザから踏む用リンク、PCからは見えません)

VitaでPS Storeを起動して、右上の「PlayStation®Mobile」ボタン→ジャンル「アクション」でたどりつけます。

PCからも見えるストア情報はこちら(直接購入はできません...)

~せつめい~

段ボールでつくられた不思議なネコを操作して、
トラップだらけの模型屋敷から脱出しよう。

タッチスクリーン&背面タッチパッドを駆使して、トラップをかいくぐれ!

プレイ時間は2時間程度のボリュームです。



スクリーンショット

















なお、本日となりますが11/16(日)「デジゲー博 2014」にて本タイトルのデモ版を展示します。
ブース番号D-17b。秋葉原UDX2階です。(イベントは終了しました。)

2014年10月19日日曜日

Unity + Sublime Text2で、コンソールに表示されたログやエラーから当該行にジャンプする

超当たり前かもしれませんが、設定していなかったのでできないものかと。

軽くて高機能でかっこいいエディタSublime Text 2。
UnityからはEdit→Preference→External Toolsで簡単に連携できます。

しかし、それだけだとコンソールに表示したログや、エラーをクリックしてソースに飛んだとき
MonoDevelopのようにエラーを出している部分にはジャンプしてくれません。

そういうもんだと思い込んではや1年。「できる」ということに今日気が付きました。。。
もしかしたら、もしかしたら同じところにはまっている人がいるかもしれないのでメモ。





























同External Toolsにて、External Script Editor Argsに"$(File)":$(Line)と入れます。おわり。

参考: Using Sublime Text as a script editor

知らずにスクロールコロコロしていたので、ウン十時間無駄してきたような。。。(泣)

これできたら便利だな、って思ったことは些細なことでもググってみようと思いました。
誰かしらチャレンジしている可能性があるので。

2014年10月18日土曜日

AssetPostprocessorで生成したScriptableObjectの中身がPlayで消える問題の解決

よくわからず使っていたのが間違い。
単純に 呼ぶべき関数を呼んでなかったってだけです。

AssetPostprocessorクラスを使って、txtファイルをScriptableObjectに変換してシナリオテキストの保存に使っています。
(TextAssetで読むのもありかもしれないがSystem.IOが使えない場合があるのでこうしている)

で、OnPostprocessAllAssets()でインポートor変更されたテキストファイルに対して、
AssetDatabase.CreateAssetでScriptableObjectを生成して。。とやっていたのですが、エディター上で「Play」押すたびに中身が消える現象が発生。


















生成した直後。ScenarioDataはtxtデータをシンプルにstringのリストに格納するだけのリスト。

この状態でPlayを押すと

















ウウオアアアーー!


.assetファイルが入っているフォルダを見に行くとタイムスタンプが更新されてない。
すなわちエディタ上で入ったように見えたデータが保存されていないってことですね。

開発環境がWindows8.1なので、OS側の管理者権限問題か?と思ってたら違いました。

結論は、「AssetDatabase.SaveAssets();」だけじゃ保存してくれないのよというわけでした。

以下、手順メモ。


ちゃんと「ここからここまでが編集、あとUnityにもデータ更新があったことを伝える」
をやらないとだめらしい。

生半可にこったことやろうとするとこういうのにハマりますね。。。

2014年9月4日木曜日

[Unity for PSM]Application.Quitが使えなくなってるっぽい(調査中)

表題の通り。
http://forum.unity3d.com/threads/no-longer-possible-to-call-application-quit.252802/

Unity for PSMのクローズドベータでは、Application.Quitをキー同時押しとかで呼んでDev Assistantの一覧に戻っていたんですが、正式版から禁止されたようです。
TRC違反になるからだとか。

 とすると、いちいちDev Assistantを終了して再起動、ってやらないといけないか。ちょっとめんどい。

調査中です。

2014年8月12日火曜日

[Unity]訂正済み:オブジェクトをフェードまたは点滅させながら出現・消滅させるスクリプト

今作っているゲーム用のアイテム出現・消滅の演出スクリプト、便利げなので切り出して公開しました。(主に自分用)

[重要]バカみたいなミスでバグっていまして、修正しました。私はこれで一日つぶしました。ふぁっく!!
(関数SwitchRenderersEnableにて、Rendererの配列をforeachでまわしてenabled切り替える処理のところ、オブジェクト直下のRendererを参照していてNullを起こしていた。)
大変失礼いたしました。


デモはコチラ


スクリプトをオブジェクトに貼付けて、インスペクター上でエフェクトタイプ(とりあえずフェードとフラッシュ(点滅)の二種)や演出時間等を設定。
あとは外からOnAppear()、OnDisApper()を呼べばOK。
コールバック関数も引数として渡せるよ。











フェードイン・アウトさせるためには、対象のMaterialにTransparent系のシェーダーが必須。
悩みとしては、AppearEffectとかいう名前にしたのでいわゆるパーティクルエフェクトと混同しがち。
なにかもっと良い命名ありませんか〜。

2014年6月16日月曜日

Resources.LoadAllを使ってProject内フォルダの複数ファイルを一気にロードする

Unityで、Resources内の指定パス内のフォルダから複数ファイルを一括で拾ってくる処理。

結論、Resources.LoadAllを使えばサクッとできるのですが、こやつがObject[]のArrayで結果を返してくるので、List型にcastとかやらにゃならん。

たとえばAudioClipを一括ロードする方法がこちら

filePathにはResources以下を書けばOK。
せっかくType ofで種類を指定しているんだから、せめて戻り値AudioClip[]にならんかいな。

2014年5月26日月曜日

TGS2014インディーゲームコーナー募集中 (5/30迄)

TGS2014 インディーゲームコーナーの募集要項が来ていたので、大事そうなところを抜粋。

!!!!申し込み5/30までです!!!!

■ブースのサイズと価格

間口1m×奥行き1m

    ビジネスデイ + 一般公開日
    4日間出展1小間 9万2500円

    一般公開日
    2日間出展1小間 3万円

http://expo.nikkeibp.co.jp/tgs/2014/exhibition/exhibit/area.html#AreaIndiegame

んヒィ~(;∀; )

去年は
一般公開日のいずれか1日間=21,000円
一般公開日2日間=31,500円
ビジネスデイ+一般公開日の4日間=99,750円



だったのです。一番下プランがなくなってしまったもよう

出展できる団体資格
 ・出展しようとする団体の年間売上について
        法人:5000万円もしくは50万USドル程度以下であること
        個人:1000万円もしくは10万USドル程度以下であること

・出展しようとする団体が法人の場合、資本的に独立していること
 (例えば、大手ゲーム会社の資本が入っていないこと)

出展できるもの
・完全オリジナルなゲーム(二次創作コンテンツは許諾の有無にかかわらず出展できません)


法人・個人両方OKだそうです。ただ、大手ゲーム会社の定義が入っていないので、ここはTGSに独自出展しているゲーム会社、という解釈ができそう。

逆に、昨年に引き続き二次創作NGで、これは原作者からOKがあってもダメとのこと。



http://expo.nikkeibp.co.jp/tgs/2014/exhibition/exhibit/indie_games.html

2014年5月22日木曜日

Audio Clipの圧縮設定を一括で変更するエディタ拡張

作ったのではなく、発見したので共有。

Changing import settings for multiple audio files 

Unityちゃんのボイスが343個追加されたぜ!アプリに突っ込むぜ!ってときにcompression設定を一つ一つ変更するのは非人道的作業なので、インポート時に一括設定しようかな?
と思っていたら、もっと便利なスクリプトがありました。





















こんなふうにビットレートも一括設定。ちょう便利。

2014年5月14日水曜日

PSM SDK2.0とUnity for PSMのおはなし。

先日、PSM SDK 2.0が告知されました。


PSM SDK 2.0を2014年夏頃リリース予定!




私が最近毎晩触っているUnity for PSMは現在パブリックプレビューで、夏頃に審査に出せるバージョンが出るそうですが、それに合わせて従来のPSM Studioを使うPSM SDKのほうも2.0に大幅バージョンアップするそうです。

驚いたのは、PSM 2.0系が「PlayStation Certifiedデバイス(XperiaなどAndroid端末)」に対応しなくなるる事。PS VitaおよびPS Vita TVのみが動作対象機器となります。
PSM 1.2系は存命し、Certifiedデバイス向けには引き続き使用出来る模様です。


Unity for PSM と PSM SDK の位置付け


Certifiedが対象外になってしまった事と引き換えに、"利用可能メモリの増加・圧縮テクスチャのサポート"が入るという事で、苦渋の選択であったのかな..と思います。

すでにPSM 1系でコンテンツを販売している人に取っては、「異なるSDKを使って同じタイトルをアップデートすることはできません」が大変そうです。(すなわち、現在販売中のゲームは新規にPS  Vita TV対応出来ないということ?)

別タイトル扱いとしても、同名タイトルを買っている人は2.0系版を無償で再ダウンロード出来るようになるとか、そういう手段があるといいなぁ。。。など思っております。

↑上記について、PSM DevSupport(SCE公式)さんからコメントをいただいたので追記します。

ご意見ありがとうございます。
PS Vita TV対応についてですが、PSM SDK 1.2をご利用されている方に対しても別途更新版のPublishing Utilityのリリースをしておりまして、
PSM SDk1.2で開発されたコンテンツに関してもPS Vita TVで販売できるようにする予定です。
https://twitter.com/PSMDevSupport/status/473795217401720834
https://ja-support.psm.playstation.net/app/answers/detail/a_id/267

つまり、現行PSM1.2でタイトルをリリースしている人は、そのままPS Vita TV対応の更新が出来るという事です。


以前から「PS Vitaのみ向けにタイトルを出せないか」という声は大きかったので、Android対応で二の足を踏んでしまっていた方は一気に参入しそうです。
なんにせよSDKのメジャーバージョンアップはすごくワクワクしますね!

ちなみに、Unity for PSMは現在アプリ容量上限についてアンケートを取っているようですので、ぜひ皆様ご意見をお送りいただければと思います。

個人的には512MBあれば十分なサイズのゲームを作るつもりですが、もっと気合の入ったゲームを作っている皆様は、やはりiOSとマルチするなら2GB無いと、と思う方が多いと思います。

実際、商用のiOSアプリでは2GBで容量が足らず、泣く泣くサーバーを立てて追加データダウンロードで何とかしているアプリもちらほら出てきました(基本無料以外で)。(iOSは次のXcodeとかでさらに容量上限は上がるのではないでしょうか?)

また、Unityの場合各種データ(モデルデータ、テクスチャデータ、サウンドデータ)がUnityに依存するので、あまり人力で削れない雰囲気がします。

テクスチャデータはOptopix噛ませれば減らせそうですが、サウンドデータは生wavが中心になりそうですから苦しいです。(手前みそ発言)

正直Compressed設定で鳴らしまくるとどうなるかはテストしていないのですが、、、あっテストしよう。そうしよう。

2014年5月7日水曜日

iOS・Androidゲームアプリ「ThroughSatl」配信開始のおしらせと、開発後記。


ThroughSatl
Throw The Warped Code Out
Android版 
 


iOS版



人生初のアプリをリリースした。

iTunes Connectって審査に二週間ぐらいかかると聞いていたので、4/29に提出してから5/5にもう出ると思わなかった。
しかも途中で「メタデータが英語と日本語で食い違ってるよ!」って一回怒られたし。連休のうちに終わるとは。

プログラムのプの字も分からん、素人でしたがやっとスタートラインに立てた感じ。達成感ありあり。

■目指したこと
・いいかげんアプリを出す
 Unity+C#の勉強し始めてそろそろ二年経つので、とにかく形にしたかった。

・成果物を捨てることを恐れない
 このアプリ作る前にやってた見下ろし視点のアクションゲームはシステム的に破綻した。
 最後までやり遂げる力を養うために随分苦しんだけど、結局全捨てた。いまのところは良かったと思っている。

・とにかくシンプルに
 このゲームは基本的にフラッピーバードとスーパーヘキサゴンのコピー。
 (スーパーヘキサゴンとの類似性は人から指摘されて気がついた)
 極力、ゲームシステムで悩まないことを目指した。
 結局悩んだところもあったけど、前作ってたアクションゲームよりしんどくなかった。

・無料アプリがやってる一通りのことを実装する
 Admob、GameCenter、Twitter投稿機能の実装。

・iTunesConnect、Google Playのお作法を身を持って知る
 複雑怪奇なCertificationや、アイコンとスクリーンショットの作成、Xcodeからのバイナリ生成と申請など、
 アプリリリースで最低限やらなきゃいけないことを経験する。
 Androidは逆に簡単すぎて拍子抜けした。皆Google Playにはバシバシapk送りつけよう!遠慮はいらねえぜ。

・Unityでゲームスタートからエンドまで一通りの流れを作る
 かなり平凡な話だけど、Unityもといゲーム作りはメインのシステムを作るところは楽しい。
 でもそれ以外のメニュー作りとか、内部の状態遷移とか、オブジェクトの生成数を管理するだとかか実は地味にしんどい。

・アプリ開発、ゲーム開発の一端を経験する
 開発とリリースの最初から最後までを一人でやってみたかった。
 本業がゲーム開発用ミドルウェアの営業職なので、気分だけでも「作る人」の立場に触れる。これは今後も続ける。
 社会人になってから勉強を始めたので、プロには到底追いつかないというか、追うつもりは全くない。

■伝えたいこと
・どアホでも2年弱ぐらい我慢して勉強すればアプリ出せる
 ちまたには「一週間でゲームを云個作った」とか「新しい開発環境のなにがしでアプリ作った」とかの開発してみた系のブログ記事があふれているけど、そういうのは基本的にプログラマーであったり、情報系の学生であったり、技術系の地頭がある人の経験談が多い
それ以前の段階のまっさらな人はまねしてもつまづく。

 私も壁にぶつかりまくったが、黙ってもくもく手を動かすだけで、技術なし・センスなしの普通の人でも、不格好だけどこのくらいの規模のアプリが出せるようになるもんだ、ってことは今回で示せたかと思う。
 もっと集中すれば1年でいける。でもいずれにしろ、最低1年はかかると思う。
 今はUnityにおんぶにだっこなので、本来の意味からはエセだけど。Xcode直だったら3倍時間がかかるだろうな...

 昨今はアイドルがゲーム作ったり、主婦がOculus触ったりでデジタルインタラクティブコンテンツが誰でも作れるようになってきた。本物の民主化ももうすぐ。訓練されていないただの社会人でもアプリ作れるようになりますよー。時間さえ突っ込めば。
 ただ、面白い者を作れるかどうかは時間と関係ないのでセンスがぽんこつだとだめ。磨かないと。
 
 なので、手を動かそう。技術書の買いあさりは適度でやめよう。勉強会の数をしぼろう。しっかりひきこもって、黙々と手を動かそうとあらためて思った。

〜おわり〜









 

2014年4月29日火曜日

iTunes Connectでアプリの申請出すときにIDFAのオプションが出ない問題


iOSアプリ申請でハマりかけたのでメモ。

申請時の"Advertising Identifier"でアプリ内広告を使っているフレームワークがアプリに含まれる場合、

Does this app use the Advertising Identifier (IDFA)?

にYesチェックするんですが、その下に出るはずの設問が出なくて、Saveしようとしても

You must select how this app uses the Advertising Identifier (IDFA).

って怒られて進めない問題。ブラウザのAdblockが原因でした。。。一時停止してから再アクセスして下さい。

Safari+Adblock Plusは使ってる人が多そうなので、メモでした。
itunesconnect

2014年2月11日火曜日

Unity でライブコーディングを実現するアセットLivity

 

ライブコーディングといってもイベントなどで開発するあれではなくて。
今回試した「Livity」は、Unityエンジン上で直接コード編集ができて、しかも「オン・ザ・フライ」で変更が反映されるエディタ拡張アセット。

Livity
https://www.assetstore.unity3d.com/#/content/11281

ゲームを実行させながらいろいろコードに手が入れられる謎技術を搭載。
C#,UnityScript,Booと言語ごとにも販売しているけど、全部入りパックが割引だったので買ってみた。

使い方は簡単。
まずはアセット導入後、スクリプトを開こうとするといきなりLivityの機能でエディタ内に編集画面が出る。

で、オンザフライしたいスクリプトにusingディレクティブ Livity.Features.LiveCodingを追加し、
操作体調のメソッドの上で[Live]を宣言する。これで準備完了。(C#の場合。)

WS000004

オブジェクトを回転させるシンプルなスクリプトで試してみた。

この状態で実行ボタンを押すとY軸で回転するが、Livity内で数値を書き換えると即時反映される。なかなかに楽しい。
いちいちpublicプロパティにしてインスペクタで弄っていた数値まわりとかがすっきりするし、
なにより修正→また再生開始、の繰り返しで起きる時間ロスがまるっとなくなる。すばらしい。

たまにConsoleでエラー吐いたり、スクリプトの反映が不安定だったりと謎挙動が少し。
Livity内のコードとインスペクタで表示したコードが違っている場合は、インスペクタ側の歯車ボタンから
「Reset」を選んでやると最新に更新される。うまく動かない人は試してみよう。

もうひとつ強力なのがCodeWatches。Livity内で指定した変数の中身をリアルタイムで表示してくれる機能。
いちいち一時停止してログを確認しなくても、ぱっと見で正しい値が入っているかわかる。

スクリプトにusingディレクティブ Livity.Features.CodeWatchesを追加し、
Watch.Expression()の引数に監視したい変数を入れとくだけ。すると⇒の先に中身が表示される。

WS000005

今回の例はUpdateで足しこんでいるので高速で表示が変わっているが、これ単純に見やすい。
複数の変数を監視したいときなどはかなり強力だろうと思う。

Livity上での編集もそこそこ快適。補完もしっかり効く。
ただいまのところ、Ctrl+Sでセーブできなかったり、Ctrl+Zが効かなかったり妙な癖あり。(設定で変えられる?)
Livityですべてやるというよりは、スポット的な調整で使うといいのかもしれない。