Newsfeeds

World of Alessia Campaign Primer Up On Kickstarter

Tabletop Gaming News - 15 May 2018 - 2:00pm
There’s a lot of settings out there that can feel rather “samey.” You know, there’s the elves and the orcs and the castles and the dragons. Or even if it’s a sci-fi campaign, it seems like just a re-hash of something you’ve seen. World of Alessia looks to create an all-new universe that, while inspired […]
Categories: Game Theory & Design

A Delve in the Cave Adventure Up On Kickstarter

Tabletop Gaming News - 15 May 2018 - 1:00pm
Burial chambers are supposed to be just left alone. The bones of the dead are supposed to just be able to rest eternally. However, in the ancient caves that hold the remains of the founder of Shadowhaven, all is not still. But exactly what is going on is your task to find out in A […]
Categories: Game Theory & Design

Modiphius Releases Three New Fragged Empire Books

Tabletop Gaming News - 15 May 2018 - 12:00pm
Everything’s getting fragged around here! Modiphius has released a trio of new sourcebooks for the Fragged Empire. They span quite a diverse range. One’s all about high seas piracy in Fragged Seas. Another is more medieval fantasy in its approach in Fragged Kingdom. Finally, there’s Fragged Aeternum, taking place in a city that spans all […]
Categories: Game Theory & Design

Discord now boasts 130M users, 85M more than one year ago

Social/Online Games - Gamasutra - 15 May 2018 - 11:17am

Discord has shared a handful of interesting statistics about the chat platform, offering devs a look at how it has evolved as a community-building tool since its first debut. ...

Categories: Game Theory & Design

Podcast Roundup

Tabletop Gaming News - 15 May 2018 - 11:00am
Tuesday. We’ve made it through Monday. And while the weekend is still pretty far off, it’s not as far as it had been. I’m starting to catch up on my sleep from the weekend, but I know it’ll still be a bit more of a process. To help keep me awake the rest of the […]
Categories: Game Theory & Design

Plaid Hat Games Previews Sembali and Harold For Ashes: Rise of the Phoenixborn

Tabletop Gaming News - 15 May 2018 - 10:00am
The Phoenixborn are everything in Ashes: Rise of the Phoenixborn (they’re kind of right there in the name), and two new ones will soon be joining the ranks. These new expansions bring a wealth of new options for players when creating their decks, and offer new strategies and tactics for those looking to try something […]
Categories: Game Theory & Design

Soda Pop Taking Orders For Furious Fungomancer

Tabletop Gaming News - 15 May 2018 - 9:00am
The new masterclass mini-boss for Super Dungeon Explore is one fun guy! … wait… *reads notes*… I mean one fungi. It’s the Furious Fungomancer, and he’s here to terrorize the heroes. He can even turn heroes into fungi, just like him. As such, there’s an extra mini that comes in the set for if/when that […]
Categories: Game Theory & Design

Acquia Developer Center Blog: Decoupling Drupal 8 with JSON API

Planet Drupal - 15 May 2018 - 8:51am

As we saw in the previous post, core REST only allows for individual entities to be retrieved, and Views REST exports only permit the issuance of GET requests rather than unsafe methods as well. But application developers often need greater flexibility and control, such as the ability to fetch collections, sort and paginate them, and access related entities that are referenced.

In this column, we'll inspect JSON API, part of the surrounding contributed web services ecosystem that Drupal 8 relies on to provide even more extensive features relevant to application developers that include relationships and complex operations such as sorting and pagination.

Tags: acquia drupal planet
Categories: Drupal

Drutopia Custom

New Drupal Modules - 15 May 2018 - 8:51am

Allows individual Drutopia sites to have site-specific configuration without forking the distribution.

A simple configuration of Configuration Split to enable the conditional split workflow for all customized configuration.

Categories: Drupal

Virtuoso Performance: Importing specific fields with overwrite_properties

Planet Drupal - 15 May 2018 - 8:50am
Importing specific fields with overwrite_properties mikeryan Tuesday, May 15, 2018 - 10:50am

While I had planned to stretch out my posts related to the "Acme" project, there are currently some people with questions about using overwrite_properties - so, I've moved this post forward.

By default, migration treats the source data as the system of record - that is, when reimporting previously-imported records, the expectation is to completely replace the destination side with fresh source data, discarding any interim changes which might have been made on the destination side. However, sometimes, when updating you may want to only pull specific fields from the source, leaving others (potentially manually-edited) intact. We had this situation with the event feed - in particular, the titles received from the feed may need to be edited for the public site. To achieve that, we used the overwrite_properties property on the destination plugin:

destination: plugin: 'entity:node' overwrite_properties: - 'field_address/address_line1' - 'field_address/address_line2' - 'field_address/locality' - 'field_address/administrative_area' - 'field_address/postal_code' - field_start_date - field_end_date - field_instructor - field_location_name - field_registration_price - field_remaining_spots - field_synchronized_title

When overwrite_properties is present, nothing changes when importing a new entity - but, if the destination entity already exists, the existing entity is loaded, and only the fields and properties enumerated in overwrite_properties will be, well, overwritten. In our example, note in particular field_synchronized_title - on initial import, both the regular node title and this field are populated from ClassName, but on updates only field_synchronized_title receives any changes in ClassName. This prevents any unexpected changes to the public title, but does make the canonical title from the feed available should an editor care to review and decide whether to modify the public title to reflect any changes.

Now, in this case we are creating the entities initially through this migration, and thus we know via the map table when a previously-migrated entity is being updated and thus overwrite_properties should be applied. Another use case is when the entire purpose of your migration is to update specific fields on pre-existing entities (i.e., not created by this migration). In this case, you need to map the IDs of the entities that are to be updated, otherwise the migration will simply create new entities. So, if you had a "nid_to_update" property in your source data, you would include

process: nid: nid_to_update

in your migration configuration. The destination plugin will then load that existing node, and only alter the specifies overwrite_properties in it.

Tags Drupal Planet Drupal Migration Use the Twitter thread below to comment on this post:

Importing specific fields with overwrite_properties https://t.co/0H3W1Ll0ts

— Virtuoso Performance (@VirtPerformance) May 15, 2018

 

Categories: Drupal

Apigee Developer Portal

New Drupal Modules - 15 May 2018 - 8:43am

The Apigee Edge module enables you to integrate Drupal 8 with Apigee Edge.

Note: The Apigee Edge module requires Drupal 8.5.x or higher and PHP 7.1 or higher.

To install the Apigee Edge module:
  1. Install the Apigee Edge module using composer.
    Composer will download the Apigee Edge module and all its dependencies.
    Note: Composer must be executed at the root of your Drupal installation.

    For example:

Categories: Drupal

Virtuoso Performance: Drupal 8 migration from a SOAP API

Planet Drupal - 15 May 2018 - 8:12am
Drupal 8 migration from a SOAP API mikeryan Tuesday, May 15, 2018 - 10:12am

Returning from my sabbatical, as promised I’m catching up on blogging about previous projects. For one such project, I was contracted by Acquia to provide migration assistance to a client of theirs [redacted, but let’s call them Acme]. This project involved some straightforward node migrations from CSV files, but more interestingly required implementing two ongoing feeds to synchronize external data periodically - one a SOAP feed, and the other a JSON feed protected by OAuth-based authentication. There were a number of other interesting techniques employed on this project which I think may be broadly useful and haven’t previously blogged about - all-in-all, there was enough to write about on this project that rather than compose one big epic post, I’m going to break things down in a series of posts, spread out over several days so as not to spam Planet Drupal. In this first post of the sequence, I’ll cover migration from SOAP. The full custom migration module for this project is on Gitlab.

A key requirement of the Acme project was to implement an ongoing feed, representing classes (the kind people attend in person, not the PHP kind), from a SOAP API to “event” nodes in Drupal. The first step, of course, was to develop (in migrate_plus) a parser plugin to handle SOAP feeds, based on PHP’s SoapClient class. This class exposes functions of the web service as class methods which may be directly invoked. In WSDL mode (the default, and the only mode this plugin currently supports), it can also report the signatures of the methods it supports (via __getFunctions()) and the data structures passed as parameters and returned as results (via __getTypes()). WSDL allows our plugin to do introspection and saves the need for some explicit configuration (in particular, it can automatically determine the property to be returned from within the response).

migrate_example_advanced (a submodule of migrate_plus) demonstrates a simple example of how to use the SOAP parser plugin - the .yml is well-documented, so please review that for a general introduction to the configuration. Here’s the basic source configuration for this specific project:

source: plugin: url # To remigrate any changed events. track_changes: true data_fetcher_plugin: http # Ignored - SoapClient does the fetching itself. data_parser_plugin: soap # The method to invoke via the SOAP API. function: GetClientSessionsByClientId # Within the response, the object property containing the list of events. item_selector: SessionBOLExternal # Indicates that the response will be in the form of a PHP object. response_type: object # You won’t find ‘urls’ and ‘parameters’ in the source .yml file (they are inserted # by a web UI - the subject of a future post), but for demonstration purposes # this is what they might look like. urls: http://services.example.com/CFService.asmx?wsdl parameters: clientId: 1234 clientCredential: ClientID: 1234 Password: service_password startDate: 08-31-2016 # Unique identifier for each event (section) to be imported, composed of 3 columns. ids: ClassID: type: integer SessionID: type: integer SectionID: type: integer fields: - name: ClientSessionID label: Session ID for the client selector: ClientSessionID ...

Of particular note is the three-part source ID defined here. The way this data is structured, a “class” contains multiple “sessions”, which each have multiple “sections” - the sections are the instances that have specific dates and times, which we need to import into event nodes, and we need all three IDs to uniquely identify each unique section.

Not all of the data we need for our event nodes is in the session feed, unfortunately - we want to capture some of the class-level data as well. So, while, the base migration uses the SOAP parser plugin to get the session rows to migrate, we need to fetch the related data at run time by making direct SOAP calls ourselves. We do this in our subscriber to the PREPARE_ROW event - this event is dispatched after the source plugin has obtained the basic data per its configuration, and gives us an opportunity to retrieve further data to add to the canonical source row before it enters the processing pipeline. I won’t go into detail on how that data is retrieved since it isn’t relevant to general migration principles, but the idea is since all the class data is not prohibitively large, and multiple sessions may reference the same class data, we fetch it all on the first source row processed and cache it for reference by subsequent rows.

Community contributions

SOAP Source plugin - Despite the title (from the original feature request), it was implemented as a parser plugin.

Altering migration configuration at import time - the PRE_IMPORT event

Our event feed permits filtering by the event start date - by passing a ‘startDate’ parameter in the format 12-31-2016 to the SOAP method, the feed will only return events starting on or after that date. At any given point in time we are only interested in future events, and don’t want to waste time retrieving and processing past events. To optimize this, we want the startDate parameter in our source configuration to be today’s date each time we run the migration. We can do this by subscribing to the PRE_IMPORT event.

In acme_migrate.services.yml:

services: ... acme_migrate.update_event_filter: class: Drupal\acme_migrate\EventSubscriber\UpdateEventFilter tags: - { name: event_subscriber }

In UpdateEventFilter.php:

class UpdateEventFilter implements EventSubscriberInterface { /** * {@inheritdoc} */ public static function getSubscribedEvents() { $events[MigrateEvents::PRE_IMPORT] = 'onMigrationPreImport'; return $events; }

The migration system dispatches the PRE_IMPORT event before the actual import begins executing. At that point, we can insert the desired date filter into the migration configuration entity and save it:

/** * Set the event start date filter to today. * * @param \Drupal\migrate\Event\MigrateImportEvent $event * The import event. */ public function onMigrationPreImport(MigrateImportEvent $event) { // $event->getMigration() returns the migration *plugin*. if ($event->getMigration()->id() == 'event') { // Migration::load() returns the migration *entity*. $event_migration = Migration::load('event'); $source = $event_migration->get('source'); $source['parameters']['startDate'] = date('m-d-Y'); $event_migration->set('source', $source); $event_migration->save(); } }

Note that the entity get() and set() functions only operate directly on top-level configuration properties - we can’t get and set, for example ‘source.parameters.startDate’ directly. We need to retrieve the entire source configuration, modify our one value within it, and set the entire source configuration back on the migration.

Tags Drupal Planet Drupal Migration Use the Twitter thread below to comment on this post:

Drupal 8 migration from a SOAP API https://t.co/hf8LGiATsh

— Virtuoso Performance (@VirtPerformance) May 15, 2018
Categories: Drupal

Web Wash: Managing Media Assets using Core Media in Drupal 8

Planet Drupal - 15 May 2018 - 8:00am

There's a lot of momentum to fix media management in Drupal 8 thanks to the Media Entity module. By using a combination of Media EntityEntity Embed, Entity Browser and some media providers such as Media entity image you could add decent media handling in Drupal 8.

Then in Drupal 8.4, the Media Entity functionality was moved into a core module called Media. However, the core module was hidden by default. Now in Drupal 8.5 it's no longer hidden and you can install it yourself.

In this tutorial, you'll learn how to install and configure the Media module in Drupal 8 core. This tutorial is an updated version of the How to Manage Media Assets in Drupal 8 tutorial where we cover Media Entity.

Configuring Entity Embed and Entity Browser for the core Media module is essentially the same as with Media Entity. So if you have experience using Media Entity, then you'll be fine using the core Media module.

Categories: Drupal

WizKids Announces Fungeon Party

Tabletop Gaming News - 15 May 2018 - 8:00am
What happens when you combine a dungeon-crawling game with a party game and a dexterity game? You get Fungeon Party. It’s a new game coming from WizKids wherein players take on the role of traditional dungeon-crawl classes, like wizard and barbarian, and head into a dungeon where their skills will be put to the test […]
Categories: Game Theory & Design

Hook 42: Giddy Up! Hook 42 Moseys over to Texas Drupal Camp

Planet Drupal - 15 May 2018 - 7:52am

Dust off your saddle and get prepared to optimize your workflow. There is a lot packed into 3 days in Austin. Pull on your chaps, fasten your leathers, dig in your spurs and head on over to Texas Drupal Camp. On Thursday, make sure you check out the trainings and sprints. On Friday and Saturday, catch all of the keynotes and sessions.

Our own Ryan Bateman will be at Texas Drupal Camp to share his presentation about visual regression testing.

Texas Drupal Camp is Thursday, March 31st through Saturday, June 2nd at the Norris Conference Center in beautiful Austin, TX.

Categories: Drupal

The Ricks Must Be Crazy Card Game Coming May 30th

Tabletop Gaming News - 15 May 2018 - 7:00am
I’m woefully behind on watching certain shows that I’ve been meaning to look at for quite some time. Rick & Morty is one of them. I’ve seen a shotgun of episodes here and there, but I really mean to buckle in and just go through the series. Then, I’ll have a better handle of what’s […]
Categories: Game Theory & Design

Composing video game music for Virtual Reality: 3D versus 2D - by Winifred Phillips

Gamasutra.com Blogs - 15 May 2018 - 6:44am
The 2nd of a 4-part series. Video game composer Winifred Phillips shares ideas from her GDC 2018 talk, Music in Virtual Reality. Part 2: 3D versus 2D, with an exploration of the role spatial delivery can play in music implementation in a VR environment.
Categories: Game Theory & Design

The Trap of Modern Retro Game Design - by Josh Bycer

Gamasutra.com Blogs - 15 May 2018 - 6:43am
The independent space since its inception has popularized modern retro design, but while many view it as an easy way to create a game, there is a lot more than just looking at the classics.
Categories: Game Theory & Design

Break The Loop - by Gregory Pellechi

Gamasutra.com Blogs - 15 May 2018 - 6:43am
Growth and change come from breaking out of our loops, for games and their stories this can be hard. But not all change has to be related to the gameplay loop. There are other ways to express it in the story and characters of your game.
Categories: Game Theory & Design

Mod.io API aims to help developers create cross-platform, mod-friendly games

Social/Online Games - Gamasutra - 15 May 2018 - 6:03am

The network behind online mod and game development communities like GameFront, IndieDB, and ModDB has released mod.io, an API geared at making it easier for developers to include mod support in their games.  ...

Categories: Game Theory & Design

Pages

Subscribe to As If Productions aggregator