RPG Achievements

So I have recently implemented and committed RPG Achieve in the RPG module series for Drupal. This allows games to record achievements of players, such as “You have slain 14 dragons”, or “You were the first to summit Ploggers Peak”. Next in that progression will be RPG Quest, which will allow achievements to be grouped together.

I’ve begun implementing achievements in Spindowners, an upcoming sci-fi RPG being built with the RPG module. The game’s shaping up nicely, and is currently in a closed Alpha. It’s nearly ready for an open Alpha, with one character class at least.

Achievements may be defined in the administration pages, or through rulesets. Once defined, you only need to call rpg_achieve_set(“achievement_1”, $pc) to set the achievement. Each achievement has fine-tuned permissions, so that they may be visible to the player or not, and whether or not a message of achievement is sent, for instance. Obviously, each player character has their own achievements. Once Views 2 is out and RPG is ported to d6, I’ll also hook it into the upcoming RPG Views.

Other new changes: I’ve ripped out the definitions from Rulesets into their own .inc files, for automatic inclusion on import, since those will only be called once. It’s easy to limit character classes for user roles, etc., now, with hook_rpg_pc_types. I’m also in the middle of defining a few more useful core objects in Drudge, such as “Shuffled Event Lists” (which spout out occasional messages when appropriate, such as “A hawk cries in the distance,” or “A meteor shoots across the night sky”). Along these lines, I’ve introduced rpg_trigger_all(‘event_name’), which will call rpg_trigger for all objects in scope.

Scope is another new thing, necessary for events to work properly. Now, when each event is called, the $rpg[‘scope’] array will hold all objects in scope for that event. By default, that will be the pc, the pc’s containing room, and any objects invoked during an action. Other objects may be added or removed manually, but that should be sufficient in most cases.

Next on my plate: the holy grail: a single game page that never reloads, instead reloading just the blocks as needed. This allows for the creation of neato game UI’s, battle music, and the ever-popular ad block from hell…

IF YOU HAVEN’T ALREADY, make a character at Drupal RPG. It’s fun! Pointless right now, but you can see what all the fuss is about. Make sure to check out the snowbank for fun things to do…

Aaron Winborn
AaronWinborn.com (my blog)
Drupal RPG (home for the RPG module)
Spindowners (an upcoming sci-fi game built with the RPG module, currently in closed alpha)
Advomatic (my day job, a really cool place to work)