タグ

ブックマーク / simplestar-tech.hatenablog.com (6)

  • Unity:動的NavMeshの確認 - simplestarの技術ブログ

    ゲームの3大AI(人工知能)の一つはナビゲーションAI ゲームAIを大きく分類すると次の三つがあることに気づけます キャラクターAI キャラの振る舞いを決定 ナビゲーションAI 目的地への経路を決定 メタAI ゲームの進行を決定 今回強く関係しているのはナビゲーションAIです。 キャラクターが行動できる範囲を Walkable (歩行可能) エリアと呼びますが、次の動画の水色の半透明な領域が計算によって求めた Walkable エリアです。 動的NavMeshの動作の様子動的NavMeshの動作の様子2 ゲームプレイ中に動的に Walkable エリアが更新されていることが確認できました! これ当にすごいことを目の当たりにしている瞬間でして、長いこと Unity では静的にしか Walkable エリアを計算できませんでした。 要するに、ゲーム実行前のビルドの段階で Walkable エ

    Unity:動的NavMeshの確認 - simplestarの技術ブログ
  • Unity:ECSでメッシュオブジェクトを生成する方法 - simplestarの技術ブログ

    まえがき Unity で動的にメッシュオブジェクトを作成して、キャラクターと衝突判定を行えるようにコライダーを設定する…となると? Unity の書式により 1.シーン内に GameObject インスタンスを作り、追加コンポーネントは MeshFilter と Renderer, MeshCollider が必須となります。 2.Vector3や int, Vector2 のマネージド配列を vertices, indices(submeshごとに), uvs(submeshごとに) を作成し MeshFilter に設定、normals のために CalcurateNormals を行う必要があります。 3.その後、MeshCollider に mesh を渡してコライダーを再構築します。 4.マテリアルを設定します。(submeshごとに) この内容であれば、過去に二回記事を書いてき

    Unity:ECSでメッシュオブジェクトを生成する方法 - simplestarの技術ブログ
  • PlayFab:UnityのバックエンドとしてのAWS入門 - simplestarの技術ブログ

    不正を許さないため、オンラインゲームは基的に現実のお金でのアイテムの購入、ゲーム内の仮想通貨やアイテムの交換はクライアント側では行わずにサーバー側で行います。 そうした不正を許さないバックエンド処理に使う api とデータベースをほぼ無料で使わせてくれるMicrosoft がサポートしている PlayFab をご存知ですか? 「え!まじ!?」と思う入門者が最初に読むべきドキュメントはこちら docs.microsoft.com プレイヤー認証 ゲーム開始直後にプレイヤーアカウントを作成するためにIDとパスワードやメール確認などがあると、せっかく遊びに来てくれたお客さんの大半がゲームに触れることなく二度と立ち寄らないことになります。 そんな現実を重く見たPlayFab はアカウント作成のフローを非常に意識していて、最初はデバイス固有の値としてユーザーを見分けるカスタムIDにリンクして、これ

    PlayFab:UnityのバックエンドとしてのAWS入門 - simplestarの技術ブログ
  • Unity:別スレッドで重い処理(AI処理とか、画像処理とか) - simplestarの技術ブログ

    Unity でビジュアライズしている何かしらのアルゴリズム(AIとか画像処理とか)について、処理中にUIが固まることはユーザービリティの面から看過できません。 Unity 2017 になってから、C# 5.0 からの新機能 Task(async/await) が使えるようになりました。 これを使うだけです。 ただ使うには、PlayerSettingsをExperimental(実験的な設定)に変更する必要があります。私は次の記事を参考に変更しました。 qiita.com 具体的なコードとしては await Task.Run 以降のラムダ式をメインスレッドとは別のスレッドにて非同期実行させることができます。 await キーワードは async キーワードを付けた関数の中でなければ、記述できません。 ということで、以下のようなコードで重い処理を別スレッドで書き、結果が出たらスレッドアンセーフ

    Unity:別スレッドで重い処理(AI処理とか、画像処理とか) - simplestarの技術ブログ
  • Unity:深度画像の取得 - simplestarの技術ブログ

    オブジェクトのエッジを強調したり、モデルベースの画像処理を行いたいときなどは、見ているシーンの深度画像が必要になります。(これは当) OpenCV に現在フレームの深度画像を渡したいときは float 配列としてカメラからのZ距離が得られると文句はないのです。 この記事ではその float 配列の取得方法を動作確認込みで示します。 Unity で深度画像を得る方法をいくつか存じておりますが、私が知る中で最速な方法を示したいと思います。 前回、前々回と触ってきた Compute Shader を使います。(以下の方法が具体的にイメージできない人は読み返してね) Compute Shader を新規作成したら、次のコードを記述します。 // Each #kernel tells which function to compile; you can have many kernels #pra

    Unity:深度画像の取得 - simplestarの技術ブログ
  • Unity:UNETの使い方1 - simplestarの技術ブログ

    最初に基となるネットワークゲームを作る要素について紹介します。 前々回の記事にて uGUI ボタンが一個あるだけのシーンを作りました。 ここに PlayerObject と NetworkManager という名前の空のオブジェクトを追加しました。 PlayerObject オブジェクトには Network Transform コンポーネントを追加します。 NetrowkManager オブジェクトには NetworkManager と NetworkManagerHUD を追加します。 さて、この状態でゲームを実行すると HUDによるボタンが現れます。 今回は家の外からの通信で、自宅で実行中のゲームのオブジェクトを動かしたいと思います。 それを行う場合は LAN の外となるので Enable Match Maker を選びます。 さて、この機能を有効にするにはですね、事前登録が必要にな

    Unity:UNETの使い方1 - simplestarの技術ブログ
  • 1