All RPGs and Storygames by Tod Foley are now available at DrivethruRPG and RPGnow. Bring these games to your table!

"We think in the medium term this will give games that have a lot more appeal than what we have today,†said Guillemot. ...
Despite an unexpectedly competitive couple of months, Ubisoft says its properties performed well during the first half of its 2018-19 fiscal year. ...
In a recent report published by ITIF, Mass.gov ranks #3 overall in the nation for performance in page-load speed, mobile friendliness, security, and accessibility.
More than 1 million websites worldwide use Drupal to combine great design with power, speed and security that Drupal provides. From large enterprises to NGOs, Drupal is actively helping organizations change the world through their digital experiences. One of these institutions is the Commonwealth of Massachusetts.
In a recent report published by ITIF (an independent, nonpartisan think tank), the official website for the Commonwealth of Massachusetts (mass.gov) was named #3 in the nation for its overall web presence.
“This report assesses four criteria: page-load speed, mobile friendliness, security, and accessibility. For page-load speed, we reviewed both desktop page-load speed and mobile page-load speed.” - ITIF
Building a Better Experience for ConstituentsThe Commonwealth set out to better the digital experience for the constituents of Massachusetts back in 2016 when they began engaging with outside vendors to take on the responsibility of redesigning and developing mass.gov using the open source CMS Drupal 8. The end goal for the Commonwealth was to restructure their site’s content in a way that made it intuitive for people to accomplish their goals.
With the help of Palantir.net, Massachusetts launched the new platform in October 2017 designed to better serve constituent needs in the digital age.
“We’ve redesigned Mass.gov for you, the people of the Commonwealth. We have one goal: to make it easy for you to find what you need.” - Mass.gov homepage
We’re proud of Mass.gov for this amazing achievement, and we’re not surprised. Good web design in government is about ensuring a great experience for constituents of diverse backgrounds and creating an open and accessible government for all users.
The goal of ITIF’s report was to assess state government websites based on seven popular state e-government services. Download the full report to see how your state’s website ranked.
Drupal Industries GovernmentConfiguration management is an important feature of any modern content management system. Those following modern development best-practices use a development workflow that involves some sort of development and staging environment that is separate from the production environment.
Given such a development workflow, you need to push configuration changes from development to production (similar to how you need to push code or content between environments). Drupal's configuration management system helps you do that in a powerful yet elegant way.
Since I announced the original Configuration Management Initiative over seven years ago, we've developed and shipped a strong configuration management API in Drupal 8. Drupal 8's configuration management system is a huge step forward from where we were in Drupal 7, and a much more robust solution than what is offered by many of our competitors.
All configuration in a Drupal 8 site — from one-off settings such as site name to content types and field definitions — can be seamlessly moved between environments, allowing for quick and easy deployment between development, staging and production environments.
However, now that we have a couple of years of building Drupal 8 sites behind us, various limitations have surfaced. While these limitations usually have solutions via contributed modules, it has become clear that we would benefit from extending Drupal core's built-in configuration management APIs. This way, we can establish best practices and standard approaches that work for all.
The four different focus areas for Drupal 8. The configuration management initiative is part of the 'Improve Drupal for developers' track.I first talked about this need in my DrupalCon Nashville keynote, where I announced the Configuration Management 2.0 initiative. The goal of this initiative is to extend Drupal's built-in configuration management so we can support more common workflows out-of-the-box without the need of contributed modules.
What is an example workflow that is not currently supported out-of-the-box? Support for different configurations by environment. This is a valuable use case because some settings are undesirable to have enabled in all environments. For example, you most likely don't want to enable debugging tools in production.
The contributed module Config Filter extends Drupal core's built-in configuration management capabilities by providing an API to support different workflows which filter out or transform certain configuration changes as they are being pushed to production. Config Split, another contributed module, builds on top of Config Filter to allow for differences in configuration between various environments.
The Config Split module's use case is just one example of how we can improve Drupal's out-of-the-box configuration management capabilities. The community created a longer list of pain points and advanced use cases for the configuration management system.
While the initiative team is working on executing on these long-term improvements, they are also focused on delivering incremental improvements with each new version of Drupal 8, and have distilled the most high-priority items into a configuration management roadmap.
There are many opportunities to contribute to this initiative and we'd love your help.
If you would like to get involved, check out the Configuration Management 2.0 project and various Drupal core issues tagged as "CMI 2.0 candidate".
Special thanks to Fabian Bircher (Nuvole), Jeff Beeman (Acquia), Angela Byron (Acquia), ASH (Acquia), and Alex Pott (Thunder) for contributions to this blog post.
Configuration management is an important feature of any modern content management system. Those following modern development best-practices use a development workflow that involves some sort of development and staging environment that is separate from the production environment.
Given such a development workflow, you need to push configuration changes from development to production (similar to how you need to push code or content between environments). Drupal's configuration management system helps you do that in a powerful yet elegant way.
Since I announced the original Configuration Management Initiative over seven years ago, we've developed and shipped a strong configuration management API in Drupal 8. Drupal 8's configuration management system is a huge step forward from where we were in Drupal 7, and a much more robust solution than what is offered by many of our competitors.
All configuration in a Drupal 8 site — from one-off settings such as site name to content types and field definitions — can be seamlessly moved between environments, allowing for quick and easy deployment between development, staging and production environments.
However, now that we have a couple of years of building Drupal 8 sites behind us, various limitations have surfaced. While these limitations usually have solutions via contributed modules, it has become clear that we would benefit from extending Drupal core's built-in configuration management APIs. This way, we can establish best practices and standard approaches that work for all.
The four different focus areas for Drupal 8. The configuration management initiative is part of the 'Improve Drupal for developers' track.I first talked about this need in my DrupalCon Nashville keynote, where I announced the Configuration Management 2.0 initiative. The goal of this initiative is to extend Drupal's built-in configuration management so we can support more common workflows out-of-the-box without the need of contributed modules.
What is an example workflow that is not currently supported out-of-the-box? Support for different configurations by environment. This is a valuable use case because some settings are undesirable to have enabled in all environments. For example, you most likely don't want to enable debugging tools in production.
The contributed module Config Filter extends Drupal core's built-in configuration management capabilities by providing an API to support different workflows which filter out or transform certain configuration changes as they are being pushed to production. Config Split, another contributed module, builds on top of Config Filter to allow for differences in configuration between various environments.
The Config Split module's use case is just one example of how we can improve Drupal's out-of-the-box configuration management capabilities. The community created a longer list of pain points and advanced use cases for the configuration management system.
While the initiative team is working on executing on these long-term improvements, they are also focused on delivering incremental improvements with each new version of Drupal 8, and have distilled the most high-priority items into a configuration management roadmap.
There are many opportunities to contribute to this initiative and we'd love your help.
If you would like to get involved, check out the Configuration Management 2.0 project and various Drupal core issues tagged as "CMI 2.0 candidate".
Special thanks to Fabian Bircher (Nuvole), Jeff Beeman (Acquia), Angela Byron (Acquia), ASH (Acquia), and Alex Pott (Thunder) for contributions to this blog post.
This module provides an alternative to create an availability timing based on annual periods independent of any year.
For example, you can create the next availability timing:
Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll consider Entity Jump Menu, a module which allows you to quickly navigate between nodes, users, and taxonomy terms provided you know their ID.
Drupal's skip_on_empty migration process plugin relies on !$value as a test, which is often contrary to expectations.
This module provides the following alternatives:
Pietro Guardascione of Candy Crush maker King argues that there will be a sharp increase in demand for "analytical game designers" who work closely with lead designers on key game systems. ...
Provides a new field formatter (`address_html`) for the `address` field.
This module allows you to override address format for specific country and language through admin panel.
More description and use cases of this module will come soon...
“and all the men and women merely players” — William Shakespeare
Halloween is nearly upon us, and soon, no one will look twice at a person dressed as the murderous Michael Myers or as a walking talking human sized piece of candy corn. Halloween encourages everyday people to imagine costumes to wear, attend parties, and even to play a little pretend. Take advantage of the spooky season and introduce some new players to role-playing games! The next time you need another player for your game, don’t just think about who plays the games you do. Think about who should play the games you do. Let them know what they’re missing!
So, what’s your costume?Why do we rack our brains over who to be and explore endless costume racks for what to wear for Halloween? Not to mention, occasionally we spend an obscene amount of money to manicure every detail. Why do we do it? Why do we go through the hassle year after year?
Can it be that it is just fun to do? I mean, it only comes once a year. When else are you going to dress up, put your feet in another person’s shoes, and get to play a character? See where this is going?
Role-playing in disguise?Maybe we do it for the prestige, the story, or the love of acting…
Maybe it is a form of hero worship, or we do it to honor the creative crafting spirit of it all.
Maybe we do it for the value of passing on history or the act of storytelling itself?
I can’t quite put my finger on why we dress up, why we embrace the opportunity to be someone else, but there is an enjoyment and general affection that is shared among the participants in these activities.
Maybe we all crave escapism…
What is abundantly clear is that there is common ground for why we wear costumes and why we enjoy role-playing games. So, why aren’t game tables overflowing with role-players like candy pails on Halloween?
Wearing a CostumeShakespeare famously said, “All the world’s a stage, and all the men and women merely players”.
The point is, it isn’t weird that you like to be someone or something else sometimes. It isn’t weird or wrong that you feel different in different clothes. Identity is powerful and we identify with how we look — how others look. Far too many role-playing enthusiasts are shy to speak about their impassioned hobby. For a good reason too, Dungeons & Dragons has been socially polarizing for many of us over the years. The funny thing is, people are playing role-playing games all around us. They always have! The funny thing is, people are playing role-playing games all around us. They always have! Share3Tweet1+11Reddit1Email
When you were young, maybe you had tea parties with your imaginary friends. Have you ever played Cops & Robbers or Cowboys & Indians? I for one used to run around the school yard acting out comic book characters. Maybe you just sat on the sofa imitating British accents or your favorite cartoon voices. If imitation is the sincerest form of flattery, whatever nerd stigma came of the past is no longer so divisive, so ostracizing. Given how widely we imitate others, how often we mask ourselves, what do we have to hide in the first place?
We are all actors and actresses. Maybe you like yourself better after a beer buzz. Is that suit you wear to work for show or do you feel empowered by it? What if you were a baseball player, a police officer, or a doctor; is it the confidence in how you wear the outfit or the skill of how you actually perform in it?
Take a minute to carefully consider how you hide your hobby… and ask yourself, does it matter anymore? Worse…are you not including someone else in what makes you happy?
Don’t hide your games from the public. Don’t make excuses. If times haven’t changed, then we are definitely starting to see them differently. The next time you need another player for your game, don’t just think about who plays the games you do. Consider the kid practicing their British accent. Consider the Dad who is reenacting Pickett’s Charge this weekend. Ask anyone who has ever auditioned for theater — or ever wanted to.
With the spirit of Halloween all around us, you couldn’t be more surrounded by people with a reason to be interested in playing a role-playing game with you. Your next player is right in front of you, quit looking past them.
What audiences can you think of that are role-playing in disguise!? Who did you role-play as when you were a kid? How do you hide your role-playing hobby from friends and family?
Our client is migrating from Luminate CMS to Drupal because they want to improve performance without changing the look or feel of the site. Each of the pages on a Luminate site are like snowflakes - unique. It doesn’t make sense to rebuild those features as structured blocks given that they only appear on one single page. So having the ability to use existing JS and CSS allows us to copy and paste markup without rebuilding a whole structure that wouldn’t be repurposed on other pages.
This technically savvy client wants a way to add existing JavaScript and CSS to Drupal pages. So let’s give them the capability of putting raw CSS and JavaScript on their pages. This will help them complete the migration, moving their existing code to Drupal. These are the tools the content editors need to make their website beautiful and effective. If your content editors are more familiar with writing javascript and css here’s how to enable them to keep doing that.
To make this happen, first make a raw field formatter.
Adding in raw text format
AND…No filters enabled!
Since our client wants to add raw css and javascript to landing pages, we will create a field on the ‘landing page’ content type. It will be Text (formatted, long) and label “Inline CSS”. We will limit it to just one on the page.
Add field inline css
Have it use the Raw text format from the last step. You can limit the field to only this format by installing the package
Composer require drupal/allowed_formats
Be sure to check the “Raw” box on the field page and save it.
Now make sure our field is being output.
Making sure inline css is displayed
Visit a landing page content form by going to Manage > Content > Add content > Landing Page, and put some real css in our new field:
Adding map background raw
We also provide a WYSIWYG place to enter HTML. In this case we need some HTML, perhaps a div, with class=‘map’.
We’re not finished yet! We need to provide a twig template. Look at the output HTML. We get:
<!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-inline-css--landing-page.html.twig * field--node--field-inline-css.html.twig * field--node--landing-page.html.twig * field--field-inline-css.html.twig x field--text-long.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--text-long.html.twig' --> <div data-quickedit-field-id="node/589/field_inline_css/en/full" class="clearfix text-formatted field field--name-field-inline-css field--type-text-long field--label-hidden field__item">.map { background: url(http://www.example.com/assets/images/background-images/banner-landing-page/map.png) center no-repeat; padding-top: 80px; min-height: 350px; }</div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--text-long.html.twig' -->in our output! Notice the <div> surrounding our CSS! We don’t want that! So it’s time to create a Twig template without extra div’s. One that will output raw CSS.
We will go from this (notice all the extra <div>s)
{% if label_hidden %} {% if multiple %} <div{{ attributes.addClass(classes, 'field__items') }}> {% for item in items %} <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> {% endfor %} </div> {% else %} {% for item in items %} <div{{ attributes.addClass(classes, 'field__item') }}>{{ item.content }}</div> {% endfor %} {% endif %} {% else %} <div{{ attributes.addClass(classes) }}> <div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div> {% if multiple %} <div class="field__items"> {% endif %} {% for item in items %} <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> {% endfor %} {% if multiple %} </div> {% endif %} </div> {% endif %}And we should do three things:
Then we get in output:
<!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: x field--node--field-inline-css--landing-page.html.twig * field--node--field-inline-css.html.twig * field--node--landing-page.html.twig * field--field-inline-css.html.twig * field--text-long.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/example/templates/field/field--node--field-inline-css--landing-page.html.twig' --> <style> .map { background: url(http://www.example.com/assets/images/background-images/banner-section-landing-page/map.png) center no-repeat; padding-top: 80px; min-height: 350px; } </style> <!-- END OUTPUT from 'themes/custom/example/templates/field/field--node--field-inline-css--landing-page.html.twig' -->Tada! The CSS shows up ready to use on the page! The same technique can be used to allow content editors to put JavaScript on the page! Instead of putting <style> tags around the template, make it <script> tags instead.
Make sure you meet your content editors where they are, give them tools they can use but don’t use this technique with novice or non-technical content editors.
The article continues the series started with Creating interactive content in CKEditor with VisualN Embed article.
It shows how to use IFrames toolkit provided with VisualN module to share embedded drawings across sites.
For our example we use a Drupal 8 site as drawings origin and a Wordpress site as a target resource exposing those drawings. The Wordpress site can be located at any domain and/or server and doesn't depend on the origin in any way.
1. Go to the Edit page, open embedded drawing Context menu
2. Open Drawing Properties dialog, enable sharing, configure properties
3. Save changes, copy embed code from the Sharing box
4. Insert embed code into another site content and save
There are a couple of use cases when you might want to share drawings:
go to the full content to watch video