Designing Sausage Sports Club - by Chris Wade Blogs - 7 January 2019 - 7:30am
Lessons learned designing Sausage Sports Club, including a few deep dives into specific features.
Categories: Game Theory & Design

Side Hustling Advice from Full time Game Devs - by Larry&Brandon GDU Blogs - 7 January 2019 - 7:26am
Su and Peter both have full time jobs and have had illustrious careers spanning across gaming, film, and tech companies. Their partnership started over four years ago and currently their company, Ugo3D, has a potential valuation of $200 million dollars. T
Categories: Game Theory & Design

Squeaky Wheel's 2018 Year in Review - by Ryan Sumo Blogs - 7 January 2019 - 7:22am
I reflect on Squeaky Wheel's 2018, opining on conventions, keeping up motivation, and how the Steam algorithm changes affected us.
Categories: Game Theory & Design

Tomb of the Mask: Enemy Analysis - by Olin Olmstead Blogs - 7 January 2019 - 7:20am
A detailed look at the design of each enemy in Tomb of the Mask. A Pac-Man collect the dots in a maze style game for iOS and Android. The ghosts ain't got nothing on these bats, snakes, and flying monkeys.
Categories: Game Theory & Design

Kliuless #17: Bandersnatch, a Black Mirror on the Fourth Wall - by Kenneth Liu Blogs - 7 January 2019 - 7:19am
Each week I compile a gaming industry insights newsletter that I share with other Rioters, including Riot’s senior leadership. This edition is the public version that I publish broadly every week as well. Opinions are mine.
Categories: Game Theory & Design

Social Advocacy in Game Reviews - by Michael Heron Blogs - 7 January 2019 - 7:19am
What are the limits of social advocacy in game reviews? What should we be doing, what shouldn't we be doing, and what do we hope to gain by including our agendas in our game coverage.
Categories: Game Theory & Design

Unity Audio Import Optimisation - getting more BAM for your RAM - by Zander Hulme Blogs - 7 January 2019 - 7:17am
A guide to using Unity's audio import settings to help improve game performance.
Categories: Game Theory & Design

The evolution of video games as a storytelling medium, and the role of narrative in modern games - by Chris Stone Blogs - 7 January 2019 - 7:12am
This essay aims to investigate the topic of narrative in video games. Specifically, the evolution of narratives in games, and the role of narrative in today’s story-based games. Narrative is all around us; we can interpret all events as stories with plo
Categories: Game Theory & Design

Lullabot: JSON:API 2.0 Has Been Released

Planet Drupal - 7 January 2019 - 6:08am

Note: This article is a re-post from Mateu's personal blog.

I have been very vocal about the JSON:API module. I wrote articles, recorded videos, spoke at conferences, wrote extending software, and at some point, I proposed to add JSON:API into Drupal core. Then Wim and Gabe joined the JSON:API team as part of their daily job. That meant that while they took care of most of the issues in the JSON:API queue, I could attend the other API-First projects more successfully. I have not left the JSON:API project by any means, on the contrary, I'm more involved than before. However, I have just transitioned my involvement to feature design and feature sign-off, sprinkled with the occasional development. Wim and Gabe have not only been very empathic and supportive with my situation, but they have also been taking a lot of ownership of the project. JSON:API is not my baby anymore, instead we now have joint custody of our JSON:API baby.

As a result of this collaboration Gabe, Wim and I have tagged a stable release of the second version of the JSON:API module. This took a humongous amount of work, but we are very pleased with the result. This has been a long journey, and we are finally there. The JSON:API maintainers are very excited about it.

I know that switching to a new major version is always a little bit scary. You update the module and hope for the best. With major version upgrades, there is no guarantee that your use of the module is still going to work. This is unfortunate as a site owner, but including breaking changes is often the best solution for the module's maintenance and to add new features. The JSON:API maintainers are aware of this. I have gone through the process myself and I have been frustrated by it. This is why we have tried to make the upgrade process as smooth as possible.

What Changed?

If you are a long-time Drupal developer you have probably wondered how do I do this D7 thing in D8? When that happens, the best solution is to search a change record for Drupal core to see if it change since Drupal 7. The change records are a fantastic tool to track the things changed in each release. Change records allow you to only consider the issues that have user-facing changes, avoiding lots of noise of internal changes and bug fixes. In summary, they let users understand how to migrate from one version to another.

Very few contributed modules use change records. This may be because module maintainers are unaware of this feature for contrib. It could also be because maintaining a module is a big burden and manually writing change records is yet another time-consuming task. The JSON:API module has comprehensive change records on all the things you need to pay attention when upgrading to JSON:API 2.0.


As I mentioned above, if you want to understand what has changed since JSON:API 8.x-1.24 you only need to visit the change records page for JSON:API. However, I want to highlight some important changes.

Config Entity Mutation is now in JSON:API Extras

This is no longer possible only using JSON:API. This feature was removed because Entity API does a great job ensuring that access rules are respected, but the Configuration Entity API does not support validation of configuration entities yet. That means the responsibility of validation falls on the client, which has security and data integrity implications. We felt we ought to move this feature to JSON:API Extras, given that JSON:API 2.x will be added into Drupal core.

No More Custom Field Type Normalizers

This is by far the most controversial change. Even though custom normalizers for JSON:API have been strongly discouraged for a while, JSON:API 2.x will enforce that. Sites that have been in violation of the recommendation will now need to refactor to supported patterns. This was driven by the limitations of the serialization component in Symfony. In particular, we aim to make it possible to derive a consistent schema per resource type. I explained why this is important in this article.

Supported patterns are:

  • Create a computed field. Note that a true computed field will be calculated on every entity load, which may be a good or a bad thing depending on the use case. You can also create stored fields that are calculated on entity presave. The linked documentation has examples for both methods.
  • Write a normalizer at the Data Type level, instead of field or entity level. As a benefit, this normalizer will also work in core REST!
  • Create a Field Enhancer plugin like these, using JSON:API Extras. This is the most similar pattern, it enforces you to define the schema of the enhancer.
File URLs

JSON:API pioneered the idea of having a computed url field for file entities that an external application can use without modifications. Ever since this feature has made it into core, with some minor modifications. Now the url is no longer a computed field, but a computed property on the uri field.

Special Properties

The official JSON:API specification reserves the type and id keys. These keys cannot exist inside of the attributes or relationships sections of a resource object. That's why we are now prepending {entity_type}_ to the key name when those are found. In addition to that, internal fields like the entity ID (nid, tid, etc.) will have drupal_internal__ prepended to them. Finally, we have decided to omit the uuid field given that it already is the resource ID.

Final Goodbye to _format

JSON:API 1.x dropped the need to have the unpopular _format parameter in the URL. Instead, it allowed the more standard Accept: application/vnd.api+json to be used for format negotiation. JSON:API 2.x continues this pattern. This header is now required to have cacheable 4XX error responses, which is an important performance improvement.

Benefits of Upgrading

You have seen that these changes are not very disruptive, and even when they are, it is very simple to upgrade to the new patterns. This will allow you to upgrade to the new version with relative ease. Once you've done that you will notice some immediate benefits:

  • Performance improvements. Performance improved overall, but especially when using filtering, includes and sparse fieldsets. Some of those with the help of early adopters during the RC period!
  • Better compatibility with JSON:API clients. That's because JSON:API 2.x also fixes several spec compliance edge case issues.
  • We pledge that you'll be able to transition cleanly to JSON:API in core. This is especially important for future-proofing your sites today.
Benefits of Starting a New Project with the Old JSON:API 1.x

There are truly none. Version 2.x builds on top of 1.x so it carries all the goodness of 1.x plus all the improvements.

If you are starting a new project, you should use JSON:API 2.x.

JSON:API 2.x is what new installs of Contenta CMS will get, and remember that Contenta CMS ships with the most up-to-date recommendations in decoupled Drupal. Star the project in GitHub and keep an eye on it here, if you want.

What Comes Next?

Our highest priority at this point is the inclusion of JSON:API in Drupal core. That means that most of our efforts will be focused on responding to feedback to the core patch and making sure that it does not get stalled.

In addition to that we will likely tag JSON:API 2.1 very shortly after JSON:API 2.0. That will include:

  1. Binary file uploads using JSON:API.
  2. Support for version negotiation. Allows latest or default revision to be retrieved. Supports the Content Moderation module in core. This will be instrumental in decoupled preview systems.

Our roadmap includes:

  1. Full support for revisions, including accessing a history of revisions. Mutating revisions is blocked on Drupal core providing a revision access API.
  2. Full support for translations. That means that you will be able to create and update translations using JSON:API. That adds on top of the current ability to GET translated entities.
  3. Improvements in hypermedia support. In particular, we aim to include extension points so Drupal sites can include useful related links like add-to-cart, view-on-web, track-purchase, etc.
  4. Self-sufficient schema generation. Right now we rely on the Schemata module in order to generate schemas for the JSON:API resources. That schema is used by OpenAPI to generate documentation and the Admin UI initiative to auto-generate forms. We aim to have more reliable schemas without external dependencies.
  5. More performance improvements. Because JSON:API only provides an HTTP API, implementation details are free to change. This already enabled major performance improvements, but we believe it can still be significantly improved. An example is caching partial serializations.
How Can You Help?

The JSON:API project page has a list of ways you can help, but here are several specific things you can do if you would like to contribute right away:

  1. Write an experience report. This is a issue in the JSON:API queue that summarizes the things that you've done with JSON:API, what you liked, and what we can improve. You can see examples of those here. We have improved the module greatly thanks to these in the past. Help us help you!
  2. Help us spread the word. Tweet about this article, blog about the module, promote the JSON:API tooling in JavaScript, etc.
  3. Review the core patch.
  4. Jump into the issue queue to write documentation, propose features, author patches, review code, etc.

Photo by Sagar Patil on Unsplash.

Categories: Drupal

Wim Leers: JSON:API module version two

Planet Drupal - 7 January 2019 - 6:08am

Mateu, Gabe and I just released JSON:API 2.0!

Read more about it on Mateu’s blog.

I’m proud of what we’ve achieved. I’m excited to see more projects use it. And I’m confident that we’ll be able to add lots of features in the coming years, without breaking backwards compatibility. I was blown away just now while generating release notes: apparently 63 people contributed. I never realized it was that many. Thanks to all of you :)

I had a bottle of Catalan Ratafia (which has a fascinating history) waiting to celebrate the occasion. Why Ratafia? Mateu is the founder of this module and lives in Mallorca, in Catalunya. Txin txin!

If you want to read more about how it reached this point, see the July, October, November and December blog posts I did about our progress.

Categories: Drupal

Welcome Message

New Drupal Modules - 7 January 2019 - 5:32am
Categories: Drupal

Specbee: Drupal 8 Now or Drupal 9 later? What’s the right thing to do?

Planet Drupal - 7 January 2019 - 5:02am

Did you know, on an average an adult makes about 35000 decisions each day?! And suddenly, life feels more difficult. Most are mundane but taking the right step towards an important decision can turn you into a winner. Since the release of Drupal 8 in November 2015, Drupal website owners have been in a dilemma. To upgrade or not to upgrade. To migrate to Drupal 8 now or simply wait till Drupal 9 releases and completely skip 8. And to make things more knotty, there are PHP, Symfony and other version upgrades to keep track of too.

At this point, you might wonder why choose or stick with Drupal at all when everything seems so complex and tedious. Why shouldn’t I just switch to a rather simpler CMS where I can sit back and just let my content work its magic, you ask? Here’s the thing – Drupal is an open-source content management framework that is best known for the security, robustness and flexibility it offers. Without constant and consistent updates and patches, Drupal wouldn’t have been the relevant, dependable and trusted CMS that it is today. This continuous innovation approach has helped Drupal in offering new Drupal features, advanced functionalities and security patches with every minor release.

Categories: Drupal

Seasonal Product Recommendations

New Drupal Modules - 7 January 2019 - 2:57am

This module allows you to deliver a more personalized experience to your customers by sending product recommendations on the basis of the prevalent season to them. This will take the customer experience on your eCommerce website to the next level. Customers from different locations have different needs. Then why not customize the recommendations for them, accordingly.

Categories: Drupal


New Drupal Modules - 7 January 2019 - 2:23am

This is testing and i will delete it.

Categories: Drupal

Troy’s Crockpot: Character Background Generators

Gnome Stew - 7 January 2019 - 12:01am

When a GM is plotting a campaign, one of the things she or he wants to do is identify points of conflict that will directly affect the player characters.

Published adventures will have all sorts of thrilling moments and engaging encounters. But making the story personal can often be what makes it memorable — what brings it home.

You want to hit them where it hurts.

When the authors of Gnome Stew created Eureka: 501 Adventure Plots To Inspire Game Masters in 2010, we used Georges Polti’s list of 36 dramatic situations as a guide. Thirteen of the dramatic situations involve family or loved ones. Who the character loves and is loved by is essential to establishing those dramatic beats.

It’s Your Life

Over the holiday I caught up with some game-related reading, including digging into D&D’s Xanathar’s Guide to Everything (so I’m a year behind, shoot me).

Included in the book is a list of tables designed to generate a background for PCs. Tables such as this can be helpful because they provide additional material that a player might not have considered when coming up with a backstory. (Or, if the player isn’t inclined to do a backstory, at least it can provide the GM with an item or two that can be used as a personal hook).

Tables such as this should never be used slavishly. I think they work best when they serve as a menu that a player can select from.

As an exercise, I rolled up two character backgrounds using the Xanathar tables, then for comparison’s sake, did the same with two other tables I have found useful — one from the Hero Builder’s Guidebook (Wizards of the Coast, c. 2000) and the other from Pathfinder’s Ultimate Campaign (Paizo, c. 2013).


First: Dragonborn sailor/bard.

The dice produced a couple of interesting points: 1) The dragonborn came from a wealthy family that resided in a palace or castle, but whose mother is missing because she was imprisoned, enslaved or for some other reason was taken away. 2) The character is a gifted performer whose love of knowledge and stories was awakened by spending time in an old library, and who learned his craft from a master bard who was a human aristocrat, someone alive and famous.

Both of those things work well, and could even be combined together. The missing mom could be a victim of palace or imperial conflicts. She could be like Eleanor of Aquitaine, who spent close to 16 years in prison for siding with one of her sons over their claim to the crown. And perhaps this aristocrat is her keeper, by some arrangement with the father, but the PC can still visit and learn from them.

Second: Gnome fighter.

My favorite part of this random generation was the 11 siblings the chart produced. Big families produce lots of conflict, reasons to do things, reasons to NOT do things, and frankly, every time a character needs a brother or sister to this that or the other, you’ve got one. (“How many brothers and sisters do you have?”)

The other part of the conflict is built into the origin; the family lived on the frontier, on the edges of civilization, and that pop died and got eaten by monsters. Whatever that monster is — picking one is always fun — gives the gnome a built-in enmity for the rest of its career.

A life event that provides fertile ground for a revenge storyline is that the gnome was knocked out and left for dead in a feud with a rival adventurer over shares of a treasure. This adventurer is now an enemy.

Hero Builder

This generator provided me with a human from a family of refugees who established a homestead along the mountainous frontier. This character was raised in adventure territory, combat was a part of their lives.  Of her or his immediate family, only an older sister survives. However, there is a large extended family of uncles and cousins.

Why was the family on the run? Well, the generator said the family held dissident political views; they supported a rebellion. In fact, an ancestor achieved folk hero status as a failed rebel. That’s a legacy the character might wish to embrace or discard. Either approach can be interesting.

Pathfinder’s Ultimate Campaign

This generator produced a half-elf cleric who was raised among forest-dwelling elves as an only child.

Two events are pivotal for the character: 1) The PC was a convert to the faith, a decision that was heavily influenced by a current love interest. 2) The PC twice has had run-ins with the law, once imprisoned for smuggling and later for assaulting a close friend for religious reasons. Does this make the PC a zealot? Are they someone under the sway of another (the lover)? Does the newfound religion jive with the folks back in the forest home?

This character has the makings of a pariah, which is interesting. Maybe the only way they’ll find themselves is within a party of adventurers.


Obviously, different background generators do different things, emphasizing different aspects of lives. What I like about each:

Xanathar: It creates a conflict that is fresh and immediate, often familial, often involving a patron or teacher. The PC has to fill in the blanks a little bit more than in the others.  On its own, there are gaps. But if a PC pairs it up with the Backgrounds, Boons and Traits section of the character development, a more cohesive picture of their past takes shape.

Hero Builder: Family legacy is very important. Where you are from and who your parents were are key to your development. The apple does not fall far from the tree.  The ethics charts can be useful. I also found that religion and political beliefs factor in more strongly here than in the others.

Ultimate Campaign: Everything is driven by the PC’s character class, and secondarily, by their race. There is a darker tone to the background material; in all likelihood, something traumatic happened that spurred an adventuring career.


Categories: Game Theory & Design

Fuzzy Thinking: Strange Weapons

RPGNet - 7 January 2019 - 12:00am
Fuzzy games.
Categories: Game Theory & Design

Podcast (using Views)

New Drupal Modules - 6 January 2019 - 11:14pm

Podcasts is a module that aims to create a Podcast feed for your site using Views.

Categories: Drupal

Video Game Deep Cuts: Welcome To 2019, Already

Social/Online Games - Gamasutra - 6 January 2019 - 8:44pm

This week's highlights include a detailed look at what 2019 may bring in terms of business trends & games - as well as a whole host of other leftover 2018 highlights, daily 'meditations' on games, a Chinese indie megahit, and lots more. ...

Categories: Game Theory & Design

CiviCRM Blog: Webform CiviCRM Integration: new features added in 2018 and looking ahead to 2019

Planet Drupal - 6 January 2019 - 12:39pm

2018 was a big year for Webform CiviCRM module. I wanted to take a moment to highlight some of the new features that were added in 2018 (with some examples/screenshots) and take a look at what's to come in 2019!

Webform CiviCRM Integration - what is this?

Webform CiviCRM is a Drupal module that in a nutshell exposes CiviCRM APIs (with which you can create CiviCRM contacts, contributions, memberships, participant registrations, activities - just about any CiviCRM Entity programmatically) to the powerful Drupal Webform module - a very popular (over 450,000 Drupal sites are using it) and highly configurable drag and drop form builder. Webform CiviCRM itself is a popular module - over 3,000 CiviCRM projects are using it. That's more users/sites than the Mosaico Extension has! Webform CiviCRM was invented by Coleman Watts (of the CiviCRM Core Team) and is supported by the CiviCRM community:

2018 - highlights is:pr is:closed updated:>2018-01-01 -> 88 closed! Some highlights include:
  • enhancements to recurring contributions via Webform CiviCRM (thanks to Biodynamics Association (USA) for co-funding this) - you can now configure your webform such that you can pay any amount (Event, Membership) in instalments as well as start a regular recurring open-ended Donation. An example of this would be swim club fees -> a full season is 10 months and costs $3,000 for the entire year. You can now configure your webform such that parents can sign up their child(ren) for Memberships/Events -> and select to pay all at once or in e.g. 10 instalments of $300/month.
  • Stripe support (thanks to contributions by Matthew Wire from MJW Consulting) - Matt has been doing a lot of work on the Stripe Extension and we've been supportive of changes he has PR-ed to Webform Civicrm module.  This means that Webform CiviCRM is now compatible with all major in-line Payment Processors: Stripe, iATS Payments and PayPal Pro.
  • being able to configure financial types (thanks to PEMAC (Canada) for funding this) - it is now possible to e.g. charge the correct Sales Tax [which is defined per Financial Type] based on a member's Province/location.

  • added line item support (thanks to Wilderness Committee (Canada) for funding this) - it is now possible to add up to 5 additional lineItems for one Contribution. So you can now do things like: make a donation, purchase a calendar, pay for postage - all on the same webform - and in combination with the financial type improvements - you can control the financial types for every line item, ensuring that (in our example) - the donation becomes eligible for Charitable Tax Receipting but the calendar purchase and the postage do not. 
  • numerous improvements re: cases, activities, memberships (thanks to people at Compucorp and Fuzion, and many others)
  • many other improvements - I apologize for missing anything/anyone!
  • Coleman and I ran a 2h sold-out Workshop on Webform CiviCRM at CiviCamp Calgary 2018. We covered lots of features and in-hindsight wished we had recorded it. Next time! Amongst many other items we covered how the Registration form for CiviCamp Calgary 2018 was built (allowing multiple participants to be signed up for multiple events and also including a Partner discount code field).

Also filed under 2018 highlights: Jacob Rockowitz officially released his Drupal 8 version of Drupal webform module - it includes wicked new features that make webforms more portable than ever and new fields like signature fields and my favourite: automated country flags for phone numbers (see screenshot further down).

Looking ahead at 2019 How can user organizations Contribute?


Categories: Drupal


New Drupal Modules - 6 January 2019 - 11:20am
Categories: Drupal


Subscribe to As If Productions aggregator