🕹️

Screeps: Arenaでコード補完を有効にする方法

2022/04/14に公開

Screeps: Arenaとは

Screeps: ArenaはJavaScriptで書いたAI同士を戦わせるゲーム。
https://store.steampowered.com/app/1137320/Screeps_Arena/

2022年4月時点ではvscodeなどの外部エディタの使用が推奨されているものの、サンプル実装のとおりにJavaScriptを書いてもScreeps: Arena独自APIを補完してくれない。それを改善するには @types/screeps-arena を使おう。

事前準備

Node.js実行環境を用意する。
https://nodejs.org/

HomebrewやChocolateyやaptやdnfなどで用意してもok。

VSCode(jsconfig.jsonを扱える環境)の場合

ScreepsArenaディレクトリ(main.mjsと同じディレクトリでもok)に jsconfig.json ファイルを設置する。

jsconfig.json
{
    "typeAcquisition": {
        "include": ["screeps-arena"]
    }
}

vscodeを再起動する。

vim-lsp(jsconfig.jsonを扱えない環境)の場合

ScreepsArenaディレクトリ(main.mjsと同じディレクトリでもok)で以下を実行。

npm install @types/screeps-arena --save-dev

package.jsonpackage-lock.jsonnode_modules が生成されることを確認。

import文変更

あとは main.mjs 内の import文の /game などの先頭の / を取り除く。

main.mjs
# 変更前
import { } from '/game/utils';
import { } from '/game/prototypes';
import { } from '/game/constants';
import { } from '/arena';
# 変更後
import { } from 'game/utils';
import { } from 'game/prototypes';
import { } from 'game/constants';
import { } from 'arena';

制約

2022年4月時点の最新バージョンである 0.0.1utils.getTicks()prototypes.Flag が含まれないなど不完全な模様。最新の先っぽを追っかけたい場合はgithubの先っぽを使うとよい。

npm install "https://github.com/screepers/typed-screeps-arena#develop" --save-dev

がこれも完璧ではなさそう。 utils.getTricks() は存在するが prototypes.Flag は含まれてなかった。ただ prototypes.Flag はTutorialにしか存在しないものかもしれない。

Discussion