農家は Replace() されました
開発: Timon Herzog, 販売: Metaroot, Timon Herzog
まあまあ(10点)
2026年2月23日
コードを書いて農業用ドローンを動かして作物を育てたりするプログラミングゲーム。
物資の生産を工場みたいに自動化するゲームSatisfactoryがおもしろくて三百時間近く遊び、いったん満足してもういいやとなったんだけど、Googleのニュースフィードをつまみ読みしていたらこのゲームの紹介記事が流れてきて、工場シムよりも生のコードを書いて自動化するゲームの方がおもしろいんじゃないかと思って遊んでみた。おもしろかった。
このゲームの一番すごいところは、導入がしっかりしていてUIもシンプルでわかりやすく、すんなりコードを書いて遊べることだと思う。
一応言っておくと、ここで言うコードっていうのはプログラミング言語で書くものを指す。Pythonというメジャーなスクリプト言語をベースにちょっと簡単にしたものでコードを書いて農業用ドローンを自動制御する。
まず最初は農地が1マスしかなくて、草が生えていてその上をドローンが宙に浮いている状態から始まる。使える関数はharvestだけで、画面に置いてあるウィンドウの中にharvest()と書いて再生ボタンを押すと、ドローンが草を刈ってくれる。これだけ。
ちなみにharvestの後ろの()は関数として呼ぶという意味で、ちゃんとそういう基本的なことからヘルプが出てきて解説してくれる。
これだけだと再生ボタンを手で押し続けないとならず、まだ自動ではなくて手動になってしまう。何回か草を刈ると、whileというループ(繰り返し)の制御構造をアンロックできる。このゲームにはテクノロジーツリーがあって、一つ一つテクノロジーを解放していくことによって新たな要素が追加されるようになっている。whileを解放するにはいくつか草が必要になる。
もう細かい順序は忘れたけれど、次は農地が広がっていき、ドローンを移動させるコマンドが使えるようになる。そんな感じで変数やif文などのプログラミング要素もどんどん解放されていく。
でこのゲームで結局なにができるのかというと、自分の農地のなかで様々な作物を効率よく育てて収穫していくこと。それだけ。ステージもなければ障害物や敵もいない。農地というキャンパスで好きなように作物を育てるだけ。正直言ってこの点が一番拍子抜けだった。
草は刈ったらそのうちまた生えてくる。次は茂みを植えて育ったのを刈ると材木が手に入る。要するに収穫までにひと手間かかるようになる。また、茂みではなく木を植えるともっと材木がとれるんだけど、東西南北に他の木があると生育速度が倍々で遅くなってしまう。隣り合わせにならないよう木を植えるにはどうしたらいいか?
ニンジンは草の上には直接植えられないので、いったん耕す必要がある。また、植えるには草と材木を消費する。
カボチャは隣り合っていると正方形の単位で合体して大きくなるけど、2割の確率で枯れてしまうので合体させたければ枯れたものを一度刈って植えなおす必要がある。大きければ大きいほど収穫量が倍々で増えていく。
サボテンは育ち方にムラがあって、小さいものから大きいものまでが南西から北東にきれいに長方形にならんでいたら一度に収穫できて量も倍々に増える。プログラミング経験のある人は気づくと思うけど、ここでソート(並び替え)という露骨な要素が出てくる。
ここからは作物じゃないものも出てくる。恐竜の帽子をかぶるとなぜか農地にリンゴがランダムで一つずつ出てくるようになり、リンゴを食べれば食べるほどドローンが移動したあとにしっぽが伸びるようになり、自分自身のしっぽに移動をさまたげられないようにリンゴを食べていくゲームになる。帽子をぬぐとしっぽの長さに応じてなぜか骨が手に入る。この骨を使って解放できるテクノロジーがある。
作物の成長速度や収穫量を増やすためのテクノロジーも出てくる。水をやると生育が早くなるけど、無制限に使えるわけではないし、一度やった水はしばらく土壌をうるおし続ける。肥料は作物を一瞬で育てられる代わりに病気にしてしまい、収穫物の半分が「奇妙な物質」になってしまう。この状態でさらに作物に「奇妙な物質」をやるとその作物の病気が治るかわりに東西南北の作物を病気にしてしまう。
茂みに対して「奇妙な物質」を使うとその量に応じた大きさの迷路ができて、その中にある宝箱を取ると財宝が手に入り、これまたテクノロジーツリーの中で解放できるものがある。なお、ドローンは空中を飛んでいるのに迷路の壁は飛び越えられないw
迷路の探索はプログラミングの初心者には難しそうに思えるけど、ヘルプで具体的なコードまでつけて説明してくれており、コピペだけで最低限のコードは書けるほか、なんなら探索なんてしない方法もあってそれもちゃんとヘルプに書いてある。
混作といって作物を植えるたびにその作物の好みに従って特定の場所に特定の作物を植えると何倍もの量を収穫できるようになる要素も開放できる。
このゲームにクリアという概念はないけれど、実質クリアに相当するのがテクノロジーツリーの全解放だと思う。それのSteamの実績は現時点で1.2%だったw
次にプレイヤー間でのランキングに挑戦することができる。いくつものレギュレーションがあって、世界でタイムを競うようになっている。
以下、批評に入る。
ちょっとした発想をコードに落とし込むことでうまいことドローンを制御できるのが楽しかった。スクリプト言語でさくっと書ける。多くのコードは一画面に収まった。まあ書いていくうちに長くなってしまったこともあるけど、それでも自分は二画面分もあるようなコードは書かなかった。
プログラミングできる範囲が絶妙だと思う。あまり複雑なことはできないようになっている。たとえば自分は恐竜で骨集めをしていたときに、試しに農地全体としっぽをリストで管理し、移動するたびに経路の計算をするコードを組んでみたら、遅すぎて使い物にならなかった。地道にプログラミングして大規模なコードを書くのはさすがに面倒だし、そういうのを求めるようなゲームデザインにしていないのはいいことだと思う。まあそういうモードがあってもいいと思うけど。
クラスがない。どうしてもクラスみたいなものを書きたければ、辞書(map)と関数を組み合わせればいいらしい。関数を作って返す関数が使えるのでクロージャ(関数の中に静的変数等の環境を含めたもの)が使えるのだけど、なにやら正確には動いてくれないことがあるらしい。
迷路のうまい攻略方法を自分は結局思いつくことができなかった。テクノロジーツリーを解放することにより複数のドローンを使うことができるようになるのだけど、迷路を作る前に適度にドローンをバラまいておくぐらいしかできなかった。迷路は300回まで再利用できるので、ちょっと時間をかけてもいいから一度構造を覚えさせることにより効率のいい解き方ができるらしいんだけど、ちょっと面倒くさくなってやる気になれなかった。それに、ドローンのセンサーは真下と東西南北1マスまでしかないので、それ以上の情報が欲しかったら移動させるしかなく時間が掛かった。結局、ヘルプに書かれていたやり方を複数のドローンにやらせるのがせいぜいだった。
恐竜もいくつかアイデアを出して工夫してみたけど、結局ヘルプに書かれていたやり方が一番だった。動画サイトYouTubeで調べてみたらちょっとしたアイデアでいい感じに解いていた人がいてなるほどと思ったんだけど、その人も結局はヘルプのやり方でやっていた。
ネタバレになるので詳しくは書かないけれど、いわゆる「リセマラ」が有効に働いてしまうのはどうなんだろうと思った。まあ思いついた人が頭良かったってことでもいいと思う。
複数のドローンを扱えるんだけど、マルチスレッドというよりはマルチプロセスつまり変数の共有ができなかった。ちょうどUnixで言うところのfork()の動作に近く、spawn_drone(f)を実行すると関数fを実行するドローンが新たに生成される一方で、既存のドローンは後続のコードが実行される。ドローン同士で情報を共有してやりとりするためにグローバル変数を使おうとしたら、どうやらそのグローバル変数自体もコピーされてしまい無理だった。もちろんパイプによる通信やセマフォなどの共有メモリのしくみもなかった。それぞれのドローンは完全に独立して動く。
Pythonライクな言語でコードを書くのが初めてだったのでいい練習になった。最近AI関連の記事を読むと大抵コードがPythonで書かれているのでなじみはあったのだけど、自分はいままでインデントの長さでブロックをあらわすことに拒否反応があったので書いたことがなかった。実際に書いてみると、そもそも長いブロックを書くこと自体が無駄なので、インデントでさくっと手短かにブロックを記述するPythonの哲学は悪くないと思った。
ちょっと脱線すると、RubyがPythonに負けて覇権を取れなかったのが自分には不思議でしょうがなかったんだけど、Rubyの哲学がプログラマーズファーストつまりプログラマーにとって心地よく好きなようにコードを書けることを目指していたせいで「書くのは気持ちいいけど読むのはちょっと手間」なところがオープンソースソフトウェアでの使用を妨げたと思う。
他の人のレビューを読んでいてこのゲームの内容が薄いと言っている人がいて、最初自分もそのとおりかもと思っていたけど、なんだかんだで割と遊べたと思う。放置の時間を除くと二十数時間ぐらいプレイした。定価が1,200円で、自分はセールで20%オフで960円のときに買った。
フルセットのプログラミング言語でクラス設計してそれなりにしっかりしたコードを書くのではなく、スクリプト言語でサクッと書くのが好きな人にはそれなりに楽しめると思うので、気になったらプレイしてみるといいと思う。
物資の生産を工場みたいに自動化するゲームSatisfactoryがおもしろくて三百時間近く遊び、いったん満足してもういいやとなったんだけど、Googleのニュースフィードをつまみ読みしていたらこのゲームの紹介記事が流れてきて、工場シムよりも生のコードを書いて自動化するゲームの方がおもしろいんじゃないかと思って遊んでみた。おもしろかった。
このゲームの一番すごいところは、導入がしっかりしていてUIもシンプルでわかりやすく、すんなりコードを書いて遊べることだと思う。
一応言っておくと、ここで言うコードっていうのはプログラミング言語で書くものを指す。Pythonというメジャーなスクリプト言語をベースにちょっと簡単にしたものでコードを書いて農業用ドローンを自動制御する。
まず最初は農地が1マスしかなくて、草が生えていてその上をドローンが宙に浮いている状態から始まる。使える関数はharvestだけで、画面に置いてあるウィンドウの中にharvest()と書いて再生ボタンを押すと、ドローンが草を刈ってくれる。これだけ。
ちなみにharvestの後ろの()は関数として呼ぶという意味で、ちゃんとそういう基本的なことからヘルプが出てきて解説してくれる。
これだけだと再生ボタンを手で押し続けないとならず、まだ自動ではなくて手動になってしまう。何回か草を刈ると、whileというループ(繰り返し)の制御構造をアンロックできる。このゲームにはテクノロジーツリーがあって、一つ一つテクノロジーを解放していくことによって新たな要素が追加されるようになっている。whileを解放するにはいくつか草が必要になる。
もう細かい順序は忘れたけれど、次は農地が広がっていき、ドローンを移動させるコマンドが使えるようになる。そんな感じで変数やif文などのプログラミング要素もどんどん解放されていく。
でこのゲームで結局なにができるのかというと、自分の農地のなかで様々な作物を効率よく育てて収穫していくこと。それだけ。ステージもなければ障害物や敵もいない。農地というキャンパスで好きなように作物を育てるだけ。正直言ってこの点が一番拍子抜けだった。
草は刈ったらそのうちまた生えてくる。次は茂みを植えて育ったのを刈ると材木が手に入る。要するに収穫までにひと手間かかるようになる。また、茂みではなく木を植えるともっと材木がとれるんだけど、東西南北に他の木があると生育速度が倍々で遅くなってしまう。隣り合わせにならないよう木を植えるにはどうしたらいいか?
ニンジンは草の上には直接植えられないので、いったん耕す必要がある。また、植えるには草と材木を消費する。
カボチャは隣り合っていると正方形の単位で合体して大きくなるけど、2割の確率で枯れてしまうので合体させたければ枯れたものを一度刈って植えなおす必要がある。大きければ大きいほど収穫量が倍々で増えていく。
サボテンは育ち方にムラがあって、小さいものから大きいものまでが南西から北東にきれいに長方形にならんでいたら一度に収穫できて量も倍々に増える。プログラミング経験のある人は気づくと思うけど、ここでソート(並び替え)という露骨な要素が出てくる。
ここからは作物じゃないものも出てくる。恐竜の帽子をかぶるとなぜか農地にリンゴがランダムで一つずつ出てくるようになり、リンゴを食べれば食べるほどドローンが移動したあとにしっぽが伸びるようになり、自分自身のしっぽに移動をさまたげられないようにリンゴを食べていくゲームになる。帽子をぬぐとしっぽの長さに応じてなぜか骨が手に入る。この骨を使って解放できるテクノロジーがある。
作物の成長速度や収穫量を増やすためのテクノロジーも出てくる。水をやると生育が早くなるけど、無制限に使えるわけではないし、一度やった水はしばらく土壌をうるおし続ける。肥料は作物を一瞬で育てられる代わりに病気にしてしまい、収穫物の半分が「奇妙な物質」になってしまう。この状態でさらに作物に「奇妙な物質」をやるとその作物の病気が治るかわりに東西南北の作物を病気にしてしまう。
茂みに対して「奇妙な物質」を使うとその量に応じた大きさの迷路ができて、その中にある宝箱を取ると財宝が手に入り、これまたテクノロジーツリーの中で解放できるものがある。なお、ドローンは空中を飛んでいるのに迷路の壁は飛び越えられないw
迷路の探索はプログラミングの初心者には難しそうに思えるけど、ヘルプで具体的なコードまでつけて説明してくれており、コピペだけで最低限のコードは書けるほか、なんなら探索なんてしない方法もあってそれもちゃんとヘルプに書いてある。
混作といって作物を植えるたびにその作物の好みに従って特定の場所に特定の作物を植えると何倍もの量を収穫できるようになる要素も開放できる。
このゲームにクリアという概念はないけれど、実質クリアに相当するのがテクノロジーツリーの全解放だと思う。それのSteamの実績は現時点で1.2%だったw
次にプレイヤー間でのランキングに挑戦することができる。いくつものレギュレーションがあって、世界でタイムを競うようになっている。
以下、批評に入る。
ちょっとした発想をコードに落とし込むことでうまいことドローンを制御できるのが楽しかった。スクリプト言語でさくっと書ける。多くのコードは一画面に収まった。まあ書いていくうちに長くなってしまったこともあるけど、それでも自分は二画面分もあるようなコードは書かなかった。
プログラミングできる範囲が絶妙だと思う。あまり複雑なことはできないようになっている。たとえば自分は恐竜で骨集めをしていたときに、試しに農地全体としっぽをリストで管理し、移動するたびに経路の計算をするコードを組んでみたら、遅すぎて使い物にならなかった。地道にプログラミングして大規模なコードを書くのはさすがに面倒だし、そういうのを求めるようなゲームデザインにしていないのはいいことだと思う。まあそういうモードがあってもいいと思うけど。
クラスがない。どうしてもクラスみたいなものを書きたければ、辞書(map)と関数を組み合わせればいいらしい。関数を作って返す関数が使えるのでクロージャ(関数の中に静的変数等の環境を含めたもの)が使えるのだけど、なにやら正確には動いてくれないことがあるらしい。
迷路のうまい攻略方法を自分は結局思いつくことができなかった。テクノロジーツリーを解放することにより複数のドローンを使うことができるようになるのだけど、迷路を作る前に適度にドローンをバラまいておくぐらいしかできなかった。迷路は300回まで再利用できるので、ちょっと時間をかけてもいいから一度構造を覚えさせることにより効率のいい解き方ができるらしいんだけど、ちょっと面倒くさくなってやる気になれなかった。それに、ドローンのセンサーは真下と東西南北1マスまでしかないので、それ以上の情報が欲しかったら移動させるしかなく時間が掛かった。結局、ヘルプに書かれていたやり方を複数のドローンにやらせるのがせいぜいだった。
恐竜もいくつかアイデアを出して工夫してみたけど、結局ヘルプに書かれていたやり方が一番だった。動画サイトYouTubeで調べてみたらちょっとしたアイデアでいい感じに解いていた人がいてなるほどと思ったんだけど、その人も結局はヘルプのやり方でやっていた。
ネタバレになるので詳しくは書かないけれど、いわゆる「リセマラ」が有効に働いてしまうのはどうなんだろうと思った。まあ思いついた人が頭良かったってことでもいいと思う。
複数のドローンを扱えるんだけど、マルチスレッドというよりはマルチプロセスつまり変数の共有ができなかった。ちょうどUnixで言うところのfork()の動作に近く、spawn_drone(f)を実行すると関数fを実行するドローンが新たに生成される一方で、既存のドローンは後続のコードが実行される。ドローン同士で情報を共有してやりとりするためにグローバル変数を使おうとしたら、どうやらそのグローバル変数自体もコピーされてしまい無理だった。もちろんパイプによる通信やセマフォなどの共有メモリのしくみもなかった。それぞれのドローンは完全に独立して動く。
Pythonライクな言語でコードを書くのが初めてだったのでいい練習になった。最近AI関連の記事を読むと大抵コードがPythonで書かれているのでなじみはあったのだけど、自分はいままでインデントの長さでブロックをあらわすことに拒否反応があったので書いたことがなかった。実際に書いてみると、そもそも長いブロックを書くこと自体が無駄なので、インデントでさくっと手短かにブロックを記述するPythonの哲学は悪くないと思った。
ちょっと脱線すると、RubyがPythonに負けて覇権を取れなかったのが自分には不思議でしょうがなかったんだけど、Rubyの哲学がプログラマーズファーストつまりプログラマーにとって心地よく好きなようにコードを書けることを目指していたせいで「書くのは気持ちいいけど読むのはちょっと手間」なところがオープンソースソフトウェアでの使用を妨げたと思う。
他の人のレビューを読んでいてこのゲームの内容が薄いと言っている人がいて、最初自分もそのとおりかもと思っていたけど、なんだかんだで割と遊べたと思う。放置の時間を除くと二十数時間ぐらいプレイした。定価が1,200円で、自分はセールで20%オフで960円のときに買った。
フルセットのプログラミング言語でクラス設計してそれなりにしっかりしたコードを書くのではなく、スクリプト言語でサクッと書くのが好きな人にはそれなりに楽しめると思うので、気になったらプレイしてみるといいと思う。