2015年6月20日土曜日

Blenderでポリゴンの裏を描画しないようにする手順 (メタセコからの転入者向け)

メタセコで形を作って、テクスチャアトラスやモーションをBlenderで作る、という方式をやろうとしている私です。

Blenderはmqoインポーターが付いているのはいいんですが、デフォルトだと片面ポリゴンも両面描画する仕様になってまして、建物内の部屋データとか作るときにしんどいんですね。

で、片面描画だけにする手順を見つけたのでメモします。



※注意
筆者はBlenderおよびDCCツール初心者なので、これが正解とは限りません。マサカリ歓迎。 

[追記]

ファッキンファック!


苦労してマテリアルをイジる手法で片面表示を指定ましたが、オプション一つでシーン全体の片面表示が可能であることが判明しました。

3Dビューで「N」キーを押してプロパティー一覧を出し、「シェーディング」の「裏面の非表示」を選択。


おわり。

俺より後に似たようなことに挑戦した方が、時間をドブに捨てずにすみます。本当にありがとうございました。

以下はその無駄な手順です。

まず、エディター「アウトライナー」から片面描画にしたいオブジェクトを選択。



エディター「ノードエディター」を開いて





「ノードを使用」にチェックを入れる。
※筆者はこれが分からなくて2時間ドブしました。ノードエディターなのにノードを使うがデフォでオンになってないって何やねん自己否定か。



デフォルトのノード構成はこんな感じ

「マテリアル」の丸いマークをクリックして、編集対象のマテリアルを選択(ややこしい、正確な呼び方不明)






ノードエディターの「追加」「入力」「ジオメトリ」の順に選択してジオメトリノードを追加。
同様に「追加」「コンバーター」「カラーランプ」でカラーランプノードも追加。





画面には合計4つのノードになる。
ジオメトリノードの一番下「前後」をカラーランプノードの「係数」に接続。
カラーランプノードの「カラー」を出力ノードの「アルファ」に接続。

はいこれで指定マテリアルの裏面が描画されなくなりました!!






うーんこういうのオプションでポチッと切り替わらんもんなのかのう....



参考:
ポリゴンの裏側を表示しない方法について
Blenderで裏面ポリを描画しない方法
ノードエディタのマテリアルノード

2015年6月14日日曜日

[Unity]NavMeshAgent.Stopのワンポイント ピタッと止める in Unity 5

Unity 5から、NavMeshAgent.Stop()のstopUpdatesオプションが削除されたので、どうにかしようとした。

[Unity]NavMeshAgent.Stopのワンポイント ピタッと止める
http://ttwco.blogspot.jp/2015/04/unitynavmeshagentstop.html 

デフォルトのStop()はアクセラレーションが効いて即座に止まらず少し滑ってから止まるので、
ゲームポーズとかの実装に支障がある。
そこでUnity 4まで NavMeshAgent.Stop(true) としていたのが、Unity 5で使えなくなったので代替手段を探したというお話。

結論、Stop()を呼ぶ前にvelocityの値を0にすることで解決。
 navMeshAgent = GetComponent<NavMeshAgent>();

        navMeshAgent.velocity = Vector3.zero;
        navMeshAgent.Stop();

こうね。

ここに辿り着くまでの軌跡はUnity Communityにも投稿しました。
http://forum.unity3d.com/threads/solved-how-can-i-stop-navmesh-agent-sliding-in-unity5.332233/

"NavMeshAgent.updatePosition = false".で行けるかなと思ったんですが、このオプションはNavMeshAgentを止めるわけではなく、親コンポーネントをAgentに追従させるのを辞めるという謎挙動。
シーンビュー見てるとキャラクターからNavMeshAgentだけ剥がれて動く様子が見れます。なんのために使うオプションなんだろう...

2015年4月11日土曜日

新作"Back in 1995" 発表しました

公式サイト立てて告知していたので、こっちの存在を忘れていた...

新作「Back in 1995」発表しました。




本タイトルは、初代PS風の絵作り・サウンドにこだわった"3D"アドベンチャーゲームです。

最近はインディーゲームから大企業のスマホアプリまで、さまざまな形でレトロゲーム回帰をテーマにした作品が世に出ております。
しかしながら、その多くがファミコン~スーパーファミコンの「ドット絵レトロゲーム」です。
弊スタジオではその後の時代、PlayStationやSega Saturnの質感を目指して開発しております。





今回の映像は初期開発版となりますので、今後、グラフィックもより一層「デチューン」を行い、
現在20歳後半~30代中盤の元ゲームキッズの皆さんへ、ピンポイントに響くゲーム体験をお届けいたします。

■タイトル情報
タイトル:「Back in 1995(仮)」
ジャンル:"3D"アドベンチャーゲーム
発売時期:2015年冬
プラットフォーム:未定
プレイ人数:1人
開発:Throw the warped code out
公式サイト:http://backin1995.com/

■イベント出展情報
「Tokyo Indie Fes 2015」 http://tokyoindiefest.com/ プレイアブル出展を予定しております。


■メディア掲載情報

Automaton
http://jp.automaton.am/articles/IotW/iotw-087-back-in-1955/

ファミ通.com
http://www.famitsu.com/news/201504/10076378.html

Game Spark
http://www.gamespark.jp/article/2015/04/10/56191/comment.html

窓の杜
http://www.forest.impress.co.jp/docs/serial/indiedigest/20150410_697261.html

思ったより反響が多く、驚いています。
まずは5月プレイアブルのクオリティアップ...もといクオリティダウンを頑張ります。

2015年4月3日金曜日

[Unity]NavMeshAgent.Stopのワンポイント ピタッと止める

NavMeshAgent.Stop();と普通に呼ぶと、ヌルッと慣性が働いて止まる。

ゲームのポーズなど、ピタッ、バシッと直ちに止まらせたい場合は

NavMeshAgent.Stop(stopUpdates:true);

とする。

(名前付き引数で見やすくしているので NavMeshAgent.Stop(true); でも良い)

ところがこれ、古い方のスクリプトリファレンスだと載ってるんだけど
http://docs.unity3d.com/412/Documentation/ScriptReference/NavMeshAgent.Stop.html

Unity 5以降?からのやつからは消えてる。隠しパラメータってやつ??

http://docs.unity3d.com/ScriptReference/NavMeshAgent.Stop.html

謎い。

[追記]
Unity 5 からはこのオプションが消されたので、別の手段を取る必要があります。
http://ttwco.blogspot.jp/2015/06/unitynavmeshagentstop-in-unity-5.html

2015年3月22日日曜日

3/21「UnityのためのC#勉強会」に参加してきました。

いいかげん年功序列的にUnity中級者に押し上げられてしまった身としては、C#の文法でスクリプトを書けることについて改めて見つめなおす必要があるだろう、とは常に思っていまして。そんなところに今回の勉強会でして、これは他の用事をおしても行かねば!と気合い入れて参加してきました。

日本Androidの会Unity部の皆様ありがとうございます!

資料、口頭、ライブコーディングから見て気がついたところなど色々と。
(個人的な気付きが中心なので、そこ違う!というツッコミは随時お願いします。)

「Unityでもう少しc#を書きたい人のためのLINQ入門」

@moririring さん (関西から参戦!) 資料

■LINQの利用について
・ふつうのfor文は「手続き的な書き方」。Linqは「宣言的な書き方」。
・あたりまえだが、複雑なワンライナーがいいわけではない。
・LINQの書き方はQuery Syntax と Method Syntaxの二種類。
・有名な話、UnityではiOSでAOT関連でのトラップがあるので注意。

・LINQはループを隠蔽している。ループ数を少しでも減らそう。メソッドの順番が重要。宣言した順(左から右へ)処理が進むので、Whereとか数を絞るフィルタリング系を先に書く。

・遅延実行を意識する。LINQはデータを加工する段で実体化される。実際に値を入れる瞬間など。LINQ書いた箇所では処理されない。ブレークポイント貼るとわかる。LINQで宣言された値が利用されるところではじめて実体化される。

・むだな処理に気をつける。たとえば、CountとAnyは内部のループ回数がぜんぜん違う。

■Visual Studio関連
・Unity 5 Import Packageからメニューから無くなってる。Unity VSがインストールしているフォルダの中にパッケージあり。
(これはPCに複数バージョンのUnityを入れている場合も同様っぽい)

・Macの場合は同等のインテリセンス機能が使えるOmniSharpがいいよ。

・リファクター機能
選択部分を切り出して関数化する。メソッドの抽出。

・Unity VSの機能
右クリックからオーバーライド関数の宣言を生成できる機能。
ブレークポイントを貼った実行で、Unity側からプレイスタートしたい場合は
VSでAttach to Unityを押してからUnity EditorでPlayを押す。

・(VSの話ではないが)積極的にvarを使おう
型推論してくれる。右辺値が参照型でnewとかしている長い関数の場合はおすすめ。

■感想:
自分の周囲にはLinq推しに恵まれているので、プロジェクトに少しずつ導入して入るものの
(具体的にはUIのシステムで、NGUIの複数のパネルに対して操作するところとか。)
=>ってなんやねん!とか思ってたタチでした。所謂おまじないでコードカイているというか。実際はこれ、アロー演算子。

講演はライブコーディングしながらのくだりが最高で、まずはふつうのfor文で作った処理をまず作る。そこからスタートして、条件判定の部分をメソッド化して、デリゲートで呼び出す、呼び出し側を削って削ってラムダ式に書き直して。。。と、だんだんLinqの形に近づけていく方式。これはすごくわかりやすかった。どういう意図であの記述になっているのか?が順を追って理解できるというか。録画して繰り返し見たいくらいです。

あいえみゅねれーらぶる。

「UniRxとかReactivePropertyとか」

@Grabacr07さん。 資料

・Linq to Events。Linq to Events。すなわちRx。
さきほどまでの(moririringさんの)話はコレクションを扱うLinq to Objectだったが、これは時間軸の概念。

・「UniRx」はUnityにReactive Extensionsの考え方を導入する。
大事なことですが、オレオレライブラリではない!ちゃんとした考えに基づいて作った「移植」。
同じ使い方がほかの言語で使えるので、学習コストは無駄にならない。

・変化をストリームで拾ってくる処理を書く場合、初期値の供給があるかどうかは、UIに使うものとしては非常に大事。UniRxにはそのへん気遣って作られている。

・UIの入力判定系は、普通のやり方はOnClickにAddListner生やしたりするがUniRXを使えばStart()の中で宣言するだけ。Updateでぐるぐる回さなくてよい。

Reactive XというウェブサイトがReactive Extensionsリファレンス的に使える。英語だけど図付きでわかりやすい。

・日本語資料は@toRisouP氏の「未来のプログラミング技術をUnityで」おすすめ。
(公演当日の前日に出たばかり。 最前列講演者ど真ん前に座っていた@toRisouPも苦笑い。)

■感想:
資料の中でC#はいろいろなところで活躍してます!と、「C# Everywhere」と銘打ったスライドにPSM Studioが出て泣いた。
UniRxはUIまわりの待ち処理にかなり有効そうなので順繰りに触っていく予定。

「OrangeCube 自社フレームワーク」

岩永信之さん 資料

■自社フレームワーク
・Unityの課題を解決するために自社フレームワークを用意した。

・自社で作っているゲームは、アクション性は少なくUIのページ数が多いタイプ。
 通信周りの非同期処理を楽にしたい。

・非同期処理担当"IteratorTasks"
.Net 4のTasksの移植のようなもの。(Unityは.Net3.5相当なので使えない)
C# 5.0で解決している問題だが、Unityでは使えないので「もどき」をつくった。
標準ライブラリの互換ライブラリ作って、は超バッドノウハウっす...。Unityがry(以下5回ほど繰り返し

・ストリームからのバイト読み込みとかはゲームが止まる原因になりがち。
しっかり非同期で読むような設計をする。

・MVPに当てはめるとView側に当たるOnClickとかの方に処理のコードが増えるのはよくない。
ゲームロジック側、Model層が主役であるべき。そこで、ゲームロジックからビュー側に命令して、ユーザの選択結果を待つような設計にした。

(このへんから話に追いつけなくなる。ごめんなさい。)

■Visual Studio関連
・VSのクラス生成「Usage First」という考え方で、先に使う側で存在しないクラスを呼び出す処理を書いて、あとからメソッドを建てる。

・usingしてないクラスの呼び出しも、覚えていたら先に書いておいてVSの機能でusingを後から足す。

・get setの自動実装

・すべてのメソッドの上にgitとの連携を表示する"1 reference| 0 authors | 0 changes"と灰色で出てた。
(これはUltimateエディション専用機能だとTwitter経由で別の方に教えてもらいました)

感想:
ぶっちゃけ紹介の内容は流石「C#でぐぐるとトップで出てくる」だけありまして超応用的。
C#からC#コードを生成しまくる話とか、、、
自分のレベルではまだ縁遠い話でしたが、行き着くところまで探求するとこういうことができる、という一つの指標としてガッツリ見るだけ見てました。

貴重だったのはものすごい速度のVSの機能使いまくりコーディングがライブで見れたこと。
本職が開発ではないので、なかなかそうした現場を見る機会がなく。貴重でした。

●勉強会全体を通して●


LINQの勉強会ということでしたが、登壇者4名が全員Visual Studio推しだったことと、ライブコーディングが数回あったのでVisual Studioの働きっぷり堪能の巻!、という感想です。

ふつうのUnity勉強会はノウハウ情報共有が主ですが、自分が最近知りたいと思っている「ふだんどういうスタイルでコーディングしていて、どういう細かい機能やツールを使っているのか?どういう考え方で設計しているのか? 」の一面が見れる回だったなと。

この系統のシリーズでまたやってもらいたいなぁ、と思いつつ、次はもう少し理解が追いつくように切磋琢磨。

余談ですが、UniRXライブコーディングの時にストリームをチェックして戻り値をboolで返す処理を三項演算子でササッと書くくだりがあったのですが、そこがすんなり理解できたあたり自分の成長を感じました。(こなみ)

2015年3月18日水曜日

PS Vita「CardBoard Cat EP」最終アップデート1.21

PS Vita 「Cardboard Cat EP」 最終アップデートです。



主な更新点は

・海外版「The Cardboard Cat」のステージ構成を追加(International Mode)
・全体的に明るくシャープに
・アイコンとスプラッシュイメージを変更
・若干データ圧縮

です。












私から伝えたいこと。

どうか買ってください。

 



このゲームはPlayStation Mobileでリリースすることを最大限活かすべく、「背面タッチパネル」のハードウェアをフル活用したゲームシステムを採用しています。

PSMの終了が発表された今、移植する先はありません。

不本意ながら、今しか遊べないゲームになってしまった「CardBoard Cat EP」。
PlayStation Storeにて154円で2015年7月15日(水)まで、販売中です。






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

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

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

よろしくお願いいたします。

2015年3月11日水曜日

PlayStation Mobile 終焉

PSMのおっかけをやって1余年が経過した。


当時社会人3年生だったオレはUnity for PSMに出会い、 即効でファンになった。元々ゲーム開発とは縁のない生活だったが、 それからはPSMの為だけに生きてきたようなモンだ。



毎日Unity Editorで開発したし、徹夜も二度や三度じゃない。



ファンやって半年目、PSNで俺のゲームを出せた時には 嬉しくて本気で涙が出た。人生で最高の喜びだと有頂天になって、Twitterで一人で吼えてた。



そして今年の3月。

信じられないものを目にした。「PlayStation Mobile終了!!」


目を疑った。絶対ありえない、絶対ありえない。死んでもありえない。一週間仕事を休んだ。 (※休んでません)



もうDevPortalも開いてない。毎日の楽しみだった販売レポートのチェックも辞めた。


最近になってようやく、ゲームの別のリリース方法を考えよう…そう思えるようになってきた。


だけど俺には何も残ってなかった。開発初心者という多感な時期にPSM一本でやってきたんだ。当たり前だ。


マトモにXcodeを触ったのはいつだっただろう。PC用にパッドのキーアサインをしたのはいつだっただろう。


販路について、プラットフォームについて、そして将来について最後に考えたのはいつだったんだろう。


残ったのは初歩的で汚いコードしか書けなしい30代間近の中身スッカラカンな男。それだけ。



こんなのが今更どうやってスマホとかに進出するってんだ。それに今まで気づかなかった俺は最高にバカだ。


そしてこんなグチをブログでしかこぼせない俺は最高に惨めだ。



是非俺を笑ってくれ。蔑んでくれ。そしてこの日本のインディーゲーム開発環境を考えるキッカケにしてくれ…



--------------



皆さんもニュースでご覧になったように、PlayStation Mobileのサービスが7月で終了します。

PlayStation Mobileのコンテンツ配信が7月15日をもって終了
http://www.famitsu.com/news/201503/11073698.html

前半はふざけたコピペ改変をぶつけていましたが、PSMという奇跡的で素晴らしいスキームがあったからこそ、ちんけな自分が奮起してゲーム一本ひねり出すことができたわけです。

「なんかVitaで頑張ってる個人開発者がいるらしい」と多少話題のタネになり、PSMを通じて沢山のゲーム開発者と出会えたこと。これらは代え難い経験になりました。

個人が市販のゲーム機でタイトルを作って販売できる。こんな、ひと昔前から考えたらクレイジーな仕組みを用意してくれたSCEの皆様には、ただただ、感謝の言葉しかありません。

私はUnity派なのでまだしも、PSM Studioの専用開発環境でやっていた方々が一番ダメージを受けているもの思います。

XNAの更新が止まってしまった時と同じように、そのままではPCその他のプラットフォームに移行できませんから、大変かと。、
(※第一版では「XNAがなくなった」という表現をしてしまい、鷲アイコンやスマイリーアイコンからまさかりを投げつけられたので修正しました。謹んでお詫び申し上げます。)


自分の場合は、実は5月の「東京インディーフェス」に出展が確定しまして、プラットフォーム「Vita」で提出していましたのでちょっと悩み中です。


現在開発中の新作はUnity for PSMで4.3.4f1に苦しめられながら作り続けるつもりです。7/15までは起動確認できるみたいなので。


わたしはPSMを続けるよ!


この潮流をただの「夢」で終わらせず、いつか「PSMがあったから、いまの日本のインディーゲームシーンがあるんだよね」と振り返られるよう。
これからも頑張って行きたいと思います。

最後に一言、劇場映画「ルパン三世Dead or Alive」より大好きな一言を。


「…いい夢だった!」