星田さんの記事についてのコメント。
実用性ゼロのプログラミング言語として「空白、タブ、改行」なんかで作られた見えない言語とか!面白いこと考える人がいるもんだなぁ
多分それ、Brainfuckの亜種なんじゃないかな。
このブログでもSchemeで書いたBrainfuckコンパイラの話題は取り上げた事があります。
っつーか、一回Brainfuckのインタプリタを書いてみてもいいかもしんない。
仕様はWikipediaに書いてあるヤツで充分だし。
なお、8行ある仕様のうち最後2行のプログラミングは難しい。
何故なら8行のうち、6行は「関数」なんだけど残り2行はANSI Common LispやSchemeで言う「特殊形式」にあたる。つまり、「構文」だ。
多分Lispのマクロ(構文生成機能)を理解するには一回曲がりなりにも構文込みの言語をプログラミングするのは良い経験だとは思うのよね。
Brainfuckは仕様が8行しかないので、一回挑戦してみるには丁度いいプログラミング言語だと思います。
とりあえず今日は宿直のモップがけをしながらマップの自動生成について考える。「12歳から~」では最初にリストとしてマップのデータを手打ちしてたわけだけど、もしも自動生成しようとしたらどうしたら良いのか・・
一番実装が簡単なのは「棒倒し法」と呼ばれる方法論です。これは僕も一回実装したことはあるんですが、ラク。面倒はないですよね。
他は、いわゆるRogue-likeって言われるゲーム類では自動生成迷路が良く使われててノウハウも溜まっているでしょう。
そうです、「不思議のダンジョンシリーズ」、トルネコの大冒険、とかの元ネタですね。
Linuxで動くBSDゲーム集のRogue。ただし、いわゆるRogueは実はオリジナルではなくRogueクローンと呼ばれるクローンゲームであり、オリジナルのRogueは長い間、ソースコードが紛失した、とされていた(最近見つかったらしい)。UNIX生まれとしてその特異な見た目であまりに有名だが、実はこのゲーム、UNIX生まれではなく、Wizardryの元ネタ、Oublietteが動いてたプラットフォーム、PLATOで動いてたゲームのダウングレード移植である。何故にダウングレード移植なのか、と言うと、PLATOのゲームはグラフィック付き、なのにUNIXではグラフィックが扱えなかったから、だ。従って、「Rogueの特異な見た目」は単純に「当時のUNIXの劣った性能のせい」なだけである。
なお、WindowsではここでRogue クローンの日本語版を入手可能だ。
1975年登場のPLATO上で駆動してたゲームDnD。当然商業用ではなく、アメリカの大学でPLATOを使ってた学生が打ち込んだ同人ゲームである。TSRのD&Dが登場したのが1974年なので、翌年には「コンピュータでD&Dをプレイしたい」と思った大学生がいて、自分で実装しちゃった、ってのが驚きである。なお、このゲームや類似するpedit5と言うゲームが総初期のRPGであり、また、最初のRogue-likeである。もうこの時点で「迷路の自動生成機能」を備えていたらしい。と言うのも、コンピュータ・サイエンス的なアルゴリズムがどーの、と言うより、初版のD&Dに「迷路の作り方」と言うサイコロを使ったHow toが載ってたらしく、それを忠実に実装した、と言うのがこのテのゲームの最初の「迷路の自動生成」と相成ったらしい。
1978年にApple II用に発売されたBeneath Apple Manor。初の商業用Rogue-likeである。とは言ってもRogueが発表されたのは1980年であり、Rogue以前のRogue-likeと言う事になる(技術的に言うと、UNIXで端末操作の為のライブラリ、Cursesが登場したのが1980年なので、それ以前だとゲームをプレイしたくて作ったOSの割にはこのテのプログラミングは出来なかった)。
Rogue クローンは様々な派生を生み出した。なお、Nethack以降はダンジョン自動生成法にも改良が加わり、再帰的ダンジョン生成等を行っているらしい(この辺の話はC++用であるが、ソフトバンククリエイティブのダンジョンゲームプログラミングに詳しい)。なお、トルネコの大冒険はRogueだが、風来のシレン以降はむしろNethack以降のRogue-likeの影響の方が大きい模様である。