🚁

Python ライクな言語でドローンの動きをプログラムして農業を自動化するゲームをやってみた ~農家は Replace() されました~

に公開

こんにちは、hamaguchi です。
今回は Python ライクな言語を使って遊びながらプログラムの勉強になるゲームを見つけて、キリのいいところまでやってみたので紹介します。
Zenn を見ている人であれば X や Youtube ショートなどで流れてきたのを見たことがある人もいるかもしれませんね。

プログラミングを勉強するといっても最初は「プログラムを書いてやりたいこと」がないためやる気も出ない、「if とか for とかこんなの覚えてなんになるん?」というような状況になりがちですが、このゲームでは次に何をやりたいかが目に見える状況になるため学習目的でも結構モチベーションにつながるんじゃないかなと思います。

ある程度難易度の高い Steam の実績もあり、課題をクリアするまでの時間を競うリーダーボードという機能もあるため、ある程度自信のある人でも結構楽しめるのではと思います。

どんなゲーム?

平面に格子状に広がる農場にドローンを飛ばし、収穫や水やりなどの作業を自動化し、より効率的な農場の構築をめざすというのがざっくりした流れです。
ドローンの制御には Python っぽい言語を使用しますが、三項演算子やラムダなど使えないものもあるので基本的には説明されたものだけを使っていくことになります。
また、収穫した作物は農場の拡張や作れる作物のアンロック、アップグレードに使用することができ、さらにそれらの操作さえもプログラムから操作することができるので頑張り次第ではスタートボタンを押したら全てをアンロックするまで勝手に動いてくれる農場も作ることができます。
こんなふうに書くとプログラムを書いたことのない人や Python の経験が浅い人は不安に思うかもしれませんが、チュートリアルや新しいことができるようになった際には都度具体的なサンプルが提示されるため順を追って学びつつ進めることで if 文や for ループなどの簡単な仕組みを組み合わせから、非同期処理を使用した複雑な処理まで規模が大きくなっていく過程を体験することができました。

どこで買える?

現在 Steam でのみ購入できそうです。現在の価格は 1200 円。
ゲームの特性上、キーボード入力がないと遊ぶのは現実的ではないため、PlayStation や Switch のストアから遊べるようになることはなさそうな気がしてます。

https://store.steampowered.com/app/2060160/_Replace/

英語表記のタイトルは The Farmer Was Replaced、日本語では 農家は Replace() されました というタイトルになっており、タイトルの段階でインディーズゲーム特有のどこでどうやって日本語にしたんだろうという謎な雰囲気が溢れ出しています。
タイトルから不安に思う人もいるかもしれませんが、ゲーム本編を遊んでみた限り特に不自然な日本語もなくなぜこんなタイトルになっているのか、カッコはどこから来たのかは謎でした。

何が学べる?

  • 変数の取り扱いや If 文、 ループ、関数の自作といった基本的な書き方
  • 状況が変わると効率の良いアプローチが変わり、やりたいことをコードでどう表現していくか
  • 非同期処理や非同期で実行した処理の結果の取り扱い
  • 肥大化するコードのリファクタリングやファイルの分割
  • ファイルの分割すら自由にしていいと言われた時にどのような方針ですすめるか
  • 「スタイリッシュで美しく、整理されたコードを書くぞ!」と思っていたのにいつの間にか出来上がるスパゲッティ
  • 都度与えられる新しい仕様に「は?だったら最初に言えや」というイラつき

特に最後に書いた仕様の追加については前職の SocialPLUS では事前に「将来的にはこうなるかも」という話が都度でていて、頭の片隅に置きつつも現段階で必要十分の仕様を模索するという形だったため、振り返ってみるとそういうイラつきはなかったなぁと思いました。
すごいですね。

前前職以前ではちょいちょいあったのでなつかしい気持ちになりました。
やめてくれと言っても言ってもエンジニアに共有せず勝手に提案して勝手にクライアントに合意を取ってくるというケースさえあり、「なんで?ねぇなんで?日本語わかる?」と不思議に思ったことも一度や二度ではありません。

そういうイラつきを経験することで将来的な拡張性を意識した設計を心掛け、心掛けてはみたけど失敗するという経験を繰り返し、そうやって成長してゆくのかなと思いました。
リアルですね。

こんな人にやってほしい

  • プログラミングはしてみたいけどプログラミングでやりたいことが特にないから学習しようにもなにしたらいいかわからない人の学習に
  • ある程度なんでも書ける人はランキングを見て自分って別にたいしたことないんだなと初心に帰るために
  • 度重なる仕様変更をエンジニアに投げてブチギレられたことのある人がエンジニアの気持ちを理解するために

if 文や配列の処理など、自分の書いたコードの処理時間すら実行速度に影響するため、上級者の人はより効率の良いコードを目指してみてください

ほぼほぼ全部やれることやったくらいで手に入るリーダーボード機能ではいくつかのカテゴリのランキングで競うことができます。
リーダーボードは単一の目標を目指すものから、全部ロックされた状態からリーダーボードの解放まで目指すという「最速リセット」まで 10 個?ほどあるので腕に自信のある人はぜひランクインを目指してみてください
ちなみに僕は Steam の実績は全て解除、大体のカテゴリで 2 桁には入ったけど 1 位の人のタイムを見て何をやったらそのタイムが出るのか理解できない程度の能力だということがわかりました
最速リセットは最初にクリアした時は 27 位でしたがこの記事を書くにあたって確認し直したら 50 位代に落ちていたので、見なかったことにして 27 位だったと言い張ることにしました。

おまけ

このゲームはなんと外部エディタ対応なので、マルチカーソルを使いたい人やゲーム内エディタで発狂しそうになった人は VSCode や Vim, Emacs など好きなエディターで遊ぶこともできます。
詳しくはゲーム内の情報パネルにある「外部エディタ」の項目を読んでみて下さい。
Copilot を設定している場合は Python なら普通できるけどこのゲームではできない記法がサジェストされてしまったり、そもそも楽しくないのでオフにするなどお好みで適宜対応して下さい。

まとめ

おすすめ
やってみてね
どんな感じか気になった人は X や Youtube やなんやかんやでプレイ動画でも見てみて下さい。

GitHubで編集を提案

Discussion