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

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

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

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

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

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

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

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

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

遺伝的アルゴリズムを使ってレースカーが速くなっていくのを眺めるだけのゲームを作りました。

DEMO:
https://takabosoft.github.io/2d-evolution-racer/
※要PCブラウザ

仕組み自体は結構単純ですが、ちゃんと進化の様子が見られて良かったです!

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

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

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

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

自分がパソコンを使って音楽を作り始めたときにはMIDI音源が主流になっており、FM音源は「名前は知ってるけどどういう仕組みで鳴っているかよくわらかない」ものでした。
そこで、FM音源がどんなものか知るためにFMシンセを作ってみることにしました。

出来たもの↓
https://takabosoft.github.io/tiny-fm-1/
※広いモニターのPCでお試しください。スマホには画面サイズ的に対応していません。

TypeScriptでWeb Audio APIを使ってリアルタイムに周波数変調を行い、サウンドを生成しています。

FMの仕組みについては以下のサイトを参考にさせていただきました。

仕組み自体は非常にシンプルで、FM音源らしい音はたぶん数時間で鳴らすところまで出来たのですが、その後UIで仮想キーボードやらツマミやらエンベロープやらを作っている方が大変でした。
ソフト名に「Tiny」と付けたように、シンセとしての機能としては簡略的なものです。
各オペレーターにアンプリチュードエンベロープこそ付けましたが、ピッチエンベロープ、モジュレーションエンベロープ等、時間で音を変化させる系の機能が全然載っていません。
ただ、あまりUIを複雑にすると経験上迷子になりやすいのでまずは1画面で収まる範囲の機能で完成としました。
(※FM音源を本当に使う方はDAWにお気に入りのFMシンセがインストールされていると思いますし、WebでFM音源を体験する程度であればこのぐらいかなという所です。)

GitHubにソースもありますので、興味のある方はどうぞ。
https://github.com/takabosoft/tiny-fm-1

記事検索

アーカイブ