LoginSignup
2
0

Among Us Launcher的なのを自作した録

Last updated at Posted at 2023-08-20

はじめ

みなさん、Among Us楽しんでますか?
えぇ、とりあえずYouTuberの動画でも見るといいですよ。
というわけで、Among Usの記事は2回目、Pythonの記事はn度目ですよろしくお願いします。

さっさとインストールしたい人向け

下の方に技術的解説も載せてます。気になる人は見てみてください。

0. Requirements

まず、このLauncherは、主の開発環境であるEpic版Among Usでのみ試しています。Steam版でも動くかもしれませんが、メインストリーム的サポートは全くもってしません。

まず、Among Usに事前にModを入れたりしてる場合は一回Among Usを消して再インストールした方が良いかもしれません。
その方が、色々なMODを入れられるのでバニラの状態のAmong Usにしておきましょう。

image.png
(多分バニラ状態のEpic版Among Us)

1. Copy Game

MODを導入したい数だけ、Among Usのフォルダーをコピペして増やしておきましょう。
私はTown Of HostSuper New Roles!をメインに使い、更にバニラも残してあるので追加で3つ増やしておきます。
その時、ちゃんと元のフォルダも残しておきましょう。でないと起動できなくなっちゃいますよ!

ざっとしたフォルダ構成
D:/-+-/AmongUs
    +-/AmongUs_SNR
    +-/AmongUs_TOH
    +-/AmongUs_Vanilla

(WindowsのTreeコマンド風)

そしたらそれぞれのフォルダの中に対応するMODでも入れておきましょう。

1-1. Town Of Host

こちらのページの下部の方にTownOfHost-X.X.X.zipというファイルがあると思うので、それをダウンロード・解凍します。

そしたら、Town Of Hostを導入したいAmong Usのフォルダ(Among Us.exeがあるフォルダ)に中身をコピペします。

1-2. SuperNewRoles!

こちらのページの下部の方にSuperNewRoles-vX.X.X.X.zipというファイルがあると思うので、それをダウンロード・解凍します。

そしたら、SuperNewRoles!を導入したいAmong Usのフォルダ(Among Us.exeがあるフォルダ)に中身をコピペします。

2. Overwrite Application

リンクの中にあるAmongUsLauncher.zipをダウンロードして解凍してください。
中身にあるAmong Us.exeがランチャー本体です。
Among Us.exeという名前ですが、これはゲームではなく ランチャー本体 です。
そしたらこのAmong Us.exeを、もともとAmong Usがインストールされていたフォルダの中に上書きで入れてください。

3. Setup Application

Epic Games LauncherもしくはSteamからAmong Usを起動してください。
そしたら、Among UsではなくLauncherが起動すると思います!

では、セットアップを行っていきましょう。
このランチャーでは、それぞれのAmong Usのことを「インスタンス」と呼びます。
まずはインスタンスを追加していきましょう。

image.png

「インスタンスの追加」の所に、「インスタンス名」と「追加したいAmong Usのフォルダ(Among Us.exeがあるフォルダ)」を入れます。
「インスタンスを追加」ボタンを押すと追加されます。

4. Launch Game

Among Usを起動するときは、青色になっているインスタンスの名前をクリックします。
すると、対応するAmong Usが起動します。

やぁ!僕は(ベントに入れない)エンジニア!

ここから先は技術的な解説になりますので、暇な人だけ見てみてください。

さて、このLauncherを一言で説明するなら、起動引数を保持してインスタンスに渡すことで正規Launcherに偽装するような感じです。

image.png

Among Us.exeのそもそもの仕様

まず、Among Us.exeをダブルクリックしても、通常は起動しないと思います。(少なくともEpic版は)
それはなぜなのかというと、Among Us側が起動したユーザーが誰かわからずログインが出来ないという所にあります。(もしかしたらライセンスなどの理由もあるかもしれない)
じゃあ、僕たちがエクスプローラーでAmong Us.exeをダブルクリックするのと、EpicGamesLauncherやSteamからAmong Us.exeを起動するのでは何が違うのでしょうか?
理由は単純で、EGLやSteamから起動するときは、Among Us.exeに追加で「ユーザーID」や「ログイントークン」などを渡しているからです。
この、アプリケーション起動時に渡せるデータを「起動引数」(ちょっと端折った)と言います。

例えばPythonでプログラムを実行する際は

$ python main.py

という風に実行すると思うのですが、このmain.py以下が、pythonというプログラムに渡す起動引数になります。

さて、この起動引数、通常は我々ユーザーが渡す事はできません。
エクスプローラーからプロパティで設定したり、ターミナル(PowerShell/コマンドプロンプト)から"./Among Us.exe" ...と引数を設定して起動することは出来ますが、我々はEGCやSteamがどんな引数を渡しているのか分かりません。
先ほど、ユーザーIDとトークンを例に出しましたが、そのトークンをどこから取得するのかなどは分かりません。もしかしたら、トークンは随時生成されているものかもしれません。
なので、このような 動的に起動引数を受け渡すランチャー が必要になってくるんですね。

プログラム

もともと、SuperNewRoles!でみんなでアモアスをやってたところ、ある方に「エンジニア使えない!!!!」と言われて、「あぁじゃあまぁバニラアモアス起動するかぁ」ってなった時に、「これランチャー的なのあったら便利だよなぁ...」となってCLIアプリケーションとして作りました。
その時はまだ、コマンドライン引数でトークンなどを渡していると知らずに、ただsubprocessで他のAmong Us.exeを起動するだけのアプリでした。
使えないなぁこれってなってから数ヶ月経って、もう一回作り始めて、タスクマネージャーのコマンドライン引数と睨めっこしながら今のGUIアプリケーションに至りました。

言語はPythonで、Pyinstallerを使って.exe化しています。
GUIフレームワークはFletで、Reactみたいな感じのをPythonで書けるってものです。

仕様としては、まずこのランチャー本体をAmong Us.exeとして偽装して、ランチャーに起動させます。
すると、このランチャーはsys.argvに引数を保持しているので、それをそのまま別のインスタンスに渡せば良いだけの話ってわけです。難しい事はしてません。
難しい事はしてないので、簡単にonefileパッケージ化出来るって訳です。

ビルドとかしてみたい方は以下からどうぞ。

近アモやMOD解説を少しだけした1回目の記事はこちらから。

Extra

Town Of Host、SuperNewRolesはただ私が好きってだけで、一切関係ないです。
TOH、SNR作者様へのお問い合わせはご遠慮ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0