Thursday Terrain Corner

Tabletop Gaming News - 22 February 2018 - 11:00am
The weekend continues to draw ever-closer. Another couple days and we’ll be there. I hope you have gaming plans. I’m a bit up in the air at the moment. But that’s alright. Even if nothing fully materializes, I’m thinking I might work on painting the first minis that I’ll have painted in several years. It’d […]
Categories: Game Theory & Design

Hook 42: January Accessibility (A11Y) Talks

Planet Drupal - 22 February 2018 - 10:42am

In January, we were happy to have Ashley Bischoff as our guest speaker. Ashley talked about embracing plain language for better accessibility. Ashley is an accessibility expert and copy editor for The Paciello Group.

Writing reports and documentation is nothing new for many of us — we write them all the time. But even though we may do our best to write clearly, those who receive our reports and documentation might not be as familiar with accessibility as we are.

At the end of the day, no matter how technically correct a document may be, our words won't do much good if those who are reading them can't understand what we're trying to say. But writing isn't a black box — there are straightforward techniques that we can use to help ensure that our writing remains accessible.


Categories: Drupal

OSTraining: Check Out the New Page Builder in Drupal 8.5!

Planet Drupal - 22 February 2018 - 10:42am

The Release Candiate version of Drupal 8.5 was released today.

At this point we can see the final features that will be in the official release of 8.5 on March 7.

In this blog post, I'll give you an introduction to 3 of the main new features you can look forward to in 8.5.

This is "Day 1" post giving my quick reactions. We'll improve and expand on this post in the days before the final release.

Categories: Drupal

Drupal blog: Drupal 8.5.0-rc1 is available for testing

Planet Drupal - 22 February 2018 - 10:28am

The first release candidate for the upcoming Drupal 8.5.0 release is now available for testing. Drupal 8.5.0 is expected to be released March 7.

Download Drupal-8.5.0-rc1

8.5.x makes the Media module available for all, improves migrations significantly, stabilizes the Content Moderation and Settings Tray modules, serves dynamic pages faster with BigPipe enabled by default, and introduces the new experimental Layout Builder module. The release includes several very important fixes for workflows of content translations and supports PHP 7.2. Finally, 8.5.0-rc1 also includes the same security updates that are provided in 8.4.5.

What does this mean to me? For Drupal 8 site owners

Drupal 8.4.5, a security update and the final release of the 8.4.x series, has also been released this week. 8.4.x sites should update immediately to 8.4.5, but going forward, 8.4.x will receive no further releases following 8.5.0, and sites should prepare to update from 8.4.x to 8.5.x in order to continue getting bug and security fixes. Use update.php to update your 8.4.x sites to the 8.5.x series, just as you would to update from (e.g.) 8.4.2 to 8.4.3. You can use this release candidate to test the update. (Always back up your data before updating sites, and do not test updates in production.)

If you're an early tester who is already running 8.5.0-alpha1 or 8.5.0-beta1, you should update to 8.5.0-rc1 immediately. 8.5.0-rc1 includes security fixes (the same fixes that were released in Drupal 8.4.5).

Site owners should also take note of the fact that Drupal 8's support for PHP 5 will end in one year, in March 2019. PHP 7.2 is now the best recommended PHP version to use with Drupal 8.

For module and theme authors

Drupal 8.5.x is backwards-compatible with 8.4.x. However, it does include internal API changes and API changes to experimental modules, so some minor updates may be required. Review the change records for 8.5.x, and test modules and themes with the release candidate now.

For translators

Some text changes were made since Drupal 8.4.0. automatically offers these new and modified strings for translation. Strings are frozen with the release candidate, so translators can now update translations.

For core developers

All outstanding issues filed against 8.4.x were automatically migrated to 8.5.x. Future bug reports should be targeted against the 8.5.x branch. 8.6.x will remain open for new development during the 8.5.x release candidate phase. The 8.5.x branch will be subject to release candidate restrictions, with only critical fixes and certain other limited changes allowed.

Your bug reports help make Drupal better!

Release candidates are a chance to identify bugs for the upcoming release, so help us by searching the issue queue for any bugs you find, and filing a new issue if your bug has not been reported yet.

Categories: Drupal

Cryptozoic To Launch Cult: Choose Your God Wisely Board Game Kickstarter

Tabletop Gaming News - 22 February 2018 - 10:00am
I don’t know what happens after we die. I don’t know if there’s any god or gods out there in the universe, watching. But if you’re part of a cult, you’re pretty sure there is. But what god do you follow? That’s the first choice you need to make in Cult: Choose Your God Wisely, […]
Categories: Game Theory & Design

Cultist Simulator Pre-Sales: Why, What, and How Much - by ALEXIS KENNEDY Blogs - 22 February 2018 - 9:40am
Why we went paid beta but not Steam Early Access, and what #4 on actually means.
Categories: Game Theory & Design

How I Started Programming (Part One of Two) - by Trent Polack Blogs - 22 February 2018 - 9:40am
Part one of the Trent Polack origin story. This has absolutely no practical benefit other than hopefully providing people that want to get started in games in some form or another. But, yeah, mostly me rambling.
Categories: Game Theory & Design


New Drupal Modules - 22 February 2018 - 9:19am
Categories: Drupal

Viridian Clade Available To Pre-order For Wild West Exodus

Tabletop Gaming News - 22 February 2018 - 9:00am
A new posse is making its way to the dusty and outlaw-filled streets of the old West. They’re like nothing that your standard cow-poke has ever seen before. They’re the Viridian Clade, and if you want to be the fasted gun in the West and have yours before anyone else, you’ll want to get your […]
Categories: Game Theory & Design

Aten Design Group: Capturing Webhooks in Drupal 8

Planet Drupal - 22 February 2018 - 8:45am

When using traditional APIs your application is typically requesting or pulling data from an external service, requiring a request for fresh data if you want to see recent changes. When using webhooks, that process is reversed: data is pushed from an external service in real-time keeping your application more up to date and your project running more efficiently. Here are a few examples:

  • Facebook - Receive an alert anytime a message is read
  • Stripe - Get alerted anytime a transaction comes through
  • Eventbrite - Get alerted if an event is created or updated

This of course is not an exhaustive list; you'll need to check the application you are integrating with to see if they are implementing webhooks. A Google search like "Stripe Webhooks" is a good first step.

Implementing a webhook in your application requires defining a URL to which your webhook can push data. Once defined, the URL is added to the application providing the webhook. In Drupal 8, controllers are a straightforward way to define a path. See the complete code for an example.

When the webhook is fired it hits the defined URL with applicable data. The data that comes from a webhook is called the payload. The payload is often a JSON object, but be sure to check the application’s documentation to see exactly what you should be expecting. Capturing the payload is straightforward using the Request object available in a controller like this:

public function capture(Request $request) { $payload = $request->getContent(); }

If your payload is empty, you can always try some vanilla PHP:

$payload = file_get_contents("php://input"); Inspecting the Payload

Debugging webhooks can be a bit challenging if you are developing locally because your local environment typically does not have a public URL. Further, some webhooks require that the receiving URL implement SSL, which can also present challenges locally. The following options can help you navigate debugging webhooks locally.


When capturing the payload, you can log it in Drupal. This option requires pushing your code up to a publicly available URL (a dev or staging environment).

$this->logger->debug('<pre>@payload</pre>', ['@payload' => $payload]);

Once you know what the payload looks like, you can copy it, modify it and make your own fake webhook calls locally using Postman. Feel free to checkout the importable Postman example in the repo.

Most Flexible

There is a utility called ngrok that allows you to expose your local environment with a publicly available URL; if you anticipate a lot of debugging it is probably worth the time to set up. Once ngrok is in place, you use the same logging method as above or use XDEBUG or something similar to inspect the payload. Ngrok will give you a unique, public URL which you can register, but which forwards to a server you have running on localhost. You can even use it with a local server that uses vhosts, such as yoursite.test with the command:

ngrok http -host-header=rewrite yoursite.test:80 Capturing and Processing the Payload

I'm a big fan of Drupal's queue system. It allows quick storage of just about anything (including JSON objects) and a defined way to process it later on a CRON run.

In your controller, when the payload comes in, immediately add the payload to your defined queue rather than processing it right away. This will make sure it is always running as efficiently as possible. You can of course process it right away if you choose to do so and skip the rest of this post.


Later when the queue runs, you can process the payload and do what you need to do, like create a node. Here is an example from the queue plugin (see ProcessPayloadQueueWorker.php for the full code):

public function processItem($data) { // Decode the JSON that was captured. $decode = Json::decode($data); // Pull out applicable values. // You may want to do more validation! $nodeValues = [ 'type' => 'machine_name_here', 'status' => 1, 'title' => $decode['title'], 'field_custom_field' => $decode['something'], ];   // Create a node. $storage = $this->entityTypeManager->getStorage('node'); $node = $storage->create($nodeValues); $node->save(); }

Once a queue is processed on CRON, the item is removed from the queue. Check out Queue UI module for easy debugging.


As when building any web application, security should be a major consideration. While not an exhaustive list, here are a few things you can do to help make sure your webhook stays secure.

  • Check your service's webhook documentation to see what authentication protocols they provide.
  • Create your own token that only your application and the webhook service know about. If that is not included, do not accept the request. See the authorize method in the controller.
  • Instead of processing the payload and turning it into a node, consider doing an API call back to the service using the ID from payload and requesting the data to ensure its authenticity.
  • You should consider sanitizing content coming from the payload.

Once you implement a Webhook, you'll be hooked! Here's all the code packaged up.

There are of course Drupal contrib modules around webhooks. I encourage you to check them out, but if you have specific use cases or complex needs, rolling your own is probably the way to go.

Categories: Drupal

Session based temporary storage

New Drupal Modules - 22 February 2018 - 8:10am

This module is designed for developers only. It provides a service for storing and retrieving temporary data for a given owner through the session.

This service can be used as like PrivateTempStore to make temporary, non-cache data available across requests. The data is stored in one key/value collection and expires automatically after a given timeframe.

Categories: Drupal

Arcane Wonders Announces Senshi Board Game Coming This May

Tabletop Gaming News - 22 February 2018 - 8:00am
Arcane Wonders has announced a new strategy game that will be making its way to game shop shelves this May. It’s called Senshi. In it, players take on the role of warrior monks. Their master is ailing, and each student is trying to show that they have learned the master’s teachings the best, looking to […]
Categories: Game Theory & Design

Entity Access Conditions

New Drupal Modules - 22 February 2018 - 7:47am
Categories: Drupal

Steamforged Previews May Releases

Tabletop Gaming News - 22 February 2018 - 7:00am
The Union in Chains event left the Union decimated, with players being pulled away to join different Guilds as the Solthecian church took over the organization. In May, the results of that event will start hitting players’ tables. There’s two box sets coming, one based on all the characters that had been Union but are […]
Categories: Game Theory & Design

The Secret of Vinsen's Tomb: A Pugmire Jumpstart

New RPG Product Reviews - 22 February 2018 - 6:53am
Publisher: Onyx Path Publishing
Rating: 4
This 'quickstart' introduction to Pugmire comes in three parts: a rules and setting overview, an adventure, and a collection of pre-generated characters. It opens by explaining the core concept of the game. In a distant future, human beings have vanished and the place has been taken over by anthropomorphic dogs. They live in the ruins of the world human beings have left behind, now having evolved to walk upright on their hind legs, talk, and have developed opposable thumbs so that they can manipulate items and wield weapons. Despite wearing clothes they are still furry, though!

Many dogs deify the long-lost human beings and are driven by the desire to be adjudged a 'Good Dog' by their peers. They scavenge amongst the ruins for the legendary material 'plastic' and attempt to learn to use the things that human beings left behind - even if they consider them to be magic rather than understanding the underlying technology. These are the player-characters of this world.

The first section moves on to discuss the rules. These are based closely on Dungeons and Dragons 5e, with the standard abilities (Strength, Dexterity, Constitution, Intelligence, Wisdom and Charisma), with Skills and Tricks defining what each character is good at doing. Everything is explained in very basic terms, making this an excellent introductory game for children. Task resolution is by rolling a D20, adding apposite Skills and other bonuses and trying to exceed a target number. There's information about time in the game and about what happens when a fight breaks out, too; and the section ends with some notes on magic and spell use.

Next comes the adventure itself, The Secret of Vinsen's Tomb. This starts with a list of the primary NPCs, then there is a synopsis or overview of the entire adventure. Basically, the tomb in question is that of Vinsen Pug I, the very first king of Pugmire, and the plot concerns the retrieval (or looting if you prefer) of certain artefacts supposedly buried with him. It all starts with an assignment to find a cat who is an informant with criminal connections who has recently vanished. Where has she gone and what was she doing? Rumours hath it she was on the trail of ancient artefacts.

Once you have the information to get the party involved, the various scenes that can take place are laid out in detail. There are loads of helpful hints and tips for the first-time GM, too, so even if this is your first time it should flow smoothly. There's a clear plan of the tomb with atmospheric room descriptions coupled with notes on who is to be found there and what they are likely to do when the party wanders in. It all ends with a few ideas for further stories...

Finally, the pre-generated characters, complete with loads of background and even portraits to bring them to life. With a two-page character sheet, the entire package for each character runs to four pages. There are six of them in total, all nicely put together and - if you study the backgrounds - ready to work as a team.

Overall it makes a good introduction to the game, and should give you sufficient information and experience to be in a position to decide if Pugmire is for you and your group (or not). Presentation is to a high standard unless you use the PDF bookmarks, which start well in the first section but fail thereafter. The internal hyperlinks are a little hit and miss too. So, are you a Good Dog? Play this and find out!
Categories: Game Theory & Design

Robin Hood and the Merry Men Board Game Up On Kicsktarter

Tabletop Gaming News - 22 February 2018 - 6:00am
Ah! Ho! Ha-ha! Guard! Turn! Parry! Dodge! Spin! Ha! Thrust! Ok, so Robin Hood and the Merry Men doesn’t take place in the Warner Brothers universe, but whenever I think of ol’ Robin, I think of Daffy. And we’ve got Robin Hood up on Kickstarter with Final Frontier Games’ Robin Hood and the Merry Men […]
Categories: Game Theory & Design

VR Game Design in Recreational Dreaming: A Post-Mortem in Three Lessons - by Donald Dunbar Blogs - 22 February 2018 - 2:06am
An exploration of VR design tips, tricks, & principles by the designer of Recreational Dreaming, a "sleepwalking simulator" for the HTC Vive.
Categories: Game Theory & Design

Commerce Guys: What's the plan for Commerce Kickstart on Drupal 8?

Planet Drupal - 22 February 2018 - 12:28am

When Commerce Guys raised $5m in 2012 to grow Drupal Commerce and its ecosystem, we invested a big chunk of it in improving our user experience for both customers and administrators. With competing platforms like Shopify and Magento really coming into their own, we knew it was essential to provide a solid out-of-the-box experience. While Drupal Commerce was and is truly unique as an eCommerce framework natively extending and deeply integrated into a CMS, it turns out "flexibility" doesn't pitch nearly as well as a polished demo.

Investing in Drupal Commerce adoption

The product we developed to address that need is Commerce Kickstart, by far the most popular Drupal distribution ever built. I named it such to underscore the fact that we intended it to be an accelerator, both for Drupal Commerce's own adoption but also for newcomers wondering how to demo and develop with the software. At its height, we supported over 13,000 sites reporting in to, and we continue to see new sites launch with it to this day.

Building the distribution proved to be a fantastic learning experience. The project drove improvements that worked their way into many contributed modules and Drupal core itself (e.g. contributions to Views, VBO, Entity Reference, Inline Entity Form). Its broad appeal also gave us a platform to invite Technology Partners to invest in the community in a way that Drupal hadn't seen before, many of whom continue to invest in Drupal today (e.g. Authorize.Net, PayPal, Avalara).

It was a ton of work, but Bojan, Jonathan, and their team accomplished everything we set out to do and more. With the release of Commerce 2.0 last fall, we now find ourselves regularly fielding the question, "What's the plan for Commerce Kickstart on Drupal 8?" The reality is, porting Commerce Kickstart as it is to Drupal 8 would be both too costly for our team today and a poor strategy for the way the Drupal market is developing. We're doing something new again.

Accelerating adoption today

Another frequent question we field is, "Why does Drupal Commerce require Composer?" Composer is often highlighted as a barrier to Drupal 8 adoption, and I can understand why. I always felt the same way about drush. I had a UI; why did I need a CLI? I had my process and never had to battle the command line to make sure drush worked, was up to date, and did what I expected. I always felt that way ... until I buckled down and learned it. Now I can't imagine using Drupal without it.

I felt the same about Composer at first, but I was determined to learn how to use it as I learned Drupal 8 and modern PHP in general. I know I'm not the only person suffering from tool fatigue (cf. Dries ; ), so we're doing what we can to help you ease into using Composer on your own terms.

We started by releasing Ludwig last summer, a Drupal project that lets you manage Composer dependencies similarly to the familiar Libraries module. We also expanded and documented a Composer project template that lets you create a new Commerce 2.x site with composer create-project, and we then began planning how to let users customize a project template via the browser while prototyping a GUI for Composer.

With today's release of the new, developed in partnership with Acro Media (thanks to Shawn McCabe, Mike Hubbard, et al), we're taking the next step!

Commerce Kickstart for Drupal 8

What you'll find there is that Commerce Kickstart has been reimagined for Drupal 8 rather than rebuilt on Drupal 8. The quickest way to get up and running with Drupal Commerce today is not through a distribution as it was 6 years ago, it's through Composer. This is the tool for modern PHP developers, and we see prioritizing Composer while also making it simpler to use as essential to growing Drupal Commerce adoption both from without and within the Drupal community.

While still in its infancy, presents a form that lets you construct a Composer JSON file ready-made to support Commerce 2.x and the contributed modules you specify. Module categories include payment and shipping providers, product catalog and search tools, data migration, and more. As with Commerce Kickstart 2.x, it features Technology Partners whose modules we have integrated into Commerce 2.x, and we expect the selection to continue expand.

Future plans for the tool include clarifying and improving the tool's usability, adding additional modules and Technology Partners, and evolving it to continue to lower the barrier to entry for new Composer users. If you give it a whirl, we'd love to hear your ideas as well in the Commerce Kickstart issue queue.

Categories: Drupal

7 Effective Tips for Managing Your Remote Dev Team - by Sarah Kearns Blogs - 22 February 2018 - 12:07am
With 7 little tips learn how you can effectively manage your remote dev team.
Categories: Game Theory & Design

Appnovation Technologies: Simple website approach using a Headless CMS: Part 3

Planet Drupal - 22 February 2018 - 12:00am
Simple website approach using a Headless CMS: Part 3 This is the last post of my quick Headless journey, in the first one I approached the concept of Headless and presented some solutions like Drupal, GraphCMS, Contentful and Cockpit CMS. In the second one, I extended those concepts by detailing Cockpit CMS, mostly due to the simplicity of the admin interface and the way that we de...
Categories: Drupal


Subscribe to As If Productions aggregator