こんにちは。今回はRtt Projectさんの「プリンキピア・アルケミア」のレビューとなります。

ジャンル:プログラミング錬金パズルゲーム
プレイ時間:メインストーリークリアまでで1時間程度
分岐:なし
ツール:Wolf RPGエディター
リリース:2021/2
本作は3年前に公開された作品で、私が本作を初めて知ったのは2021年のフリーゲームCMコレクションだったと記憶しています。私が得意そうな雰囲気を読み取れ興味を持ってはいたのですが、DLせずにそのまま3年経過していたようです。先日何のきっかけだったかは忘れたのですがフリーゲーム夢現で本作を発見し、ようやく実際にプレイしてみました。ゲーム説明から期待されるパズル的な面白さはもちろんのこと、コストの最適化に関して考察しがいのある作品だったので今回ご紹介しようと思います。
本作は基本的にはストーリーモードとパズルモードが交互に進行していきます。主人公は19世紀のイギリスで錬金術で商売しています。自分の工房を拡張したり、客からの依頼に応じたりするために錬金術を使っていくことになります。
この錬金を行うパートがパズルの面になっています。このパズルが少々癖のあるものになっていまして、プログラミングの素養のある方ならパッと飲み込めると思いますが、そうでない場合そもそも「入力」「出力」「スタック」などの意味から日常用語と違っていて困惑するかもしれません。この辺りはチュートリアルステージをやりながら覚えていくしかないでしょう。私は以前Wikipediaでなんとなく難解プログラミング言語の一覧を見ていたとき、Befungeという2次元的にソースコードを記述する言語の存在を知っていたので、システムの理解は容易でした。
今このWikipedia記事を読んでみると想像以上に本作の仕様と同じ(その拡張)になってますね。Befungeの言語仕様のうち<>^v#&+%`\$あたりの文字を使えるようにして、元素の結合/分解という操作を付け加えたゲームという感じでしょうか。作者さんもBefungeに影響を受けて作ったゲームであることをあとがきで明言していました。
という背景情報はありつつも、本作のパズル自体は特に前提知識なく解くことができます。

やることは格子状のフィールドにユニットを配置し下の実行ボタン(右向き三角形)を押すだけ。
スタート地点から順に通った地点にあるユニットに応じて錬金素材の取得と操作、生成物の出力などを行います。その結果出てきたものが目的物と一致すればクリア。上の画像の問題の場合、ガスを2分子取り込んで片方を分解、火の元素を一つ捨てて結合したものを出力すればOK、というのを回路にしたのが正解となります。
このあたりの操作は慣れればすぐできるようになるのですが、条件分岐を使うようになってから難易度が一段階上昇します。

この問題では入力される素材が一部ランダムとなっています。その中から空気だけを抽出して出力するには、中央にイコールの記号のある制御ユニットを使う必要があります。プログラミングでif文を使うように、スタックに積んだ元素が一致しているかどうかで処理を分けることができるのです。
この画像の場合、取ってきた分子が空気と一致しているならそのまま出力、そうでなければ分解して全部廃棄としています。
これができるようになると格段に回路設計の自由度が増し、様々な問題を解くことができるようになっていきます。
とはいえメインストーリー中の問題はどれもクリアだけを目指す分にはそう難しくありません。私もとりあえずスマートに解くのが難しそうなら力押しの方法でクリアしており、いったん本作はやりつくしたかなと思っていたのです。
しかし作者さんがHPなどで公開している追加問題を見て、本作の秘めた可能性と私のやり残しに気付きました。

これは作者さん本人のおすすめ問題”金の糸”の私なりの最適解です。金の元素を6個生成してつなぎ合わせる必要があるのですが、ちょうど6個というのが曲者でなかなか苦労しました。これもコストに目をつけずとにかくクリアできればいいというやり方ならさほど難しくはないのですが、追加問題には配布時に目標コストが設定されており、それがこの問題では300Gでした。私のごり押し解法では800Gほどかかっておりコスト削減のし甲斐があるなあと思い3日ほどたった日、6回ループを行う方法の天啓がおりてきました。開始時に出力用金属元素以外にカウンタ変数用の元素をスタックに積んでおき、ループごとに1回変成することによって回路の構造化が可能になると!
これを思いついてしまえばあとは2次元のフィールド上にどうやってこの手順を実現するかを考えるのみ。300Gは多少の試行錯誤で達成することができました。さらに高価なユニットである変成を1か所にまとめて通る向きの縦横で処理を識別するなどの工夫により270Gを達成。Twitter等に上がっている情報を見る限りこれが最適っぽい気がしています。
ここまでくると、単にプログラミングの問題を解いているのとは違った、2次元的に回路を組み上げて最適化するという楽しみ、そしてコスト削減で競い合うという楽しみが加わって本作の魅力を倍にしてくれました。追加問題はまだまだたくさんあるので、やり込みの道は長そうです。
この追加問題を取り込む手順はちょっと面倒かもしれません。問題ファイルをダウンロードし実行ファイルと同階層にUserDataフォルダを作ってそこに配置。ゲームを起動してカスタム問題のフィールド上で右クリック→問題を読込をクリック→ファイル名を入力、としてようやく遊べるようになります。理想的には問題ファイルをゲーム画面上にドラッグ&ドロップしたら上記の手順を勝手にやってくれる、といった機能が欲しいですがウディタの仕様上難しいんでしょうか。手動でUserDataフォルダに配置したら自動的にカスタム問題に並ぶ、という機能でもあったら嬉しいです。

それ以外のシステムについては不満ありません。ストーリーモード、パズルモードどちらにしても動作は軽快でクリックのレスポンスもいいですし、ストーリーを後から読み返せる機能もついているのがうれしいところです(画像の吹き出しクリックで再生できる)。これができない作品はかなり多いので好印象。
回路の仕様で引っかかった点が1点。条件分岐で、初見の時は結合した分子に対する判定を期待していたので想定していた動作にならず困惑しました。(スタックがA-B A-BならYes, A-A A-BならNoというように分子単位で判定すると思っていたが、実際にはA-Bの部分だけ見てNoと判定されたりA-Aの部分だけ見てYesと判定されたりしているようで、回路の設計を一からやり直す必要が生じてしまった)
あとは初回の名前設定時に最初にEnterを押してしまったらそのまま名前が空で進行してしまったのは微妙かなと思いました。デフォルト名とか欲しいかも。
ちなみに本作のバージョン名がv1.618033と非常に細かい値になっていますが、これは更新ごとに黄金比φ(=(1+√5)/2)の近似値を一桁ずつ増やした結果のようです。Twitter検索では誰も触れてなさそうだったのでちょっとした秘密に気付いた気分でした。
というわけで今回は「プリンキピア・アルケミア」のご紹介でした。
一通りクリアした後はぜひ各ステージのコスト最小化を目指してやり込んでみてください。頭をひねり続けて試行錯誤して、効率的な回路を考え付いた時の達成感は最高です。できればランキングなどあるとさらなるモチベーションになったかも。
それでは。

ジャンル:プログラミング錬金パズルゲーム
プレイ時間:メインストーリークリアまでで1時間程度
分岐:なし
ツール:Wolf RPGエディター
リリース:2021/2
本作は3年前に公開された作品で、私が本作を初めて知ったのは2021年のフリーゲームCMコレクションだったと記憶しています。私が得意そうな雰囲気を読み取れ興味を持ってはいたのですが、DLせずにそのまま3年経過していたようです。先日何のきっかけだったかは忘れたのですがフリーゲーム夢現で本作を発見し、ようやく実際にプレイしてみました。ゲーム説明から期待されるパズル的な面白さはもちろんのこと、コストの最適化に関して考察しがいのある作品だったので今回ご紹介しようと思います。
本作は基本的にはストーリーモードとパズルモードが交互に進行していきます。主人公は19世紀のイギリスで錬金術で商売しています。自分の工房を拡張したり、客からの依頼に応じたりするために錬金術を使っていくことになります。
この錬金を行うパートがパズルの面になっています。このパズルが少々癖のあるものになっていまして、プログラミングの素養のある方ならパッと飲み込めると思いますが、そうでない場合そもそも「入力」「出力」「スタック」などの意味から日常用語と違っていて困惑するかもしれません。この辺りはチュートリアルステージをやりながら覚えていくしかないでしょう。私は以前Wikipediaでなんとなく難解プログラミング言語の一覧を見ていたとき、Befungeという2次元的にソースコードを記述する言語の存在を知っていたので、システムの理解は容易でした。
今このWikipedia記事を読んでみると想像以上に本作の仕様と同じ(その拡張)になってますね。Befungeの言語仕様のうち<>^v#&+%`\$あたりの文字を使えるようにして、元素の結合/分解という操作を付け加えたゲームという感じでしょうか。作者さんもBefungeに影響を受けて作ったゲームであることをあとがきで明言していました。
という背景情報はありつつも、本作のパズル自体は特に前提知識なく解くことができます。

やることは格子状のフィールドにユニットを配置し下の実行ボタン(右向き三角形)を押すだけ。
スタート地点から順に通った地点にあるユニットに応じて錬金素材の取得と操作、生成物の出力などを行います。その結果出てきたものが目的物と一致すればクリア。上の画像の問題の場合、ガスを2分子取り込んで片方を分解、火の元素を一つ捨てて結合したものを出力すればOK、というのを回路にしたのが正解となります。
このあたりの操作は慣れればすぐできるようになるのですが、条件分岐を使うようになってから難易度が一段階上昇します。

この問題では入力される素材が一部ランダムとなっています。その中から空気だけを抽出して出力するには、中央にイコールの記号のある制御ユニットを使う必要があります。プログラミングでif文を使うように、スタックに積んだ元素が一致しているかどうかで処理を分けることができるのです。
この画像の場合、取ってきた分子が空気と一致しているならそのまま出力、そうでなければ分解して全部廃棄としています。
これができるようになると格段に回路設計の自由度が増し、様々な問題を解くことができるようになっていきます。
とはいえメインストーリー中の問題はどれもクリアだけを目指す分にはそう難しくありません。私もとりあえずスマートに解くのが難しそうなら力押しの方法でクリアしており、いったん本作はやりつくしたかなと思っていたのです。
しかし作者さんがHPなどで公開している追加問題を見て、本作の秘めた可能性と私のやり残しに気付きました。

これは作者さん本人のおすすめ問題”金の糸”の私なりの最適解です。金の元素を6個生成してつなぎ合わせる必要があるのですが、ちょうど6個というのが曲者でなかなか苦労しました。これもコストに目をつけずとにかくクリアできればいいというやり方ならさほど難しくはないのですが、追加問題には配布時に目標コストが設定されており、それがこの問題では300Gでした。私のごり押し解法では800Gほどかかっておりコスト削減のし甲斐があるなあと思い3日ほどたった日、6回ループを行う方法の天啓がおりてきました。開始時に出力用金属元素以外にカウンタ変数用の元素をスタックに積んでおき、ループごとに1回変成することによって回路の構造化が可能になると!
これを思いついてしまえばあとは2次元のフィールド上にどうやってこの手順を実現するかを考えるのみ。300Gは多少の試行錯誤で達成することができました。さらに高価なユニットである変成を1か所にまとめて通る向きの縦横で処理を識別するなどの工夫により270Gを達成。Twitter等に上がっている情報を見る限りこれが最適っぽい気がしています。
ここまでくると、単にプログラミングの問題を解いているのとは違った、2次元的に回路を組み上げて最適化するという楽しみ、そしてコスト削減で競い合うという楽しみが加わって本作の魅力を倍にしてくれました。追加問題はまだまだたくさんあるので、やり込みの道は長そうです。
この追加問題を取り込む手順はちょっと面倒かもしれません。問題ファイルをダウンロードし実行ファイルと同階層にUserDataフォルダを作ってそこに配置。ゲームを起動してカスタム問題のフィールド上で右クリック→問題を読込をクリック→ファイル名を入力、としてようやく遊べるようになります。理想的には問題ファイルをゲーム画面上にドラッグ&ドロップしたら上記の手順を勝手にやってくれる、といった機能が欲しいですがウディタの仕様上難しいんでしょうか。手動でUserDataフォルダに配置したら自動的にカスタム問題に並ぶ、という機能でもあったら嬉しいです。

それ以外のシステムについては不満ありません。ストーリーモード、パズルモードどちらにしても動作は軽快でクリックのレスポンスもいいですし、ストーリーを後から読み返せる機能もついているのがうれしいところです(画像の吹き出しクリックで再生できる)。これができない作品はかなり多いので好印象。
回路の仕様で引っかかった点が1点。条件分岐で、初見の時は結合した分子に対する判定を期待していたので想定していた動作にならず困惑しました。(スタックがA-B A-BならYes, A-A A-BならNoというように分子単位で判定すると思っていたが、実際にはA-Bの部分だけ見てNoと判定されたりA-Aの部分だけ見てYesと判定されたりしているようで、回路の設計を一からやり直す必要が生じてしまった)
あとは初回の名前設定時に最初にEnterを押してしまったらそのまま名前が空で進行してしまったのは微妙かなと思いました。デフォルト名とか欲しいかも。
ちなみに本作のバージョン名がv1.618033と非常に細かい値になっていますが、これは更新ごとに黄金比φ(=(1+√5)/2)の近似値を一桁ずつ増やした結果のようです。Twitter検索では誰も触れてなさそうだったのでちょっとした秘密に気付いた気分でした。
というわけで今回は「プリンキピア・アルケミア」のご紹介でした。
一通りクリアした後はぜひ各ステージのコスト最小化を目指してやり込んでみてください。頭をひねり続けて試行錯誤して、効率的な回路を考え付いた時の達成感は最高です。できればランキングなどあるとさらなるモチベーションになったかも。
それでは。