simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Unity

Unity:頂点法線の計算と事前設定の速度の違い

2週間前に、Unityのパフォーマンス測定の差先端について調べた記事を書きました。 simplestar-tech.hatenablog.comここで調べた手法で、頂点生成系のプログラムのいくつかの負荷試験を行ってみます。 タイトルの通り、頂点法線の計算をランタイムで行うのと…

Unity:頂点生成による三角柱

頂点カラーシェーダーのテスト用にメッシュオブジェクトを用意します。ちょうど1年前に六角柱を作りましたが、やはり最も頂点数の少ない三角柱から作ろうと思います。 simplestar-tech.hatenablog.comもう既に書式は習っているので、知っていることを利用し…

Unity:レールに沿ったカメラを表現するCinemachine

前回、初めて Cinemachine を触ってみましたが、サクッと三人称視点のフリーカメラの動きを実現できました。 simplestar-tech.hatenablog.comCinemachine の見どころは多く、まだまだその機能を紹介しきれていません。 カメラワークのイメージと、それを Cin…

Unity:CinemachineでTPSカメラ制御してみる

Chinemachine (シネマシーン)とは、映画のカメラワークを強力にサポートするツールセットの名称です。 映画監督ばりに、絵コンテ通りにカメラを動かしたい、そんなときに役立つ公式アセットです。(あるときから公式になった人気ツール?なのかな)とりあ…

Unity:2018.2以降のPrefabとAssetBundleの変化を追う

ココが変わる!Unityの新しいエディターワークフロー CEDEC2018いつもお世話になっている「テラシュールブログ」の中の人の発表です。 これだけ Slide Share にアップされていない様子なので、記憶を頼りに と思ったら Youtube に動画を発見した www.youtube…

Unity:パフォーマンス表示uGUIの作り方(2018版)

最近 ECS + Job Systems + Burst Compile と SRP の習熟度を上げましたが、今度は開発中にゲーム内のUIでパフォーマンスをチェックする機構について興味がわいたので 最新の Unity のパフォーマンス計測テクニックを参考に作ってみたいと思います。ちょっと…

Unity:ScriptableRenderPipeline(SRP)の書式確認

Unity の Scriptable Render Pipeline(SRP) とは端的に言うと、Unity がフレームをどのようにレンダーするかをデベロッパーが C# で制御できるようにするものです。(大事なことなので何度でも)前回の記事でSRPの導入方法はバッチリ simplestar-tech.hatena…

Unity:2018のScriptable Render Pipelineに慣れる

Scriptable Render Pipeline(SRP) とは端的に言うと、Unity がフレームをどのようにレンダーするかをデベロッパーが C# で制御できるようにするものです。ついに Unity のブラックボックスに手を入れられる時代が始まろうとしています。 これを活用できるか…

Unity:job-system-cookbookからC#JobSystemの実例を確認

ちょっと前の私の記事 simplestar-tech.hatenablog.com こちらでメッシュの変形やCubeの移動、画像処理などのサンプルをみつけたので、今回はそのサンプルの実装を確かめていきます。Unity 2108.2.5f1 PackageManager にて Burst 0.2.4-preview.26 Entities …

Unity:CEDEC2018のECSの発表から学ぶ

Unity にはコンポーネント指向という作法がここ10年間築かれてきましたが、他のゲームエンジンに並ぶような速度で計算するためには、そのコンポーネント指向をやめる必要があります。 ECSと呼ばれる新しいシステムを導入して、パフォーマンスを上げていくこ…

Unity:C# JobSystemとBurstCompilerそしてECSこと(EntityComponentSystem)の概要

この三つがそろった時、Unity は完全体となって、Unreal は死ぬという噂が流れるほど Unity のパフォーマンスを向上しつつ、競合状態などを起こさないように安全にコーディングできるようになるとのことさて、前回に続いて C# Job System の書式を学んでいま…

Unity:安全な並列処理をする C# Job System について学ぶ

Unity の GDC2018 の英語発表見てるけど、長いな まずは椿さんことUnityエヴァンジェリストの山村さんのブログ読んでどういう話なのか、知識を増やします。 tsubakit1.hateblo.jp確かに、過去に Task とスレッドセーフキューを使った実装で、大量のブロック…

Unity:ポストプロセスの公式例

docs.unity3d.com によれば、次のポストプロセシングスタック をインポートすれば、ポストプロセスを有効化する例を確認できます。 github.comversion requires Unity 5.6.1+ と、結構新しい状態にしないと確認できない

Unity:シーンとオブジェクト

しばらく Unity から離れると、Unity の書式を忘れるので、わかっている範囲で書き留める。 初めて Unity を理解する人には、その理解の一助になるといいですね。Unity はコンポーネント指向で作られていると公式ドキュメントに書かれていますが、それだけで…

Unity:UNETの基礎と実装

最近素晴らしい UNET の記事を見つけました。 nn-hokuson.hatenablog.comネットワークゲームには二種 Peer-to-Peer 型と Client-Server 型があります。数万人がアクセスするような商業成功タイプは Client-Server 型ですが、UNET は残念?ながら数人がリアル…

AIに身体性を与えるためのマイクロワールドの構築18:大気の循環

この世界で水が山頂の方から流れてくるのはなぜか考えたことはありますでしょうか? 大気は循環しており、その大気に水が含まれているため、その大気が雨を降らせ、山から水が流れてきます。はい、ということで今回は大気の循環をブロックのロジックを使って…

Task.Run:Unityマルチスレッド処理に引数を渡す方法

AIに身体性を持たせるためのマイクロワールド:ブロックロジックの可視化システムの実装メモです。 まずは結果動画をご覧いただきたい。www.youtube.com マルチスレッド処理にて空気に触れている土ブロックだけが確率的に消失(正しくは空気ブロックにマテリ…

Unity:MessagePackをオブジェクトのバイナリ圧縮として使う

MessagePackは、効率の良いバイナリ形式のオブジェクト・シリアライズ フォーマットです。JSONの置き換えとして使うことができ、様々なプログラミング言語をまたいでデータを交換することが可能です。 しかも、JSONよりも速くてコンパクトです。 例えば、小さ…

Unity:C#で共用体ちっくなビットフィールドの利用:SimpleHexWorld17.8:適切にマテリアルを切り替えたい

前回、パフォーマンスを落とさないために、テクスチャ座標で異なるブロックの種類を表現できる仕組みを作ったわけですテクスチャ座標でブロックの種類を表現が、それでもマテリアルを切り替えたいときだってあります。そもそも四大元素や陰陽五行はマテリア…

金ブロックだけでできたマイクロワールドの様子

AIに身体性を与えるためのマイクロワールドの構築の、ちょっとした描画遊びです。これぞ金の山…ゴージャスです! 動画はこちら www.youtube.comマテリアルを一つにして、ブロックの種類をテクスチャ座標で切り替える方法を作りましたが、 しかし、今後金属ブ…

AIに身体性を与えるためのマイクロワールドの構築17.7:Unityテクスチャ座標活用で描画負荷を削減

前置き Unity では一つのメッシュに対し、複数のマテリアルを面ごとに割り当てることができます。 利用するマテリアル数を増やしていくと、増やした分だけレンダリングパスが増えていき、描画時間が線形的に増加し、フレームレートが大きく落ちてしまいます…

AIに身体性を与えるためのマイクロワールドの構築17.6:Unityでのマルチスレッド処理の話

前置き AIに身体性をもたせるためのマイクロワールドの開発を進めていますが、マルチスレッドで処理しているため、期待と異なる結果になったり、パフォーマンスが極端に落ちたりすると、うまく原因を特定できません。 頼みのプロファイラーも抽象度の高い結…

Unity:シーンに一つだけしかアタッチできないSingletonMonoBehaviour+実装例

グローバルスコープに唯一のインスタンスを生成して、プロジェクトのどこからでも容易にアクセスできる仕組みがシングルトンの良いところです。 絶対に一つしかインスタンスを生成していないことをコードから保証できる点で、優れたデザインパターンだと思い…

AIに身体性を与えるためのマイクロワールドの構築16.5:水のロジック

Unity でマインクラフトライクなゲーム制作の記録です。前回用意したプラグイン機構を使って、水ブロックのロジックを考えてみました。 ゆっくり移動するのですが、早送りするとそれらしい振る舞いに見えなくもないかな…動画はこちら www.youtube.com今回は…

AIに身体性を与えるためのマイクロワールドの構築16:風・土そして水

世界を構成する四大元素は風・土・水・火でした。 現在は風と土だけで世界が構成されていますので、水を作り出す必要があります。イメージとしてはこんな感じ 水は液体なので、固体である土と違ってより低い風ブロックの隙間へ移動していくものです。以前よ…

AIに身体性を与えるためのマイクロワールドの構築15:WorldCreation2

UnityでMinecraftライクゲーム作ってます。前回作った天地創造プラグインにパーリンノイズで高さを決定する機能を入れてみました。 こんな感じでみなさんの自由なアイディアをゲームに取り入れられます。www.youtube.comプラグインの実装はこちら↓ ノイズの…

AIに身体性を与えるためのマイクロワールドの構築14:WorldCreation

天地創造 ここのところメインスレッドが処理落ちしないよう、バックグラウンド処理でメッシュ構築を行う仕組みを作ってきました。 こちらが機能するようになったので、今回はいよいよブロックのロジックに入ります。さっそく適当な天地創造プラグインを書い…

AIに身体性を与えるためのマイクロワールドの構築13:Unityのプラグイン機構

前置き 今日のゲームの面白さは、決められた内容をコントローラをピコピコしながら進めるところにはありません。 いつしかゲームは絵本や映画とは異なり、何度プレイしても内容が変化する、飽きが来ない仕組みへと変化してきました。それはいつしか自らの筆…

AIに身体性を与えるためのマイクロワールドの構築12:ワーカースレッドの仕組み

前置き ゲームの描画ループを止めることなく、バックグラウンドで処理を行う作りにすることは、ゲーム体験を向上させる点で重要なことです。 マイクロワールドの表示において、ブロックのメッシュの更新がバックグラウンドで実行できないという Unity の厳し…

Unityでクラスをファイルとして保存(シリアライズ)

前置き ゲーム内で利用しているクラスオブジェクトをそっくりファイルに保存して 次にゲームを起動したときに、そのファイルからクラスオブジェクトを完璧に復元できます。 できる方法があります。ゲームの状態をセーブして、次にゲームを起動したときにロー…