PSA: Thursday is your last day to pitch Core Concepts talks for GDC 2020!

Social/Online Games - Gamasutra - 12 August 2019 - 8:59am

GDC 2020 is still accepting pitches to present lectures, roundtables, and panels for the Core Concepts part of the event -- but submissions close this Thursday, August 15th at 11:59 PM PT!  ...

Categories: Game Theory & Design

Promet Source: Driving Human Connections in a Digital Environment

Planet Drupal - 12 August 2019 - 8:57am
Like many companies in our technology-enabled, globally connected environment, Promet Source operates with clients and team members all over the world. This reality creates a challenge for communications. The truth is, the more we put into our interactions, the more we get out of them.
Categories: Drupal

7 Must-read Books for Game Designers - by Narek Aghekyan Blogs - 12 August 2019 - 8:33am
This article discusses when and how game design has become a profession as well as when it has formed enough to be considered as a separate discipline. Also it suggests 7 books that every game designer needs to read.
Categories: Game Theory & Design

Why Artifact Failed - by James Margaris Blogs - 12 August 2019 - 8:32am
Examining the design issues behind the tepid launch of Valve's Artifact
Categories: Game Theory & Design

The Reality of Game Development - by Josh Bycer Blogs - 12 August 2019 - 8:21am
In this piece, I share my thoughts and experiences on what it means to make videogames for a living having spoken to developers over the past 7 years and where people still have trouble grasping about the practice.
Categories: Game Theory & Design

Piczle Colors post-mortem - by James Kay Blogs - 12 August 2019 - 8:18am
A quick look at the development of Piczle Colors for Nintendo Switch, what went well and what really didn't.
Categories: Game Theory & Design

Lessons Learned from the Development of Vicious Circle - by Caleb Compton Blogs - 12 August 2019 - 8:13am
I sit down with the Head Designer of Vicious Circle, the newest game from Rooster Teeth. We discuss how the game came to be, and some of the lessons learned along the way!
Categories: Game Theory & Design

What Computer Should I buy for Game Development? - by Richard East Blogs - 12 August 2019 - 8:10am
A surprisingly common question from new Indie Game Developers: what computer should I buy? When starting out, its important not to waste money, but also to ensure you have the right hardware for the job.
Categories: Game Theory & Design

Kliuless #44: The Dark Side of the Video Game Industry - by Kenneth Liu Blogs - 12 August 2019 - 8:08am
Each week I compile a gaming industry insights newsletter that I publish broadly. Opinions are mine.
Categories: Game Theory & Design

Lucid Util

New Drupal Modules - 12 August 2019 - 7:09am
Lucid Utility Module


  1. Use Image Styles in templates / modules
  2. Special twig functions (subset of twig tweak module)
  3. Custom theme suggestions: 40X pages template
  4. ckEditor 'detail' plugin added
  5. Redirect /user/{id} page to /dashborad
Categories: Drupal

Sponsored: A cost effective and customizable game platform of your own

Social/Online Games - Gamasutra - 12 August 2019 - 7:08am

AccelByte aims to provide developers with cost-effective access to game-platform technologies that have otherwise proven to be expensive to build over a long duration of time. ...

Categories: Game Theory & Design

The Origin, Prejudice, and Secret Powers of the Vulgar Tongue

Gnome Stew - 12 August 2019 - 5:00am

Cursing is an interesting part of our culture. The idea that certain concepts can be inherently offensive, but only when voiced using words derived from a certain language stock is a strange one. Have you ever given this concept, its origins and the nature of it serious consideration? Today we’re going to to that with two broad aims. First, a study of why cursing exists, how the concept is used and applied in the real world and its actual and downright magical effects, will help to insert an analog into your game that will have interesting roleplaying as well as mechanical applications. Second, this is sort of a soapbox issue for me, so I get to have a nice cathartic rant. Feel free to agree/disagree in the comments, though they may get more NSFW than our usual ones given the content (although I’m guessing not as NSFW as some of our other articles on issues of prejudice).

Part 1 – the interesting origin of foul language:

How did we come to have a subset of vocabulary deemed as offensive in modern English, a language that it has often been joked: “has pursued other languages down alleyways to beat them unconscious and rifle their pockets for new vocabulary.” (James D. Nicoll). This is also a language where coining new Neologisms on a moment’s notice is considered clever. Certainly this is a language where anything and everything is allowed. And yet we have this curious phenomenon where a small set of words, exclusively of one cultural origin are not allowed. How did that come to pass? And how can you leverage it in your games?

Turns out this language phenomenon dates back to the early 1000s with the Norman conquest of England. Back in the 1060s the Normans and the English had a disagreement over the succession to the throne of England. This dispute was resolved in 1066 at the battle of Hastings with the death of Harold Godwinson, one of the claimants to the throne. Within 20 years, the Normans had seized almost all of England.
How does this lead to the invention of today’s proscription against select words of Germanic origin? Well, it turns out that the Normans spoke Old French whereas the common man of England spoke Old English (which ironically, is a Germanic language). With the Normans in charge and with their society strongly divided into castes, the language of the land was split as well, with the nobility speaking Old French (why should they bother to learn a new language just to communicate with peasantry after all) and the peasants speaking Old English (they probably would have liked to learn to speak with their noble masters, but were too busy being oppressed and forced into crushing labor to say, take night classes even if that were a thing back then).
As is usually the case, the nobility felt that they were better than the people they were oppressing in every way, and that included the language spoken by the peasants. In fact our modern word vulgar comes for the old word vulgaris: “used by the common people”. Literally, the proscription against swearing came from the noble Norman caste being offended by hearing the crude language of the common folk. How dreadful it must have been for their delicate sensitive ears!

Now, one can make the argument that not all words of Germanic origin are offensive (in fact the most commonly used words in English are almost all of Germanic origin) but instead it can be claimed that the commonly proscripted words deal with biological functions or are of a sexual nature. One can almost imagine the genteel Norman lords and ladies wincing at the thought of the peasants  engaging in these generally private acts. But for that argument to hold any water, words of any origin that relate to the same concepts must be held at the same level of distaste. We can talk about defecation, feces, stool, poop, just not …. moving on, we can talk about copulation, fornication, intercourse, even whoopee, but not … well, you know.

So the key concept here is that in the English language, “private” words are not outlawed, nor are Germanic words, but where the two intersect, there we find the “BAD” words This must imply one of two things: That either there is some interaction effect between the two subsets that make Germanic private words somehow offensive when neither are alone, which makes no sense, or that both private words in general and Germanic words in general are considered lightly taboo or crass and to combine the two combines the effect. We can in fact point to other evidence that this second case is the one that applies. We can see plenty of people that are uncomfortable discussing private matters without claiming that doing so is offensive. We also can point to the curious phenomenon of most English speakers changing their speaking style to a heavier mix of non-Germanic words when they want to lend weight to their words or sound more educated. (don’t worry. I have sources below). This leads us to conclude that private words are mildly taboo, but not overwhelmingly so, and that Germanic words are considered “low class”, which makes sense given their history, but not enough to be offensive, but combining the two is too much, and thus we have today’s curse words.

Side note: This isn’t the only source of “BAD” words in the English language. There is also a much smaller set of “He who is not to be named” words similar to Hastur, Lord Moldybutt, or rktho (primal word for bear. Yes really). These words come from the concept that using something’s name either offends it (because we are using its pure name with our filthy human mouths) or calls to it (and thus puts us in danger). Many of the “religious themed” “BAD” words come from this source. This is not the primary source of our offensive words, nor are these commonly cited, but they will be useful in the discussion later.

We’re almost to the gaming part, I promise. But first it makes sense to cover:

Part 2 – the prejudice against the vulgar tongue:

So we’ve covered why the prejudice against language of a Germanic root historically exists, and how that combined with a mild taboo against discussing private functions and matters combine to create swearing. But what is the net effect of the overall prejudice against the language and against swearing specifically? Let’s unpack a few of the common prejudices (none of which are true, by the way, but we’ll cover that later).

  • The myth of a poverty of vocabulary: Cursing is often viewed as a crutch for lacking a sufficient vocabulary. The argument goes that if the speaker knew a word that would substitute for the curse word, they would use it.
  • The myth of low intelligence: Those who curse are viewed as being less intelligent than those who do not. This is just the poverty of vocabulary myth taken to the next level. If you curse, you must have a limited vocabulary. And if you have a limited vocabulary it’s because you are stupid. That’s the assumption anyway.
  • The myth of motivation: Cursing is often associated with being lazy. Again, it’s linked to vocabulary. They might know a better word. They’re just too lazy to think of one.
  • The myth of impulsiveness: It is sometimes assumed that those who swear are impulsive or highly emotional. They know better than to swear, the thought goes, but just lack the self control.
  • The myth of poor social skills: The assumption here is that those who swear can’t read a room and know when swearing might or might not be acceptable or that they lack consideration for the potential offense their words carry.
  • The myth of unfriendliness: Hinging on the myth of impulsiveness and poor social skills above
  • The myth of poor job performance: This one hangs on more or less all of the above. If you’re dumb, have a poor vocabulary, are lazy, have no self control, and lack social skills, how could you possibly be good at your job?
Part 3 – Incorporation into your game:

So, the history of curse words and the source of their offensiveness established,  and the prejudices those who use those words are subjected to enumerated, how can you make use of this in your game? The first questions you have to ask are: “Should you?” and “Have you discussed this with your players?” Why? Well, just like any source of prejudice, adding aspects of it to your game allows for a richer role playing experience and allows you to build stories around real world issues, BUT these themes can make games uncomfortable for those at the table, some of who don’t want to deal with the same nonsense they deal with day in and day out in their game time too. This is reasonable, so a conversation about inclusion of these sorts of topics in your game would be appropriate first.

Inventing your own curse words:

Sure you could just say your game world cursing mirrors our own world’s and call it a day. Many aspects of game worlds go that way. There’s no problem with doing that. But you’re missing a chance to say something important about your game world. Look at the two main sources of cursing: private functions described in a language of an oppressed people and the names of sacred or dangerous beings and places. This gives you the opportunity to ask a few questions:

  • If curse words come from the language of an oppressed culture, What is the culture? Does anyone still speak their original language? How are native speakers treated? Are their vestigial aspects of that oppression today?
  • If curse words come from the names of sacred or dangerous beings and places, what are those beings and places? Does using their name actually have effects or is it an old wives tale?
How people react to cursing:

There are plenty of reactions to cursing. In addition to the people who carry and act on the prejudices listed above, there are also:

  • those who just use the proscription as an opportunity to feel superior over others. If you have characters in your game who are status seeking, holier than thou or otherwise consider themselves above others, they will be quick to chastise those who curse, often citing the above prejudices. Note that because these NPCs have demonstrated their superiority, they are able to ignore and dismiss any complaints about their prejudices. Obviously, this potty-mouth is just too ignorant to understand the situation.
  • The prejudice against cursing is often closely linked to misogyny as well. Many who consider curse words “offensive” consider them doubly so for the delicate ears of women, which must remain pure. Some NPCs who “have no problem with cursing themselves” will react quite poorly if it is done in front of women. These are also the same ones that shame women for their “unladylike behavior” when they curse. NPCs who are misogynistic will often latch on to this prejudice in this fashion.
  • The “think of the children!” crowd. Like the above, many people will get upset at cursing that “doesn’t bother them” but they don’t want children to learn to do it. Feel free to have them completely baffled by the question: “If YOU see nothing wrong with it, why is is bad if children learn those words?”. Which usually leads into:
  • It offends other people! Surely THEY are enlightened. THEY understand there’s nothing wrong with it, in fact THEY do it sometimes themselves. But you mustn’t do it. Because it could offend other people. Never mind that they will happily admit that the practice is nothing but prejudice, and makes no logical sense. It’s important not to offend other people, to keep the peace. Note the correlations here to other, bigger name prejudices. Sure, there’s nothing wrong with it, but other people don’t understand, so rather than work to normalize it or educate those people, just hide it. NPCs that like to avoid conflict, keep the peace (literally, guards don’t want to be bothered with nonsense like this. They have better things to do), or are afraid of confrontation often use this excuse.
  • Since cursing often carries a connotation of intensity, you will also encounter a lot of tone policing while using it or discussing it. “You would get further if you could just discuss this more civilly” Even in discussions which don’t actually involve you cursing, simply discussing the concept will often invoke tone policing. If characters start to argue with others, this is one of the most common responses.
  • Conflation of issues: While there is all sorts of hurtful and hate filled speech, and while cursing can absolutely be turned to those purposes (and often is), the two are not synonymous. One can be hateful in perfectly “polite” speech, and one can paint a blue litany and not be hurtful of anyone. However, there are plenty of NPCs who will just not understand the subtleties here and insist that the two are one in the same. And point of note: be careful yourself. It’s possible to get buy in and include cursing in your game. It’s also possible to get buy in and include hateful or hurtful speech in your game. But don’t conflate the two yourself, get buy in for cursing and then start using it (or any other language) in a hateful manner without also getting buy in on that.
  • People with power: So while all of the above are annoying to deal with, and are excellent candidates for RPGs that make use of introducing complications, there are also NPCs that not only are prejudiced but have the power to enforce those prejudices. This could be people in a position to impact your PC’s wallets: boss’s, fixers, or quest givers. They could also include those in positions of authority: CEOs, Kings, Religious officials, some of which have the power to put the PCs into a serious bind for having the temerity to abuse language in their presence. While in a fantasy game, the local lord could well have the PCs thrown into the dungeons to rot for sullying his ears with profanity, that’s probably best saved for an adventure hook as opposed to a random complication.

It’s also important to note that the prejudice against profanity is so entrenched in modern society that it is often outright codified in rules of workplaces, guidelines for professionalism etc… and that many people won’t bother to question that their reaction and support of others’ prejudice here is based on their own assumption of it being the correct world view. This is not one of those prejudices that most people understand is a prejudice. It is one of the deeply entrenched culturally integrated ones.

Part 4 – But what about the magic? You promised secret powers!

So here’s the flip side of cursing: despite the prejudices that accompany it, there are actually definite benefits to using profanity. Oddly enough though, many of these effects stem specifically FROM the fact that cursing is considered taboo language. That is to say, that if you use “bad” words that no one really cares about, you don’t get any effect from it. So in a way, all the people who hold prejudices about vulgar language are necessary to give that language power. It’s pretty darn close to magic. Here are some of these positive side effects:

  • People who curse are actually smarter and more fluent than those who do not (in direct opposition to the prejudice)
  • Swearing alleviates both pain and stress
  • Cursing forms closer and more intimate bonds between people more quickly than they otherwise would and increases group bonds
  • Cursing is a marker for honesty and credibility
  • People who use profanity appropriately are perceived as more attractive than those who do not
  • The effects of public speaking is enhanced by swearing, even as people claim that it makes the speaker less convincing

So from these scientifically proven effects we can see that swearing actually helps perform tasks of endurance and improves social abilities (The intelligence causation is probably the other way around).  Since we’re considering introducing vulgar language in our games as sources of conflict it’s reasonable to balance out the extra complications. In this case, science supports that using profanity during these sorts of challenges should result in a bonus over those who do not, but that it’s fair that those bonuses cause additional complications where relevant.

So there you have it: The origin of cursing in modern English, the prejudices using profanity subjects one to and the actual effects of swearing, all wrapped up in a bundle that you can dump screaming and cursing into your game world to help flesh out your world building and add a unique set of complications and invokable bonuses. Enjoy!


Sources (many of these are compiled fluff news pieces, but if you click through on individual topics they will lead eventually to books by experts or scientific papers):

This one is a fun one that digs into the history of cursing and misogyny as well as a case where chimps  were taught sign language and immediately invented their own swear words!

Photo by Matthew Brodeur on Unsplash






Categories: Game Theory & Design

H5P Challenge

New Drupal Modules - 12 August 2019 - 4:01am
Categories: Drupal


New Drupal Modules - 12 August 2019 - 2:48am

Provides several improvement & fixes for the Drupal 8 Administration theme in combination with other drowl_ modules which appear on administration pages, like drowl_layouts or drowl_paragraphs.

This is NOT useful without other drowl_ modules depending on it.

Categories: Drupal

DROWL Admin Dashboard

New Drupal Modules - 12 August 2019 - 2:48am

Provides a better and central administrative overview for users with "Access Admin Dashboard" permission, using the power of

Get a nice default, configurable Dashboard for your Drupal project and provide a better onboarding experience for your maintainers.

Categories: Drupal

Electric Citizen: Mastering Drupal 8 Multilingual: Part 2 of 3

Planet Drupal - 12 August 2019 - 2:08am

In Mastering Drupal 8 Multilingual: Part 1 of 3, we focused on planning for Drupal 8 multilingual and its impact on a project's timeline and budget.

In Part 2 (below), we cover everything you need to know to have a functioning multilingual site with no custom code. Part 3 of the series covers more advanced techniques for site builders and front-end developers.

Categories: Drupal

Lullabot: Behind the Screens: Behind the Screens with Sean Dietrich

Planet Drupal - 12 August 2019 - 12:00am

Docksal co-maintainer and BADCamp co-organizer, Sean Dietrich, talks about what it takes to run a camp website, why he became a Docksal co-maintainer, and why we could all use a little more time.

Categories: Drupal

Agaric Collective: Migrating users into Drupal - Part 2

Planet Drupal - 11 August 2019 - 3:59pm

Today we complete the user migration example. In the previous post, we covered how to migrate email, timezone, username, password, and status. This time, we cover creation date, roles, and profile pictures. The source, destination, and dependencies configurations were explained already. Therefore, we are jumping straight to the process transformations in this entry.

Getting the code

You can get the full code example at The module to enable is UD users whose machine name is ud_migrations_users. The two migrations to execute are udm_user_pictures and udm_users. Notice that both migrations belong to the same module. Refer to this article to learn where the module should be placed.

The example assumes Drupal was installed using the standard installation profile. Particularly, we depend on a Picture (user_picture) image field attached to the user entity. The word in parenthesis represents the machine name of the image field.

The explanation below is only for the user migration. It depends on a file migration to get the profile pictures. One motivation to have two migrations is for the images to be deleted if the file migration is rolled back. Note that other techniques exist for migrating images without having to create a separate migration. We have covered two of them in the articles about subfields and constants and pseudofields.

Migrating user creation date

Have a look at the previous post for details on the source values. For reference, the user creation time is provided by the member_since column, and one of the values is April 4, 2014. The following snippet shows how the various user date related properties are set:

created: plugin: format_date source: member_since from_format: 'F j, Y' to_format: 'U' changed: '@created' access: '@created' login: '@created'

The created, entity property stores a UNIX timestamp of when the user was added to Drupal. The value itself is an integer number representing the number of seconds since the epoch. For example, 280299600 represents Sun, 19 Nov 1978 05:00:00 GMT. Kudos to the readers who knew this is Drupal's default expire HTTP header. Bonus points if you knew it was chosen in honor of someone’s birthdate. ;-)

Back to the migration, you need to transform the provided date from Month day, year format to a UNIX timestamp. To do this, you use the format_date plugin. The from_format is set to F j, Y which means your source date consists of:

  • The full textual representation of a month: April.
  • Followed by a space character.
  • Followed by the day of the month without leading zeros: 4.
  • Followed by a comma and another space character.
  • Followed by the full numeric representation of a year using four digits: 2014

If the value of from_format does not make sense, you are not alone. It is actually assembled from format characters of the date PHP function. When you need to specify the from and to formats, you basically need to look at the documentation and assemble a string that matches the desired date format. You need to pay close attention because upper and lowercase letters represent different things like Y and y for the year with four-digits versus two-digits respectively. Some date components have subtle variations like d and j for the day with or without leading zeros respectively. Also, take into account white spaces and date component separators. To finish the plugin configuration, you need to set the to_format configuration to something that produces a UNIX timestamp. If you look again at the documentation, you will see that U does the job.

The changed, access, and login entity properties are also dates in UNIX timestamp format. changed indicates when the user account was last updated. access indicates when the user last accessed the site. login indicated when the user last logged in. For brevity, the same value assigned to created is also assigned to these three entity properties. The at sign (@) means copy the value of a previous mapping in the process pipeline. If needed, each property can be set to a different value or left unassigned. None is actually required.

Migrating user roles

For reference, the roles are provided by the user_roles column, and one of the values is forum moderator, forum admin. It is a comma separated list of roles from the legacy system which need to be mapped to Drupal roles. It is possible that the user_roles column is not provided at all in the source. The following snippet shows how the roles are set:

roles: - plugin: skip_on_empty method: process source: user_roles - plugin: explode delimiter: ',' - plugin: callback callable: trim - plugin: static_map map: 'forum admin': administrator 'webmaster': administrator default_value: null

First, the skip_on_empty plugin is used to skip the processing of the roles if the source column is missing. Then, the explode plugin is used to break the list into an array of strings representing the roles. Next, the callback plugin invokes the trim PHP function to remove any leading or trailing whitespace from the role names. Finally, the static_map plugin is used to manually map values from the legacy system to Drupal roles. All of these plugins have been explained previously. Refer to other articles in the series or the plugin documentation for details on how to use and configure them.

There are some things that are worth mentioning about migrating roles using this particular process pipeline. If the comma separated list includes spaces before or after the role name, you need to trim the value because the static map will perform an equality check. Having extraneous space characters will produce a mismatch.

Also, you do not need to map the anonymous or authenticated roles. Drupal users are assumed to be authenticated and cannot be anonymous. Any other role needs to be mapped manually to its machine name. You can find the machine name of any role in its edit page. In the example, only two out of four roles are mapped. Any role that is not found in the static map will be assigned the value null as indicated in the default_value configuration. After processing the null value will be ignored, and no role will be assigned. But you could use this feature to assign a default role in case the static map does not produce a match.

Migrating profile pictures

For reference, the profile picture is provided by the user_photo column, and one of the values is P01. This value corresponds to the unique identifier of one record in the udm_user_pictures file migration, which is part of the same demo module.  It is important to note that the user_picture field is not a user entity property. The field is created by the standard installation profile and attached to the user entity. You can find its configuration in the “Manage fields” tab of the “Account settings” configuration page at /admin/config/people/accounts. The following snippet shows how profile pictures are set:

user_picture/target_id: plugin: migration_lookup migration: udm_user_pictures source: user_photo

Image fields are entity references. Their target_id property needs to be an integer number containing the file id (fid) of the image. This can be obtained using the migration_lookup plugin. Details on how to configure it can be found in this article. You could simply use user_picture as your field mapping because target_id is the default subfield and could be omitted. Also note that the alt subfield is not mapped. If present, its value will be used for the alternative text of the image. But if it is not specified, like in this example, Drupal will automatically generate an alternative text out of the username. An example value would be: Profile picture for user michele.

Technical note: The user entity contains other properties you can write to. For a list of available options, check the baseFieldDefinitions() method of the User class defining the entity. Note that more properties can be available up in the class hierarchy.

And with that, we wrap up the user migration example. We covered how to migrate a user’s mail, timezone, username, password, status, creation date, roles, and profile picture. Along the way, we presented various process plugins that had not been used previously in the series. We showed a couple of examples of process plugin chaining to make sure the migrated data is valid and in the format expected by Drupal.

What did you learn in today’s blog post? Did you know how to process dates for user entity properties? Have you migrated user roles before? Did you know how to import profile pictures? Please share your answers in the comments. Also, I would be grateful if you shared this blog post with others.

This blog post series is made possible thanks to these generous sponsors. Contact us if your organization would like to support this documentation project, whether the migration series or other topics.

Read more and discuss at

Categories: Drupal

Flashpoint Messaging

New Drupal Modules - 11 August 2019 - 3:53pm

This module set integrates Flashpoint Education with the Message module, such that Flashpoint may be integrated with the Message Stack.

Categories: Drupal


Subscribe to As If Productions aggregator