かやのみ日記帳

日々感じたことをつれづれと書いています。

Factorioにハマって徹夜した感想

 

決して値下げしないゲーム

store.steampowered.com

Factorioは工場の自動化を進める箱庭系ゲーム。お値段は3000円で値引きセールをやらないという方針でよく知られている。

このゲーム、かなり細かい出来になっており、プログラマー向けと言われている。
前から興味があったし休みに没頭するゲームが欲しかったので買ってみた。

 

一時期Factorio面接なんてものがあって話題になったこともある。
自分の本業はプログラマーであるわけだし、どんなもんか実力を試してみたかった。

news.denfaminicogamer.jp

 

speakerdeck.com

 

大方針が一番むずかしい

ゲームを始めた当初はかなり手探りで何度も敵にやられて壊滅してしまった。
そもそもこのゲーム、デモ版があるのだがチュートリアルすら難しい。
細かいテクニックやゲーム特有のルールがあるのだ。

 

だが、だいたい10時間くらいやるとコツがわかってくる。
大事なのはマップの割り方、工場の拡大の仕方。
この大方針を間違うとものすごいダメージが大きい。

 

 

実際のプレイ画面を見せよう。ごちゃごちゃしていてうっ…となると思うけど。

f:id:kayanomi:20210816191716p:plain

ドン引きしないでほしい

どうなってるかクローズアップしよう。

f:id:kayanomi:20210816192524p:plain

解説

上に燃料となる石炭が流れている。各所で動く機械への供給用にベルトで流している。

次に鉄板。一番利用頻度が高いので上の方に配置している。その下が歯車のライン。
歯車も機械化に重要で利用頻度が高い。これは鉄板から加工して作られている。
で、更に下の方には銅板がある。これも電子基板などに加工するため重要だ。

さて。この解説を見て思うことはないだろうか。
なんでこんなに向きがぐちゃぐちゃなんですか??

石炭は左から流れていて、鉄板は原則左から右。
…と見せかけて、一部下から合流しているものがある。
銅板に至っては逆向きである。どうしてこうなったんだろう。

 

これはまず、生成されるマップがランダムであり必要となる素材の位置がバラけることが理由として挙げられる。
自分のマップの場合は鉄が左下、石炭が上、銅が右側に生成されたためだ。
生成された場所を基準に、精製所を作成し、各加工部門に流している。

 

次に鉄板。なんで下向きに合流しているものがあるのか。
これは実は初期に使っていた鉱脈が底をついてしまったから。
まさか資源が枯渇するとは思いもよらなかった。
なので別な箇所から鉄を作る羽目になり、メインラインに無理やり合流させることにしたのだ。

 

 

基本的に上の方から下向きに各所に流す方式で作っている。これはSteamのガイドにおすすめとして紹介されていたからだ。

steamcommunity.com

 

ところがどっこい、なかなかうまくいかないのである。
あちこちで素材の供給量が追いつかなかったり、はたまた多すぎて詰まってしまったりする。

 

 

より広域なマップでなにが起きたのか説明しようと思う。

f:id:kayanomi:20210816200025p:plain

がんばってかいた

全体像はこんな感じ。この工場を作るのに30時間くらいかかっている。
周辺の白いのは防壁。石を掘り出して加工しているのだが、厚みが微妙に違うのがわかるだろうか。

 

防衛計画の失敗

これは敵襲がよくくる箇所がわかっているからである。このゲーム、敵はものすごい大量の虫である。下手すると一気に物量でおしかけすべての施設を破壊する恐れがある。

なので、防御壁を張り巡らせなければならない。この防御を堅牢にするほど、拡張性が低くなる。おまけに資源を結構食ってしまう。用地を拡大するほど、もちろん必要となる武器配置も多くなるため苦難が続く。

 

このゲーム、工場によって汚染が周囲に広がるのだが、虫がそれを嫌うのでめっちゃ壊しに来るというストーリーになっている。で、ゲームバランスとして彼らの巣があちこちにありランダムに自動的に増える。

しかも、巣を叩き潰すと残った他の巣がパワーアップするらしい。もちろん時間経過でもパワーアップする。汚染度が高まるとさらに強くなる。最悪だ。

 

彼らは質ではなく量で襲ってくる。なのでこちらも物量で対抗するしか方法がない。
ガンタレットを作れるのだが、1基ではどうにもならない。最低2,3機ないと防壁を食い破られるのだ。何度も工場をめちゃくちゃにされて嫌になる。

 

このため今回のセーブデータでは周辺にガンタレットをくまなく配置した上に、ベルトにて銃弾を絶え間なく製造、配送して完璧な防御ラインを生成した…のだが、これはさすがにやりすぎだった。資源の完璧な無駄遣いだった。

敵の襲撃位置は巣の位置にだいたい依存するし、巣を叩き潰せばある程度平和になる。
資源はある程度限った上で、襲撃2,3回耐えられる量貯蔵しておくだけで十分だったはずだ。かなり後悔している。防壁に関しては7重程度にしていたが、2,3重程度で十分だった。用地拡大に時間がかかる要因になってしまった。

 

生産しすぎ->枯渇

序盤は上のほうの鉄、銅、石炭だけで進んでいた。で、石炭の近くで蒸気発電を行っていた。研究をすすめることでゲームクリアに必要なロケット製造に近づくことができる。このため研究所はかなり大きめに作っていた。

これはのちのち間違いだと気づく。研究を増やせば増やすほどたしかにスピードは上がるのだが、他の部分に素材が回らなくなるからだ。ある程度絞ったほうがいい。

時間効率と素材効率は違うことに気づけばよかったと反省している。

 

で、ゲームを進めるとなんと鉄が枯渇してしまった。そこで用地拡大を行い、幸い隣に第二の鉱脈があったので飲み込む形で拡大した。ところが、電力が足りなくなった。石炭も枯渇し始めたのである。(実際、枯渇して全停電して一度大変な目にあった)

 

そこで油田を発見し、原油加工から燃料を作成することにして、列車による油田との接続と発電の切り替えを行い、用地を下方向に伸ばすことになった。

で、進めているわけなのだが今度は原油加工物資の用地が足りない。下方向に伸ばしたいのだが、壁を分厚く作りすぎて移動が面倒になってしまった。

 

トラブルへの対処ができる計画が必要

簡単に言えば自分のゲームでやってしまった失敗は以下の通り。

  • 過剰な防衛で資源の無駄遣い
  • 鉄資源の枯渇を想定してなかった
  • 石炭資源の枯渇による発電所の停止
  • 過剰防衛による用地拡大の忌避
  • 過剰な研究資源の作成
  • 原油資源を想定していなかったことによる用地計画の破綻

最初に書いておけばよかったな、ブログの体裁的に…。申し訳ない。
こういうところが計画性のなさである。

 

プログラミングの面接の資料にあった自動化まではたどり着いている。
だが、ところどころスムーズには行かない場面もあったし、なによりこうしたトラブル、不測の事態への柔軟な対処ができる設計にできなかった。

こうしたトラブルに対処する力は、プログラマーにも求められる。
よくプログラムは仕様変更が起こるからだ。実は〇〇というデータが必要だから、▲▲から加工して持ってくる必要がある。

 

こう言われたとき、プログラムを全面的に直す羽目になるか、それとも拡張性を最初から想定していて、なんなく乗り切れるか。そこが腕の違いだと思う。

そういった意味で、Factorioが上手い人はたしかに非常に設計がうまいひとであろうと想定できる。

正直細かいテクニックよりもうまい設計のほうが大事だ。うまい設計にはトラブル、変更に強い。下手な人は設計が下手なのだ。自分のことだが。

なかなか勉強になった。まだクリアできてないので、いつかクリアしたい。