Indies Need a Coop - by Greg Costikyan Blogs - 14 December 2017 - 6:57am
The cooperative system of business organization is >100 years old, and ideally suited to improving the prospect of indie developers.
Categories: Game Theory & Design

Gaming Without Barriers: Why we need to include Accessibility in the concept phase of game development - by Zein Okko Blogs - 14 December 2017 - 6:56am
Accessibility in gaming is gaining more awareness, but there's still a long way to go. I want to share my experiences with making our game accessible and provide a few tips and links on the topic.
Categories: Game Theory & Design

Version Control Commit Comments (Aug 29th to Nov 22nd), Paralysis by Analysis - by Jake Jollimore Blogs - 14 December 2017 - 6:53am
My struggles with UI design and some version control commit comments so you can see what I've been working on in a nutshell.
Categories: Game Theory & Design

Work on animation - by Konstantin Bulatov Blogs - 14 December 2017 - 6:42am
We added animation to the main character and the enemy
Categories: Game Theory & Design

D00M 4 Intro: the nihilist scenario - by Léonard Bertos Blogs - 14 December 2017 - 6:40am
D00M is one of my favorite games because of its unquestionable efficiency. But as a scenarist, I'm tired to hear the "D00M has no scenario lol" everlasting platitude. Let's end this predjudice, here and now!
Categories: Game Theory & Design

Promet Source: Implementing ADA Section 508 for Local Government: A Developer's Journey to Web Accessibility

Planet Drupal - 14 December 2017 - 6:15am
My name is Katherine Shaw and I am a front end web developer at Promet Source. I'd like to start by sharing a little bit of my background, as it has helped me to understand why accessibility, on the web and in the world around us, is such an important issue. I am an advocate for web accessibility and in today's blog, I'll be share how I became so passionate about implementing ADA Section 508 best practices into my work as a developer, which all began when I was working for local government.
Categories: Drupal

Privateer’s 12 Factions of Christmas Available Now

Tabletop Gaming News - 14 December 2017 - 6:00am
Nobody likes to be left out when it comes to getting gifts at the holidays. It’s not fun to see someone else open up something cool and all you’ve got is a monogram pencil set. Well, Privateer Press is making sure there’s something for everyone this December with their 12 Factions of Christmas. All their […]
Categories: Game Theory & Design

Banana Dashboard

New Drupal Modules - 14 December 2017 - 5:55am

Expose a simple dashboard for users with links to various sections of the site. A unique feature of this module is that the configuration file is a yaml file. The module has no admin ui and is supposed to be used by developers by declaring hook_banana_dashboard_yaml_file_path_alter and providing the custom configuration file.

Sample configuration file

Categories: Drupal

Electric Citizen: Twig for Drupal 8 Development: Twig Templating Part 2 of 2

Planet Drupal - 14 December 2017 - 5:12am

In the recent post Twig for Drupal 8 Development: Twig Templating Part 1, we covered some Drupal Twig templating basics like debugging, custom templates, inheritance, variables, filters, attributes, and macros. This post will cover more advanced topics. You will learn about preprocessing variables, expanding the available templates with theme suggestion, Drupal 8 Views and Twig, and the Twig Tweak module.

Categories: Drupal

CMON To Publish Victorian Masterminds

Tabletop Gaming News - 14 December 2017 - 3:19am
CMON has announced a new game that they will be releasing next year. Originally announced by Space Cowboy, CMON has entered into an agreement to make Victorian Masterminds. In it, players will be some of history’s most evil masterminds, who are seizing on the opportunity created by Sherlock Holmes’ disappearance. But there’s still the Secret […]
Categories: Game Theory & Design

A Computer Security Approach to Changing GMs

Gnome Stew - 14 December 2017 - 3:00am

I’ve been working in computer security, in some fashion, since the early 1990s. One of the key concepts in this field is to separate processes on computing systems, so they can’t talk to each other or read/write data between each other . . . unless done so in an explicit manner. This can be done via one of three methods: physical, temporal, or virtual. I won’t delve deep into these approaches of computer security because that’s not the point of this site. We’re here to talk about gaming advice, after all.

Now that I’ve set the stage, let’s get to the gaming advice. These three approaches of separating processes and data can be used when changing GMs within the same campaign. It’s difficult to create a smooth flow between a GM change, even when planned, so hopefully what I have to say here can help keep the waters calm and the players engaged.


 In the gaming world, each GM should “claim” a particular section of the world. In the computing world, this would mean Client A is on computer A, and Client B is on computer B. Likewise, you should run your web server on one server and your email server on a different one. This is an over simplification, but it sets the stage.

In the gaming world, each GM should “claim” a particular section of the world (or continent or city or planes or whatever) and keep their gaming sessions isolated to the part that they’ve laid claim to. The trick here lies in getting the PCs from one part of the world to the next when a different GM jumps behind the screen. This can be done with interludes (Savage Worlds anyone?) or a brief transitional story told by the GM to set up why and how the PCs have traveled to a different part of the world.

The more closely tied the sections of the world are in physical and story space, the easier it is to make this transition. Try to keep the adventures swapping between regions of a single nation or neighboring nations. Even using two different cities that are relatively close to on another is an option.

By allowing each GM to have their own part of the world, this allows each GM to bring their own flavor and style to the game, which is one of the reasons to change up GMs. The trick is to make sure the various GMs work with one another to maintain a continuity in the world.


 When swapping GMs, a time gap can occur. In the computing world, there used to be a concept called “time sharing” back when there were a few mainframes in the world. Basically, Client A would “rent time” on a mainframe for a few weeks and then their data would be archived and purged from the mainframe before Client B took over the mainframe. With the ubiquity of cloud computer and “always on” services, this has fallen out of favor.

However, these same concepts can be applied to a game. When swapping GMs, a time gap can occur. Again, the incoming GM can give a brief tale about what happened over the past 2-3 months to set up what the next adventure will be about. Instead of moving the PCs across space, the GMs will work together to shift them forward in time. Of course, the world will change around them, and this can allow each GM to bring in their own story ideas and flavors.

An alternate to having the GM dictate what happens during the “downtime” is to seed the PCs with a few events that are happening, and then ask them what they are doing with this time of non-adventure. This allows for spell research, magic item creation, training, building a stronghold, growing their congregation, and other activities that adventurers (especially the higher level ones) never seem to have time to accomplish.


 These two characters under a single player should be related somehow via backstory. With computers, you can easily run web, email, DNS, FTP, shell servers, databases, and other services on a single computer. You can also easily run both Client A and Client B services on a single computer by using virtual segregation to ensure A never touches B’s data and vice versa.

To apply these concepts of virtual segregation in games, I would approach this by having each player control a character for each GM, but only one character at a time. There could be a higher level character and a lower level character in each player’s portfolio. These two characters under a single player should be related somehow via backstory. The easy option that I’ve seen used is to have all of the characters, regardless of which GM is in charge, be part of a single organization. This allows for the story to center around the organization.

By virtually separating the characters between GMs, this allows for the GM that is now a non-player to not have a character for that group. This resolves issues along the lines of, “But what is Gorgash doing while the rest of the party is out adventuring?” Of course, Gorgash would be the current GM’s character in this question. The GM simply doesn’t have a character in the group when she is running the game.

Combining Approaches

As some astute readers have probably realized by now, it would be very easy to shift things physically and temporally in one fell swoop. This is perfectly valid. Feel free to mix and match the various segregation tools at hand to find what works best with your group.


I’ve seen all of these approaches used to good effect when changing GMs. I’ve also seen them when the GM needs to or wants to provide a different flavor to the game. I’ve also seen temporal shifts happen when the entire group consisted of elves, and the PCs universally decided to hang out for a decade or two and then jump back into the fray.

One thing to keep in mind is that the world is a living, breathing character as well. Anytime you shift the PCs around, the world is going to shift around them. This doesn’t mean world-shattering changes happen each time, but there will be shifts and subtle changes going on around the group as they move about.

Has anyone out there tried one of these three approaches? How about combining them? I’d love to hear your stories and further advice in this area.

Categories: Game Theory & Design

Tim Millwood: Drupal Service ID Collectors

Planet Drupal - 14 December 2017 - 1:29am
Drupal Service ID Collectors

Since Drupal 8 we've had services. This also brought the concept of a service collector or tagged services. This allows services to be tagged with a specific tag, then a service collector can collect all services with the a given tag and use whichever service "applies".

As you could imagine loaded all of these tagged services when loading the service collector service can be a performance nightmare, which is why Drupal 8.4.0 brought us service ID collector functionality.

Tagging a service with the service_id_collector tag will pass all services with a given tag as the last parameter in the constructor. This will be an array of service IDs ordered by the priority. You will then need to use the ClassResolver service to lazily instantiate the collected service IDs.
  class: \Drupal\my_module\MyModuleNegotiator
  arguments: {'@class.resolver'}
    - { name: service_id_collector, tag: my_module_negotiator }
  arguments: {'@entity_type.manager'}
    - { name: my_module_negotiator, priority: 100 }
  arguments: {'@entity_type.manager'}
    - { name: my_module_negotiator, priority: -100 }
  arguments: {'@entity_type.manager'}
    - { name: my_module_negotiator, priority: 0 }

 * The negotiator for my module.
class MyModuleNegotiator {

   * The class resolver service.
   * @var \Drupal\Core\DependencyInjection\ClassResolver
  protected $classResolver;

   * The negotiator service IDs.
   * @var array
  protected $negotiatorServiceIds;

   * Constructs the negotiator.
   * @param \Drupal\Core\DependencyInjection\ClassResolver $class_resolver
   *   The class resolver service.
   * @param array $negotiator_service_ids
   *   The negotiator service IDs.
  public function __construct(ClassResolverInterface $class_resolver, array $negotiator_service_ids) {
    $this->classResolver = $class_resolver;
    $this->negotiatorServiceIds = $negotiator_service_ids;

   * Run the negotiators.
  public function runNegotiators() {
    foreach ($this->negotiatorServiceIds as $negotiator_service_id) {
      $negotiator = $this->classResolver->getInstanceFromDefinition($negotiator_service_id);
      if ($negotiator->applies()) {

timmillwood Thu, 14/12/2017 - 09:29 Tags drupal planet drupal-planet drupal8 Add new comment
Categories: Drupal

General Data Protection Regulation Compliance

New Drupal Modules - 14 December 2017 - 12:47am

Basic GDPR Compliance use cases (drupal 8.x only):

  • Form checkboxes
  • Pop-up alert
  • Policy Page
Policy Page

* If the Policy Page does not suit you - create your own, replace the link & clear cache.
* Policy Page based on:

Categories: Drupal

Superseeds: Songseeds, Volume 2

RPGNet - 14 December 2017 - 12:00am
Superseeds inspired by songs.
Categories: Game Theory & Design CiviCRM secrets for Drupalers: Email Campaigns

Planet Drupal - 13 December 2017 - 6:14pm

We're Drupalers who only recently started digging deep into CiviCRM and we're finding some really cool things! This series of videos is meant to share those secrets with other Drupalers, in case they come across a project that could use them. :-)

Most Drupalers at one time have had to deal with either sending e-mail newsletters directly from Drupal, or integrating with a 3rd party tool like Mailchimp or Constant Contact.

CiviCRM has built in e-mail newsletter functionality, and if you add to it the WYSIWYG e-mail builder Mosaico you can build really rich, responsive e-mail campaigns!

Watch the video here:

Video of CiviCRM secrets for Drupalers #1: E-mail Campaigns

Some highlights from the video:

  • A sneak peek at Round Earth: our project that bundles Drupal 8 + CiviCRM
  • Drupal 8 + CiviCRM vs. "only" Drupal
  • A quick walk-through on how to quickly and easily create an email campaign
  • Plus, we mention a couple of current "gotchas" that could save you frustration!

Please leave a comment below!

Categories: Drupal

Battlegrounds' PlayerUnknown argues for better protection against copycat games

Social/Online Games - Gamasutra - 13 December 2017 - 5:15pm

Creator of PlayerUnknown's Battlegrounds Brendan Greene discusses his frustration over copycat games in an interview with the BBC. ...

Categories: Game Theory & Design

Better Links

New Drupal Modules - 13 December 2017 - 4:52pm

Allows you to configure class and target attributes for a link field.

The Drupal 8 Link field is missing a few vital configurations. This module is an attempt to add some basic features such as classes and a target to the field configuration. Future releases will add more of the attributes needed to create a robust link in an entity.

Categories: Drupal

FFW Agency: The ABC's of Drupal: Region, Revision, Role

Planet Drupal - 13 December 2017 - 4:03pm
The ABC's of Drupal: Region, Revision, Role Ray Saltini Thu, 12/14/2017 - 00:03

For anyone who's ever looked up a definition of a Drupal term and still wondered what it means, here are some practical explanations you can use to navigate the Drupal-verse. This is the latest in a series on Drupal-specific terminology.


Regions divide Drupal pages into different sections. Each section contains information that determines the positions of various elements. These elements can include menus, headers, footers, and sidebars. The elements in each Region are called Blocks. (For more information on Blocks, see Aliases, Blocks, and Content Types.)

A Drupal site's active theme keeps information on the number, name, and location of each Region. Different themes can have different Regions. Typically, administrative themes have fewer regions spaced in wide columns across a page. The themes that face a site's end-users often have more complex layouts, which means more Regions. (To learn more about Themes, see Article, Base Theme, Content.


Together, Blocks and Regions make up Drupal's core's primary layout functionality. This combination is a simple yet powerful solution that has been steadily expanded with each major version of Drupal. 

As a note: Drupal Regions can be overridden by contributed modules such as Panels. Regions can also be overridden by custom page templates that apply to specific URLs or URL alias patterns. While the use of Panels can increase overhead and complexity, it makes additional layouts and landing page capabilities available to site builders. Layouts made with Panels are saved in the site's database, which mitigates the risk of rolling custom code by editing a site's theme files.


A Drupal Revision is a saved version of a set of changes to a piece of Drupal content created with a Content Entity. Revisions apply to any piece of content on a site, including Articles, Basic Pages, and custom content types.

After a piece of content is created, any changes or updates made to the content are saved in new versions, or Revisions. Drupal does this rather than editing an existing published version. These versions are stored indefinitely each time a set of changes is saved, and can be found on a content item's administrative interface. Users can save revisions in unpublished draft form, to be published at a later date. Previous versions can also be republished, which allows content authors to revert content to an earlier state.

Drupal's core revision feature supports a powerful workflow functionality that can be custom-configured to align with an organization's processes for content approval. Revision functionality can also be extended with the contributed Diff module to highlight changes between various drafts.


Roles assign various permissions to a Drupal site's users. This includes the ability to edit and manage content and configure settings. Roles are typically grouped into sets of permissions that are determined by a user's expertise in the organization. A Role is a user-defined set of permissions that can be granted to groups of individuals. Typical Drupal user roles include Administrator (preconfigured), Content Creator, and Content Manager.

Anonymous and Authenticated are two special preconfigured user states that are accessed through the user administrative pages. Anonymous users are typically granted only the most basic permissions. By definition, Authenticated users are those that are known to the system. Authenticated users have an account and unique email address that associated with a cookie that resides locally in their browser.

When new functionality is added to Drupal, additional permissions are typically added to the system. These permissions can then be assigned to new or existing roles.

What Next?

If you've got questions about specific Drupal terms, let us know. Drop a request for a definition in the comments and we'll add it to our next ABCs of Drupal post. 

Categories: Drupal


Subscribe to As If Productions aggregator