Tech Notes

>>|
1/8

2Dアクションゲームの坂道判定について

2Dゲームを作るにあたり、頭を悩ませることになるのが坂道の実装である。坂の形状との交差判定自体は別に何も難しくない。 坂を滑らかに登ったり下りたりできるような挙動の実装が難しいのである。

坂道のない、矩形のブロックのみの衝突判定については別の記事で詳述しているので、まずはそちらを読んで欲しい。 (リンク) この記事で解説した「座標軸別移動衝突法」をベースに説明する。

続きを読む

2Dゲームの衝突判定と座標軸別移動衝突法(仮称)について

近年ではゲームエンジンの普及により、いたく立派な物理エンジンが気軽に使われるようになって久しい。しかし主人公が着地したとか壁にぶつかっただとかの判定は、長い間それぞれのゲーム開発者が自分の手でちょちょいと実装してきたもののはずではなかったか。

そのような自作は今も有力な選択肢であることは間違いない。また、プログラミングの入門としても恰好の題材であるように思われる。

一方で実際のところ、その実装についてネットで調べてみると悩みの声も多く目につく。思うに、実装にどんなバリエーションがあってどこさえ外さなければいいのかとか、そういうところが整理されていないのである。

この記事では最もシンプルで実装が楽な方法を紹介する。誰も名前を付けている人が居ないので、仮に「座標軸別移動衝突法」と呼ぶことにした。

続きを読む

軽量高速テキストエディタ「Lapce」が普通に日本語打てるようになっていた件

丁度1年前くらいにこのブログで取り上げた「Lapce」というエディタが大幅に改善していた。 具体的には、普通に日本語が打てるし表示できるようになった。 今もLapceでこの記事を執筆している。

去年時点ではここが本当にネックだったので目覚ましい改良だ。また、「最小化すると一発で落ちる」というバグもなくなっていた。

2024年現在、「Lapce」で日本語Google検索すると前述の記事が2~3番目くらいに出てくるのだが、その記事の内容が致命的に古いのはさすがにどうかと思ったので、現在の機能性を再度レビューしてみる。

続きを読む

C++のstd::functionは遅いらしいのでもっと高速なコールバック機構を考えてみた

C++で開発をしていると時折悩むのが、「関数を受け取る場合どのように受け取り保持するか」という問題だ。C++にはこれに対する解が3つほどある。 悩むというのは実現できなくて悩むのではなく、どれを使って実現するかを悩むのである。

  1. 関数ポインタで受け取る。
  2. テンプレートで受け取る。
  3. std::functionで受け取る。
続きを読む

ConoHaがGPUを提供し始めたので早速Vulkanで叩いてみた

この記事はConoHa Advent Calender 2023 14日目の記事です。

あのConoHaがGPUを提供し始めたらしいともっぱらの噂。 GPUをC++で直接殴る話を書いている人間としては聞き捨てならないので早速申し込んで使ってみました。

近頃の若者はGPUと言えばPythonだ、NumPyだ、CUDAだ、などと言うばかりで嘆かわしい限り。ここはひとつ、OSやGPUベンダに依存しないC/C++向け低レイヤ開発APIたるVulkanで触ってみなければなりません。

続きを読む

Android NDKでvcpkgのopenal-softを入れるとお亡くなりになる件

本当に原因究明がだるかったので残しておきたい。

そもそもAndroid NDK上でvcpkgを使う方法についてもネット上に情報が少ないので解説しておきたいところだが、それはこの記事では一旦置いておく。

注: このページの記述は2023/10/28時点の情報です。今後openal-softのバージョン更新に従って情報は古くなる可能性があるためご注意ください。

続きを読む

アンドゥ/リドゥ(元に戻す/やり直し)の実装

テキストエディタ然りペイントツール然り、何かしらのデータや作品の編集ソフトを利用するならそこに「Ctrl+Z」の存在を期待してしまうのは現代人の性である。 その手のツールを実用的に開発するならば、やはり「元に戻す」を真面目に実装することを迫られよう。

最近実際にそういう実装をやってみたことがあったので、そこで得られたアンドゥ・リドゥ実装の知見を書き留めておく。

続きを読む
>>|
1/8