プログラミング指南 - Code Knowledge

ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 2022年6月21日よりカテゴリをプログラミングからオヤジの日記に移動しました。最近とんとプログラムの話をしていないので💦 ※ livedoor Blogの機能をまだよく分かっていないので変わるかも(汗

カテゴリ:Programming > Algorithm

ゲームでよく使われる迷路自動生成の考え方の解説です。今回はペンゴのゲーム開始で有名な穴掘り法と呼ばれる方法で解説します。あと、最後に部屋も配置してしまいましょうか。説明を簡単にするため、二次元配列を用います。-1 なら壁です。説明は C言語で進めます。では始め ...

PlayStation(以下PS1と略す)で採用された高速化技術オーダリングテーブル。この考え方は今でも十分高速化に貢献する考え方です。今回はこの仕組みを説明していきます。動作原理オーダリングテーブル(Ordering Table)は PS1 の基幹描画システムとして実装されました。略し ...

最初にお断りしておきますが、私が作るゲームはたぶん物理計算はまともにはしないです。正確な物理演算はシミュレータなので。私がこだわるのはあくまでもゲーム的に楽しいかどうかだけですね。その上で、物理演算だと見た目が楽しければ採用するって感じですかね。その上で ...

データを無圧縮でなるべく小さくするには、まるごと保存を極力無くす事ですね。それは例えば一つ前のデータからの差分にするとか、データがある場所だけ位置情報と共に覚えるようにするだとか、そのデータの特性を利用して無駄を見つけて潰していきます。まあ、これは広義の ...

現在作成進行中のマップエディタで、実行速度が遅い箇所がありました。それが以下のプログラム部分です。 for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { var id = rscGrd.Areas[x + rcChr.X, y + rcChr.Y]; ...

現在私が制作中のマップエディタで、部分消去という処理があります。この部分消去は、同じパーツが隣接していた場合に、それを間引くという機能も実装しようとしてました。そのとき、最初のコードからは 40% 程度までは高速化できたのですが、それをTwitterでもっと速くなら ...

float の値に小数が含まれているかの判定のお話です。一瞬、どうやるんだっけと思ってしまうこの判定方法ですが、分かってしまえばなあるほどと納得。ですが、突き詰めていったら、いろんな実装方法が見つかって…。 キャストするキャストすると、実数は強制的に整数に置き ...

C++ や C# では、プログラミングの根底にオブジェクト指向という考え方があります。これを意識できているか否かで、プログラム全体の見通しがかなり変わります。今回はこのオブジェクト指向という考え方を解説してみます。まずは構造化プログラミングここで仮に自動車を走ら ...

前回の C# リソースを使い回すの時に、処理が遅い例としてマップの配置データの順番で表示する処理を紹介しました。この遅い理由がループの途中で Bitmapリソースの作成と解放をしているためでした。この遅い処理を事前に処理しておくとどうなるのかというプログラム例です。 ...

Unity等で描画の高速化をする際によく言われるのが、ドローコールを減らすという対応です。これは描画処理を呼び出す回数を減らすという意味です。実際にはそれぞれのケースで全く対応方法は異なりますが、ここではリソースの使い回しを例として、実際にどのような内容で、ど ...

↑このページのトップヘ