2021年12月12日日曜日

Among Us 管理ツール少しいじりました。

 前回のMod管理ツール、Reactorを使ってるMODには対応できていなかったので
複数DLLがある場合を仮定してフォルダ管理する形式に変更してみた。

あと、AutoMuteUsやBetter-CrewLinkを使うことを想定して、そちらも同時に
立ち上げられるようにしてみた。

ついでになんとなく.NET5に移行。
単一実行ファイルにできるとか、Zip解凍にアップデートが来ているとかで。


よくあるエンジニアが適当に作ったUIです。

こんなショートカットをまずウインドウにドロップ。
するとSteamなら
Epicなら
となるはず。
Steamの場合はもうひと手順必要で

で表示されるフォルダを開いて
をウィンドウにドロップすると上二つがそろう。
ここでTheOtherRolesなり、Town Of MossなりのModのZipファイルを取ってきて
ウインドウにドロップ。
するとAmong UsフォルダにMod本体以外を展開してリストにModが追加される。

これ以降はDLL本体だけでも大丈夫なんですが、Town Of MossはReactor.DLLが必要なのでZipで登録するほうが楽ですね。

ここまですればMOD無しならVanilla、MODなら好きなMODを選択してゲーム開始を押せば
DLL本体を自動で消したりコピーしたりでAmong Usが起動します。

下二つはDiscode連携するAmongMuteUs用のキャプチャツールや近アモ用のBetter-ClewLinkを同様に登録できます。
チェックを入れると本体起動前にそれらを起動できるので便利かなと。

というのを使ってみたい人っているんですかね?

2021年12月6日月曜日

Among Us MOD管理ツール

 久しぶりにツール作ってます。

Among Us面白いですよね。色んな配信者の方見てるうちに自分でもやってみようと。

今はMODを入れて遊ぶのが特に流行っていますが、そのMODの中にとある推し配信者の方が作ったスキンが入ってるものがありまして。

でもMODない人と遊ぶには外したり、また違うMOD入れたり・・・。
ちょっとめんどくさいなと思って管理ツール作成中です。


ほんとに簡単なツールなんですが、アモアスの起動ショートカットとアモアス本体フォルダを最初に登録します。
Steamだと両方登録しないとだめですが、Epicだと起動ショートカットだけで両方登録されます。

下の表にMODをドロップするとModを管理して選択が出来るようになります。
Zipをドロップするとアモアス本体フォルダに展開するので、まだMOD入れたことない人は最初はZipからですね。
それ以降はDLLだけドロップでOKです。
DLLはMOD名+バージョンにリネームして管理します。

下の表で素の状態でプレイしたいときはVanillaを選ぶとDLLなしで、MODは入れたいものを選択するとDLLをコピーしてゲーム開始になります。

ただ、まだThe Other Role系しか確認してないんですよね。
なぜか最近MOD入れると起動して認識はするんだけどゲーム開始できないので確認できたとも言えないんですよね。
あと結構ファイルいじるので公開するのは怖いんですよね。
どうしようかな?


2019年12月7日土曜日

OVMFのバグ

今ちょっといろいろあってUEFIアプリを書いてます。
検証をQEMU上で行ってるんですが、なぜかプログラムを実行するたびに使用可能メモリが減っていきます。
実機でテストすると全く起きない。
どこまで削ったら起きなくなるのか突き詰めていったら、見つかりました。
TestString()という、画面表示できる文字列か検証するAPI。
これを呼ぶとメモリが減っていきました。

で、QEMU用のUEFIっていうのはオープンソースのOVMFっていう実装を使ってます。
なのでソースみりゃわかるかなと。

ダウンロードしてきてGREPかけて・・・多分これ。

EFI_STATUS
EFIAPI
GraphicsConsoleConOutTestString (
  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *This,
  IN  CHAR16                           *WString
  )
{
  EFI_STATUS            Status;
  UINT16                Count;

  EFI_IMAGE_OUTPUT      *Blt;

  Blt   = NULL;
  Count = 0;

  while (WString[Count] != 0) {
    Status = mHiiFont->GetGlyph (
                         mHiiFont,
                         WString[Count],
                         NULL,
                         &Blt,
                         NULL
                         );
    if (Blt != NULL) {
      FreePool (Blt);
      Blt = NULL;
    }
    Count++;

    if (EFI_ERROR (Status)) {
      return EFI_UNSUPPORTED;
    }
  }

  return EFI_SUCCESS;
}
Bltをfreeしてるってことは内部でメモリ割り当ててるのね。
これは怪しいのでGetGryphの実装を探してみると、たぶんこれ

EFI_STATUS
EFIAPI
HiiGetGlyph (
  IN  CONST EFI_HII_FONT_PROTOCOL    *This,
  IN  CHAR16                         Char,
  IN  CONST EFI_FONT_DISPLAY_INFO    *StringInfo,
  OUT EFI_IMAGE_OUTPUT               **Blt,
  OUT UINTN                          *Baseline OPTIONAL
  )
{
~中略~
  *Blt = Image;
~後略
Imageが実体ね。これを探してみると

  Image = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
  if (Image == NULL) {
    Status = EFI_OUT_OF_RESOURCES;
    goto Exit;
  }
  Image->Width   = Cell.Width;
  Image->Height  = Cell.Height;

  if (Image->Width * Image->Height > 0) {
    Image->Image.Bitmap = AllocateZeroPool (Image->Width * Image->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
    if (Image->Image.Bitmap == NULL) {
      FreePool (Image);
      Status = EFI_OUT_OF_RESOURCES;
      goto Exit;
    }

はい。Imageは構造体で、Bitmapという要素にもメモリ割り当ててるね。
ってことでBltだけfreeするのはアウトですね。
とりあえずTestStringを呼ばなきゃいいんだけど、UEFIの実装ってまちまちでフォントも入ってるかテストしてみなきゃわからないんですよねー。
実際に"|”と”}”が実装されていない環境もありました。"{"はあるのにw。

これ直してビルドすればいいんだけど、環境整えるのがめんどくさいw
誰か直してくれないかなぁ?

2019年11月30日土曜日

ケ〇マス?

久々の投稿です。すっかり忘れてたというか

作ったのはちょっと前ですが・・・。
テレビのクイズ番組で人気のコーナー。
アプリ作ってくれるところ募集とかなんとか言っました。
いいお題ではあるな、と思ったのでものは試しに作ってみた。
4,5時間はかかったかな。

PC更新したばかりなのでまずUnity入れなおして、使い方を思い出して・・・まだよくわかんない。

とりあえず問題の管理だよなぁ。単純に盤面を記録して、正解の読み方、間違った読み方のデータを並べ解けばいいのかな?
ってことでこんな感じ。

巴,祇,藺,草
危,険,案,蹴
医,眩,家,木
剣,園,山,計
基,軸,子,通
薬,奈,馬,鞠
巴,ともえ
巴奈馬,パナマ
祇園,ぎおん
藺草,いぐさ
草木,くさき
危険,きけん
案山子,かかし
蹴鞠,けまり
医薬,いやく
家計,かけい
基軸,きじく
剣,つるぎ
眩,めまい
木通,あけび

誤読データ準備するのがしんどいぞ・・・

2018年3月21日水曜日

2月勝率

気づいたらもう3月も終盤。
また更新忘れてました。

最近のニュースであれば、とうとう星14武器を手に入れました。
パルチザンでした・・・。



とりあえず、頑張って強化もしたしせっかくなのでメインで使っていきたいと思います。

で、バトルアリーナですが相変わらず・・・

特に2月終盤にはバーチャロンコラボで武器種チェンジが入ったんですが初日の混乱で勝ちを稼いだ以外は負け続き。3月序盤まであったんですが結局勝ちきれなかったです。
ライドスラッシャー、面白かったけどなー。使いきれませんでした。

3月はまた武器チェンジでさらに変化があったけど、それはまた別の話、ということで・・・。

2018年2月14日水曜日

1月勝率

長いこと忘れてました。

原因としては、緊急のドラゴン退治頑張ってたこととスマホゲーのイベント頑張ってたあたりかな・・・。
緊急と緊急の合間でアリーナ行くには時間が半端でなかなか行けなかったり。
まぁ、

結果はこちら。1月は結局150戦程度しかしてませんね。

最終日はレジェンド落ちギリギリでやめるというヘタレさでした。
負けるときはほんとに何の役にも立たないレベルで死にまくり、勝っても味方に助けられることのほうが多いくらい。

気になって各ステージの勝率見たらこれはひどい、としか言いようのない勝率でしたw



最終日、これどうなってるんだろ?…8戦2勝6敗でした。まぁ、これはやめますよね。

2月はまだ30戦くらいしかしてなくて勝率6割。かろうじてレジェンドに上がったとこです。
月末はバーチャロンコラボでまた荒れるだろうから少しポイントは稼いでおきたいところです。頑張ってみますか。

2018年1月2日火曜日

12月勝率

あけましておめでとうございます。

プログラムあーでもないこーでもないと微調整してたら12月も終わってしまいました。
やっぱり今の段階で公開してみるのがいいのかな。

さて、バトルアリーナの戦績です。


トータル的には5割は勝てていますが、内容がなかなかひどかったです。
ARPででかい赤帯の日なんかは勝率2割でゲーム中にもぼろくそ言われる始末でした。
その影響で若干プレイ数も減っていたり・・・。
そのほかの日の内容がよかったかというと味方に助けられた試合のほうが多いんですけどね。
そう考えると、勝率はあまり内容を示していないのかな、と思う今日この頃です。
キルレートとかのほうが大事そうですね。プレイ中に記録するのは大変なんだけどなぁ。