Roles
Roles or 'role creeps' are presented first by the Screep's tutorial as an option for managing a user's creeps. Generally roles are assigned via Memory
to a creep, and the role is associated with a module in the user's script. A runner/loop then runs these scripts for a particular creep, running the logic assigned in the module. Role creeps tend to be specifically built/created for the role they need to preform, and generally 'only' preform their assigned role. This is of course as always, up to the user to determine as they are writing the script. These is no reason a creep role can not be 'changed' when its job is complete, or conditions require it to. However, Generic Creeps tend to be more suited to re-assignment more than role creeps as they are more 'generalized'. For example, a 'miner' role that has a large amount of work parts, and few to no carry/move parts would not be suited to haul energy and upgrade a controller as well as a creep specified for that role or a generic creep, but there is also no reason it could not if desired.