🕹️
Screeps: Arenaでコード補完を有効にする方法
Screeps: Arenaとは
Screeps: ArenaはJavaScriptで書いたAI同士を戦わせるゲーム。
2022年4月時点ではvscodeなどの外部エディタの使用が推奨されているものの、サンプル実装のとおりにJavaScriptを書いてもScreeps: Arena独自APIを補完してくれない。それを改善するには @types/screeps-arena を使おう。
事前準備
Node.js実行環境を用意する。
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.json と package-lock.json と node_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.1 は utils.getTicks() や prototypes.Flag が含まれないなど不完全な模様。最新の先っぽを追っかけたい場合はgithubの先っぽを使うとよい。
npm install "https://github.com/screepers/typed-screeps-arena#develop" --save-dev
がこれも完璧ではなさそう。 utils.getTricks() は存在するが prototypes.Flag は含まれてなかった。ただ prototypes.Flag はTutorialにしか存在しないものかもしれない。
Discussion