Console
概要
コンソール(Console)はFactorioのコマンドラインインターフェース。
ゲーム内コンソール(in-game console)は以下に用いられる。
- 他プレイヤーとのチャット
- コマンド/スクリプト/チートの実行
- ときどきステータス更新
以下の3種のコマンドがある。
- マルチプレイヤー(Multiplayer) - メッセージフィルタリング、ユーザBAN、などなど
- 情報(Information) - ゲームに関する様々な情報を表示
- スクリプト/チート(Scripting/Cheating) - Luaスクリプト片を実行 (そのセーブで実績が無効になる)
コンソールの利用
コンソール窓は/(スラッシュ)か~(チルダ)キーで切り替えられる。
キー設定はOptions Menu -> Keyboard -> Toggle Lua consoleから設定可能。 コンソールが開いている間、スクリーン下部でカーソルが点滅する。メッセージやコマンドを入力してReturnを押すと送信(してコンソールも閉じる)。 メッセージやコマンドプレフィックスに関するドキュメントはこのページの更に下にある。
コンソールを閉じると最後のメッセージ/コマンドだけが表示されるが、徐々に消えていく(コンソールを開き直すと即座に直近のメッセージすべてが再表示される)。 デフォルトでは、全ての実行されたコマンドは全ユーザに見える。消える時間はOptions Menu -> Other Settings -> Message Delayから設定可能。
コンソールを即座に隠したい場合、コンソールを開いてEscape キーを押す(か、メッセージやコマンドを入力しないままReturn)。 これはコンソールを隠すだけでなく、直近のメッセージ/コマンドすべてを隠す。 コンソールは/clearコマンドでクリアできる。
コンソールはゲームコマンド(game command)同様、生Luaコードも受け付けることを覚えておこう。
コンソール履歴
コンソールは備え付けの履歴を持つ。ややテキストエディタっぽく、一度に1行のテキストしか表示されない。
↑と↓キーで履歴内を移動。
←と→キーで現在表示している編集(削除、挿入など)対象のメッセージやコマンド内でカーソルを移動、ならびに再送信(Returnを押す)。
TabキーはコマンドやプレイヤーIDをオートコンプリートする。
マルチプレイヤーチャット
特定のプレイヤーにプライベートメッセージを送るには/whisper (または/w):
/whisper <playerId> <message>
最後にプライベートメッセージを受け取ったプレイヤーに返信するには/reply (または/r):
/reply <message>
グループチャットは以下のように機能する:
hello my team!
/s hello all players!
/shout same as /s
これらはメインのチャット機能にすぎない。プレイヤーのBAN、無視、ミュートなどのオプションもある。完全なリストはコンソールで/help。
コマンド
利用可能なコマンドのリストを見るには、コンソールで/help (または/h)を入力。 利用可能なコマンドはFactorioのバージョンとゲームセットアップに依る。
/help
Factorio 0.14.4以降では、/helpコマンドは単にコマンドのリストを表示するだけである。コマンドの完全な詳細を得るにはコマンド名(スラッシュを除く)を/help (または/h)の後に加える。例えば、 /evolutionコマンドのヘルプは:
/h evolution
スクリプト/チートコマンド
コンソールからLuaスクリプトを実行できる。 任意のコマンドラインインターフェースやブラウザのJavaScriptコンソールに類似した挙動をする。
これは非常に強力な機能で、チートもでき、なのでスクリプトコマンドを使用した瞬間実績はそのセーブに対して永続的に無効化される。
スクリプトを実行するには、/command (または/c)を前置する。例えば:
/c game.player.print 'hello me!'
マルチプレイヤーゲームでは、adminのみがコマンドを利用可能で、コマンドは他の全プレイヤーにechoする。
マルチプレイヤーのserver adminは(RCON/server consoleからのみ)/cの代わりに/silent-command を用いることで、他のプレイヤーにechoされるのを防ぐことができる。
/silent-command game.player.print 'only admins can use (and see) silent commands'
Mod製作者もまた、特別なコマンド/measured-commandを利用可能。これは/cに似ているが、実行時間を測定する。 スクリプトのパフォーマンスチューニングにとても便利。
/measured-command game.player.print 'how much time does this take to run?'
「スクリプトレット(scriptlets)」をコンソールにペーストする際、改行は無視される。 つまり、エディタではヒューマンリーダブルな形式で書いておいてコンソールにコピペできるので、理解と編集がちょっと楽になる。
基本的なコマンドと例
大きいスクリーンショット
HD画質のスクリーンショットを取る方法は以下。
ファイルはmodsフォルダ同様、application directory/jaの「script-output」と呼ばれるフォルダに置かれる。 画像はとても巨大になりうる。
/c game.take_screenshot{<parameter>=<value>,...}
このコマンドは以下のパラメータを取る。
- showgui - Boolean値、 trueかfalse。 TrueならGUIがスクリーンショットに含まれる。
- resolution - xとyを{x = <x-size>, y = <y-size>}の形式で取る。
- show_entity_info - Boolean値、 Trueならalt infoがスクリーンショットに含まれる。
- zoom - ズームレベル。1は通常、2はエリアの半分にズームイン、0.5は倍のエリアにズームアウト、など。
例として、以下は1000x1000のスクリーンショットをalt-modeをONにして、でもGUIは表示せず、ズームレベル2で撮る。
/c game.take_screenshot{resolution = {x = 1000, y = 1000}, zoom = 2, show_entity_info = true}
計算機として使う
/c game.player.print(1234*5678)
高速に掘削
/c game.player.force.manual_mining_speed_modifier=1000
高速に製作
/c game.player.force.manual_crafting_speed_modifier=1000
全研究をアンロックし研究済みに
/c game.player.force.research_all_technologies()
次節のコマンドでUndo。
全研究を未研究に
手動で適用されたボーナスはリセットされない。
/c for _, tech in pairs(game.player.force.technologies) do
tech.researched=false
game.player.force.set_saved_technology_progress(tech, 0)
end
強さリセット
キル数、生産統計、技術、ボーナス、マップ状況を含む強さを全リセットする。
/c game.player.force.reset()
通常よりズームアウトする
ズームアウトしすぎるとパフォーマンスに問題を起こしかねないので注意。
/c game.player.zoom=0.1
プレイ時間
何時間何分何秒プレイしたか教えてくれる。
/time
インベントリ操作
資源の補充(油、鉄など)
ゲーム内の資源タイルにマウスオーバーした状態で
/c game.player.selected.amount=7500
プレイヤーのインベントリにアイテム追加
iron-plateの部分を欲しいアイテムの内部名称に置換して使うべし。
/c game.player.insert{name="iron-plate", count=100}
例えば、エネルギーシステムのgod-modeインタフェースは以下。
/c game.player.insert{name="electric-energy-interface"}
装備品付きで強力アーマーゲットだぜ。
/c local player = game.player
player.insert{name="power-armor-mk2", count = 1}
local p_armor = player.get_inventory(5)[1].grid
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "energy-shield-mk2-equipment"})
p_armor.put({name = "energy-shield-mk2-equipment"})
p_armor.put({name = "personal-roboport-mk2-equipment"})
p_armor.put({name = "night-vision-equipment"})
p_armor.put({name = "battery-mk2-equipment"})
p_armor.put({name = "battery-mk2-equipment"})
チートモード
無限・無料製作。trueをfalseにすれば無効化。
/c game.player.cheat_mode=true
ワールド操作
プレイヤー周辺のマップを確認
レーダー風にプレイヤー周辺のマップを確認。
/c local radius=150
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})
もしくはスタートポジションから
/c game.forces.player.chart(game.player.surface, {{x = -2000, y = -2000}, {x = 2000, y = 2000}})
150は好きな半径に変更して構わない。大きくすればするほど時間食うけど。
チャンクを削除
確認されたマップが大きくなるとセーブファイルのサイズも増える。以下のコマンドで現在キューされているチャンク生成をすべてキャンセルし 0,0 周辺の半径32チャンク以外を除去する。 当該チャンク内のプレイヤーのものも除去される事に注意。
/c local surface = game.player.surface;
game.player.force.cancel_charting(surface);
local chunk_radius = 32;
for chunk in surface.get_chunks() do
if (chunk.x < -chunk_radius or chunk.x > chunk_radius or chunk.y < -chunk_radius or chunk.y > chunk_radius) then
surface.delete_chunk(chunk)
end
end
夜をオフ
沈まない太陽。
/c game.player.surface.always_day=true
ゲーム速度変更
0.5で速度半分、1でデフォルト、2で倍速、など。最小は0.01。完了に長い期間待たなければならない場合など、様々なことに利用できる。大きくするとパフォーマンスが落ちるので注意せよ。
/c game.speed=X
高コスト(マラソン)かノーマルモードか
ノーマルから高コストモードプリセットに切り替える(研究コストと中間生成物の製作コストを変更)。
/c game.difficulty_settings.recipe_difficulty=1
game.difficulty_settings.technology_difficulty=1
game.difficulty_settings.technology_price_multiplier=4
ノーマルに戻す。
/c game.difficulty_settings.recipe_difficulty=0
game.difficulty_settings.technology_difficulty=0
game.difficulty_settings.technology_price_multiplier=1
凍れる時間の秘法
「BOOL」を「true」にすれば時間の進行が止まる。凍結解除には「false」にする。
/c game.player.surface.freeze_daytime=BOOL
汚染を全除去
/c game.player.surface.clear_pollution()
汚染を完全にオフ
/c for _, surface in pairs(game.surfaces) do
surface.clear_pollution()
end
game.map_settings.pollution.enabled = false
汚染を追加
/c game.player.surface.pollute(game.player.position, 1000000)
友軍へのフレンドリーファイアを無効化
/c game.player.force.friendly_fire = false
新たな資源パッチを追加
プレイヤーキャラクターを中心に11x11の新たな資源パッチを生成。 パッチは完全な正方形だが、埋蔵量は自然生成と同様にランダムで中心部は多くの資源がある。 デフォルトでは2500-3000鉱石となる。
より大きなパッチが欲しいなら、「local size = 5」をより大きな数字に変更。 大きなパッチは指数的に多くの鉱石を含む。 30以上の数字は推奨できない。
より潤沢なパッチが欲しいなら、「local density = 10」をより大きな数字に変更。 大きすぎる数字を入れても害はないが、100以上が必要なことはまずないだろう。
生成される資源を選ぶには、下の方の「stone」を「iron-ore」「copper-ore」「coal」「uranium-ore」に変更。
/c local surface=game.player.surface
local ore=nil
local size=5
local density=10
for y=-size, size do
for x=-size, size do
a=(size+1-math.abs(x))*10
b=(size+1-math.abs(y))*10
if a<b then
ore=math.random(a*density-a*(density-8), a*density+a*(density-8))
end
if b<a then
ore=math.random(b*density-b*(density-8), b*density+b*(density-8))
end
surface.create_entity({name="stone", amount=ore, position={game.player.position.x+x, game.player.position.y+y}})
end
end
油パッチを追加
3x3の9原油パッチを生成。
/c for y=0,2 do
for x=0,2 do
game.player.surface.create_entity({name="crude-oil", amount=5000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})
end
end
もしくは、干渉が生じないようにランダムにするには
/c local position=nil
for i=1,9 do
position=game.player.surface.find_non_colliding_position("crude-oil", game.player.position, 0, i/2+1.5)
if position then
game.player.surface.create_entity({name="crude-oil", amount=5000, position=position})
end
end
プレイヤーの周りの資源を除去
プレイヤーの周り50 x 50の範囲の資源パッチを除去する。
/c local surface=game.player.surface
local size=50
local pos=game.player.position
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type="resource"})
do e.destroy()
end
魚を10匹追加
プレイヤーの周りに魚を10匹生成する。生成するときは、水辺の淵にいなければならない。
/c local player = game.player
local surface = player.surface
for i = 1, 10 do
local position = surface.find_non_colliding_position('fish', player.position, 10, 1)
if not position then return end
surface.create_entity {name = 'fish', position = position}
end
エンティティをカウント
local entityに格納されたstringを名前に含むエンティティ全てを数える。
/c local entity="belt"
local surface=game.player.surface
local count=0
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do
if string.find(ent.name,entity) then
count=count+1
end
end
game.player.print(count)
全パイプ・地下パイプを空にする
パイプに入ってほしくない流体が入ってしまったとき便利。
/c local surface = game.player.surface
local deleted=0
for key, entity in pairs(surface.find_entities_filtered({force=game.player.force})) do
if string.find(entity.name, "pipe") then
for i=1,#entity.fluidbox do
deleted = deleted + 1
entity.fluidbox[i] = nil;
end
end
end
game.player.print("Pipes emptied: "..deleted)
崖の生成をオフにする
このコマンドは、実行した後に生成されるチャンクにのみ効果を発揮する。すでに生成されているチャンクの崖を除去したい場合#すべての崖を除去するのコマンドを使う。
/c local mgs = game.player.surface.map_gen_settings
mgs.cliff_settings.cliff_elevation_0 = 1024
game.player.surface.map_gen_settings = mgs
すべての崖を除去する
ワールド中に存在する崖を除去する。新しいチャンクで崖が生成されないようにするには#崖の生成をオフにするのコマンドを使う。
/c for _, v in pairs(game.player.surface.find_entities_filtered{type="cliff"}) do
v.destroy()
end
敵/進化
バイターがどのくらい進化したか確認
"/c"で始まらないコマンドは実績を無効化しないことに気をつけよう。
/evolution
進化ファクター(evolution factor)をセット
範囲は0(ゲーム開始時)から1。
/c game.forces["enemy"].evolution_factor=X
時間に依る進化を無効化しつつ汚染に依る進化を加速
/c game.map_settings.enemy_evolution.time_factor=0
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2
最後の「2」はデフォルト汚染ファクターの倍加。他の数字に変えれば汚染ファクターをもっと大きく(小さく)できる。
「敵」軍バイターを全滅させる
機動部隊とワームだけを殺し、巣は殺されないことに注意。
/c game.forces["enemy"].kill_all_units()
敵を鏖殺
バイター、ワーム、基地すべてを殺す。敵であるものすべてが完全に殲滅される。探査済みの世界に存在する敵にのみ影響し、マップの未探索で生成されていない部分にはまだ敵がいる。
/c local surface=game.player.surface
for key, entity in pairs(surface.find_entities_filtered({force="enemy"})) do
entity.destroy()
end
ピースフルモード有効化
ピースフルモード(Peaceful mode)ではバイターが自発的に攻撃しない。falseをtrueにすれば無効化。
/c game.player.surface.peaceful_mode=true
バイターの戦線拡大を無効化
バイターが新たな巣を作らなくなる。
/c game.map_settings.enemy_expansion.enabled=false
プレイヤーキャラクター
プレイヤーに直接的に関わるコマンド。
プレイヤーの位置を取得
現在座標を表示。
/c game.player.print(game.player.position.x .. ", " .. game.player.position.y)
テレポート
プレイヤーを指定した場所に移動。前述したコマンドでプレイヤー座標を取得すれば、特定のプレイヤーにテレポートできる。
/c game.player.teleport({X, Y})
世界の原点にテレポートするなら座標は0,0。
プレイヤーの色を変更
"/c"で始まらないコマンドは実績を無効化しないことに気をつけよう。 COLORを色の名前で置換せよ。利用可能な色は以下。Black, blue, brown, cyan, gray, green, orange, pink, purple, red, white, acid, yellow。 色はRGBA値で設定することもできる。
/color COLOR
/color r g b a
god modeの有効化
God modeはプレイヤーキャラクターをなくし、障害物を飛び越えられたりダメージを受けないようにしたりできる。
操作をプレイヤーから切り離す。
/c game.player.character=nil
そうしたら、不要となったプレイヤーにマウスオーバーして破棄する。
/c game.player.selected.destroy()
元に戻すには、プレイヤーキャラクターをスポーンさせる。以下のコマンドでこの世界のスポーン地点に新規プレイヤーを生成し、操作を結びつける。
/c game.player.create_character()
研究
研究予約を有効にする
0.16以前のセーブデータやプレイ中に変更する場合は、以下のコンソールコマンドを実行。
/c game.player.force.research_queue_enabled = true
高速な研究を可能にする
/c game.player.force.laboratory_speed_modifier=1
1は等速、2で倍速、3は通常の3倍… 100まではいけると思う。
特定の技術を研究
技術の内部名称は各ページのinfoboxで確認できる。小さな矢印をクリックすることで見られる(訳注:古い記述?2018年3月現在確認できず)。
/c game.player.force.technologies['electric-energy-distribution-1'].researched=true
/c game.player.force.technologies['steel-processing'].researched=true
特定の技術を未研究に
技術の内部名称は各ページのinfoboxで確認できる。小さな矢印をクリックすることで見られる(訳注:古い記述?2018年3月現在確認できず)。
/c game.player.force.technologies['electric-energy-distribution-1'].researched=false; game.player.force.set_saved_technology_progress('electric-energy-distribution-1', 0)
/c game.player.force.technologies['steel-processing'].researched=false; game.player.force.set_saved_technology_progress('steel-processing', 0)
特定のレシピを解禁
技術の内部名称は各ページのinfoboxで確認できる。小さな矢印をクリックすることで見られる(訳注:古い記述?2018年3月現在確認できず)。
/c game.player.force.recipes["electric-energy-interface"].enabled=true
/c game.player.force.recipes["rocket-silo"].enabled=true
/c game.player.force.recipes.loader.enabled=true
全レシピを解禁
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end
研究を即座に完了
/c for name,technology in pairs(game.player.force.technologies) do technology.researched=technology.enabled end
コマンドラインパラメータ
バージョン0.15.13現在
コマンドラインパラメータはゲーム起動前にコマンドラインから設定でき、主に高度なユーザやサーバホストに有用。 (訳注: おそらく以下は-h の実行結果。原文はCOして残す)
一般的なオプション:
-h [ --help ] ヘルプを表示 --version バージョン情報を表示 -v [ --verbose ] 冗長なログを有効化 -c [ --config ] PATH 使用するコンフィグファイル --no-log-rotation ログファイルのローテーションをしない --mod-directory PATH 使用するModディレクトリ --check-unused-prototype-data アクセスされていないPrototype値に警告を出す
実行オプション:
-s [ --map2scenario ] arg マップからシナリオへの変換 -m [ --scenario2map ] arg シナリオからマップへの変換 --apply-update arg アップデートパッケージを即座に適用 --create FILE 新規マップを作成 --map-gen-settings FILE --createで使用するマップ生成設定。 data/map-gen-settings.example.json を参照 --map-settings FILE --createで使用するマップ設定。 data/map-settings.lua を参照 --preset arg 利用するマップ生成プリセットの名前 --generate-map-preview FILE マップのプレビュー画像を生成 --map-preview-size SCALE (=1,024) マッププレビューのサイズ(pixel) --map-preview-scale SCALE (=1) マッププレビューのスケール(meters per pixel) --map-preview-offset X,Y (=0,0) マップ中心のオフセット、メートル単位 --start-server FILE マルチプレイヤーサーバを開始 --start-server-load-scenario FILE マルチプレイヤーサーバを開始し、指定したシナリオをロード --start-server-load-latest マルチプレイヤーサーバを開始し、最後の有効なセーブをロード --until-tick TICK 指定したmap tickごとにセーブする --mp-connect ADDRESS factorioを起動し指定したアドレスに接続 --load-game FILE factorioを起動しシングルプレイヤーでゲームをロード --benchmark FILE セーブを読み込みベンチマークする --benchmark-ticks N (=1,000) ベンチマークのtick数。デフォルトは1000 --force-opengl レンダリングにOpenGLを使用 --force-d3d レンダリングにDirect3Dを使用 --fullscreen BOOL ウィンドウモードでゲームを起動(設定にセーブされる) --max-texture-size N ゲームで使用するテクスチャの最大サイズ(設定にセーブされる)。2の冪かつ2048以上でなければならない --graphics-quality arg 利用可能な値: normal, low, very-low --video-memory-usage arg 利用可能な値: all, high, medium, low --gfx-safe-mode いくつかのグラフィック設定を、ほとんどの設定では動くだろう値にリセット --shader arg シェーダポストプロセッシングの有効/無効化(設定にセーブされる) --disable-audio 音声の無効化。主に開発時、高速に起動させるために用いられる
サーバオプション:
--port N 使用するポート --bind ADDRESS[:PORT] バインドするIPアドレス(と、オプションでポートも) --rcon-port N RCONに使用するポート --rcon-password PASSWORD RCONに使用するパスワード --server-settings FILE サーバ設定ファイルのPath。data/server-settings.example.json を参照 --server-whitelist FILE サーバホワイトリストファイルのPath。 --server-banlist FILE サーバBANリストファイルのPath。 --console-log FILE サーバログのコピーが保存されるファイルのPath。 --server-id FILE サーバIDが保存され読み出されるPath。
マルチプレイヤー
--start-server SAVE
で、ヘッドレス(専用)サーバが起動する。GUIはない
--mp-connect ADDRESS
ADDRESSはリモートホストのIP:Port。Portはoptional。 例:
./factorio --mp-connect 192.168.1.101 ./factorio --mp-connect 192.168.1.101:2345
上記のように、ポートはアドレスの後にコロンで区切って記述する。
--map2scenario SAVE
セーブのゲームをユーザシナリオに変換し、ゲームの状態をマップエディタで読み込めるようにする。 セーブゲーム名が「foo.zip」だとすると、'./factorio --map2scenario s1' とすればFactorioが読み込まれ、セーブファイルが開いてシナリオがシナリオフォルダにセーブされる。
Mod作成ツール
バニラのゲームに存在するだいたいのものの内部名称のリストはdata.rawで確認できる。
プレイヤーがいる位置のタイルをコンソールに表示する
/c game.player.print(game.player.surface.get_tile(game.player.position.x, game.player.position.y).name)
研究済み技術一覧をファイルに書き込む
/c local list = {}
for _, tech in pairs(game.player.force.technologies) do
if tech.researched then
list[#list+1] = tech.name
end
end
game.write_file("techs.lua", serpent.block(list) .. "\n", true)
解禁済みレシピ一覧をファイルに書き込む
/c local list = {}
for _, recipe in pairs(game.player.force.recipes) do
if recipe.enabled then
list[#list+1] = recipe.name
end
end
game.write_file("recipes.lua", serpent.block(list) .. "\n", true)
関連項目
- http://lua-api.factorio.com/latest/ - 最新版のFactorio APIリファレンス(英語)