『Replicube』プログラミング言語Luaを使って3Dお絵かきする、異色のプログラミングパズルゲーム
 ぐぬぬ、今年もゴールデンウィークが終わってしまう! そんな日だからこそ、あえてプログラミングで遊んだり、シャバに戻るリハビリをしてみるのもいいんじゃないだろうか。

 Walaber EntertainmentがSteamで配信中のPCゲーム『
Replicube』は、そんな需要(?)を満たすプログラミングを使ったユニークなパズルゲーム。価格は1200円で、対応言語は英語のみ。
広告

プログラミングでお題と同じものを作り出せ

 本作の目標は、提示されたお題と同じ形状・配色の3Dオブジェクトをプログラミング言語だけで作り出すこと。といっても複雑なシェーダー言語などを覚える必要はないし、ゲーム内仕様書を読み込む気合とアレコレ試してみる好奇心が十分にあればプログラミング経験がなくても大丈夫。現に筆者も遊べている。

 使用する言語はLuaをベースにしたもの。お題は整数で区切られたXYZ軸の3D空間内のボクセル(マインクラフトとかでおなじみの立方体の集合)として表現されていて、各ボクセルが17の色と結びついた値(16色+空白のゼロ)を持っているという形。要はLuaで色を変えたい場所を指定してお題に合わせていけばいい。
[IMAGE]
各ボクセルはXYZ座標とカラーコードを持っている。
[IMAGE]
お題によっては座標からカラーコードを導く式を書けることも。

力技で解いても、スマートな解法を目指してもいい

 「早くもお前何言ってるかわかんねぇ」って人もいるかもしれないが、やってみると意外と簡単だ。たとえば(X, Y, Z)がゼロの位置に白(WHITEまたは1)のボクセルを出したいなら、以下の式を書けばいい。

if x == 0 and y == 0 and z == 0 then
return WHITE
end

 これは「x、y、zがそれぞれゼロの場所を白にする」という意味。if文で対象を絞り込んで希望の値に書き換えるというシンプルな操作だ。
そして究極にはコレの応用ができればすべての問題は解ける。同じように何十回も一個ずつ書き換えていけば不格好でも正解だ。
[IMAGE]
もっとスマートな式を書きたいが、地道に書いていけばひとまずクリアーはできる。
 けど、さすがにボクセルを一個ずつ書き換えるクッソ長い式を書くのはダルい。そこでもうちょっと頭と別の機能を使って効率的に広範囲を書き換える式を考えよう、ということになる。

 対象を分割して考えてみたり、数式でスマートな範囲指定を書けないかアレコレ試行錯誤してみたり。良さげな解法が見つかるとリターンキーを「ターン!」と押す力にも力が入るし、より短かったり効率的な式で正解を導いてオンラインランキングの上位に入れた時はちょっとしたハッカー気分だ。
[IMAGE]
あれ、「abs(x)<=abs(y) and abs(z)<=abs(y)」で上下ミラーのピラミッド状にしたつもりがちょっと違うな?
[IMAGE]
試行錯誤して正解「abs(z)<=abs(y)-abs(x)」に到達。やったぜ。あとはyの値に応じて色分けするだけ
 ちなみに、さらなる上級者向けにはお題なしでフリーにコードを書けるモードも用意されているので、アニメーション付きのネタオブジェクト作成などに挑んでみるのもいいだろう。

 というわけで、必ずしもプログラミング経験がなくとも頭の体操的に楽しめる本作。「明日から仕事/学校なのにちょっとでかけるのもなぁ」って人はトライしてみてはいかがだろうか。
[IMAGE]
「タコスの上の一見ランダムなピンク部分を一発で書く式できねぇかな?」とやってみたらできた。別に一個ずつ置いてもいいんだけど気持ちいいぜ!