factorio headlessでSteamに紐づいたアカウントのユーザ名を変更してしまいユーザデータが引き継げなくなった問題の対処

If you change your name your save game will see your new name as a new character. You can use a console command to swap your character back in-game:
/swap-players old-username new-username

https://forums.factorio.com/viewtopic.php?t=16811

ということでコンソール(全角/半角キー)からコマンドを入力するものの、「Admin権限が無いのでコマンドが実行できないよ」と怒られる。headlessでホスト以外にadminを付与する方法を調べた。

factorio-current.log が出力されているディレクトリに server-adminlist.json を新規作成して、admin権限を与えるユーザ名をjson形式で列挙する。その後、factorioを再起動すればOK。(systemctlはconohaサーバのセッティングで利用しています)

# pwd
/opt/factorio/factorio

# ll
drwxr-xr-x 8 factorio factorio 4096 Oct 17 19:03 ./
drwxr-xr-x 5 factorio factorio 4096 Oct 15 15:07 ../
-rw-rw-r-- 1 factorio factorio 1527 Oct 15 15:05 achievements.dat
drwxr-xr-x 3 factorio factorio 4096 Oct 15 15:05 bin/
drwxrwxr-x 2 factorio factorio 4096 Oct 15 15:05 config/
-rw-r--r-- 1 factorio factorio 1001 Jan 7 2021 config-path.cfg
-rw-r--r-- 1 factorio factorio 1479 Oct 17 19:03 console-log
-rw-r--r-- 1 factorio factorio 1479 Oct 17 19:03 console-log.prev
drwxr-xr-x 4 factorio factorio 4096 Oct 17 18:55 data/
-rw-r--r-- 1 factorio factorio 5015 Oct 17 19:03 factorio-current.log
-rw-r--r-- 1 factorio factorio 6207 Oct 17 19:02 factorio-previous.log
-rw-r----- 1 factorio factorio 0 Oct 17 19:02 .lock
drwxrwxr-x 2 factorio factorio 4096 Oct 17 19:02 mods/
-rw-rw-r-- 1 factorio factorio 9079 Oct 17 19:03 player-data.json
drwxr-xr-x 2 factorio factorio 4096 Oct 17 16:39 saves/
drwxrwxr-x 3 factorio factorio 4096 Oct 17 19:03 temp/

# vi server-adminlist.json
# cat server-adminlist.json
[ "username1", "username2" ]
# systemctl stop factorio.service
# systemctl start factorio.service

factorioをconohaで動かしてみた

conoha(www.conoha.jp)というVPSサービスが安くて良さそうなので使ってみた。

これまで、AWSでEC2のt2.microを利用してfactorio headlessを立ち上げていたが、突然ゲーム内のスピードが落ちてカクカクになったのに、topコマンドの結果を見るとCPU使用率は低いまま。原因を調べた結果、tシリーズはCPU creditというものが設定されていて、それを使い切ってしまうと、CPUの能力を十全に活用できずキャップがかかる仕様と判明。そもそも、本来、t2.microはCPUをあまり利用しないサービスが前提となっているものの、起動など一時的にCPUを使用するシーンのみ、お情けとして規定された性能分だけCPU性能をオマケしてもらっている、という仕様らしい。CPUをガンガン常用するようなゲームサーバには適していないことが判明。

じゃあ、適したAWSのインスタンスタイプがどれかなと調べているとき、factorioがプリインストールされているVPSを格安で貸し出してくれる本サービスを発見し利用に至る。注意点は、サーバ停止時も利用料がかかってしまうこと。どうせ停止中でもお金がかかるなら起動しっぱなし(factorio headlessは誰もプレイしていないときはゲーム内時間がSTOPする仕様)とするか、毎回、セーブデータをローカルなどにバックアップしてサーバ自体を削除/新規するかの2択となる。

ちなみに、FAQには詐欺(?)のような書き方で「停止していても料金はかかる」と書いてある。

停止時の料金はありますか?(ConoHa VPS・ConoHa for Windows Server・ConoHa for GAME)
ConoHa VPS・ConoHa for Windows Server・ConoHa for GAMEについて、停止(シャットダウン)いただいた場合でも料金が変動することはございません。サーバーの稼動、停止の状態にかかわらず、ご契約数で料金が発生いたします。

https://support.conoha.jp/common/faq/payment-q/

セキュリティグループはプリセットから下記を適用する。Webコンソールは使いにくいし、セーブデータのアップロードやダウンロードができないので、SSH portを開放してやり、Teratermなど手に馴染んだクライアントソフトから接続するのが吉。

  1. IPv4v6-SSH
  2. IPv4v6-Factorio

セーブデータは下記に格納されている。コマンドからマップのカスタマイズをするのは面倒なので、ローカルのfactorioで作成したセーブデータを同名でアップロードしてやるのが吉。

  • アップロード先:/opt/factorio/savedata/factorio_save.zip
  • アップロード元(Windows Steam版):%appdata%\Factorio\saves

conohaのすごいところは、factorioがプリインストールされているだけではなく、serviceまで作り込まれているところ。enableになっているので、サーバを起動した時点でfactorioが起動している。おなじみのsystemctlからサービスを起動/停止しよう。なお、ポートはデフォルト(34197)となっている。先程設定したセキュリティグループ(IPv4v6-Factorio)も34197が許可されている。

  1. systemctl status factorio.service
  2. systemctl stop factorio.service
  3. systemctl start factorio.service

statusを確認してみた。

# systemctl status factorio.service
● factorio.service - Factorio Server
     Loaded: loaded (/etc/systemd/system/factorio.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-10-10 09:30:36 JST; 2h 8min ago
   Main PID: 138266 (sh)
      Tasks: 12 (limit: 1065)
     Memory: 651.7M
     CGroup: /system.slice/factorio.service
             tq138266 /bin/sh -c /usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/save>
             tq138267 /usr/bin/SCREEN -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factor>
             mq138276 /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save --console-log /opt/fac>

Oct 10 09:30:36 vm-1c3075e2-0b systemd[1]: Started Factorio Server.

config.iniはデフォルトなので、必要に応じて修正する。デフォルトだと、10分間隔にオートセーブでフリーズがかかってうざいので、autosave-intervalは長めにしておくことを推奨。この方法だと、何故か設定が適用されない不具合が発生。解消方法は後述。

# pwd
/opt/factorio/factorio/config

# diff config.ini.default config.ini
21c21
< ; autosave-interval=5
---
> autosave-interval=20
23c23
< ; autosave-slots=3
---
> autosave-slots=5

上記の方法だと何故か設定が反映されない。別の方法を模索した結果、下記のjsonで設定してやるとうまくいくことが判明。exampleをコピーして設定ファイルを新規作成。仲間内でのゲームなので、public/lanをいずれもfalseにして、autosave_intervalを60分に変更。その後、この設定ファイルを読み込むよう、起動オプションに追加してやる。

  • /opt/factorio/factorio/data/server-settings.example.json
  • /opt/factorio/factorio/data/server-settings.json
# diff server-settings.example.json server-settings.json
13,14c13,14
<     "public": true,
<     "lan": true
---
>     "public": false,
>     "lan": false
48c48
<   "autosave_interval": 10,
---
>   "autosave_interval": 60,

serviceファイルの起動オプションに「–server-settings /opt/factorio/factorio/data/server-settings.json’」を付与する。systemctl daemon-reloadでserviceの再読み込みを忘れずに。

# cat /etc/systemd/system/factorio.service
[Unit]
Description=Factorio Server
After=network.target nss-lookup.target

[Service]
Type=simple
User=factorio
Group=factorio
WorkingDirectory=/opt/factorio
ExecStart=/bin/sh -c '/usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save --server-settings /opt/factorio/factorio/data/server-settings.json'
ExecStop=/usr/bin/screen -p 0 -S factorio -X eval 'stuff "/server-save\015"'
ExecStop=/bin/sleep 5
ExecStop=/usr/bin/screen -p 0 -S factorio -X eval 'stuff ^C'
ExecStop=/bin/sleep 5
Restart=always

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload

Android13のfoobar2000で曲の切り替えタイミングのピコン音を消す方法

Google Pixel 6a (Android 13)でfoobar2000+Lasfmにより音楽再生中、曲の切り替えタイミングでアラート(ピコン音)が毎回鳴ってしまい、アラート中は曲の再生音量が小さくなってしまう問題の対応策です。foobar2000の通知をサイレントに変更することで改善します。

対応策

Androidの設定>アプリ>foobar2000>通知>その他:foobar2000
 デフォルト→サイレント

Google Pixel 5aで着信音が鳴らない事象

Google Pixel 5aで着信音が鳴らない事象があり、マナーモードがONになっているわけでもなく、Bluetoothデバイスに着信音が吸われている訳でもなく、原因が不明だったのですが解決しました。

原因は、着信音が「ビギニング」という、プリセットに存在しない値に設定されていたことでした。つまり無音で鳴っていたものと思われます。何らかのバージョンアップやスマートフォン間のデータ引き継ぎで存在しない「ビギニング」が設定されてしまったと思われますが、経緯はわかりませんでした。「ビッグアドベンチャー」等の存在するプリセットを指定することで解決しました。

設定>着信音とバイブレーション>着信音

Androidバージョン:12

WSLインストール時のエラー(0x80370102)

WSLをインストール(wsl –install)後に再起動するとコマンドプロンプトが自動で起動しインストールが始まるものの、下記のエラーが発生した。調べてみると、Intel CPUで言うところのVirtualization TechnologyがOFFになっていたことが原因だった。AMD CPUでは「AMD Virtualization (AMD-V™)」と呼ぶらしく、ASUSマザーボードのUEFI BIOSでの設定項目は「SVM MODE」ということだった。

WslRegisterDistribution failed with error: 0x80370102

Windowsコマンドプロンプト

最近のPCでは、再起動後にASUSのロゴが表示されない(早すぎてFxキーでUEFI BIOS画面に入れない?)ようで、Shiftキーを押しながら、Windowsの左下スタートメニューの再起動を実行することでUEFI BIOS画面に入ることが出来る。

更に、HDMIとDPを両方使用して2画面構成にしている場合、DP側のみにUEFI BIOS画面が表示されるので注意。私の場合、DP側をサブディスプレイに出力させ、普段はディスプレイをOFFにしていたので数分ハマった。

UEFI BIOS画面に入ったら、右下のAdvanced Mode > Advanced > CPU Configuration > SVM Mode > Enable > 右下EzMode > Save & Exitで再起動すればOK。

再起動後は、左下スタートメニュー > 最近追加されたもの > Ubuntuを選択することでインストールを再開できる。新規作成するユーザ名を聞かれパスワードも合わせて設定することで設定完了する。

DQ10メモ

毎回忘れて調べているのでメモ。

リンク集

ジェルザーク

  • 天地雷鳴士・僧侶(スティック)@いのちだいじに:ブレス、混乱、マヒ、転び、眠り
  • まものつかい(ムチ)@ガンガンいこうぜ:ブレス☆、幻惑、転び

試練の門のボスの章(強戦士の書)

  • サポートなかま
    • スーパースター@扇
      「バッチリがんばれ」に設定することで、「ベストスマイル」「ミリオンスマイル」を発動させて経験値UPに貢献する。
    • 戦士@オノ
      プラチナキング戦のまじんぎり要員。
  • 超元気玉(なかまモンスターを育てる場合。育てない場合は元気玉でOK)
  • 育みの上香水(なかまモンスターを育てる場合。育てない場合は「宝珠のプチプチ香水」。香水の重複はNG、上書きされる。)
  • 料理

なかまモンスター

モーモン

  • さくせん
    バッチリがんばれ
  • スキルポイント
    ひかりモーモン(Ⅱ):48、やみモーモン(Ⅱ):50、さとりモーモン:40、すばやさアップ:残り
  • とくぎON
    ザオリク(ザオラル)、ドルモーア、ふわふわダンス、ホラーフェイス、ポワポワダンス(絶対OFF:ベホイミ、ラブリーフェイス)
  • ステータス
    ふわふわダンスの回復量はおしゃれさ依存(リミット500)のため、かいふく魔力は不要。

おどるほうせき

  • さくせん
    いろいろやろうぜ
  • スキルポイント
    しあわせルビーのII:40、扇IIスキル:48、運命のエメラルド:40、きようさアップ:32
  • とくぎON
    ぬすむ、ラッキーダンス(経験値UPがほしいときのみ)
  • ステータス
    きようさ

万魔の塔

サポートなかま

  • 検索条件:魔剣士、鎌、マヒ、即死、転び
  • そうび:ミラーアーマー、夢幻魔王
  • アクセサリ:機神の眼甲、竜のうろこ、武刃将軍、炎光の勾玉
  • 耐性:呪文ダメージ減が27%以上
  • さくせん:ガンガンいくわよ×2、バッチリがんばれ×1

攻略情報

  • 攻略順序:5→1→2
  • ギラムマジック:受けるダメージを20軽減
  • 行動:カカロン→キラキラポーン(5のみ)→ピリオム→マジックバリア(5のみ)→げんま開放→アイギスの守り
    ※キラポンを先にしないと事故る可能性が高い。

ダークトロル狩り

  • 持ち物:元気玉、料理(30%)
  • サポートなかま:戦士(オノ)@ガンガンいくわよ、旅芸人(ブーメラン)@ガンガンいくわよ、スーパースター(鎌)@バッチリがんばれ

参考

Google Pixel 3a の Google Photos 無料枠を PC から使い倒す(Resilio Sync)

250円/月をケチっている訳ではなく、如何に工夫して Google Pixel 3a の Google Photos 無料枠だけで対応できるかに挑戦したい人に向けたガイドです。結論から言うと Resilio Sync を活用すれば実現可能なのですが、ハマった箇所があるので後進のためにメモしておきます。

メカニズムは、P2P を使用して PC のフォルダを Pixel と同期させて、Pixel の Google フォトから自動アップロードさせています。なお、本アプリに共通アカウントという概念はなく、全てのピア(PC/Pixel)は対等に扱われるため、ピア毎にアカウントが存在するイメージです。そのため、PC で作成したフォルダ単位に Pixel のアカウントへアクセス権限を付与をすることとなります。

  1. Pixel に Resilio Sync をインストールして、適宜、初期設定をします。
  2. PC に Resilio Sync Home (for personal use only) をインストールして、適宜、初期設定をします。
  3. PC に同期用のフォルダ(私は C:\Users\[UserName]\Sync を指定)を作成し、Resilio Sync Home から同期フォルダを設定します。
  4. PC の当該フォルダにテスト用の JPEG ファイルを配置します。
  5. QRコードやURL等で PC から Pixel に同期アカウント情報を連携(アクセス権限付与)します。私の場合は /storage/emulated/0/Download/Sync/Sync が自動的に指定されました。最後の Sync が指定したフォルダ名になるように思います。
  6. Pixel の Resilio Sync の設定から、同期された写真を自動でダウンロードするよう設定してやります。具体的にはフォルダの設定から「選択的同期」のチェックをOFFにします。
  7. 念の為、Pixel の Files アプリ(ローカルディレクトリが覗ければ何でもOK)で、当該ディレクトリ(私の場合は /storage/emulated/0/Download/Sync/Sync)にファイルがダウンロードされたことを確認します。
  8. Pixel の Googleフォトが当該フォルダを認識するまで待ちます。認識すると、同期フォルダに設定するかどうかの通知がきますので、同期ONにします。認識されるまで多少の時間を要するようです。なお、誤って同期OFFの回答してしまった場合は、Googleフォトを開いて、「右上のアカウント > フォトの設定 > バックアップと同期 > デバイスのフォルダのバックアップ」より同期ONにすればOKです。
  9. 同期されれば成功です。

Windowsのファイル共有で認証エラーとなる

Windows標準のファイル共有をする過程でハマったのでメモ。

事象

正しいユーザ名・パスワードを入力しているはずなのに「ユーザー名またはパスワードが正しくありません」と認証エラーが出てしまう。

原因・回避策

WindowsのOSユーザ名を途中で変更していた場合、初期(変更前)のユーザ名を入力すると認証に成功する。何故か、認証時に初期のユーザ名が参照されるバグめいた挙動をする。初期のユーザ名は「C:\Users\」配下のフォルダ名が該当する。ユーザ名を変更しても、ユーザ情報を管理するフォルダ名は変更されない仕様を活用する。

「ろうきん口座開設アプリ」を使ってみた

件名通り「ろうきん口座開設アプリ」を使って、ろうきん口座を開設してみました。

  1. アプリをインストール
    下記のアプリをインストールして必要情報を入力のうえ、申込を行います。途中、本人確認資料(運転免許証)をアプリ内から撮影する段階で、全く画像が鮮明に録れずハマりました。スマホに初期搭載されている撮影アプリとは違って、ピントを合わせる機能が無く苦労しました。ですが、ピンボケしていても、撮影画面に表示されている枠に合わせて撮影さえすれば、撮影後の確認画面で、きっちりピントが合っている状態で表示されました。何だったんだ……。
    https://play.google.com/store/apps/details?id=jp.or.rokinbank.oaapp
  2. 本人限定受取郵便物「の到着の通知」が届く
    アプリでの申込から4,5日経つと、超絶二度手間なのですが、本人限定受取郵便物「の到着の通知」が届きます。「配達時間」「本人確認資料の種類」を電話で伝える必要があります。めんどー。
  3. 本人限定郵便物が届く
    運転免許証を手元に用意しておきましょう。何故か、本資料にも名前や住所を手書きさせられます。マイナンバーカード番号も手書きします。また、マイナンバーカード(表裏)の写しが必要です。届印の押印とまたもや手書きが必要です。返信用封筒にも名前と住所の手書きが必要です。はぁ……。
    郵便物が届いたことをトリガに、ろうきん側でキャッシュカードの発行手続が開始されます。
  4. 書留郵便でキャッシュカードが届く
    これでやっと口座が開設されましたが、インターネット経由で操作するためには「ろうきんダイレクト」の申込手続が必要です。
  5. ろうきんダイレクト
    「通帳が無いと新規申込が出来ない」という表記で詰みました。ヘルプデスクに電話で確認すると「ろうきん口座開設アプリを使って申込した場合は、自動的にろうきんダイレクトにも申込したことになる」ということで、キャッシュカードが届いてから1週間程度で、ろうきんダイレクトのログイン情報が記された郵便物が届くとのことです。なぜ同時に送らない……。
    https://www.rokin.or.jp/

Kindle Fireでダウンロード出来ない場合の対処

キングダムを50巻まとめて大人買いしたものの、Kindle Fireには歯抜けで同期されてしまいました。

症状

  1. 再起動を試してもライブラリには表示されない。
  2. 「端末を同期」してもライブラリには表示されない。
  3. ストアから該当の本のページを開いて「ダウンロード」を押しても反応がない。
  4. その後、再起動するとライブラリに表示されるようになったものの、何度押してもダウンロードが開始しない。

対処

「設定」「マイアカウント」より「登録を解除」した後、再度、Amazonアカウントでログインすることで、ライブラリがリフレッシュされ、表示されていなかった本も表示された。ダウンロードもできた。

ライブラリが初期化されるだけで、インストール済のアプリ等は初期化されないので、Wi-Fi環境下なら比較的手軽に初期化できる。「マンガをシリーズで分類」も初期化前はグチャグチャだったものが、リフレッシュされて奇麗に整理整頓されたので定期的にやった方がいいかも。