話は年が明けたのを機に調子が悪くなっていたデスクトップPCのビデオカードを入れ替えたところから始まります。自身初のNvidiaだったので、ドライバー入れるまでにWindowsUpdateのせいで何回も再起動させられるなど、紆余曲折を経て無事セットアップを終え、GeForce660の性能を試してみたくていくつかゲームを試してみたんですが、GPU負荷的には余裕がある。こりゃ、今持ってるゲームじゃ660をフル回転させるのは無理だなと判断して普段使ってるノートPCでは起動できないBVEを久しぶりにやろうと考えてなにか面白そうなルートはないかグーグル先生に訊いてみたら、次のような記事を発見したわけですよ。
これは面白そうだということで、早速櫻井 倫氏作成の2001列車ルートを落としてきて書き換えを始めたんですが、作業を始めて20分ぐらいしてから全部手作業でやるのはかなりめんどいことに気づいたわけです。手作業がめんどいんなら全部自動化すればいいよねということで、今回の本題であるPythonスクリプトにご登場願えるわけですよ。
当のPythonスクリプトはこちらからダウンロードしてください。ページ上部左の"ZIP"ボタンを押せばZIPファイルでダウンロードできるはずです。以下、このスクリプトの使い方の解説に入りますが、多少、コマンドプロンプトなどのコマンドラインの知識が要求されることとPython2.7.3のランタイムがインストールされている必要があることを予めご了承ください。
- まず、落としてきたZIPファイルを解凍しましょう。今回使用するのはその中のko_2001というフォルダーの中身です。(まあ、まだko_2001以外にフォルダーがないので、迷うことはないとは思いますが)
- 櫻井 倫氏のウェブサイトから2001列車のルートデータを、BVE公式サイトからデータコンバーターをそれぞれダウンロードしてきて解凍します。
- 2001列車のルートデータをデータコンバーターに通してBVE5で動く形式にします。(一旦、次のステップに行く前にこの状態で本当にBVE5で動作するか軽くテストしてみるといいでしょう。)
- ステップ1で解凍したko_2001フォルダーの中身をBVE5用に変換された2001列車データフォルダーに移動します。標準なら"マイドキュメント\Bvets\Scenarios\"にあるはずです。(このステップは、ステップ6で使用しているコマンドの意味がわかる人は飛ばしても構いません。)
- 次にコマンドラインを起動し(Windowsの場合Vista以降か7以降かは定かではありませんが、標準でコマンドプロンプトかWindows PowerShellという2種類のコマンドライン(っぽい)環境が使用できますが、今回のスクリプトはコマンドプロンプトの方でのみ動作確認をしております。Cygwinとか入れている人はそれを使ってもいけますが、コマンドプロンプトに合わせてエラーメッセージのエンコーディングをS-JISに設定しているので、エラーメッセージが文字化けします(多分)。Cygwin使いの人たちはf*ck you cmd.exeとでも叫んでおきましょう(^_^;) )先ほどko_2001フォルダーの中身を移動したディレクトリーに移動します。
- コマンドラインに次のコマンドを入力します。
ko_2001フォルダーの中身を移動した人:> python ko_2001_bve5-ify.py Map.txt (なにか適当なファイル名:例えば、Map_ATC.txtなど)
ko_2001フォルダーの中身を移動しなかった人:> python (上記のスクリプトへのパス) Map.txt (なにか適当なファイル名:例えば(ry)
今回の2001列車ATC化プロジェクトはここでおしまいですが、今後も(面白そうなルートとやる気があれば)BVE5-ifyプロジェクトと題して今回のようなPythonスクリプトを不定期で公開していくかもしれません(もっとも、今回のはBVE5ならではの機能は一切使っていませんが)。もしもシリーズ化することになったら、そのときはお付き合いください。
※なお、このスクリプトを使用したために発生した不具合に関しては一切責任を負いかねますので、予めご了承ください。また、Python 2.7.3以外での動作は保証しかねます。
スクリプトの「こちら」からDLしようとすると404エラーが出ます。自分も手作業で入力していて挫折した者なのでDLしたいのですがDLできません。対処の程、よろしくお願いします。
返信削除だいぶ時間が経ってしまいましたが、リンク先のURLを間違えていたようです。修正しました。ご報告ありがとうございました。
返信削除このコメントは投稿者によって削除されました。
返信削除すいません、こうなってしまい出来ないのですがどうしたら良いでしょうか・・・・。
返信削除1.pyは、ダウンロードしたpyファイルです。
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights res
C:\WINDOWS\system32>cd C:\a
C:\a>python 1.py Map.txt
Traceback (most recent call last):
File "1.py", line 111, in
main()
File "1.py", line 47, in main
output_file_name = sys.argv[2]
IndexError: list index out of range
Python 2.7.3を使用しました。
削除やり方よくわかりません
返信削除ページが英語でよくわからないんだが
返信削除やり方がいまいちよくわからないのですが・・・
返信削除Shift_JISの日本語環境でエラーメッセージが文字化けしてしまいました。
返信削除また、Line51と111でエラーが出て進みません。
51行目のエラーは、1000さんへの返信と同じ対処法で回避できます。
削除よろしければ試してみてください
line47と111でエラーが出ますが、
返信削除・最新のコンバータで変換するとMap2.02
・最終行は18234行
・コンバータが変換したMapファイルは新しい構文を使用している
というのが原因でしょうか。
1000さん, あどみんさん
削除返信遅れてしまって申し訳ありません。
47行目でエラーが出るのは、引数をスクリプトのファイル名と置換前のマップファイルの名前の2個しか渡していないのが原因と思われます。置換後のマップファイル名を3つ目の引数として'python'コマンドに渡してみてください。
・最新のコンバータで変換するとMap2.02
・最終行は18234行
という箇所もスクリプト停止の原因なので、自己責任で書き換えてみてください。
上のものをDL・実行したのですが、エラーが出てしまいました。
返信削除エラーが文字化けしていて意味が分かりません。
解決方法を教えて頂けますでしょうか?
実行したコマンド
python ko_2001_bve5-ify.py Map.txt Map_ATC.txt
(ko_2001フォルダーの中身はコンバートしたフォルダ内に移動しました)
結果(エラー)
C:\Users\?\Documents\Bvets\Scenarios\京王電鉄-2001>python ko_2001_bve5-ify
.py Map.txt Map_ATC.txt
Traceback (most recent call last):
File "ko_2001_bve5-ify.py", line 111, in
main()
File "ko_2001_bve5-ify.py", line 51, in main
assert len(file_content) == 18104, u"繝輔ぃ繧、繝ォ縺ョ髟キ縺輔′諠ウ螳壹→驕輔>
縺セ縺吶€・.encode("cp932")
AssertionError: ファイルの長さが想定と違います。
なお、コンバートした2001列車は正常に動作しました。
また、コマンドラインはコマンドプロンプトを使用しました。
さらに、Pythonは、Python2.7.3のランタイムを入れ、環境設定も変えました。
長文になってしまい、すみません。
返信お願い致します。
もう1年半以上前のコメントなので、ご覧になってない可能性もありますが、一応返信いたしますと、AssertionError:の後が文字化けしてないエラーメッセージです。つまり、ダウンロードしたファイルを編集して長さが変わっている可能性があります。18104バイトが想定している長さなので、それに合わせてみてください。どうしてもファイルの長さが変えられないなら、自己責任で51行目の数値を変更してこのチェックをかいくぐることもできます。
削除コマンドラインに、何を入力すべきなのかわかりません
返信削除Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
返信削除>>> python ko_2001_bve5-ify.py Map_ATC.txt
File "", line 1
python ko_2001_bve5-ify.py Map_ATC.txt
^
SyntaxError: invalid syntax
>>>
こういうエラーが出ました