読者です 読者をやめる 読者になる 読者になる

集合写真を作るスクリプトを書いた※ただしロジは除く

f:id:omochin4eve:20170422222314j:plain

 

PvPerの皆さんzKillboardはチェックしてますか?当たり前だろ?分かる。というわけで皆が戦った証を残すため、集合写真を作るスクリプトを書いてみました。歴史とまではいきませんが、色々と思い出を残して逝きましょう!

 

まずは基本的なことから。zKillboardの個々のキルボードのページの右上には「そのシステムの前後1時間にあったキルとデスを列挙するページ(Related)のリンクがあります。

 

zkillboard.com

f:id:omochin4eve:20170422223632j:plain

 

例えば、このキルメールのRelatedのリンクをクリックすると

 

f:id:omochin4eve:20170422223808j:plain

 

こんな感じに適当にTeamAとTeamBに分けてくれます。これはこのページの全て or 特定の勢力やプレイヤーを抽出して並べて集合写真の画像を生成するスクリプトです。

 

This script makes a group photo of players listed in "related" · GitHub

処理系はPython 3.5.3です。適当に上記のリンクのソースコードをコピペするか右上にある"Download ZIP"からソースコードを落として解凍して適当な場所に置きます。コマンドプロンプトを開いて

 

pip install requests

pip install pillow

python zkillboard_related_image_generator.py

 

これで使い方の説明文が出ます。まずはzKillboardのAPIからRelatedのデータを引っ張ってきます。APIのURLは"ttps://zkillboard.com/api/related/~"という感じでURLにapiという文字列を足すだけです。上記のRelatedならば

 

https://zkillboard.com/api/related/30002540/201704220000/

 

上記のリンクでRelatedのJSONが返ってきます。このJSONを説明すると、まずはsummaryの中にteamAとteamBに分かれた配列が入っています。それぞれ summay->teamA->list, summay->teamB->list と辿っていきます。

 

  • characterID
  • characterName
  • corporationID
  • corporationName
  • cticker
  • allianceID
  • allianceName
  • aticker
  • shipTypeID
  • shipName

 

使いそうな項目だとここら辺が取れます。IDとNameが両方取れるので便利です。さらに便利なのはctickerとatickerでOverviewに表示される5文字の奴も取れるので大体はここだけで完結します。
 
次はスクリプトのオプションの説明です。
 
オプション名 説明(複数指定したい場合は":"で区切る)
--portrait_size 取得するポートレートのサイズ。今は32/64/128/256/512が対応している。単位はピクセル。デフォルトは512px
--aspect_ratio 生成する画像のアスペクト比。デフォルトだと16:9
--select_alliances atickerを指定したアライアンスだけ抽出する。列挙した順にソートされる
--priority_characters FCとか特定のプレイヤーだけ先頭に表示する。
--ignore_characters 表示したくないプレイヤーを並べる
--reload_json

APIJSONを毎回読み込みかのON/OFF。デフォルトはON

 

試しに全てのオプションを使ってみると

python zkillboard_related_image_generator.py https://zkillboard.com/api/related/30002540/201704220000/ --portrait_size=128 --aspect_ratio=4:3 --select_alliances=SHDWC:JMP-N "--priority_characters=Omochin:Omochin Jp:Omochin Tv" "--ignore_characters=Omochin Com:Omochin Sale:Omochin Help" --reload_json=True

 

https://zkillboard.com/api/related/30002540/201704220000/ から情報を取得し、ポートレートサイズは128。アスペクト比は4対3。SDHWC(Shadow Cartel)とJMP-N(Did he say Jump)だけを抽出して並べる。Omochin, Omochin Jp, Omochin Tvというプレイヤーを先頭に表示する。Omochin Com, Omochin Sale, Omochin Helpというプレイヤーを無視する。実行をする度にJSONを読み込む」

 

この例だとこのような内容の処理になります。とりあえず敵味方関係なくrelatedに載ってるプレイヤーを全部並べた画像を生成したい場合は

 

python zkillboard_related_image_generator.py <RELATED API URL>

 

 これで動きます。

 

さぁフレンズとの思い出を残そう!

 

EVE Online辞書アプリ的なものを作った

f:id:omochin4eve:20170420210649j:plain

 

EVEの日本語化サポートが終了しました\(^o^)/

今後のアップデートからは日本語翻訳はされません/(^o^)\

 

!!!!来るべきEnglish Onlyの時代に備えよう!!!!

 

github.com

ならばまずは何が必要だ?と考えた時、「なによりもまずは辞書が必要だ。原始的なものではなくインフォメーションテキノロジー的なやつが」という結論になったので適当に作りました。

 

www.youtube.com

www.youtube.com

説明動画も用意しました。上が音声での説明(長い)で下が字幕での説明(短い)です。気が向いたら使ってみてください。

 

 

f:id:omochin4eve:20170420211823j:plain

匙を投げる(引退する)前に、まずは知恵を振り絞ってみよう!

Re:ゼロから始めるPyfa生活

EVEOnlineを遊んでる皆さん、Pyfaというツールを知ってますか?使ってますか?

Pyfaというのは船のFitを組む時のアシストツールです。イケメンは皆使ってます。あいにく私はブサメンなので使ってません><;

f:id:omochin4eve:20170403215122j:plain

というわけで一念発起してPyfa生活を始めました。Pyfa Noobで色々と苦労したのでメモ代わりに残しておきます。

 

Python 3.x & 2.xをインストール

まず第一関門です。Pyfaは最新のPython3.x系統ではなく古いバージョンを使ってます。しかし、2.x系統は自分で環境変数を弄ってパスを通さないといけません(意味は分からなくていいです)

そこでPython3.3から導入されたpy.exeという簡易バージョン切り替えを使います。

 

参考URL: 3. Windows で Python を使う — Python 3.6.1 ドキュメント

(注)もしPython経験者でvirtualenvで開発環境を分けようと思った方、wxPythonが動かないかもしれないので気を付けてください。

 

www.python.org

↑のリンクから2.x系統と3.x系統の両方を落とします(画像とはバージョンが違ってるかもしれません)

f:id:omochin4eve:20170403220137j:plain

両方ダウンロードしたら、両方そのままインストールしてください。

 

f:id:omochin4eve:20170403220254j:plain

3.x系統をインストールする時のオプションで"Install launcher for all users(recommended)"のチェックボックスは外さないようにしてください。

 

Pyfaのソースコードをダウンロード

github.com

↑のリンクの右上の方に"Clone or dowanload"というメニューがあります。そこをクリックの後に"Download ZIP"で適当な場所にダウンロードした後に解凍。

f:id:omochin4eve:20170403221606j:plain

ダウンロードする場所には日本語が含まれない方がいいかもしれません。あまりマナーはよくないですがCドライブ直下なら確実です。

 

コマンド プロンプトの立ち上げ

まずはPythonのインストールが無事に完了しているのか確認します。

 

Windows10

f:id:omochin4eve:20170403220518j:plain

先ほどPyfaを解凍したフォルダを開いてメニューの「ファイル>コマンドプロンプトを開く>コマンドプロンプトを開く」を選択します

 

Windows7 

f:id:omochin4eve:20170403220701j:plain

"Windowsキー + R"を押すと「ファイル名を指定して実行」というウィンドウが左下に出ると思います。名前の所に"cmd"と入力してEnterを押してください。

何か黒い画面が出たら成功です。

 

f:id:omochin4eve:20170403222501j:plain

次にPyfaを解凍したフォルダを開き①のアイコン辺りをクリックするとフォルダまでのパスが表示されます。選択された文字列を右クリックして②のようにコピーします。

 

f:id:omochin4eve:20170403223127j:plain

先ほどの黒い画面に戻り"cd "と入力した後に黒い画面を右クリックすると先ほどクリックしたものが貼り付けれるので、その後にEnter。上記のように"Pyfaを解凍したフォルダ > "に表示が切り替われば成功です。

 

バージョン確認

f:id:omochin4eve:20170403220953j:plain 

試しに"py -3 -V"と入力してPython 3、 "py -2 -V"でPython 2のバージョンが表示されたらインストールは成功しています。

 

ライブラリをインストール 

f:id:omochin4eve:20170403225937j:plain

Pyfaの解凍先に移動した黒い画面で"py -2 -m pip install -r requirements.txt"と入力すれば必要なライブラリがインストールされます。ここからは黒い画面に謎の文字が出まくりますが、頑張ってインストールしてるだけなので気にしないでください。

 

https://wxpython.org/download.php

 

f:id:omochin4eve:20170403223814j:plain

次にGUIツールをインストールします。↑のリンクから"32-bit Python 2.x(インストールしたのと同じバージョン)"を選択します。64-bit版をインストールしてはいけません。

 

f:id:omochin4eve:20170403224140j:plain

インストールする場所はPython2.7と同じでないといけません。もしPythonを別の場所にインストールした方は気を付けてください。

 

Pyfaを動かしてみる

準備が完了したので、いよいよPyfaを走らせてみます。

f:id:omochin4eve:20170403224343j:plain

先ほどの黒い画面で"py -2 pyfa.py"と入力して…………

 

f:id:omochin4eve:20170403224507j:plain

Pyfaが起動したら成功です。お疲れ様でした。

 

Pyfaを弄ってみる

Pyfaを解凍したフォルダ内の"pyfa.py"というファイルをメモ帳などの適当なテキストエディタで開いて、160行目あたり(バージョンによって違うかも)の"options.title = "という項目を探します。これがウィンドウのタイトルです。

 

f:id:omochin4eve:20170403224756j:plain

試しにこれを適当に書きかえてみます。

 

f:id:omochin4eve:20170403224820j:plain

先ほどの要領で起動します。

 

f:id:omochin4eve:20170403224836j:plain

 

自分だけのPyfaを作ってみよう!

(まぁバグや仕様の調査がメインだと思いますが)

EVE Onlineのデータベースについての雑感

長くなったので、結果だけ見たい人用に記事の最初にアウトプットを置いておく。

Evepedia

f:id:omochin4eve:20170311144005j:plain

DBの中身を適当に言語別に並べてみた。次はスクリプトの動かし方を簡単に説明。

 

github.com

ソースコードを落としてきて適当な場所で解凍。Python 3.x系。

Resources - EVE: Developers ここからSDEを落としてきて解凍、fsdの方のフォルダをソースコードの位置に移す。コマンドプロンプトを開いて

python Evepedia.py --import

これで同じフォルダにeveonline.sqliteというファイルが出来てたら成功。

python Evepedia.py

今度は--import無しで実行、docsというフォルダにhtmlファイルが大量に出来てたら成功。これが上記のサイトになる。何か足りないとかエラーが出たら"python pip"とかでググってライブラリを入れてください。後は焼くなり煮るなり勝手にどうぞ。

以下はチラシの裏。何をやってるか興味がある人は読んでどうぞ。

 

続きを読む

公式のType IDsをCSV形式にする方法

EVE Onlineでは全てのモノに固有のIDが割り振られている。例えば”Omochin”というキャラのCharacter IDは"96790690"である。これは誰からでも参照することができ、かつ変更することは不可能である。

もしバイオマス処理をして削除をし、新たに同じ名前のキャラクターを作った場合は別のCharacter IDが割り振られる。

IDの基本的な話はこのぐらいにして、今回はType IDの話である。

例えば"アンチマター弾S"というアイテムに対して処理を行う場合、内部では”Antimatter Charge S”や、まして"アンチマター弾S"として認識しているわけではない。コンピューターにとって、このアイテムはType IDの"222"なのだ。

 

「んで、これを知らないと何か困るの?」

 

と疑問もあるかもしれない。大体の場合は「知らなくても特に困らない」

ただ、IDから情報をひっぱってくるサービスやツール等もあるので、こういう風になっているんだな~ぐらいは知っておくといいかもしれない。

APIから参照できるデータは全てIDのみであるが、ツール側がゲーム内の用語に変換してくれているのでユーザーが直接IDを目にすることはあまりない。

Resources - EVE: Developers

このType IDのデータというのは公式が用意してくれている。リンク先の"sde-xxxxxxxx-TRANQUILITY.zip"からダウンロード可能だ。xxxxxxxxxの部分はデータがアップデートされた日時が表示されている。

ダウンロードしたデータを解凍し"sde > fsd > typeIDs.yaml"というファイルにType IDの一覧が列挙されている。メモ帳などのテキストエディタで開くと中身がみれる。

しかし、このファイルは62MBもあり行数にいたっては110万行もある。しかもYAML形式なんぞ一般ユーザーには馴染みがない(エンジニアはよく使いますが)

そこで、みんな大好きなExcelGoogleスプレッドシートで開けるように変換スクリプトを書いてみた。

https://developers.eveonline.com/resource/resource ...

ダウンロードしてきたtypeIDs.yamlを同じフォルダに置いて実行。英語や日本語以外でも出力したい場合はconfig.yamlのlocales下の言語コードの先頭の#を消す。

 

f:id:omochin4eve:20170227194548j:plain

TypeIDs.csv - Google スプレッドシート

 

 こんな感じになる。↑のスプレッドシートはご自由にお使いください。

 

引数に2つの解像度を指定して切り替えるC++コード

DELL 3008WFPというWQXGA(2560×1600)のモニターを買ったところ、これは比率が16:9ではなかった。

別に使う分には支障はないので気にしてはなかったけど、NVIDEA GeForce ExperienceのShareという録画ツールを解像度の比率が違う複数のモニターで使った場合、録画される動画の比率がランダムでどれかのモニターのになって困る。

色々考えた結果、ワンクリックで解像度を切り替えるようにするがいいという結論になったので早速ツールを探してたけど、全部お手軽感が足りなかったので自作した。

引数に2つの解像度を指定して切り替えるC++コード

使い方はショートカットを作って引数にモニターの番号、1つ目のサイズ、2つ目のサイズを指定する。

DPISwitcher.exe 0 2560 1600 2560 1440

 この例なら起動するたびに「番号0のモニターの解像度を2560x1600と2560x1440で交互に切り替える」ことが出来る。

ショートカットに引数を指定する方法は適当にググってください。

PvPをやるなら114514回見ろと言われた動画

 

 

Twitterでオススメされた動画。分からないなりにレビューをしてみる。

Proteus - UniWiki というGallenteのT3 Cruiser(Strategic Cruiser)を使っている。気軽にSolo PvPをする船として Atron - UniWiki もオススメされたことがあるので、やはりSolo PvPではGallenteが最強なのでは?という顔になる。

 

最初に総評

  • とにかく瞬殺する!
  • Atronは餌!
  • Griffinウサすぎる!

 

Fit 

zkillboard.com

 

何故こんなに強いのか?

 

気になった点

  • ウェビを積んでない
  • スクラムとディスラプの両方積んでる
  • 場合によっては2 Prop
  • リペアを積んでいない
  • 殆どの戦闘でEWarを喰らってない
  • 比較的遠くの距離(50km程度)でAligningかKeep At Rangeが基本の立ち回り

以上の点から、こちらはダメージを喰らわない事を前提としたカイト戦を想定したFitなのでは?と思った。

 

 VS Federation Navy Comet(0:15)

Keeping At Range 50km, ディスラプ。特に何もされずにFederation Navy Cometを瞬殺。

 

VS Atron * 2, Slasher, Incursus, Executioner(0:26)

MWDで距離を詰めてQuafe ZERO(速度+5% スキャン分解能+5%)を使用。Atron * 2, Slasher, Incursus, Executionerをディスラプをかけた後に瞬殺。たまにディスラプとMWDをオーバーロード。 MWDをいい感じの位置で止めた後のAligningが凄い。角速度とか考える必要なんてなかったんや!

 

VS Rupture, Vexor(1:22)

Armorが9割、Hullが4割ほど減った状態でスタート。お決まりのようにKeeping At Range 50kmでディスラプ後にRuptureを瞬殺。Vexorは瞬殺とはいかないとみたのか、Caldari Navy Antimatter Charge Mにした後にAligning. 倒した直後にECMがかかる。倒した後でよかった。

 

VS Rapier, Panther(2:00)

MWDをオーバーロードして今回は最初からCaldari Navy Antimatter Charge M.  Keep At Range 50km とディスラプ. Rapierがタックルしてきてウェビとディスラプを喰らう。こちらはスクラムもかける。 真ん中に並んでるモジュール以外はオーバーロード。シールドを抜くのに時間がかかったけど、そこからは瞬殺。

MWDでPantherにKepp At Range 50km. ディスラプの後に攻撃。途中でECMドローンが出てきたのでそちらを先に殺す。ECMドローンを一つ残してKeep At Range 30km, Javelin Mに変更して攻撃。何かいい感じじゃなかったらしくKeep At Range 50km, Caldari Navy Antimatter Charge Mに戻す。一つ残してたECMドローンにジャムられて逃げられる。

 

VS Atron, Ares(3:30)

お決まりのパターンで倒す。

 

VS Thrasher, Vigil, Atron * 2, Stabber(4:20)

今回は2 Prop. ABは使わずにお決まりのパターンで瞬殺。Stabberを相手にしてる時にジャムられて逃がす。動画が途切れてるから追いかけっこでもしたんだろうか?普通に倒す。

 

VS Atron, Griffin(5:33)

開幕にECMを喰らう(1回目)。ECMがきれたら一番上の列のモジュールをオーバーロード。傷んでるモジュールをリペア。またECMを喰らう(2回目)Quafe ZEROを使用。ECM, ディスラプ, ダンプナーを喰らう。この動画で初めてのデバフまみれ。何故かディスラプなのにABを使う。途中でMWDに切り替え。

またECMを喰らう(3回目)。喰らってる間も細目に月とかにAligningして距離の調節。デバフまみれの中ABを使用。あと少しのところでまたECMを喰らう(4回目)

ここら辺MWDとABを細目に切り替えてる。ECMが切れた瞬間にECMを喰らう(5回目)。さらにトラッキングも喰らう。この動画初めてのかなりの苦戦(主にECMのせいで)。シールドも残り3割。

7:15. ようやくAtronを撃破。Griffinも倒そうと思ったらECMを喰らう(6回目)。ストレスがやばそう。ECMが切れ次第Griffinを倒す。

 

VS Griffin(7:38)

Wreck of Test(何かよく分からない、多分なにかの構造物)を最初に破壊。Griffinを倒したと同時にECMを喰らう。

 

VS Griffin(8:00)

Griffinばっかじゃねーか!,ThrasherとStabber Fleet Issueもいたけど見逃す。瞬殺できないとみたんだろうか?

 

反省点

  • 次はもっとオーバービューを見たい。
  • 細目にオブジェクト(月とか)にAligningしてるので、もっと空間を意識したい
  • オーバーロードのOn/Offを意識したい。
  • そのモジュールを使う理由を考察したい

 

コメントをもらった