最近やったゲームの話:『農家は Replace() されました』
この記事は、東京大学ゲーム研究会アドベントカレンダー2025、23日目の記事です。
はじめに
今年のアドベントカレンダーももう終盤ですね。
相変わらず忙しなく動き回って過労死寸前の、TGA21のヤクガラスです。
例年割とのんびり過ごしていましたが、久しぶりに、ちゃんと「師走」という感じになってますね……。
幸いと、記事執筆者が中々集まらず一時は継続が危ぶまれたこの企画も、なんとか繋がってくれています。
ホッと安堵しつつ、私は毎年のノルマとなりつつある5本目の記事を書いておりますが、やっぱり作業量やネタの量を考えると、これくらいでちょうどいい感じですね。
読み返してみると、今年は例年にも増して個性が垣間見える記事が並んでいますね。
中でも、12/8日の記事では問題作成&回答提示機能を備えたアプリケーションを作ってくれたりと、中々に面白いことをしています。
余談ですが、TGA会員の所属学部はそこそこ多様です。
医学部、文学部、法学部の方もいますが、やっぱり比較的多いのが工学部・理学部で情報系を扱っている方で、このアドベントカレンダーを含めたイベント事では色々と貢献してくれています。
一方の私はと言いますと、薬学部の所属で、いわゆるプログラミングについては初心者ではないものの、自在にアプリケーション開発とまでも行かない「初級者」くらいでしょうかね。
そんな初級者なりにも好みがありまして、C++は比較的馴染みやすい感覚です。
逆に何が嫌いなのかというと、お手軽に扱えるプログラミング言語でお馴染みのPythonですね。
研究で扱う分にはライブラリが充実していていいんですが、利便性の裏で「よく分からない」部分が多く、後から機能を組み替えるときに難儀するのが苦手です。
要は、直感的すぎて原理が分からず、上手く頭に入ってこないんですよね……。
さて、ようやく本題に戻ってまいりましたが、今回はそんな「Pythonプログラミング」に関わるゲームです。
最近、プログラミング学習をゲーム化したものがそこそこの数公開されていますが、個人的な意見としてはどれもバランスが悪く、「ゲームとしてイマイチ」か「プログラミング勉強には向かない」か、という感じです。
そんな中でも、今回紹介するゲームはかなり完成度の高い作品になります。
時間はあるけど面倒な勉強のやる気が起きない若者の皆々様は、ぜひぜひご確認ください。
本日は、『農家は Replace() されました』のお話です~

『農家は Replace() されました』ってどんなゲーム?
このゲームは、今年の10月に個人開発者のTimon Herzog氏が公開したPCゲームです。
不思議なタイトルをしていますが、ゲーム自体もタイトルの通り、「農家をドローンに置き換えて、ドローンに自動で農業をしてもらう」という内容となっています。
プレイ方法は比較的単純で、コンソールタブにpythonを模したコードを打ち込んで、実行するだけです。
このゲームの特徴
このゲームについては、「プログラミングの基礎を学ぶゲーム」という視点での特徴を並べていきます。
段階的・連続的な設計
この手のゲームでありがちな失敗例として、①急に情報リストだけ提示されてどこから見ればいいのか分からない、②一度使ったものが再登場した時に覚えていなくて応用できない、といった面がある印象です。
そのような設計になる背景は色々とありますが、例えばゲームの世界観に無理に統合しようとした結果「求められる処理関数」が上手くかみ合わなかったり、一度に変数や関数など様々な要素を扱うことになったり、といった部分でしょうか。
「関数」とか「変数」に関しては、少しでもプログラミングを触っていれば当たり前の概念ですが、触れたことが無ければそのような構成自体把握できていなこともありえます。
一方で、このゲームではそもそも「ゲーム内で有効な関数」が徐々に解放されていく形で進んでいきます。
最初は本当に単純で、現在座標の作物を収穫する「harvest()」と、その場でひらりとドローンが宙返りする「do_a_flip()」の2種類だけで始まります。
そこから、収穫した作物を消費して新規項目を解放することで、農地が広がって移動のための「move()」関数が使えるようになったり、新しい作物を植える「plant()」関数が使えるようになったりします。
少しずつやることが増えてきたところで「while」や「for」構文が手に入り、一連の流れを自動化したころには、プログラムを利用した作業の簡易化に慣れてくる頃でしょうか。
そこまで来たら、今度はもっと複雑なコードを扱うための「関数」や「変数」の概念がようやく登場。
多くのプログラミング教材ではもっと早いうちから基礎として登場する概念ですが、実際の所初心者が自ら関数や変数を定義する必要はありませんし、必要性を感じたところに上手く組み込んでくるあたりは、非常にきれいな構成だと思います。
その上、一度登場したharvest()やplant()、それらをまとめたループ構文はそのまま利用しつつ、そこに付け加える形で導入していくことができるので、復習・実践を常に継続できることも、学習目的では非常に良い点です。
「解答が無い」ことの良さ
プログラミング学習ゲームのありがちな展開として、「解答が分からず進行不能になる」という場面が往々にしてあるかと思います。
その対策として、多くのゲームでは模範解答を用意して提示することで詰み回避していきますが、これでは結局「何かよく分からないまま進んだ」形になり、疑問点が募るばかりです。
対策の難しい問題ですが、このゲームはそもそも解答が存在しません。
要は、畑を管理して作物を収穫できればいいので、その過程で完全な回答とか、きれいな作法とか、そんなものは必要ないんです。
もちろん、ちゃんとプログラミングを勉強するときには、お作法や模範解答も大事です。
しかし、12/3の記事で記載したことですが、ゲームの面白さは「制御感」に依存しているので、作法や模範解答を出さなければいけないという「縛り」は、ゲームの面白さを損なってしまうんです。
ゲームなんですから、のんびり楽しみながら練習して、出来ることを増やしていけばいいんです。
そこで「もっと効率化したいな」とか「もっと綺麗にまとめたいな」とか思ったら、その時にじっくり考えればいいんです。
常に動き続けるゲーム性
ここは、実際に「じっくり考える」部分と関わります。
プログラミングで詰まった時、じっくり考えて何とか正しいコードが組みあげてタスクを達成したのに、また次の問題で詰まったら、いよいよ絶望ですよね……。
そもそも、ゲームに限らずプログラミング学習で発生するタスクとコードの1対1対応の関係性は、構図を分かりやすくする反面で、一つ一つにかかる労力と時間に無駄が多く、凄く辛いんです。
要は、タスク達成を目指すことが「割に合わない」状態になるんです。
ただ、このゲームではタスクは一貫して「農業を進めること」です。
途中で「草を集める」とか「かぼちゃを育てる」とか、細かなタスクを組み上げて解決することはありますが、全てが一連の「農業」というタスクの中に組み込まれているため、コードを組んで解決したら終わり、なんていう寂しい事態にはなりません。
組んだコードは、常に後ろで回り続けてくれるんです。
そこから次の小タスクを考えて、解決を目指して考えている間も、ドローンはコードに従って動き続けて、各種リソースを確保していってくれるんです。
アンロックした項目を眺めて勉強している時間も、新しいコードを書くのに苦労している時間も、「無駄に過ぎたわけでは無い」ことがリソースの溜まり方で実感できるんです。
こういった、「その時に限らず動き続けることができる」という性質は、プログラミングのモチベーションとしては非常に大きな要素になるかと思います。
その点で、このゲームは学習と実践のモチベーションが非常に保たれやすい構成になっていると言えます。
おわりに
『農家はReplace()されました』というゲームは、ありきたりな農業ゲームであり、かつ最近よく見るプログラミング学習ゲームの一角にあたりますが、それでいて他の類似ゲームとは似て非なる、ちゃんとした「学習効果」が見込めるゲームと思われます。
もちろん、このゲームをベースに本格的・専門的なプログラミングに臨むのは聊か無理がありますが、「プログラミングの概念」を理解する上ではもってこいの教材で、Steam向けのPCゲームですが、個人的には子供のプログラミング学習に利用して良いレベルの整理されたゲーム性だと思われます。
今回はプログラミング初心者の視点を中心に語りましたが、上級者であればドローンの作業量を考慮して効率化を目指す、競技プログラミング的な学習も可能です。
何なら、後半になってくると迷路探索課題をコードで解くようになってきたり、複数のドローンで広い農場を運営するようになってきたりするので、よりスマートで効率的なコード設計が求められます。
そこまで頑張らずとも、私みたいな作業厨であればウィンドウを無数に作ってそれぞれでコードを裏で回しつつ、別のコードを組み上げて個々の作物用に整えながら、加速度的に伸びていくリソースの回収効率を見て楽しくなれちゃう、そんな感じのゲームです。
見た目や前評判から想像がつかない程「楽しみやす」ゲームになっていますので、プログラムに自信のある方も、触れたことが無くて中々始めるきっかけがつかめない人も、ぜひぜひプレイしてみてくださいー
それでは、本日はこんなところで~