はじプロ言語 HPL v1.0.0

「ナビつき!つくってわかる はじめてゲームプログラミング (© Nintendo)」の記事です。2021年に発売したゲームで前々から気になってはいましたが、ついに先日買いました

最初は普通にナビ付きレッスンのモードで遊んでゲームを進めていきました。個人的には特に定数ノードンがとても好きです。定数の安心感があってかわいい。

ナビ付きレッスンを終えたらフリープログラミングモードで自分でゲーム作って公開したり、逆に人の作ったゲームを遊べるらしいので、早速色々ダウンロードして遊んでいたら、これに出会ってしまいました。

higepine.com

これはただの記憶装置ではなくて、今までカウンター方式しかなかった値の記憶が全く別の仕組み「発振回路」で動いているすごい記憶装置です。 これの良さは省スペースなこと。これによって16個の変数の値の代入と読み出しがよりコンパクトになり、ノードン数上限512のあるこのゲームにおいてとても有用な手法になっています。

調べてみたらこのはじプロ界に革命をもたらした技術、発振回路のおかげで遊びの幅が広がっているようです。

解説はこれがわかりやすい↓

www.youtube.com

このゲーム内ではどうやら1wireあたり1stepのずれが発生するようで、これを応用した方法らしいです。はじプロのゲームは1frame=16stepで動いているため、1描画の間に16回の内部計算がされます。我々に見えるのはこの中のある1step直後の状態なので、これだけで16個の状態を持てていることになります。


記憶装置があるということは言語が作れるということで、独自言語「はじプロ言語 HPL」を作ってみました。ひげぱいん様のサイトで紹介されています。

higepine.com

言語ということは文字を表示できなくては困るのでまず文字出力システムを作ってみます。

文字の表示方法ですが、① ことばつきモノで表示 ② モノにテクスチャをはって表示 の2種類があります。①のことばつきモノは同一ワールドに8体しか置けないというきつい制約があるので不採用にしました。一方、②のテクスチャノードンは128体おけるのでなんとASCIIコード全てに対応できます。やったぜ。

もう一つ問題点があって、複数文字をそれぞれ出力しようとするとあまりにもノードン数が多くなってしまいすぐ上限に到達してしまうので、各モノノードンは使い回すことに。現在のプログラムカウンタが指し示す番号を持つレジスタから文字コードを読み出して、対応する文字テクスチャ付きのモノノードンを拠点近くにワープさせて重力で下に流すという仕組みです。こうしてみると上から下に流れる感じがよりstreamの原義に近い状態になっているかもしれない。

試しにアルファベット大文字だけをサポートして、"HELLOWORLD"を表示するプログラムを書いてみました。今は1〜26をA〜Zにマッピングしています。後々ASCII文字全部に対応させたい。

youtu.be

みんなも自分だけの独自言語を作ろう!