SourceMod プラグインをコンパイルする方法についてのガイドです。
SourceMod プラグインとは、Source エンジンで動作するゲームサーバーの機能を拡張・変更するために作られたカスタムスクリプトやアドオンのことです。
SourceMod プラグインのソースコードで使われるプログラミング言語は SourcePawn です。SourcePawn のファイル拡張子は sp です。
SourceMod プラグインのコンパイルはとても簡単です。以下で手順を説明します。
SourceMod のダウンロード
SourceMod のダウンロードと展開の方法については、以下のガイドを参照してください。プラグインをビルドするだけであれば、サーバーに SourceMod をインストールする必要はありません。
https://moddingcommunity.com/blog/how-to-install-update-sourcemod-metamod/
SourceMod のファイルを展開したら、Linux では addons/sourcemod/scripting ディレクトリ(Windows では addons\sourcemod\scripting フォルダ)に移動します。
SourceMod プラグインのコンパイル
SourceMod プラグインのコンパイルは通常とても簡単で、特に Windows では手軽に行えます。
Windows
Windows のエクスプローラー
手早くプラグインをコンパイルしたい場合は、プラグインのソースコードファイルを scripting フォルダ内にある compile.exe 実行ファイルにドラッグ&ドロップします。コマンドプロンプトのウィンドウが開き、ビルドの出力が表示されます。ビルドに成功すると、compiled フォルダ内にビルドされたプラグインが生成されます。ビルド済みの SourceMod プラグインの拡張子は通常 smx です。

この方法は手早く簡単ですが、以下で説明するコマンドラインからの方法ではより多くのオプションを指定できます。
コマンドライン
コマンドプロンプトや PowerShell を使ってコマンドラインからプラグインをコンパイルしたい場合は、まずターミナルを起動して scripting フォルダに移動する必要があります。
次に、spcomp.exe または spcomp64.exe(64ビット対応版)の実行ファイルを使ってプラグインをコンパイルします。
以下がプラグインをコンパイルする基本的なコマンドです。
.\spcomp.exe <Plugin File Name With Extension>
例えば、同梱されている basechat プラグインをコンパイルしたい場合は、次のコマンドを使用します。
.\spcomp.exe basechat.sp
Linux
Linux のターミナルで SourceMod プラグインをコンパイルする場合は、上で説明した Windows のコマンドライン方式とほぼ同じ手順で行えます。プラグインのコンパイルには spcomp または spcomp64(64ビット対応版)の実行ファイルを使用します。
以下がプラグインをコンパイルする基本的なコマンドです。
./spcomp <Plugin File Name With Extension>
例えば、同梱されている basechat プラグインをコンパイルしたい場合は、次のコマンドを使用します。
./spcomp basechat.sp
ビルドに成功すると、ソースコードと同じディレクトリ(scripting/)に新しくビルドされたプラグインファイルが生成されます。
その他のコマンドラインオプション
上で述べたとおり、コマンドラインからコンパイルすると追加のオプションを指定できます。以下は、指定可能なフラグや引数の一覧を示すヘルプメニューの出力です。
SourcePawn Compiler 1.11.0.6969
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2021 AlliedModders LLC
Usage: ./spcomp [options] <filename> [filename...]
optional arguments:
--show-stats Show compiler statistics on exit.
-D Active directory path
--active-dir=ACTIVE_DIR
-e Error file path
--error-file=ERROR_FILE
-E, --warnings-as-errors Treat warnings as errors
-h, --show-includes Show included file paths
-z
--compress-level=COMPRESS_LEVEL
Compression level, default 9 (0=none, 1=worst,
9=best)
-t, --tabsize=TABSIZE TAB indent size (in character positions,
default=8)
-v, --verbose=VERBOSE Verbosity level; 0=quiet, 1=normal, 2=verbose
-p, --prefix=PREFIX Set name of "prefix" file
-o, --output=OUTPUT Set base name of (P-code) output file
-O, --opt-level=OPT_LEVEL
Deprecated; has no effect
-i, --include=INCLUDE Path for include files
-w, --warning=WARNING Disable a specific warning by its number.
-;, --require-semicolons Require a semicolon to end each statement.
--syntax-only Perform a dry-run (No file output) on the input
--use-stderr Use stderr instead of stdout for error messages.
--no-verify Disable opcode verification (for debugging).
sym=val Define constant "sym" with value "val".
sym= Define constant "sym" with value 0.
例えば Linux で、ビルドに成功した basechat プラグインを compiled/ ディレクトリ内に出力したい場合は、次のコマンドを使用します。
# Make sure compiled directory is made.
mkdir -p compiled
# Output: compiled/basechat.smx
./spcomp -o compiled/basechat basechat.sp
インクルードファイル
公開されている SourceMod プラグインの中には、拡張子が inc のインクルードファイルを含むものが数多くあります。これらのファイルは include/ ディレクトリ/フォルダに配置する必要があります。そうしないと、プラグインのコンパイルはおそらく失敗します。
さらに、コマンドラインからコンパイルする際に -i フラグを使えば、デフォルトの include ディレクトリやフォルダ以外の場所もインクルード対象にできます。
おわりに
以上です!これで SourceMod プラグインをコンパイルするすべての方法が分かったはずです。
このガイドについて質問やご意見がある場合は、こちらのフォーラムトピックに返信してください!このガイドは今後も継続的に加筆・改善していく予定です。
ぜひ私たちの Discord サーバーにご参加ください!
