エフアンダーバー

個人開発の記録

【Unity】 ECS まとめ(後編)

前編の続きです。 www.f-sp.com 旧アーキテクチャからの移行 変換プロセス GameObjectConversionSystem 補助メソッド システムグループ ConvertGameObjectToEntitySystem IDeclareReferencedPrefabs IConvertGameObjectToEntity LinkedEntityGroup Transform…

【Unity】 ECS まとめ(前編)

前にUnityのECSについて調べて記事を書きましたが、 おそらく今後しばらく使うことはないと思われるので、 忘れないうちに現状のUnity ECSについてまとめておくことにします。 www.f-sp.com ……という動機で記事を書き始めたのですが、 なんやかんやで片っ端…

メモ:すべてのプログラマに推奨される読み物

AmethystのForumに Recommended Reading for Any Programmer というトピックが挙がっていてて、いつか読まないと/学ばないといけないなと思っていたものがまとまっていたのでメモ。 書籍 メイン The Pragmatic Programmer: From Journeyman to Master 和訳…

【Unity】 ネイティブプラグインのリロード

Unityにてネイティブプラグインのリロードに苦労したのでメモ。 Windowsを想定した記事ですが、おそらく各OSに対応したAPIを叩けば他のOSでも同様のことはできるはず。 基本的に次の記事の内容をやってみたよ、という記事です。 qiita.com 自力でやることに…

クトゥルフTRPG Webアプリ 移転しました

クトゥルフTRPGツールβ版のドメインとサーバを移転したのでそのお知らせです。 www.f-sp.com 移転先 coc.f-sp.com 機能自体は特に変更ありません。 移転の理由 ざっくりと言うと、もともと使っていたサーバが使いづらかったため変えました。 ドメインはその…

【Unity】 『ECSだけしかいない世界』の補足 - ForEach -

前回記事の公開後、Twitter上でForEachについて少し議論があったので、 前回雑に流したあたりについてもう少し詳しく書くことにします。 www.f-sp.com ECS preview.30対応のコードに更新。 ForEachの問題点 ComponentSystemのForEachメソッドは直感的にはラ…

【Unity】 ECSだけしかいない世界

今更ながらUnityのECSについて学習したので、ECSで簡単なゲームを作ってみました。 巷ではECSが一種の高速化手法のように使われているサンプルが多いので、 ECSはアーキテクチャなんだぞ、ということを示すためにGameObjectとComponent禁止縛りで書くことに…

BabelによるTypeScriptの変換でハマる

クトゥルフTRPG ツールにてGooglebotのためにBabelを入れたので、 ついでにTypeScriptの変換もBabelに任せてしまおうと作業していたところ、 不可解な現象に悩まされたためメモ。 不可解な警告 Dexie.jsというIndexed DBのラッパーライブラリを用いて次のよ…

【Unity】 物理演算の基礎

Unityでアクションゲームを作る上で避けては通れないのが、 コライダー(Collider)やリジッドボディ(Rigidbody)といった物理演算コンポーネントの存在です。 特に物理的な挙動を再現したいわけではなくても、当たり判定に関する処理のためにはこれらが必要に…

クトゥルフTRPG Webアプリβ版の開発についてだらだらと

先日公開したクトゥルフTRPG Webアプリβ版の開発周りの話です。 アプリ紹介については過去記事を参照してください。 www.f-sp.com アプリ本体はこちら。 coc.f-sp.com はじめに アプリ開発の話、というと『こんな技術やあんな技術を組み合わせて素晴らしいシ…

クトゥルフTRPG Webアプリのβ版公開しました

クトゥルフ神話TRPGで遊ぶ際に必要なダイスロールやステータス管理をアシストするWebアプリのベータ版を公開しました。 Webアプリなのでブラウザでページを開くだけで使用できます。 また、インストールにも対応しているためモバイルアプリのようにも扱えま…

【JavaScript】`\0` ← ヌル文字 `\00` ← エラー

ヌル文字を表すと思っていた構文が実はヌル文字を表す構文じゃなかったという話。 コトのおこり 8進エスケープシーケンスとは? \0 はダメなのか? なぜ8進エスケープシーケンスはダメなのか? やはり \0 はダメなのか? 8進エスケープシーケンスの遺産 おわ…

【TypeScript】 Vuexもクラス形式で書きたい!!

vue-class-componentやvue-property-decorator、 vuex-classといったデコレータによるクラス形式のコンポーネント記述に感動したので、 Vuexもクラス形式で書けないかと仕組みを試作してみました。 ちなみにVuexの初心者も初心者、ほとんどドキュメントに目…

TypeScriptとVueのMixin

VueのMixinに関する(Webの世界では)一昔前の記事を読んでいて、 TypeScript 自体が Mixin 構文をサポートすればこのつらさもなくなるような気がしますが、 TypeScript 公式でこのめんどくさい Mixin のやり方を紹介しているので望みは薄いような気も……。 …

WebpackでTypeScriptのモジュール解決

TypeScriptのコンパイラオプションには baseUrl、paths、rootDirsといういくつかの特別なモジュール解決の設定があります。 しかし、これらはあくまでもTypeScriptコンパイラのための設定でWebpackやts-loaderはこれらを考慮してくれません。 そこで、Webpac…

【Webpack】 css-loader周りのSourceMap関連バグと戦う

css-loaderを使っていてSourceMapのパスが壊れるバグにハマったのでその際調べたことのまとめです。 長くなるのでタイトルに入れていませんが、 css-loader、 postcss-loader、 sass-loader辺りのバグです。 問題 原因 原因1:パスとURLの混同 原因2:相対…

SVGをCanvasに変換しようとして失敗した話

Electronでsvg要素を画像として保存したいと思い、Canvasに変換してからPNGとして保存しようと試みた結果、失敗したという話。 最終的に諦めたのでこの記事に解決策は書いてありません。 同じことをしたい人が時間を無駄にしないための記事です。 drawImage…

乱数生成の備忘録2

C#

他人が書いた乱数生成のコードを読んでいたところ、 前回自分が書いたものと違う実装をしていたので改めていろいろと調査。 www.f-sp.com 問題のコード 異なる実装となっていたのは整数の乱数から[0,1)の範囲の実数の乱数を生成するコード。 前回自分が書い…

乱数生成の備忘録

C#

以前書いた疑似乱数生成コードの修正作業をしたので、その際に調べたことや考えたことのメモ。 基本的に自分用なので雑。 動機と方針 System.Randomのアルゴリズムは古めで偏りがある。 Knuthの減算法。 再現性の問題があるので今後も変わることはなさそう。…

【Unity】 Rigidbodyの回転方法

Rigidbody(剛体)の移動方法については以前書きましたが、回転方法については書いていなかったので今更ながらまとめてみます。 まあ、移動方法とそんなに変わらないんですが・・・。 www.f-sp.com 準備 説明の簡略化のため、本記事内では下記の記号は特別な…

【Unity】 Quaternionの使い方

Quaternion(クォータニオン、四元数)はUnityでオブジェクトを回転させる際に必要となる数です。 Quaternionの理論自体は非常に数学的で難しいのですが、Unity上で使うだけであればいくつかの特徴を覚えるだけで比較的容易に利用できます。 この記事では、Q…

【Unity】 Quaternion API解説

Quaternion(クォータニオン、四元数)は回転操作において重要な数です。 しかし、回転という操作がなかなか想像しづらいことや、Quaternionの扱いに少し癖があることなどから、 結構ハマりやすいところだと思います(というか、自分がよくハマります)。 そ…

クォータニオンと回転

クォータニオン(四元数、Quaternion)は3Dグラフィックスのプログラミングにおいて回転を表す数としてよく出てきます。 曰く、 サイズが小さい(回転行列よりも少ない数で表せる) ジンバルロックが起きない 補間が容易 とのことで、非常に便利な理論です。…

はてなブログテーマ "Notebook" のカスタマイズについて

Windows10のCreators UpdateにてEdgeがアップデートされ、 モダンブラウザのほとんどがCSS-Variablesという仕様に対応したため、 はてなブログテーマ"Notebook"のカスタマイズが容易になりました。 IEや古いAndroidブラウザ、Opera MiniなどはCSS-Variables…

【Unity】 Matrix4x4の罠

Matrix4x4でとてつもなくしょうもないバグにハマったのでメモ。 問題コード 何気なくこんな感じのコードを書いて、「あれ?」となりました。 using UnityEngine; public class MatrixSample : MonoBehaviour { private void Start() { transform.position = …

【Unity】 SmoothDampの謎

ユニティちゃんのリパッケージ作業中、SmoothDampの挙動がどうも自分の理解と違うことに気づいたので調べてみました。 www.f-sp.com SmoothDampとは? スクリプトリファレンスによれば、 Gradually changes a vector towards a desired goal over time. The …

Unityと改行コード

Visual Studioを利用してUnityのスクリプトを書いているとよくこんな警告が出ます。 There are inconsistent line endings in the 'Assets/XXX.cs' script. Some are Mac OS X (UNIX) and some are Windows. This might lead to incorrect line numbers in s…

ツクールMVでローグライク-ライクなゲームをツクった話

ふと「ツクールMV買ったのにゲームひとつもツクってないな」と気づき、衝動的にゲーム制作。 一週間くらいでできるかな、とか考えていたのですが、どうやらRPGの設定項目の多さを甘く見過ぎていたようです・・・。 結局、倍の二週間をかけ、とりあえず動い…

ユニティちゃんをRe-パッケージング!!

味気ないサンプルに華を添えてくれる存在として当ブログでもお世話になっているユニティちゃん。 非常にありがたい存在ではあるのですが、いざパッケージをインポートしてみるといろいろと問題が多いことに気が付きます。 そこで、Unity初心者でも簡単に扱え…

TypeScriptでRPGツクールMVプラグイン

RPGツクールMVになってからプラグインの言語がJavaScriptになりました。 しかし、JavaScriptは静的解析がしづらく、開発ツールによるサポートが効きづらいのは誰もが知るところ。 そこで、JavaScriptの代替言語AltJSの中でも人気の高いTypeScriptでツクール…