【PCゲーム】Screeps: Arenaの遊び方(チュートリアル「Store and transfer」)を日本語に!和訳して解説!(その5)

Screeps:Arena開始画面 JavaScript

ようやくチュートリアルの半分まで来ました……だんだん複雑になってきましたね……過去のチュートリアルは下記にありますので併せてご覧ください。

各チュートリアルは別途記事にしてありますので、他のチュートリアルは下記を参考にしてください。

  1. Loop and import(ループとインポート)
  2. Simple move(単純な移動)
  3. First attack(初めての攻撃)
  4. Creeps bodies(クリープの各パーツ)
  5. Store and transfer(エネルギーのストアと転送)
  6. Terrain(地形)
  7. Spawn creeps(クリープを生成)
  8. Harvest energy(エネルギーの採取)
  9. Construction(工事・建築)
  10. Final test(最終試験)

Store and transfer(エネルギーのストアと転送)

さまざまな分野で利用できるさまざまなリソースがあります。 一般的なリソースタイプはRESOURCE_ENERGYです。 これは、構造物の構築、クリープの生成、およびその他の種類のアクティビティに使用するリソースです。 このチュートリアルのステップでは、エネルギーを使用してTower(タワー)を充電し、遠くにいる敵を倒します。 タワーは距離とともに効率が低下しますが、50タイルの範囲で射撃できます。

tower.attack(target);

すべてのショットは、store(ストア)から10エネルギーを消費します。 エネルギーをロードするには、エネルギーをtransfer(転送)するクリープを使用する必要があります。

creep.transfer(tower, RESOURCE_ENERGY);
悩見坂 楓
悩見坂 楓

タワーで砲撃出来るけど、そのためにはエネルギーが必要で、そのエネルギーを転送(transfer)するクリープが要るってことか

どこでエネルギーを得るのか? storeにある程度のエネルギーがあるContainer(コンテナ)があります。 それにクリープを移動し、エネルギーをwithdraw(引き出す)ことができます:

creep.withdraw(container, RESOURCE_ENERGY);

タワーにエネルギーがロード(充填)されたら、ターゲットを攻撃して破壊します。

以下のサンプルコードを使用する場合は、今までとは別の方法でimportしていることに注目してください(この方法でも全く問題ありません)。個々を具体的に定義するのではなく、ルートの/gameモジュールから名前空間全体をimportします。 どのアプローチがあなたにとってより便利であるかを決めるのはあなた次第です。

目的:敵のクリープを倒します。

サンプルコード

import { prototypes, utils, constants } from '/game';

export function loop() {
    const tower = utils.getObjectsByPrototype(prototypes.StructureTower)[0];
    if(tower.store[constants.RESOURCE_ENERGY] < 10) {
        var myCreep = utils.getObjectsByPrototype(prototypes.Creep).find(creep => creep.my);
        if(myCreep.store[constants.RESOURCE_ENERGY] == 0) {
            var container = utils.getObjectsByPrototype(prototypes.StructureContainer)[0];
            myCreep.withdraw(container, constants.RESOURCE_ENERGY);
        } else {
            myCreep.transfer(tower, constants.RESOURCE_ENERGY);
        }
    } else {
        var target = utils.getObjectsByPrototype(prototypes.Creep).find(creep => !creep.my);
        tower.attack(target);
    }
}

前回までのサンプルコードではimport/game/utils/game/prototypesモジュールで行ていましたが、今回のサンプルでは/gameモジュール全体からimportする方法をとっているようです。これでも何も問題ないとのことですので、自分のプレイスタイルに合わせて記述法を変えて大丈夫です。

まとめ

  • エネルギーの現在のストア値はtower.store[constants.RESOURCE_ENERGY]のように表現する
  • エネルギーを採取する場所はStructureContainer
  • エネルギーを引き出すにはmyCreep.withdraw(container, constants.RESOURCE_ENERGY)のようにクリープがwithdrawすることによって開始出来る
  • withdrawによって採取場所を引き出し始めたらmyCreep.transfer(tower, constants.RESOURCE_ENERGY)のようにtransfer()メソッドでエネルギーを転送出来る

エネルギーのストアと転送についてのチュートリアルですが、慣れるまで時間がかかりそうですね……

タイトルとURLをコピーしました