先日公開したブラウザゲーム「2D物理エンジンレースカー進化シミュレーター」ですが、
身近な人から「何が面白いのかよくわからない」と言われてしまいました。
せっかく楽しめるゲームなのに、一人で面白さを独占するのはもったいない!そこで、少しでもその魅力を伝えられればと思い解説編の記事を書きました。

遺伝的アルゴリズムの概要

遺伝的アルゴリズムについて詳しく知りたい方は、Wikipediaが参考になります。
遺伝的アルゴリズム – Wikipedia

簡単に説明すると、遺伝的アルゴリズムは「強い個体を選んで次の世代に引き継ぐ」仕組みです。

たくさんの個体(ここではレースカー)を作って競わせ、その中で特に優れたものを選びます。
そして、それらを掛け合わせることで、次の世代はより強くなっていきます。
このプロセスを繰り返すことで、どんどん進化していくのが特徴です。

2D物理エンジンレースカー進化シミュレーターへの遺伝的アルゴリズムの適用

遺伝的アルゴリズムを利用するには、遺伝情報を持つ「遺伝子」が必要であり、それを「掛け合わせる」ことができなければなりません。

しかし、複雑なアルゴリズムそのものを遺伝情報として扱うのは難しそうだったため、まずは簡易的な走行ロボットを作成し、いくつかのパラメータだけで動作するアルゴリズムを組み込みました。

以下が実際の遺伝情報(遺伝子)のコードです。
(さらに…)

「顔で月面着陸チャレンジ」を公開いたしました!
https://takabosoft.github.io/face-moon-challenge/

iOS/Androidのブラウザで実行できます。アプリをインストールする必要はありません。

是非是非遊んでみてください~。
インカメラの映像を背景に映すこともできますので、YouTubeのショート動画やTikTokのネタに困っている方も是非利用してみてください。

※PCブラウザでもカメラがあればChromeで動作いたします。

「レイトレーシング」をご存知でしょうか?

最近のグラボやPS5などでもリアルタイムでレイトレーシングが使えるようになり、言葉自体は良く聞くようになりましたが、いまいち何をしているのかピンと来ていないプログラマーの方もいらっしゃるのではないでしょうか。

私たちが物を「見る」ためには、光が光源から放たれ、さまざまな場所で反射し、最終的に目に届いた光の色を知覚する必要があります。
レイトレーシングはそんな目に届いた光の軌跡を逆算し、どこからやってきたのかを求めることでよりリアルな色をシミュレートするアルゴリズムです。

で、なんとこのアルゴリズムやプログラムは「週末レイトレーシング」(英語タイトル:Ray Tracing in One Weekend)として無料で公開されているのです。
https://raytracing.github.io/

めちゃくちゃ良い時代になりましたね・・・。
筆者は学生時代にレイトレーシングに一度興味を持ちましたが、なかなか参考書などを入手することができず入門すらできないでおりました。
数十年経って入門できる日が来ることになろうとは。

さて、たまたまGLSLというシェーダープログラムの入門をしていたのですが、今回はGLSLの勉強を兼ねてレイトレーサーをWeb上で動かしてみました。

DEMO ※まぁまぁ重いです。

いかがでしょうか?

屈折や反射などがとても綺麗にレンダリングされているのがわかるかと思います。
計算だけでリアルな画像が作れるって凄いですよね。
実際に作って綺麗な画像が出ると「おお!」ってなります(笑)

是非、興味を持たれた方は週末レイトレーシングにチャレンジしてみてください(年末年始に是非!)。

—-
ちなみにCPUのみでレンダリングすると、結構な時間が掛かりますが、上のDEMOのようにシェーダーを使えば並列に計算できるため、FPSを稼ぐことができます。
GLSLは反面、クラスや再帰が使えないといった制約もあるため実装が大変ではありますが…

運に任せて何度やっても出なかったので計算機を作りました。
多少誤差は出ると思うので一致しなくても、そういうものだと思ってください(連絡は不要です)。
当たったらラッキー的な感じで使ってもらえると良いかなと思います。

今日はハート無制限の日なので、下一桁チャレンジを一気に片付けたい…!

新年明けましておめでとうございます!

昨年は生成AIが猛威を振るった一年でしたね。
AIが進化していけばソフトウェアエンジニアの仕事なんて無くなると言われて久しいですが、絶滅にはもうちょっと時間が掛かりそうで、未だ廃業せずに頑張っております。

ちなみに私は主にChatGPTを利用していました。
ChatGPTは特にコーディング周りの会話が他のAIと比べてもトップクラスの回答を出してくれる印象があります。
まあ正確性はもともと期待していないのですが、何か同僚のエンジニアに聞きたい事があったとして「忙しい時期にこんな事今更聞くと失礼かな…」と躊躇う瞬間が多々ありますが、ChatGPTにはそんな気をつかう必要が無いのでどんどんいろんな事を聞ける心理的ハードルの低さが大変良いと感じています。

たぶんAIの最大の魅力はそこだと思います。
コミュ力があまり無い自分にとっては最高のツールです(コミュ力のさらなる低下が懸念されます)。

そんなわけで今年もソフトウェアエンジニア、主にフロント方面のコードをChatGPTのお世話になりながら頑張って書いていきたいと思います。
本年もどうぞよろしくお願いいたします。

令和6年 元日

1 2 3 4 5 6 83

記事検索

アーカイブ