目的が簡單に成就するなんて さうさうない
大きな山の手前に 小さいけれど 美しい山があつたので登つてみた
さういふことだと 理解してゐる
歴史ゲームを創つてみたいと 思つた
Haskellで グラフィカルな部分を ほとんど考へずに
コンソールのテキスト表示だけ
入力はキーボードだけ BGMなし
それでも 面白いと自分が感じられるものを
自動でマップをランダムに作成したり
ファイルから文章を讀み込み表示させたり
選択肢を選んで 正解すると イベントが變化したり
さういつたことが實現でき
さらに敵とのエンカウントが成功して
いよいよ戰鬪の實装だ といふときに
別のことにハマってしまつた
私が所属してゐる塾で 子供達との會話の中から
ヒントを得て 何とか試してみやう と思つたこと
それは 「エーテル」をシミュレートできないか といふものだ
天文學において 一時期 考案されてゐたもので
光を傳へる媒質 であるが
マイケルソン・モーリーなどの實驗によつて 存在が否定された とされるものである
私は 若干の文献にあたり 若干の考察をした結果
理由は述べないが 「エーテル」は存在するのではないか と思つてゐる
そして つい最近まで 「エーテル」のモデルを
ボールに バネがくっついたやうなもの
と考へてゐた
宇宙空間に 原子よりもずっと小さいレベルの玉があつて
それらが お互ひに 何らかの弾性力によつて結びつき
常に振動してゐるのではないか と
今では (それこそ 「エーテル」をシュミレートしやうとしてゐる今となつては)
次のやうに考へてゐる
ボールは となりのボールと直接くっついてはゐないが
ボール同士が離れやうとすると 引っぱられ
あまり近づかうとすると 引き放される
つまり両者の間にバネがあるかのやうな挙動をする
ボール同士は ある程度の距離をもつと もはや近づかうともせず
なめらかに 自由に動くこともできる
何日か 試行錯誤し Haskellを使つて
ボールとバネのモデルをつくり 一次元の(一直線上にならぶ)
ボールとバネが バネの長さの變化によつて どのやうな挙動を示すか
實驗してみた
何とか 結果が出たところで やはり これを直感的に見える形にしやう
といふことで Hasteを使ひ
ボールがバネの力によつて動くのを 目で見えるやうにした
その後 二次元の(縦方向と横方向のそれぞれにボールが並ぶ)モデルをつくり
函數を設定して バグに悩まされながらも 何とかそれらしきものができたので
ブラウザ上に表現した
しかし これは ボールの個數が多くなるにつれ メモリをかなり壓迫してしまふ
私のディスクトップパソコンの場合 ボールを100個にしてシミュレートすると
途中で動作が止まつてしまふこともあつた
Haste は Haskellコードから javascriptを生成し ブラウザで動作させるために
使ふものと理解してゐる
實行ファイル 何とか.exe によつて グラフィックをそのまま表示させるものではない
といふところで 脳裏に浮かぶのは
だった
Haskellのコードから OpenGLを使ふ 簡單なサンプルコードを試してみたことがあつた
私としては ここに表示されてゐるやうな ごく普通のフォントを
OpenGLを使つて Haskellのコードで表示させたりしたかつたのだが
どうしても やり方が分からず 断念してゐた
Haskell で SDLを使ひ すごい かっこいいゲームを創つた方がゐて
http://questro.jp/blog/lightit-history/
SDL やつてみたかつたのだが
どうしても導入時のエラーが解決できず 断念した
しかし 今私がやつてゐるシミュレーションは
OpenGLなら 結構簡單に實装できるのではないか
と思ひ それなりに チャカチャカやってゐたら
できた
多重リストをマップしなければならないところで
うまく行くか心配だつたが
動いたので 良かつた
これを進めていくと さらに色々なことが出来さうな氣がしてゐる
これでフォントが普通に表示できる方法が分かれば
さらに モチベーションが上がるんだけど・・・
しかし ほどほどのところで 歴史ゲーム制作にも戻つていきたい