カテゴリー
ゲーム

Influence – 囲碁風ヘックスボードゲーム

Influence(影響) は、囲碁の影響を強く受けた新しいボードゲームです。

ウェブページ一枚に収まる盤面で、コンピューター対人間、あるいはコンピューター対コンピューターで遊ぶことができます。

囲碁の白黒の代わりに緑と青。盤は正方形ではなく六角形(ヘックス)をベースとしたもの。ここに交互に自分の色を打っていき、盤面をより多く支配した方が勝ちというところまでは囲碁と同じです。

囲碁と違うのは、取ったヘックスからある程度の影響力(influence)が周辺のヘックスに漏れ出していくこと。ターンが進むごとに周囲から集まったパワーがヘックスの色を濃くしていき、一定のパワーを越えるとそのヘックスに新たに打ち込むことはできなくなります。この状態ではヘックスの周囲が黒く縁取りされます。

周囲を敵に囲まれてパワーが減ったら、縁取りが消えて相手が上書きできるようにも。互いに打ち合ってすべてのヘックスが確定状態になったら、相手より多くのヘックスを支配していたプレイヤーの勝ち。

歯車ボタンから行ける設定画面では、ユーザー対ユーザー、コンピューター対コンピューターなどの指定や、コンピューターの場合のAIの3段階の強さを変えることができます。

そのヘックスでの「影響力」の大きさは数値ではなく色の濃さで表現されるため、次に自手を打ったらどこがどう変わるかを正確に読むのは難しそうです。ここを色で「感じ」としたままにするか、内部の数値をはっきりだすか、については Hacker News で作者とユーザー達が議論を進めていたりします。議論中では「影響」が周囲のヘックスに漏れる量や、周囲が黒太線になって打ち込めなくなる閾値の具体的な数値についても明かされています。

まだフィードバックを受けてルールも盤面も変わっていきそうですが、提案が多く寄せられているところからも面白いと思った人が多そうなのがわかります。囲碁や将棋のように実体の駒ありきであれば0か1かという結果しか表しにくいですが、最初からコンピューター上で動いていることから、影響力の伝播をパーセント単位で調整できたり、一手指すごとに盤面の全部のヘックスの影響力を再計算したりできるのは可能性を感じますね。(コンピューターと切り離したボードゲームに移植することは難しくなりますが)

via Hacker News

カテゴリー
ゲーム

Oh My Git! – git の使い方を学べるゲーム

Oh My Git! は、バージョン管理ツール git の使い方を学ぶためのゲームです。

中央にgitツリーのグラフが表示され、手元にはgitコマンドを表すカードが配られます。

カードを使わずに右側のターミナルでコマンドライン操作することも可能。お題で出てきた課題を満たすためのカード/コマンドを正しく実行すると、右側の達成項目が緑に反転し、すべて達成すればそのレベルはクリアです。

commit を指定し、そこにカードを捨てることでカード上のコマンドを適用。

levels にあるステージ一覧から、好きな項目について遊ぶことが可能です。

カードを使っても解けますが、コマンドラインで解くと右端のボックスを黄色にすることができます。

ソースコードは GitHub で公開されていて、バイナリ版も Windows, MacOS, Linux 向けに提供されています。

テキストファイルで新たなlevelを自作することも可能で、必要な学習項目が無ければ追加することもできるようです。

作者の二人による紹介動画

git を学ぶためのサイトはこれまでもいろいろ出ています。それだけ初めて使う時は難しさがあるんでしょうね。また、普段gitを使っていても自分が日常的に使わないコマンドについては全く知らない、なんてこともあるので、このようにlevelで網羅されているとそういった知らないコマンドの勉強にもなりそうです。

via Hacker News

カテゴリー
ゲーム

Minecraft HDL – Verilog-HDLからマインクラフト内に論理回路を作るツール

MinecraftHDL は、カナダ・マギル大の学生3人による卒業論文で制作された、ハードウェア記述言語で定義した論理回路をマインクラフト内のレッドストーンを使った「動く」回路に変換するツールセット(digital synthesis flow)です。

レッドストーンは、マインクラフト内で電流を通す電線のように使えるアイテム群のことで、ブロックの組み合わせで電子回路のような論理回路を作ることができます。

サンプルから、以下のVerilog HDLの設計コード


  module sevenseg (
      input I1, I2,
      output S1, S2, S3, S4, S5, S6, S7
  );
  
  assign S1 = ~I2 | I1;
  assign S2 = 1;
  assign S3 = ~I1 | I2;
  assign S4 = ~I2 | I1;
  assign S5 = ~I2;
  assign S6 = ~I1 & ~I2;
  assign S7 = I1;
  
  endmodule

が、こんなレッドストーン回路に変換されるそう。(右側の巨大な7セグメントディスプレイは、出力を見やすく表示するために手動で作成されたものです。)

上記のコードは、2つの入力ビットに対し、入力に応じた7個の出力ビットを出すもので、要は2bitsの値に応じてデジタル数字に必要な7か所の線をオンにするかオフにするかを演算させるものです。

この回路が作動している様子がこちら。

手前の二つのスイッチが上位ビット・下位ビットになっていて、上が0、下が1のようです。二つのスイッチを組み合わせて0-3の値にセットすると、遠くにある巨大ディスプレイがそれに応じた数字を表示していますね。

なんで2bitsなのかというと、0-9まで表示させる回路を作ると大きくなりすぎるから、だそうです。単純な回路以上のものを変換させると、マインクラフト内にロードできるブロック数の上限を超えてしまうということ。

また、現バージョンではフィードバックループを持てないため、メモリやカウンタなどは作れないそうです。

via Hacker News