ゲーム開発 に所謂なアプリケーション設計パターンをおいそれと適用するのは難しい

アドベントカレンダーでもなんでもない記事 0日目です。 Unityで長らくゲーム開発をやっているけれど、Web界隈などで色々と発達しているアプリケーション設計パターンをおいそれと持ち込めば良いわけではないと感じているので、それについて考えてみようと思…

Unity界最速DIコンテナVContainer が速い理由の解説

拙作の Unity用DIライブラリ、VContainer の v0.9.0 では、ILコードをコンパイル時に生成することによるメタプログラミングの高速化が足されました。 Unity用DIライブラリ VContainer の 0.9.0 を撒きました。コンパイル時IL生成による高速化機能をマージし…

Vcontainer v0.2.0 に ECSサポートが入りました

先々々週 あたり、Unity(ゲームエンジン)で使える 自作DIライブラリを公開しました。 github.com 高速でコードサイズが小さく、GCゴミが少ないところが特徴です。 Zenjectと比較すると、ZenjectがDIの宣言によってあらゆることをコントロールしようとしてい…

VContainer v0.0.1 - Unity用の速くて軽いDIライブラリをリリースしました

github.com Unity (ゲームエンジン) で動作する自作DIライブラリを公開しました。 特徴は、 速くて薄くて軽い GCゴミがとても少ない コードファーストでスコープを切れる機能 (Autofac の影響) MonoBehaviourに依存しないカスタムクラスをUnityのライフサイ…

Unity の UniversalRP で エッジ検出

Unity の UniversalRP でオブジェクトの エッジを検出して描画するパスを追加する行為をやってみた。 エッジ検出できた- #madewithunity pic.twitter.com/LmP0QHTuC6— ハダシA (@hadashiA) 2020年1月8日 ポストエフェクト的な、各ピクセルごとに輪郭かどうか…

Unity の UI を ScriptableRenderPass で もちもちにする

こんにちは。 お久しぶりの投稿です。 最近、ひとりでつくっているゲームの内容が少しずつかたまってきたので、実験してみたことや没案などの紹介をたまに試みようと思います。 今回は、Unityで UI をメタボール化し やわらか形状にする方法を紹介してみよう…

Unity 特有のパフォーマンス劣化の落とし穴 2018年歳末まとめ - part 2

今年遭遇した、気づかないうちに嵌ってしまったUnityのパフォーマンス上の落とし穴を振り返っています。 part 2 です。 part 1 はこちら 今回は主に、Unity 独自の c# 実行環境である IL2CPP と、 Unityエンジン部分の c# の API についての経験談を書いてみ…

Unity 特有のパフォーマンス劣化の落とし穴 2018歳末ふりかえり - part 1

今年、Unty製プロジェクトのパフォーマンス改善をやる機会があったんですが、世の中のかっこいい事例に出てくるような、ハードウェアやVM/コンパイラの気持ちになったミクロなチューニング、フレームワークの制限を回避するための大胆な再実装…… そういうか…

Unity Technologies によるオンライン対戦FPSゲームの実装にふれてみた

Unity(ゲームエンジン)とGoogle が パートナーシップを結んだぜ、みたいなニュースが記憶に新しいですが、 先月末くらいに、彼らのオンライン対戦FPSのサンプルコードについての詳しい解説動画が上がってました。 FPS Sample Game Workflows | Unity ちな…

高速なドロネー三角形分割

「コンピュータジオメトリ」という書籍を参考にして、これに載ってるドロネー三角形分割のやりかたを実装してみた。 この本は、幾何アルゴリズムの「証明」や、計算量の解析が載っていて、しかも日本語で書かれているという徳の高い本。 理論どおりの計算量…

最近の学習計画

なんやかんやあって、ずっとやっていたWebサービス開発から、オンラインゲーム開発に仕事を変えた。 最近は、なんとか呼吸できるくらいには慣れてきたかなって思って気がついたら2年くらい経っていた気がする。 結局ソフトウェア開発だから、そこだけ聞くと…

c# と非同期処理ついての初歩的なFAQ

c# でサーバを書くのおすすめです。処理の並列化がとてもやりやすいです。 golangが登場したとき、小さなコード辺をスレッドを意識せずに投げまくれる上、タイマーやI/Oをスレッドをブロックせずに使える、そんなお手頃価格な並列処理に注目が集まっていたよ…

キャットムル-ロム スプライン曲線

最近、ごく基本的なの曲線のアルゴリズムを実装したりしてる。 キャットムル-ロム スプライン(Catmull-Rom Spline)ていうアルゴリズムは、制御点を必ず通るという特徴があるので、絵を生成するような用途だととても使いやすい。しかも実装が簡単。 最近、こ…

Unity に mruby 組み込んでる

実験的に、Unityにmrubyを組み込んで使ってみてる。 基本的には Unity内のコードは全て c# で書くわけだけど、ゲームの基盤部分もすべてc#で書くだけに、それとは別に、ゲームのコンテンツ部分だけを集中して記述できる分離された薄いレイヤがあると便利だ、…

Optimizing graphics rendering in Unity games 読んだ

Optimizing graphics rendering in Unity games のメモ https://unity3d.com/jp/learn/tutorials/temas/performance-optimization/optimizing-graphics-rendering-unity-games?playlist=44069 Unity 描画パイプライン 毎フレーム、CPUは以下を実行する 1. シ…

RxSwift つかってる部分の引き継ぎしてる

前回 に続き、担当してたアプリについて考えていたこと書き記してる。 とくに RxSwift がなぜ良いのか? ということは、説明がすこしむつかしいので、すこし丁寧に書くチャレンジをしてみている。冒頭のところ公開してみる。 -- Rxは何を解決できるか? クラ…

iOSアプリの引き継ぎしている

理由あって、仕事でやっていたiOSアプリの開発を抜けることになった。 新しい担当者は、いつかあちこち変更したい気持ちになと思うので、もちろんどんどんやってもらって構わないけど、変更していいのか確信に至れなかったときのため、現状なぜこうなってい…

browserify から rollup.js に乗り換えてる

仕事でやってるブラウザjsのビルドには、長らくbrowserifyを使っていましたが、さいきんrollupに乗り換えました。 module bundler ツールたち browserify、rollup、どちらも主眼に置いているのは、モジュール分割して書いたソースコードの依存解決です。必要…

Rust から ImageMagick 呼び出してみる

Rustがかなりかっこいいのですこし触っています。 Rust はまるで、めちゃめちゃ易しくなったc++かのようです。メモリリークやその他の危険が扱いやすくなったし、シンタックスも今風だ。関数型言語由来のパターンマッチやOptional/Eitherのエラー処理などす…

将来は標準のDOM APIを使うのがより身近になると思ってる

最近、標準のDOM APIは別に悪くない、と考えるようになった。 そう考えて劇的に何か変わるかというと、現時点ではライブラリを使うことに慎重になるという気分的なものかもしれない。 気分が変わった結果として、僕は直近のプロジェクトのごくふつうのWebペ…

Unity で 等角タイルマップエディタつくってる

vimeo.com Unityのすばらしいところの1つはやっぱりエディタ。なにせ、Sceneビュー上でコンパイルせずに変数の値をいじることができるし、実行中ですらできる。 ゲームとか、インタラクティブな何かをつくっている最中は、実際に動いてるようすを見ないと良…

スクロールビューの自前実装やってる

vimeo.com スワイプして慣性スクロール ゴム的な反発 ピンチして拡大/縮小 ゴム的な反発 を自前で書いた。そこそこ似てる感じにできた。 github.com

RxSwift の スケジューラ読んでる

Observableみたいなものはとてもシンプルなつくりではあるのですが、それでもRxの亜種ではなく、元祖Rxを使うメリットはたいへん大きくて、主な理由はSchedulerやDisposableのような強力な部品があるからです。これらの部品たちは、他言語をまたいで同じ概念…

RxSwift 読んでる

RxSwiftをちょっとずつ読んでる。最初はちょっと継承構造が激しい印象を受けたけど、基本的に関数型のワードに疎い自分でもとても読みやすいです。 Rxの不思議を理解していくと、アプリケーション内の別のパラダイムと仲良くする方法を考えるときのヒントに…

RxJSでMVVMやってる

Rxは、すごくUIを書くのに向いているのではないだろうか。アプリケーションの状態を山盛りの変数で管理することから解放され、状態から状態へ変換する関数を書けばよくなるから。 非同期処理を同期っぽく書きたいならawait でいいじゃん。UIイベントを宣言的…

暇なとき意味なく無害なコマンド打ってる

brew update と打つと、ほどよく時間がかかり、ほどよく字がいっぱい出るし、ほどよくアップデートした気持ちになるから、やる気がしないときによく打ってる。

cycle.js やってる

javascript がブラウザ上ではしりだしたとき、自分のコードは画面になにが表示されているのか何も知らなくて、document.getElement* だとか querySelector や $ とかをしてまず検索してとってきてはじめてわかる。javascriptで画面をいじるときはまず検索。…