UnityとゲームAIと将棋

Unity、Pythonを中心にゲーム開発やゲームAI開発の技術メモ等、たまに将棋も

週末メモ(2024/6/23)

メモ 今週読んだ記事や知ったことのメモ。 面白そうだったもの、後で読み返すもののメモ。 Unity関連 Cinemachineで自然にカメラ(視点)を切り替える方法【Unity】【Cinemachine】 - (:3[kanのメモ帳] Cinemachineでカメラにランダムな振動や手ブレを追加する…

週末メモ(2024/6/15)

メモ 今週読んだ記事や知ったことのメモ。 グラフィクス関連 URPでリアルな反射を表示するエフェクトSSR(Screen Space Reflections)を使う方法【Unity】【URP】【ポストプロセス】 - (:3[kanのメモ帳] OpenGLとDirectX、異なるノーマルマップについて調べる …

週末メモ(2024/6/8)

メモ 今週読んだ記事や知ったことのメモ。 UnityでのDI入門シリーズ UnityのDI超ざっくり入門 1 - そもそもUnityのDIって何? Addressable AssetSystem ホロライブアプリでのAddressable AssetSystem活用事例|カバー株式会社 公式note timeScaleとカクツキ…

週末メモ(2024/6/1)

メモ 今週読んだ記事や知ったことのメモ。 Avatar Mask 顔や手などの特定の部位だけ別のアニメーションにするためのAvatar Maskの作り方【Unity】 - (:3[kanのメモ帳] C#におけるインターフェイス interface命令で利用できる修飾子 public(すべてのクラスか…

週末メモ(2024/5/25)

メモ 今週読んだ記事や知ったことのメモ。 クラスタリングアルゴリズム 画像処理・クラスタリングを用いて画像内の色を単色化する - yousanのメモ ・k-means法 データを適当なクラスタに分割し、各クラスタの重心を計算後に重心を用いた各データの再クラスタ…

週末メモ(2024/5/18)

メモ 今週読んだ記事や知ったことのメモ。 UnityEditor.ShortcutManagementでショートカット関連の機能が扱える using UnityEditor.ShortcutManagement; UI Toolkit使用時のドラッグ&ドロップイベント 【Unity】【UI Toolkit】Unityエディタ上でドラッグ&ド…

【Unity】UIDocumentとuGUI(Canvas)のSortOrderの関係

結論 uGUIとUIDocumentのSortOrderによる描画順を制御するには UIDocumentの "Panel Settings" 側にあるSortOrderを変更する必要がある。 概要 uGUI(Canvas)によるUIとUIToolkitで作成したUIの描画順をSortOrderで制御するにはどうしたらいいか調べていたと…

【AlphaZeroを理解する】多腕バンディット問題編

概要 囲碁、将棋、チェスなどのボードゲームにおいてルール以外のドメイン知識を利用せずに対戦用AIとしてのState-of-the-art(SOTA)を達成したAlphaZeroを細かく分解しながら理解していこうというシリーズです。今回はモンテカルロ法の基礎となる多腕バン…

【C#】List<T>とIEnumerable<T>の選択についてのメモ

結論 メソッド引数の場合 基本的にはIEnumerableを利用。IEnumerableの方がメモリ効率が良いため。 Listを使うのは下記のような場合。 要素数の取得をする foreach文を2回以上通過する 内部で配列やリストに変換している メソッド戻り値 基本的にはListなど…

【ゲームAI】オセロの結論が引き分けであることが解析されたらしい

結論 オセロの結論は引き分けということが解析されたらしい(弱解決) 詳細 オセロの結論は引き分けであるということを解析したという論文がArxivに投稿されていた。 arxiv.org 上記の論文を読んでみて気になったのが「解かれたゲーム」というのには ultra-w…

【AlphaZeroを理解する】モンテカルロ法編

概要 囲碁、将棋、チェスなどのボードゲームにおいてルール以外のドメイン知識を利用せずに対戦用AIとしてのState-of-the-art(SOTA)を達成したAlphaZeroを細かく分解しながら理解していこうというシリーズです。今回はAlphaZeroの根底にあるモンテカルロ木…

【GitHub】GitHub Actions でDiscordにWebHookで通知を送りたい時のサンプルコード

結論 name: 'GitHub Notification' on: workflow_dispatch: jobs: notify: runs-on: ubuntu-latest steps: - name: Send Discord notification uses: stegzilla/discord-notify@v2 with: webhook_url: ${{ secrets.DISCORD_WEBHOOK_URL }} title: GitHub Not…

【Unity】リリースビルドからデバッグ用コードを除外したい時のシンボル

結論 DEVELOPMENT_BUILD || UNITY_EDITORのシンボルで括る #if DEVELOPMENT_BUILD || UNITY_EDITOR #endif 詳細 Unityで開発をしていると リリース時はデバッグ用機能を無効、除外したい Developmentモードのビルド時はデバッグ機能有効にしたい Editor上で…

【Unity】MLAgentsでターン制ゲームのAIを実装する時の行動決定方法

結論 RequestDecisionメソッドを使用する 詳細 Unity MLAgentsで自作ゲームのAIを実装する際に、サンプルの実装を参考にすると思いますが、サンプルゲームにはリアルタイム性の強いものが多く、ほとんどが下記の画像ようにDecisionRequesterのコンポーネント…

【Python】Ubuntu で socket.gethostbyname() が 127.0.1.1 を返す時の対処法

結論 /etc/hostsファイル内で以下のように自分のPC名のホスト名が127.0.1.1に指定されているので固定IPに書き換える 127.0.0.1 localhost 127.0.1.1 <自分のPC名> 詳細 Ubuntu 上にて Python で Flask を使ってサーバーを立てるためのコードを書いている際に…

【LLM】大規模言語モデルを動かすのに必要なGPUメモリ

結論 【推論】 推論時の必要GPUメモリ[GB] = パラメータ数[b] × 2 【学習】 学習時の必要GPUメモリ[GB] = 推論時の必要GPUメモリ[GB] × 4 【n bit 量子化】 量子化時必要GPUメモリ[GB] = 通常時必要GPUメモリ[GB] × ( n / 通常時の bit 数) 【LoRA】 学習時…

【Python】シェルスクリプトで venv のセットアップをする

結論 シェルスクリプトを source コマンドで叩く必要がある。 python3 -m venv env source env/bin/activate pip3 install -r requirements.txt のようなシェルスクリプトは現在のシェルに反映させるためには source setup.sh と叩く。 詳細 仮想環境を venv…

【Node.js】Electronで開発ビルドと本番ビルドを分けたい時の手法

結論 ビルド時に.envファイルに環境変数を書き込む "scripts": { "build:dev": "tsc && touch .env && echo NODE_ENV=development > .env && electron-builder build --mac --x64 --dir", "build:prod": "tsc && touch .env && echo NODE_ENV=production > .…

ゲーム開発でのゲームAI・機械学習技術の活用

概要 ゲーム開発において、ゲームAI技術や機械学習技術を活用する流れが加速していると日々実感しています。実際の現場でも導入されることが増え、ゲーム開発の様々な部分で効率化が進んでいると思います。ただ、どのようなケースで、どのような技術を使用す…

【Unity】C#におけるアップキャストとダウンキャスト

Unityでゲームの開発をしている時に派生クラスで追加したフィールドに、取得した基底クラスのインスタンスを使ってアクセスしたいというケースがありました。 このケースを解決するためにアップキャストとダウンキャストについて調べていた際、以下の二つの…

確率統計関連の基本事項思い出し用シート

機械学習関連の本や論文などを読んでいると「記載されている数式の変形がどういった背景で行われているのか?」「そもそもこの式って何についての式なのか?」といったようなことをよく忘れてしまい、その都度調べるのも大変なので、基本的なものを一覧とし…

Android・iOS用アプリ「対局時計Simple」リリース

先日、Unityで製作していた「対局時計Simple」というアプリをGooglePlayおよびAppStoreでリリースしました。 対応言語は日本語のみで、無料のアプリになります。 GooglePlay play.google.com AppStore 対局時計SimpleTsubasa HizonoUtilitiesFreeapps.apple.…

Riderの設定をする時に参考にした記事まとめ

Riderの設定をカスタマイズする時に参考にさせてもらった記事をまとめておきます。 shibuya24.info kan-kikuchi.hatenablog.com unity-yuji.xyz qiita.com shibuya24.info qiita.com pleiades.io

Botを常時起動させておくためのservice, plistファイルを置く場所について

SlackBotやDiscordBotを作成する場合、サーバー上で常に起動させておきたいことが多いと思います。 そんな時に使うservice, plist ファイルの置き場所をよく忘れてしまうので、メモしておきます。 Linuxの場合 → /etc/systemd/system/ Macの場合 → /Library/…

Cygamesの「クライアントとサーバーの開発言語をC#に統一する試み」が面白かった

Twitterを眺めていたら流れてきたCygamesさんの「プリグラ」開発に関するCEDECでの発表資料を読んでみたら、非常に勉強になったので共有。 speakerdeck.com PvPゲームにおいては常にクライアントチートがつきまとうのですが このチートに対する対応策として …

【Unity】デザインパターンに関する解説記事のメモ

Unityでの開発で用いられるデザインパターンについての解説記事で分かりやすかったものをまとめておきます。 ※2024/06/07更新 ■2024/06/07追記分 yuru-uni.com zenn.dev qiita.com learning.unity3d.jp qiita.com qiita.com www.karvan1230.com qiita.com ■S…

【Unity】MVPパターンに関する情報メモ

MVPパターンとはModel-View-Presenterパターンの略で、GUI周りに関するデザインパターンの一つです。個人でゲーム開発をしている際にUI周りのコードを分かりやすく書きたくなって、それならばMVPパターンを使ってみようと思ったので、参考になりそうなリンク…

最近注目しているAIエンタメコンテンツ

最近ではstable diffusion や chatgpt といった機械学習技術を応用したアプリケーションの登場で、ゲーム・エンタメ業界でもAIを取り入れているコンテンツが増えてきましたが、その中でも私が注目しているのが AIVtuberネウロ様 Gatebox の2つです。 m.yout…

【機械学習】RNNの内部計算メモ

本記事の概要 前回のFNNの内部計算の記事 tsubasa-alife.hatenablog.com の続きで、本記事ではRNNの内部計算について備忘録的にメモしておきます。 RNNの計算グラフ RNNの計算グラフ ※各パラメタ・要素の説明 : 時刻tにおける入力 : 入力層と中間層の結合重…

【機械学習】FNNの内部計算メモ

本記事の概要 大学・大学院時代に研究を始める際、ニューラルネットの基礎を学ぶためC++でFNNとRNNのスクラッチ実装に取り組んだことがあったのですが、その際にニューラルネットの内部計算がどのようになっているのかを理解するため、計算グラフをもとに内…