WoT備忘録

ランダムとか色々

Androidで、内部ストレージとしてフォーマットしたSDカードに移動したアプリを本体のストレージに戻す

題名通り。

機種によっては内部ストレージとしてフォーマット後に設定アプリを使って本体のストレージに戻すことができますが、自分が所持しているAndroidは無理だったので備忘録も兼ねて。

 

方法

以下の物が必要です

  • PCとAndroidを接続するためのUSBケーブル
  • adb

adbを利用するために予め開発者向けオプションを有効にする必要があります。

 

まずは開発者向けオプションでUSBデバッグを有効にしてPCと接続します。

初回接続の場合は許可のダイアログがAndroid側で出るので許可をします。

コマンドプロンプトを開き

adb shell

と入力。

特に問題なくプロンプトが変われば

pm move-primary-storage internal

と入力してエンターを押す。

するとAndroid上でSDカードに移動したときのようにコンテンツを移動中という画面になります。

内部共有ストレージを取り外さないでください。

と表示されていたら本体ストレージに移動が進行しています。

終了後はコマンドプロンプト側にSuccessと表示されます。

SDカードを外部ストレージとしてフォーマットすればすべての操作は完了です。

 

World of Tanksの.havokファイルを解析する その1

はじめに

解説を入れていますが、備忘録的な感じで書いています。

ファイルフォーマットをある程度解析できる人でないと理解は難しいかもしれません。

また、用途は決まっているため不要なデータは解読せずそのままスキップします。

.havokファイルとは

.havokファイルとは、Havok社が開発した物理エンジンで利用されるファイルです。

Fallout 4Skyrimでも利用されていますが、拡張子は異なり.hkxとなります。

ファイルフォーマットにも何種類かあり、バージョンによって異なります。

 

元々ワールドオブタンクスでは戦車の装甲圧計算に戦車のビジュアルに用いられていた.modelが利用されていました。

しかし、アップデート1.18でhavokに置き換えられたようです。

データは、各Tier毎に分けられたvehicles_level_XX-PartN.pkgアーカイブのvehiclesフォルダ以下にcollision_clientフォルダでまとめられています。

 

ここではバージョン1.23.1.1のデータを元に構造を解析していきます。

最終的には他の形式に変換したいので、C++を使ってParserを実装します。

ファイル構造を調べる

基本的な構造は以下のソースコードの通りです。

HavokLib/source/format_new.cpp at master · PredatorCZ/HavokLib · GitHub

GitHub - blueskythlikesclouds/TagTools: Tools for editing Havok 2015/2016 binary tag files (See Havoc branch for reference)

 

なお、WoTに使われているHavokはバージョンが新しいようでTST1チャンクとTNA1チャンクが追加されています。

以下のページで記載されていますが名前が違うだけでTST1はTSTR、TNA1はTNAMと構造が一緒のようです。

https://koreanrandom.com/forum/topic/43667-%D0%BA%D0%B0%D0%BA-%D0%B2%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D1%81-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC-havok/page/3/?ct=1707143296

 

あくまでもWoTは衝突などの判定に用いているだけのため以下のチャンクのみが用いられています。

TAG0
SDKV
DATA
TYPE
TST1
TNA1
FST1
TBDY
TPAD
INDX
ITEM

 

ここまでは既存のソースコードとバイナリを見ればすぐ分かりますが、

上記ソースコードには詳しい実装がなかった項目が2つあります。

 

DATAチャンク

TagToolsではチャンクサイズ分データを読み取るだけで中身は解析していません。

HavokLibではDATAチャンクを用いてデータを取っている箇所がありましたが、PTCHチャンクの読み取りに用いていただけでした。

 

DATAチャンク内に文字列が含まれていることや、他のチャンクが頂点データ等と関連性がなかったことから実際のデータが格納されていると思われます。

 

ITEMチャンク

HavokLibで読み取るデータのバイト数は分かりますが、読み込んだデータを見る限りだと変数名と一致しているようには見えませんでした。

しかしDATAチャンクを参照するためのデータが他のチャンクには見つけられないことから、ITEMチャンクとDATAチャンクが関連してると想定して解析を進めます。

 

ITEMチャンクの解析

以下がITEMチャンクのデータです。

変数名からある程度分かるかもしれませんが、データが何を指すのかまでは解析済みです。

項目の解説を行います。


TypeIndexAndFlagsは、フラグとデータ型の情報を持ちます。

TypeIndexAndFlags & 0xFFFFFFしたものがデータ型です。

フラグの方ですが、現時点では何を意味するのかは分かっていません。

 

Offsetは名前の通り、データの開始位置です。

DATAチャンクの開始位置を0として計算します。

 

Countはデータの数です。

データの数は、データ型によって実際のサイズが異なります。

上記画像の例で見ると、0x4の配列のデータは、Countが8です。

このデータはchar型なので、Countがそのままバイト数になります。

 

現状はここまでです。

データ型は構造体のようなデータもあるため、その場合は複雑になります。

データ型はTNA1チャンクで読み取るので気になったら参考にしたgithubのコードを見てみてください。

CWEのお気持ちというか何というか

всем привет

お気持ちというほどお気持ちでもないかもしれない、知らんけど。

まずはCWEお疲れさまでした。
今回もCWEはRUで行う予定だったんですが人が集まらなかったのでアジアでやることにしました。
新車両もあるしね。

 

僕自身上手い訳でもないし、運営してるわけでもないし、907とチーフテンの3優等をどちらも持ってないと指摘されて悔しいただの下手なのでCW管理のツールに関してを書こうと思います。

(6か月ぶりにstanloxをまた見てます。さようならAPEX Legends。)

 

管理シート

 各クランで運営している人は自動・半自動化目指してスプレッドシートを使い色々試行錯誤していると思います。

スプレッドシートでも慣れてしまえば管理なんて余裕かもしれないですが、それでも何かと不便な点が結構あります。

その中でも問題度が高いものは、

  • スケジュール管理シートが壊れる
  • 他人の予定が変更できる
  • スケジュールが詳細に記載できない

 以外思い付きませんでした。

 

まあとにかく問題があるわけで、それを解決するためにCW管理サイトを作成したわけです。

僕的にはWebページを作りたかっただけでもありますが。

 

基本の構想としては、

  1. WoTのアカウントとリンクできる
  2. 自分のスケジュールのみ変更可能
  3. Googleスケジュールのように15分単位で詳細なスケジュールを記述可能
  4. 全員の予定を閲覧できる
  5. 戦闘予定の管理ができる

これらすべてを1つで管理できることを目指しています。

その内で「1234」を作り、ルネサンスで運用していました。

正直戦闘予定の組み立ての部分はGMの基本的なルールを全く知らないので短時間で制作するのは無理でした。

 

そしてできたのがこれ。

f:id:cilda:20210203203442p:plain

 他クランの予定が見れるのは仕様としてまずいので当然考慮して作られています。

他にクランメンバーの予定を表示のみできる画面もありますが準備がだるいのでまた今度。

 

色々まだ問題があってデザインなんかは仮に作っただけなので割とまだまだ。

スプレッドシートで慣れれば問題ないと言われればそれまでですが何回も言うけど割と作るの楽しいので全然おっけー。

 

戦闘とか他クランとか

戦闘に関しては僕も下手だし何も書けない、他クランとか知らん!

ただ、ShivFPSとかTimmyを空いた時間にずっと見てました。

そっちなら知らんこともない。

 

書くの面倒になったんで何か追加であればまた別記事にて。

ランク戦2020で楽にゴールドに入る方法

この記事はランク戦が面倒で1日1時間程度しか戦車をしない人向けです。


まず、ランク戦はボーナスバトルという1戦でもらえるシェブロンが倍になる仕組みが存在します。

貰えるボーナスバトルの数は直前のランクでの戦績によって決まりますが、すべての戦車は1日に1度ボーナスバトルを消化することができます。

ランク戦2020シーズン1では開催期間が22日あるので、1日に3つ程度ボーナスバトルを消化することで大体130〜180%の戦績を出すことができます。

つまり、ボーナスバトルのみを消化し続けることで高い戦績を維持することができるという訳です。

ランク戦に向いてるのは、EBR、B-C 25t、Progetto 65、榴弾60TPです。

報酬車両が出せなくなったので消化する幅は狭まりましたが3つ程度消化できればいいので問題ないでしょう。

特に榴弾60TPはNear_Youも使用しているのでランク戦との相性がいいと思われます。
榴弾をたくさん投げて経験値を稼ぎましょう。

EBRは初動のみ安全に大量のスポットを取り、後は敵のEBRが瀕死か撃破されたら強くスポットを取りに行けばいいと思います。
EBRは最初に発見した敵に対してボーナス経験値が入るのでマトモな偵察よりもスポットすることを重視すると幸せになれます。

それでは良きAPEXライフを。

RUサーバー クランウォーズイベント参加者募集中

我々RUサーバーで活動しているクランMFUJIは7月から8月の間に行われるであろうCWEに参加いたします。

ru.wargaming.net

つきましては人数がまだまだ足りないため参加者を募集しています。

アジアサーバーでCWEを行う予定の方でも一定の時間を作っていただくことができるなら問題ありません。

なお、その時間は確実に空けていただくようお願いします。

RUのアカウントをお持ちでない方も招待プログラムを使い最短約200戦でご案内しております。

また現在、バトルパスシーズン2にてアメリカの設計図が手に入るためE3やE4を作りやすくなっています。

RUサーバーでは広大なグローバルマップで戦闘を行うため、永遠と同じマップを回すことになるので動きがとても覚えやすいです。

ぜひRUサーバーでObj.907T95/FV4201を目指してともに戦いませんか。

参加したい方は以下のDiscordより参加の趣旨をお伝え下さい。

https://discord.gg/CM9AEcQ

World of Tanks MODインストーラ

バージョンアップのたびにMODを手動で入れ直すのが面倒だったので自動で新バージョンを取得するインストーラを作ろうと思ったが、まだ問題があるのでとりあえずはv.1.8.0.1のみ対応版。

https://celestia-z.net/games/wot/downloads/WoTModInstaller_1.8.0.1.exe

インターネットからファイルを取得するのでインストーラ自体の容量は小さいのが特徴。

f:id:cilda:20200401224023p:plain

Battle Observerがあれば大体完結するので選択肢自体は少ない。

 

Aslainはインストールするとアンインストーラが作成されるのとファイルサイズが大きいので個人的には嫌い。