MinecraftPIのタイマー

少し前に作ってうまくいかなかったタイマーを手直しして、1.1分で0.2秒くらいのずれで実現できた。なにより描画がスムースになったのがよかった。悪かったのは気を利かせたつもりの描画スレッドだった。minecraft_pi_rubyを見てみるとTCPソケットでマイクラと交信していたので、余計なスレッドをなくしたらあっさり動いてくれた。

時間精度の方はLindaのRuby実装であるRindaをタイマースレッドで動かすようにしたことで安定した。お試し以外でRindaを使ったのは初めてだったけど、とっても簡単にできた。もしCPUが混んでもいいように、tapleには表示すべき時刻を秒単位で書くようにしたけど、tapleはdefaultの60秒は残るので、ダメダメ、タイムアウトを変えないと。

マイクラの画面は以下のコードでフラットにしちゃってる。

 mc.set_blocks(-100, 0,  -100, 100, 63, 100, Block::AIR)
 mc.set_blocks(-100, -1,  -100, 100, 1, 100, Block::GRASS)
 mc.set_blocks(-100, -63,  -100, 100, -2, 100, Block::STONE)

これだとあまりに殺風景なので、適当なワールドを作って、ブロックデータを取り出し、それを毎回適用するようにしようと考えている。またタイマーのフォントも気に入らないので、できるだけ綺麗にしたいな。