Traveler is a general-purpose tool for moving your creeps around. Feel free to fork and use in other projects.
- Efficient path-caching and CPU-use (you can see how it compares with
creep.moveTo()
here) - Ignores creeps in pathing by default which allows for fewer PathFinder calls and single-lane creep movement
- Can detect hostile rooms and will path around them once discovered. More info on how to enable detection here
- Effective long-range pathing
- Lots of options
-
Download Traveler.ts or Traveler.js or just copy/paste the code in Traveler.js into a new file using the screeps console.
-
Add a require statement to
main.js
:var Traveler = require('Traveler');
- (in the sim or some private servers you might need to use
'Traveler.js'
)
-
Replace situations where you used
moveTo
withtravelTo
// creep.moveTo(myDestination);
creep.travelTo(myDestination);
travelTo
creates a new object in creep memory,_travel
, which is analogous to the object used bymoveTo()
for caching the creeps path. For this reason, it will save memory to use eithertravelTo()
ormoveTo()
with a given creep, but not both.- 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.
- 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.
2017-03-10
- Fixed a bug where public ramparts were not set as valid positions for pathing in the costmatrix (thanks ricane!)
2017-03-06
- Fixed a bug where pathfinder gets needlessly called when using
options.range
(thanks helam!)
2017-01-17
- Fixed bug in code that determines whether a room is SK from roomname
2017-01-15
- Eliminated option
returnPosition
and addedreturnData
- Fixed bug where preferHighway would not produce the intended results
- Fixed bug where ignoreCreep behavior was reversed and creeps could not get unstuck