Skip to content
bonzaiferroni edited this page Jan 15, 2017 · 26 revisions

This code is still being tested. If you are using it, let me know if you run into any problems.

Traveler is a general-purpose tool for moving your creeps around.

####Features:

Installation

  1. Download Traveler.ts or Traveler.js.
  2. Add a require statement to main.js:
  • var Traveler = require('Traveler.js');
  1. Check out suggestions in the footer for implementing the functions (e.g., adding to creep prototype).

Performance considerations

  1. travelTo creates a new object in creep memory, _travel, which is analogous to the object used by moveTo() for caching the creeps path. For this reason, it will save memory to use either travelTo() or moveTo() with a given creep, but not both.
  2. As with any algorithm where creeps aren't a consideration for pathing by default, you'll have best results when their path has a low chance of including immobile creeps. My creeps rarely reach the "stuck threshold" because I take extra considerations to keep the roads clear.
  3. My own codebase rarely harvests from rooms at more than a distance of 2. For this reason, my couriers rarely use more than 30 CPU for pathing purposes across their lifespan. I've set REPORT_CPU_THRESHOLD to 50, because if a creep goes above that, I'll want to know about it. If you are harvesting from further away, you might want to set this threshold to a higher value to get fewer false alarms.

API

travelTo(creep, goal, options?)

Move creep to goal.

Arguments

  • creep: Creep The creep you want to move.
  • goal: { pos: RoomPosition } Object with a property pos: RoomPosition.
  • options?: Object
  • ignoreRoads?: boolean Creeps won't prefer roads above plains (will still prefer them to swamps). Default is false.
  • ignoreCreeps?: boolean Will not path around other creeps. Default is true.
  • ignoreStuck?: boolean Will not path around other creeps even if stuck. Default is false.
  • ignoreStructures?: boolean Will not path around structures. Default is false.
  • preferHighway?: boolean Creep prefer to travel along highway (empty rooms in between sectors). Default is false
  • allowHostile?: boolean Hostile rooms will be included in path. Default is false.
  • allowSK?: boolean SourceKeeper rooms will be included in path. (if false, SK rooms will still be taken if they are they only viable path). Default is false.
  • range?: number Range to goal before it is considered reached. The default is 1.
  • obstacles?: { pos: RoomPosition }[] Array of objects with room positions that represent positions to avoid.
  • roomCallback?: (roomName: string, ignoreCreeps: boolean) => CostMatrix | boolean Callback function for overriding the default PathFinder callback. If it returns false, that room will be excluded. If it returns a matrix, it will be used in place of the default matrix. If it returns undefined the default matrix will be used instead.
  • routeCallback?: (roomName: string) => number Callback function for overriding the findRoute callback. If it returns a number that value will be used to influence the route. If it returns undefined it will use the default value.
  • returnPosition?: boolean Return the RoomPosition that is being moved to when outcome === OK. Can be used to "look ahead".
  • restrictDistance?: number Limits the range the findRoute will search. Default is 16.
  • maxOps?: number Limits the ops (CPU) that PathFinder will use. Limit is 20000. (~20 CPU)