Newsfeeds

Creating Characters Your Players Will Love (Sometimes Literally) - by Benjamin Rivers

Gamasutra.com Blogs - 7 February 2017 - 7:02am
Learn four key techniques to developing better characters that serve your game — and get players emotionally invested.
Categories: Game Theory & Design

Figure Painter Magazine Booking For SeminART 3 with Chris Clayton Happening Now

Tabletop Gaming News - 7 February 2017 - 7:00am
If you’re really into getting your minis looking as good as possible, you’ll want to take every opportunity to improve your skills. My skills are incredibly lacking, with my painted minis just north of “well, they don’t look like you did it with a paintball gun…” So if you don’t want your painting to be […]
Categories: Game Theory & Design

Flocon de toile | Freelance Drupal: Create an action for custom mass updates with Drupal 8

Planet Drupal - 7 February 2017 - 7:00am

Drupal 8 makes it possible to carry out certain mass actions on the site's contents, such as publishing or unpublishing massively contents, positioning them at the top of lists, etc. It may be useful to provide to certain user profiles some customized actions related to the specificities of their site, such as highlighting certain taxonomy terms, changing the value of a specific field, and thus avoiding heavy and tedious update operations to users on each of the content to be modified.

Categories: Drupal

Rigging Nightmares: Tech Art Meets the Devil - by Moonyoung Oh

Gamasutra.com Blogs - 7 February 2017 - 6:47am
Riot technical artists Moonyoung “ANDMoonY” Oh and Jeremy “JesterCapp” Putnam talk about creating Little Devil Teemo.
Categories: Game Theory & Design

Full Disclosure on Non Disclosure Agreements - by Suzanne Jackiw

Gamasutra.com Blogs - 7 February 2017 - 6:47am
NDAs are necessary to conduct business while protecting ideas and technology, but they can also be deceptively dangerous. Even seemingly innocuous agreements, like the one between ZeniMax and Oculus can lead to litigation and expensive judgments.
Categories: Game Theory & Design

The Value of User Created Content - by Nathan Bennett

Gamasutra.com Blogs - 7 February 2017 - 6:47am
User Created Content is at the heart and soul of video games. The benefits are plentiful and all developers ought to consider implementing mod tools or level editors of some kind.
Categories: Game Theory & Design

Drupal Association blog: Drupal in Europe - Community Survey

Planet Drupal - 7 February 2017 - 6:17am

TL;DR If you are a European community member, please take our community survey about Drupal in Europe.

After 6+ years working at the Drupal Association and knowing so many members around the world, it’s easy for me to think I know what is going on with the Project. But, it is a big world and each region, country, and local market has unique, evolving needs.

To avoid assuming the best way to help the community, I am asking for your input. I'm gathering insight one region at a time. I’ll share the feedback with staff and the Drupal Association Board to refine how we serve the community.

I’m starting first with our European community. This is so it's well timed with our DrupalCon Europe planning. In fact, the Drupal Association Board meets on 23 and 24 February where we will strategize how we can best support the European community. We’ll use your input to drive that discussion.

I’m collecting input in a few ways. Recently, I held roundtable discussions with various community organizers. Now I’m opening up the discussion to all who Drupal in Europe. Please tell me how the Drupal Association can best support Drupal by taking this community survey before February 16th.

Thanks for sharing your thoughts and needs. I look forward to hearing from you.

Categories: Drupal

Gale Force Nine Previews K-9 Promo For Time of the Daleks

Tabletop Gaming News - 7 February 2017 - 6:00am
Gale Force Nine likes to put in special surprises with their first print-run of games. You could get special cards or scenarios. For Time of the Daleks, they’re adding in a fan-favorite from the Doctor Who series, K-9. Get a look at what that’ll en-tail (see what I did there?) in this preview. From the […]
Categories: Game Theory & Design

2bits: How to configure Varnish Cache for Drupal with SSL Termination Using Pound or Nginx

Planet Drupal - 7 February 2017 - 4:49am

Secure Socket Layer (SSL) is the protocol that allows web sites to serve traffic in HTTPS. This provides end to end encryption between the two end points (the browser and the web server). The benefits of using HTTPS is that traffic between the two end points cannot be deciphered by anyone snooping on the connection. This reduces the odds of exposing sensitive information such as passwords, or getting the web site hacked by malicious parties. Google has also indicated that sites serving content exclusively in HTTPS will get a small bump in Page Rank.

Historically, SSL certificate issuers have served a secondary purpose: identity verification. This is when the issuing authority vouches that a host or a domain is indeed owned by the entity that requests the SSL certificate for it. This is traditionally done by submitting paper work including government issued documentation, incorporation certificates, ...etc.

Historically, SSL certificates were costly. However, with the introduction of the Let's Encrypt initiative, functional SSL certificates are now free, and anyone who wants to use them can do so, minus the identity verification part, at least for now.

Implementing HTTPS with Drupal can be straightforward with low traffic web sites. The SSL certificate is installed in the web server, and that is about it. With larger web sites that handle a lot of traffic, a caching layer is almost always present. This caching layer is often Varnish. Varnish does not handle SSL traffic, and just passes all HTTPS traffic straight to Drupal, which means a lot of CPU and I/O load.

This article will explain how to avoid this drawback, and how to have it all: caching in Varnish, plus serving all the site using HTTPS.

The idea is quite simple in principle: terminate SSL before Varnish, which will never know that the content is encrypted upstream. Then pass the traffic from the encryptor/decryptor to Varnish on port 81. From there, Varnish will pass it to Apache on port 8080.

We assume you are deploying all this on Ubuntu 16.04 LTS, which uses Varnish 4.0, although the same can be applied to Ubuntu 14.04 LTS with Varnish 3.0.

Note that we use either one of two possible SSL termination daemons: Pound and Nginx. Each is better in certain cases, but for the large part, they are interchangeable.

One secondary purpose for this article is documenting how to create SSL bundles for intermediate certificate authorities, and to generate a combined certificate / private key. We document this because of the sparse online information on this very topic.

Install Pound aptitude install pound Preparing the SSL certificates for Pound

Pound does not allow the private key to be in a separate file or directory from the certificate itself. It has to be included with the main certificate, and with intermediate certificate authorities (if there are any).

We create a directory for the certificates:

mkdir /etc/pound/certs

cd /etc/pound/certs

We then create a bundle for the intermediate certificate authority. For example, if we are using using NameCheap for domain registration, they use COMODO for certificates, and we need to do the following. The order is important.

cat COMODORSADomainValidationSecureServerCA.crt \
  COMODORSAAddTrustCA.crt \
  AddTrustExternalCARoot.crt >> bundle.crt

Then, as we said earlier, we need to create a host certificate that includes the private key.

cat example_com.key example_com.crt > host.pem

And we make sure the host certificate (which contains the private key as well) and the bundle, are readable only to root.

chmod 600 bundle.crt host.pem Configure Pound

We then edit /etc/pound/pound.cfg

# We have to increase this from the default 128, since it is not enough
# for medium sized sites, where lots of connections are coming in
Threads 3000

# Listener for unencrypted HTTP traffic
ListenHTTP
  Address 0.0.0.0
  Port    80
 
  # If you have other hosts add them here
  Service
    HeadRequire "Host: admin.example.com"
    Backend
      Address 127.0.0.1
      Port 81
    End
  End
 
  # Redirect http to https
  Service
    HeadRequire "Host: example.com"
    Redirect "https://example.com/"
  End
 
  # Redirect from www to domain, also https
  Service
    HeadRequire "Host: www.example.com"
    Redirect "https://example.com/"
  End
End

# Listener for encrypted HTTP traffic
ListenHTTPS
  Address 0.0.0.0
  Port    443
  # Add headers that Varnish will pass to Drupal, and Drupal will use to switch to HTTPS
  HeadRemove      "X-Forwarded-Proto"
  AddHeader       "X-Forwarded-Proto: https"
 
  # The SSL certificate, and the bundle containing intermediate certificates
  Cert      "/etc/pound/certs/host.pem"
  CAList    "/etc/pound/certs/bundle.crt"
 
  # Send all requests to Varnish
  Service
    HeadRequire "Host: example.com"
    Backend
      Address 127.0.0.1
      Port 81
    End
  End
 
  # Redirect www to the domain
  Service
    HeadRequire "Host: www.example.com.*"
    Redirect "https://example.com/"
  End
End

Depending on the amount of concurrent traffic that your site gets, you may need to increase the number of open files for Pound. To do this, edit the file /etc/default/pound, and add the following lines:

# Increase the number of open files, so pound does not log errors like:
# "HTTP Acces: Too many open files"
ulimit -n 20000

Do not forget to change the 'startup' line from 0 to 1, otherwise pound will not start.

Configure SSL Termination for Drupal using Nginx

You may want to use Nginx instead of the simpler Pound in certain cases. For example, if you want to handle redirects from the plain HTTP URLs to the corresponding SSL HTTPS URls. Pound cannot do that. It redirects to the home page of the site instead.

Also, if you want to process your site's traffic using analysis tools, for example Awstats, you need to capture those logs. Although Pound can output logs in Apache combined format, it also outputs errors to the same log, at least on Ubuntu 16.04, and that makes these logs unusable by analysis tools.

First install Nginx:

aptitude install nginx

Create a new virtual host under /etc/nginx/sites-available/example.com, with this in it:

# Redirect www to no-www, port 80
server {
  server_name www.example.com;

  # Replace this line with: 'access_log off' if logging ties up the disk
  access_log /var/log/nginx/access-example.log;
 
  # Permanent redirect
  return 301 https://example.com$request_uri;
}

# Redirect www to no-www, SSL port 443
server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  server_name example.com;

  # Replace this line with: 'access_log off' if logging ties up the disk
  access_log /var/log/nginx/access-example.log;
 
  # Permanent redirect
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl default_server;
  listen [::]:443 ssl default_server ipv6only=on;

  server_name example.com;

  # We capture the log, so we can feed it to analysis tools, e.g. Awstats
  # This will be more comprehensive than what Apache captures, since Varnish
  # will end up removing a lot of the traffic from Apache
  #
  # Replace this line with: 'access_log off' if logging ties up the disk
  access_log /var/log/nginx/access-example.log;

  ssl on;

  # Must contain the a bundle if it is a chained certificate. Order is important.
  # cat example.com.crt bundle.crt > example.com.chained.crt 
  ssl_certificate      /etc/ssl/certs/example.com.chained.crt;
  ssl_certificate_key  /etc/ssl/private/example.com.key;

  # Test certificate
  #ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
  #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

  # Restrict to secure protocols, depending on whether you have visitors
  # from older browsers
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  # Restrict ciphers to known secure ones
  ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;

  ssl_prefer_server_ciphers on;
  ssl_ecdh_curve secp384r1;
  ssl_stapling on;
  ssl_stapling_verify on;

  add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  add_header X-Frame-Options DENY;
  add_header X-Content-Type-Options nosniff;

  location / {
    proxy_pass                         http://127.0.0.1:81;
    proxy_read_timeout                 90;
    proxy_connect_timeout              90;
    proxy_redirect                     off;

    proxy_set_header Host              $host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port  443;
   
    proxy_buffers                      8 24k;
    proxy_buffer_size                  2k;
  }
}

Then link this to an entry in the sites-enabled directory

cd /etc/nginx/sites-enabled

ln -s /etc/nginx/sites-available/example.com

Then we add some performance tuning parameters, by creating a new file: /etc/nginx/conf.d/tuning. These will make sure that we handle higher traffic than the default configuration allows:

 
worker_processes       auto;

worker_rlimit_nofile   20000;

events {
  use epoll;
  worker_connections 19000;
  multi_accept       on;
}

http {
  sendfile           on;
  tcp_nopush         on;
  tcp_nodelay        on;
  keepalive_timeout  65;
  keepalive_requests 10000;
   
  client_body_buffer_size 128k;   
}

We now have either Pound or Nginx in place, handling port 443 with SSL certifcates, and forwarding the plain text traffic to Varnish.

Change Varnish configuration to use an alternative port

First, we need to make Varnish work on port 81.

On 16.04 LTS, we edit the file: /lib/systemd/system/varnish.service. If you are using Ubuntu 14.04 LTS, then the changes should go into /etc/default/varnish instead.

Change the 'ExecStart' line for the following:

Port that Varnish will listen on (-a :81)
Varnish VCL Configuration file name (/etc/varnish/main.vcl)
Size of the cache (-s malloc,1536m)

You can also change the type of Varnish cache storage, e.g. to be on disk if it is too big to fit in memory (-s file,/var/cache/varnish/varnish_file.bin,200GB,8K). Make sure to create the directory and assign it the correct owner and permissions.

We use a different configuration file name so as to not overwrite the default one, and make updates easier (no questions asks during update to resolve differences).

In order to inform systemd that we changed a daemon startup unit, we need to issue the following command:

systemctl daemon-reload Add Varnish configuration for SSL

We add the following section to the Varnish VCL configuration file. This will pass a header to Drupal for SSL, so Drupal will enforce HTTPS for that request.

# Routine used to determine the cache key if storing/retrieving a cached page.
sub vcl_hash {

  # This section is for Pound
  hash_data(req.url);

  if (req.http.host) {
    hash_data(req.http.host);
  }
  else {
    hash_data(server.ip);
  }

  # Use special internal SSL hash for https content
  # X-Forwarded-Proto is set to https by Pound
  if (req.http.X-Forwarded-Proto ~ "https") {
    hash_data(req.http.X-Forwarded-Proto);
  }
}

Change Apache's Configuration

If you had SSL enabled in Apache, you have to disable it so that only Pound (or Nginx) are listening on port 443. If you do not do this, Pound and Nginx will refuse to start with an error: Address already in use.

First disable the Apache SSL module.

a2dismod ssl

We also need to make Apache listen on port 8080, which Varnish will use to forward traffic to.

 
Listen 8080

And finally, your VirtualHost directives should listen on port 8080, as follows. It is also best if you restrict the listening on the localhost interface, so outside connections cannot be made to the plain text virtual hosts.

<VirtualHost 127.0.0.1:8080>
...
</VirtualHost>

The rest of Apache's configuration is detailed in an earlier article on Apache MPM Worker threaded server, with PHP-FPM.

Configure Drupal for Varnish and SSL Termination

We are not done yet. In order for Drupal to know that it should only use SSL for this page request, and not allow connections from plain HTTP, we have to add the following to settings.php:

// Force HTTPS, since we are using SSL exclusively
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
  if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }
}

If you have not already done so, you also have to enable page cache, and set the external cache age for cached pages. This is just a starting point, assuming Drupal 7.x, and you need to modify these accordingly depending on your specific setup.

// Enable page caching
$conf['cache'] = 1;
// Enable block cache
$conf['block_cache'] = 1;
// Make sure that Memcache does not cache pages
$conf['cache_lifetime'] = 0;
// Enable external page caching via HTTP headers (e.g. in Varnish)
// Adjust the value for the maximum time to allow pages to stay in Varnish
$conf['page_cache_maximum_age'] = 86400;
// Page caching without bootstraping the database, nor invoking hooks
$conf['page_cache_without_database'] = TRUE;
// Nor do we invoke hooks for cached pages
$conf['page_cache_invoke_hooks'] = FALSE;

// Memcache layer
$conf['cache_backends'][]    = './sites/all/modules/contrib/memcache/memcache.inc';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['memcache_servers']    = array('127.0.0.1:11211' => 'default');
$conf['memcache_key_prefix'] = 'live';

And that is it. Now restart all the daemons:

service pound restart
service nginx restart # If you use nginx instead of pound
service varnish restart
service apache2 restart

Check that all daemons have indeed restarted, and that there are no errors in the logs. Then test for proper SSL recognition in the browser, and for correct redirects.

For The Extreme Minimalist: Eliminating Various Layers

The above solution stack works trouble free, and has been tested with several sites. However, there is room for eliminating different layers. For example, instead of having Apache as the backend web server, this can be replaced with Nginx itself, listening on both port 443 (SSL), and 8080 (backend), with Varnish in between. In fact, it is possible to even remove Varnish altogether, and use Ngnix FastCGI Cache instead of it. So Nginx listens on port 443, decrypts the connection, and passes the request to its own cache, which decides what is served from cache versus what gets passed through to Nginx itself on port 8080, which hands it over to PHP and Drupal.

Don't let the words 'spaghetti' and 'incest' take over your mind! Eventually, all the oddities will be ironed out, and this will be a viable solution. There are certain things that are much better known in Apache for now in regards to Drupal, like URL rewriting for clean URLs. There are also other things that are handled in .htaccess for Apache that needs to gain wider usage within the community before an Nginx only solution becomes the norm for web server plus cache plus SSL.

Apache MPM Worker Multithreaded with PHP-FPM is a very low overhead, high performance solution, and we will continue to use it until the Nginx only thing matures into a wider used solution, and has wider use and support within the Drupal community to remain viable for the near future.

Tags: Contents: 
Categories: Drupal

A new recipe for the roleplaying game formula - by Guido Henkel

Gamasutra.com Blogs - 7 February 2017 - 4:49am
Although today's technology and processing power are no longer limiting factors, computer role-playing games have become formulaic copies of themselves without much advancement in the past 20 years. Here are some ideas how we can take the genre forward.
Categories: Game Theory & Design

Vardot: Install Apache Solr 5.x for a Drupal Website on Ubuntu

Planet Drupal - 7 February 2017 - 4:24am
How to Read time: 2 minutes

To install Apache Solr and run it with a Drupal website on an Ubuntu server. Follow these steps:

Install Java

You need to make sure you have Java installed.
To check run this command:

java -version

If it's not installed, simply install from packages:

sudo apt-get -y install openjdk-7-jdk jetty

 

Install Latest Apache Solr 5.x

Download the latest zip file release 5.x.x from http://mirror.cc.columbia.edu/pub/software/apache/lucene/solr/

Unzip the downloading: 

unzip solr-5-x-x.zip;

More the unzipped folder to where is should be:

sudo mv solr-5-x-x /usr/local/solr cd /usr/local/solr

 

Configuring Apache Solr for your Drupal site

Make a copy of the Solr core to be used for Drupal sites

cp -r example/ drupal/

Create cores for your sites. Every core is an instance of a Drupal site:

cd drupal/multicore sudo cp -r core0 MYSITENAME

Edit the solr.xml to add your new core:

sudo vim solr.xml

and add a new core similar to:

<core name="My Site Name" instanceDir="MYSITENAME" />

 

Replace the default Solr configuration with the Drupal  Solr configuration provided from the Search API Solr Search module.

sudo rm -r MYSITENAME/conf sudo cp -r /PATH/TO/DRUPAL/sites/all/modules/contrib/search_api_solr/solr-conf/5.x /usr/local/solr/drupal/multicore/conf/MYSITENAME/conf

 

Start Solr

cd .. java -Dsolr.solr.home=multicore -jar start.jar

 

Create Solr user

sudo useradd -d /usr/local/solr -M -s /usr/sbin/nologin solr sudo chown -R solr:root /usr/local/solr

 

Add Solr as a Service

Download the init.d script to start Apache Solr. Thanks to 2bits.

wget http://2bits.com/sites/2bits.com/files/solr-init.d.sh_.txt sudo mv solr-init.d.sh_.txt /etc/init.d/solr

Edit the file to suit your environment and change the SOLR_HOME=/opt/solr/example environment variable (line 18) to /usr/local/solr/drupal

sudo vim /etc/init.d/solr

Replace line 18 to be:

SOLR_HOME=/usr/local/solr/drupal

 

Make the service to work properly:

sudo chmod a+rx /etc/init.d/solr sudo update-rc.d solr defaults

 

Access Solr

Your Solr URL will be: http://localhost:8983/solr/#

If you want to setup authentication for Solr, please follow: http://2bits.com/articles/configuring-apache-solr-4x-drupal-password-aut...

Tags:  Drupal Solr Setup Guide Drupal Planet Title:  Install Apache Solr 5.x for a Drupal Website on Ubuntu
Categories: Drupal

Edgewater's Folly

New RPG Product Reviews - 7 February 2017 - 2:34am
Publisher: Gaming Paper
Rating: 5
An Endzeitgeist.com review

This massive module clocks in at 76 pages (if you take cover/editorial/etc. away) and my review is based on the print version I received at Gencon in exchange for a fair an unbiased review, which is also why you\'re seeing this review so soon after the module was made available to the public. The review is thus based on the physical copy of the module.


Now, first things first - this module was made to support Gaming Paper\'s useful and pretty amazing mega-dungeon gaming paper-collection - i.e. the massive map of this module is made up of the respective sheets, allowing for an easy, battle-mat-style exploration of the module and doubling as a gigantic, player-friendly map. If you\'re not interested in using the accessory (Why?), you\'re covered, though - the pdf does sport the overview map of the dungeon and can be run without using the mega-dungeon sheets with minimum hassle. I honestly wished all support/tie-in products had this level of service.


Anyway, this does mean that encounter-number/room-numbering is a bit different, with the respective encounters pointing towards the identifying numbers/letters of the gaming paper sheets. If that sounds confusing, rest assured that it\'s not when you look at the book.


One more thing: While the adventure takes place in the town of edgewater, it remains very much a backdrop and can easily be replaced with any coastal town with a sufficiently developed sewer system and access to a trade-route.


And this is pretty much as far as I can go without going into SPOILERS. Potential players should jump to the conclusion.

...

..

.

All right, only GMs around? Great! So, the fortunes of edgewater have turned for a while now: The town, currently led by former adventurers, has managed to use subterfuge and intrigue to generate an economic upswing and hamper their competition...not with the most ethical means, but yeah. Their competition, Deep Salt Bay, has seen a sharp decline, fueled by greed and clever maneuvering...but not everyone in the town was willing to just accept edgewater triumphing...and thus a scheme most dastardly was hatched.


The PCs, while in edgewater (or any town you choose to substitute for it), are confronted via one of MANY, extremely detailed hooks, with the basic premise: Plague has come to town. Not just any plague either - one that makes both bubonic and septicemic plagues look like child\'s toys...and worse, one that seems to mysteriously resist regular attempts at curing it via magic, going only into remission to resurface later. Yeah, you can go pretty apocalyptic there, if you\'re going dark fantasy. The plague is called civilization\'s downfall (theatrical - the pdf acknowledges that!) and was engineered by a cabal of plague druids hired by Deep Salt Bay to wreck edgewater. The druids are spreading the plague with the help of a cadre of wererats through town. WAIT. Wait a second.


I know, I know. The plot as such is pretty old and not too remarkable. In fact, I\'d be yawning pretty hard if I heard this set-up. But wait. The module does not feel like any other plague or sewer module and exemplifies that, in adventure crafting, the devil is often in the details...but so is beauty. I mentioned extensive hooks, right? Well, the first act sports a massive array of different vignettes, from the plague victim stumbling into the bar, to muckrakers drawing carts on which the dead are put to being directly hired. All of these hooks feature EXTENSIVE rules and even read-aloud text...and they can be combined at your leisure, with commentary providing guidance regarding the respective tones evoked. Preventing a mob/riot goes so far as to provide guidance for non-violent conflict resolution.


Speaking of extensive guidance: The module deals with a hidden agenda BBEG, obviously. At level 7. I have never in my line of work seen this extensive an array of well-written guidelines for the GM to handle scrying, divination and similar aspects of the game. The pdf discusses *A LOT* of potential issues and shows an intricate care regarding suspension of disbelief. It is quite evident that the majority of the module is an exploration of edgewater\'s sewer system. I know, sewer-level. No one like those, right? Well, the details provided are AMAZING and if your players are as smart as mine and pick up on inconsistencies with the fervor of a starved bloodhound, then this module has your back: You see, from discussions of bronze, copper, etc. to the science of sewer gas explosions and their likelihood, the module manages to be incredibly consistent and evoke a sense of realism I have never seen before in a sewer-dungeon.


More importantly, the whole dungeon manages to be incredibly ALIVE. Not sterile at all. It makes sense, from the big dynamics to the small: The sewer system features tides (if you need a tide tracker - 4 Dollar Dungeons\' superb Horn of Geryon has one); at night, the bats swarm to hunt. Otyughs leave those wearing muckraker uniforms alone. The two antagonist factions behave in a concise and believable manner. How deep do the details go? Well, a wererat alchemist dreams of taking control of her gang - PCs with detect thoughts or similar means could glean that and use it to their advantage. The patrols provided for the enemy factions come with advice on how to make one statblock feel different when used.


The sewer system sports notes on methane-explosions for areas (including real world chemistry explanation!), rules for storm surges, the horrid psychological effects of being drenched by overwhelming humidity and stench - in short, the dungeon uses hazards PERFECTLY. It also uses the adversaries in a similarly concise and evocative manner: The foes behave smart and the living, \"realistic\" dungeon is very much one of the things that make this stand out. When you find several chests, they all have different traps. When you come to a junction you can\'t cross, the pdf notes several means, both mundane and magical, to solve the problem. When you come to a combat dealing with multiple foes, the sidebars provide ideas and guidance how to simulate the chaos of such an encounter. When an area would work well as an ambush location, the pdf draws your attention to it.


Oh, and the adversaries: Beyond the aforementioned main factions, hydras and several creatures from the excellent Sewer Bestiary (statblocks included here) provide ample versatility in that account. Speaking of which: The NPC-builds for the foes are versatile and in the end, after exploring the sewer, the PCs may still need to take on the command vessel of the plague druids, anchored in the sewer dock...which makes for a truly furious experience that requires brains as well as brawns for the PCs to survive. Oh, and in the aftermath, there is still the problem of the true culprit being none other than Deep Salt Bay\'s burgomaster\'s wife, a powerful bard in her own right...and putting her to justice, in any way, will be a challenge indeed. Have I mentioned that GMs even receive some notes on the limitations of certain spells, where applicable/potentially problematic? This is the most considerate module regarding the vagaries of adventuring I have seen in ages.


Have I mentioned the magical sparring dummy, the giant catfish or the dire raccoon?


Conclusion:

Editing and formatting are very good. I noticed some very minor cosmetic hiccups here and there. Layout adheres to Gaming Paper\'s elegant two-column b/w-standard and the pdf sports several nice b/w-pieces of original art. The dead tree version is saddle-stitched and paper-quality-wise, nice.


Damn, this was hard for me - and I\'m pretty sure I failed, but here it goes: This module is AMAZING. It frankly has no right to be this good. The plot-line, the environment, the primary adversary faction choices - none of these excite me on paper. If I had them summed up for me, I\'d shrug and move on. I implore you to not do that here. This module manages to provide a level of consideration, detail and internal consistency only VERY rarely seen in any system, much less one as rules-intense as PFRPG. It clicks. It comes together. It feels alive.


Usually, sewers are a designer\'s lazy way out to generate a dungeon with a certain theme right under a village. They are set-pieces, window-dressing at best. This sewer feels alive. It is a fantastic eco-system that embraces all the things that I always wanted to see in such an environment. In fact, for the very first time in my roleplaying career, I have found a module that is a sewer-crawl where the very dungeon explored has more character, more unique peculiarities, than most non-sewer dungeons. In short, this module represents the rebuttal, delivered with panache aplomb, to all the negative clichés associated with the dungeon type. It also represents a huge step up for author John Ling, who so far provided good, even very good, modules - but this goes a step beyond and reaches the lofty realms of excellence.


The author acknowledges with meticulous care non-dice-roll-dependent problem-solving, magical means and manages to evoke a sense of internal consistency that is very hard to convey in a review, but that should nonetheless be made very explicit: I have rarely seen any module feel this internally consistent, this alive; this is an excellent example of a living dungeon set-up: Considerate, intelligent, well-written, versatile and yes, evocative even, with hazards galore, SCIENCE! and diverse challenges, this is now my reference module for any adventure that features a sewer. This is the best adventure John Ling has penned so far and the best module released by Gaming Paper since the legendary Citadel of Pain. In short: GET THIS. I mean, one of the (optional!) lead-in hooks has a chase...and we get chase card obstacles! It\'s a perfect example how diligence, cohesion and consistency can conspire to make a module play in an absolutely amazing manner. My final verdict will clock in at 5 stars, + seal of approval...and this also receives a nomination for my Top Ten of 2016, even though its pdf went live only recently. This is the new reference module for sewers and all excuses for making these areas lame are hereby null and void. Turns out sewer-levels can be fun, after all!


Endzeitgeist out.
Categories: Game Theory & Design

Flag Search API

New Drupal Modules - 7 February 2017 - 2:21am

Module provides flag indexing for search api

Categories: Drupal

Custom Title

New Drupal Modules - 6 February 2017 - 10:18pm

Hide title field and late system populate/set automatically customize title as per combination of string & variable set by developer .

Use {{ kint(form) }} at the bottom in node-edit-form.html.twig to get form id. and change for id in custom_title.module file at if ($form_id == "your_form_id")

Categories: Drupal

Blizzard greenlights World of Warcraft gold being spent in its other games

Social/Online Games - Gamasutra - 6 February 2017 - 4:33pm

World of Warcraft players can now convert their in-game gold into Battle.net credit they can spend in other Blizzard games as the company continues to experiment with its pan-game economy. ...

Categories: Game Theory & Design

Battlefront Features SA-9 Gaskin SAM Platoon For Team Yankee

Tabletop Gaming News - 6 February 2017 - 3:00pm
In modern warfare (and it has actually been this way since about WWII), you have to make sure that enemy air power doesn’t hinder your ground forces too much. You can have your own planes try and neutralize them, but your aircraft can’t be everywhere at once. As such, having anti-aircraft elements in your forces […]
Categories: Game Theory & Design

Figure Painter Magazine Issue 42, Initiative Magazine Issue 5 Available Now

Tabletop Gaming News - 6 February 2017 - 2:00pm
There’s a whole lot of new gaming magazine going on in this issue. The folks at Robot Pigeon Publishing have been working hard on both Figure Painter Magazine as well as Initiative, and they’ve got new issues of both as the result. As always, there’s a lot of good information to be had in-between those […]
Categories: Game Theory & Design

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Contact Emails (video tutorial)

Planet Drupal - 6 February 2017 - 1:39pm
Drupal Modules: The One Percent — Contact Emails (video tutorial) NonProfit Mon, 02/06/2017 - 15:39 Episode 18

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Contact Emails, a module which allows a single contact form submission to be sent to multiple users each of which contains unique subject and body fields.

Categories: Drupal

Native Wars Card Game Up On Kickstarter

Tabletop Gaming News - 6 February 2017 - 1:00pm
The natives are restless. Several tribes are laying claim to a set of territory. There’s only so many resources to go around, and each group wants them for themselves. There’s a war on, and only one group will win. That’s the story behind Native Wars, a new card game that’s up on Kickstarter. From the […]
Categories: Game Theory & Design

Pages

Subscribe to As If Productions aggregator