Livesplit ver1.6 以降では「Windows の機能にある 1 つの高精度タイマーをベースにして、ネットから取得した時刻を用いて補正している」方式になっています。
Livesplit のタイムの精度に関する既存の資料にある説明で「Windows の機能にある 3 種類のタイマーを平均している」といった記述がありますが、これは vre1.5.5 までの古い方式で現在は使われていません。
Livesplit ver1.6 以降では「Windows の機能にある 1 つの高精度タイマーをベースにして、ネットから取得した時刻を用いて補正している」方式になっています。
Livesplit のタイムの精度に関する既存の資料にある説明で「Windows の機能にある 3 種類のタイマーを平均している」といった記述がありますが、これは vre1.5.5 までの古い方式で現在は使われていません。
世界中の Speedrun・RTA プレイヤーに広く使われているタイマーアプリの Livesplit はオープンソースソフトウェアです。
基本的には公式リポジトリで説明されている手順の通りに操作すればコンパイルすることができます。この記事では、個人的につまづきやすいと思ったポイントを紹介します。

RPG ツクール MV 製のゲームでは RPGMMV-LiveSplit という専用のアプリケーションを利用することで、タイマー操作の自動化やロード時間の除去を行うことができます。
RPGMMV-LiveSplit は RPG ツクール MV 製ゲームのプラグインとして動作して、起動している Livesplit と自動的に通信をしてくれて、その通信によってタイマーの自動操作が行われます。
asl で利用するためのゲーム内の値を asl で監視するためには、Cheat Engine などのツールを使ってその値が書き込まれているメモリアドレスのポインタパスを特定する必要があります。
値を検索してポインタスキャンをするのがポインタパス特定の基本的な方法ですが、Unity 製ゲームの場合は構造解析機能を利用することで効率よくポインタパスの特定を行うことができます。
Autosplitter を制御するための asl ファイルの作成を補助してくれる asl-help というツールがあります。
この記事では Unity 製ゲームにおいての asl-help の基本的な使い方を説明します。
コンポーネントの仕様や性質によっては必ずしもここで挙げている全ての項目を確認する必要はないと思います。 必要に応じて必要な項目を確認しましょう。
チェックシートとして使うにはやや抽象度が高いと思います。 また、注目している点が違うだけで意味としては重複している項目があるかもしれません。 確認項目の参考資料とかチェックシートの土台くらいの気持ちでご利用ください。
Livesplit に標準で付属していない、ユーザーが任意で入手して使用するコンポーネントの一覧です。
多くは Github にて livesplit NOT asl NOT "auto split" NOT "autosplitter" NOT "load removal" NOT "load remover" で検索してヒットしたもの、その他、Twitter などで見かけたものをリストアップしています。
Livesplit 本体と一緒に配布されている標準コンポーネントについては、紹介記事や公式サイトをご覧ください。
Livesplit の動作が重い場合に、Timer の表示桁数を 0.12 から 0.1 や 0 に変更することで、動作が軽くなるという意見を見かける。
その変更によって軽くなったという意見も見かけるため、動作が軽くなることは事実なのだろう。
では、その変更によってどのくらい軽くなるのか。それを数値的に表してみようと考え、今回の検証を行うことにした。
また、表示桁数を変更する他にも、Livesplit の重さに関係する項目がないかを確認する。
Livesplit の背景を透過して、ゲーム画面の上に配置している配信レイアウトは少なくないと思います。
Livesplit には透明度の設定がありますが、これは文字と背景の透明度を一括で変更するための項目であるため、背景のみを透過したい場合は他の項目を設定します。
配信や録画をする場合を前提としますが、Livesplit 側の設定と配信アプリケーション側の設定が必要です。
配信アプリケーション側の設定は複数の方法があり、それによって Livesplit 側の設定も違いがあります。
ここで紹介している設定内容はほとんどが説明のために簡単に設定したものなので、もっと良い設定があるかもしれませんがご了承を。
個人的な感触としては、黒背景に白文字だと比較的簡単で、白背景に黒文字だと比較的難易度が高いです。
現在のペースが速いのか遅いのかを把握するためには比較する対象が必要です。
Livesplit ではそのような比較対象タイムのことを Comparison と言い、Personal Best や Best Segment などが標準で備わっています。
私が作った Livesplit 用コンポーネント(拡張機能・プラグイン)の一覧です
私が作った、Livesplit 用の Autosplitter 用スクリプトファイル(.asl ファイル)の一覧です
常識の範囲であれば、私の Autosplitter 一覧ページへのリンク、Autosplitter の再配布は制限いたしません。
制作者を騙ったり、私が無料で公開しているものを有料で配布とかしないでね、くらいのかなり緩い制限です。
git、Github 管理の Autosplitter は Livesplit の Splits Editor から、Google Drive 管理のものは Layout Editor から利用します。
私は SRC の外にいる人間なので SRC 内でのアクションは致しません。
SRC 内で Autosplitter の情報が共有されることが公平だと思われた場合は、Guides や Resources を編集できる方、あるいは Forum へ投稿できる方が紹介してくださると助かります。
ルール通りのタイミングでのタイマー操作は保証していないため、タイムの精査を推奨しています。
このAutosplitterは60Hzでゲームの内部値を監視することでタイマー操作タイミングを判定しています。
ゲームの内部値が変わったタイミングとルール上のスタートand orストップのタイミングとが厳密に一致するとは限らないため、ルール通りのタイミングでタイマー操作することは保証できません。
コンポーネント開発に興味を持った方が開発に必要な情報を調べようとした時に少しでも助けになればと思い、私が調べた情報などを紹介するためにこの記事を書きました。
この記事はコンポーネント開発に必要な全ての情報を記載している訳ではありませんが、公式のソースコードを読み解くための参考資料として活用していただけると幸いです。
この記事の中で My~ と書いている部分は開発するコンポーネント名と考えてください。
この記事の改訂版を公開しました。
(改訂版)Unity 製ゲームの場合に使用できる、Autosplitter 用の asl で使用したいメモリアドレスの特定方法
Cheat Engine を使って asl ファイルで利用するための静的アドレスを特定する場合、一つの値に的を絞って値を検索して特定する方法があります
が、その場合は欲しい値が存在している保証がなく、また、欲しい値の数だけ検索を繰り返す必要があります
Unity 製ゲームの場合は mono の分析機能を利用することで、欲しい値を格納しているフィールドの有無を知ることができ、さらにはクラス単位でフィールドの値を格納している静的アドレスを特定することができます
この記事はメモリアドレスを特定する方法のみの記事です
asl の全体的な説明や基本的な作り方などをまとめた記事もありますので、よろしければこちらもご覧ください
また、構造解析機能を使ってメモリアドレスを調べる部分の実演をした動画を公開しておりますので、よろしければこちらも参考としてご覧ください
手順
個別のゲームタイトルでは詳細な導入方法の説明を見かけるのですが、使い方だけでなく作り方も含んだ総合的な説明はあまり見ないなと思ったので、この記事を書いてみました。