Skip to Content


Xbox One Vs. PS4 & Why we’re not developing for consoles yet - by Travis Kunze Blogs - 31 March 2014 - 4:29am
So recently I decided that I really needed to connect with the community and really find out what they were looking for in games, that they weren’t seeing come from AAA games. So on my way home from work I decided to stop by my local Best Buy...
Categories: Game Theory & Design

Video blog: Deconstructing free-to-play

Social/Online Games - Gamasutra - 31 March 2014 - 4:02am

"A deep analysis of the dynamics of some of the most popular F2P games, especially with regards to learning, engagement, and psychological effects." ...

Categories: Game Theory & Design

How playing "The Way Home" earns us revenue by mining Bitcoin - by Alexandru Bleau Blogs - 31 March 2014 - 3:12am
How we generated a bit over $3000 dollars by mining for Bitcoin while users played our game instead of annoying IAPs or asking for money.
Categories: Game Theory & Design

Blog: 3 rules for freemium game devs

Social/Online Games - Gamasutra - 31 March 2014 - 2:07am

"While a lot of people simply hate the growing presence of microtransactions, I'm trying to dissect this new tool and just started a new quest for understanding and taming the beast." ...

Categories: Game Theory & Design

The Challenges of Creating An Open Ended UI Design For Multiplayer Games - by Danielle Bailey Blogs - 31 March 2014 - 1:24am
I take a dive into explaining the challenges that come with creating a UI that game developers can customize themselves.
Categories: Game Theory & Design

Threes, clones and cornflakes: A view on 'casual games'

Social/Online Games - Gamasutra - 31 March 2014 - 12:37am

What can we learn from the Threes furore? Leigh Alexander takes the temperature on "casual games" business as usual, the value of brand names, and talks to 2048's 19-year old creator. ...

Categories: Game Theory & Design

"GAME_JAM" and the Power of Integrity - by Robin Arnott Blogs - 31 March 2014 - 12:25am
The "GAME_JAM" disaster is not just the story of one man's misogyny destroying months of hard work. It is also the story of eleven game developers who deliberately killed something ugly.
Categories: Game Theory & Design

Reflection in lame engine Part 3 - Methods and Lua binding. - by Adrian Lis Blogs - 31 March 2014 - 12:24am
In times of wide-spread Unity usage the benefits of having a reflection system at your disposal is more apparent. The third article in the series about my take on implementing reflection and automated script binding in C++ goes deep into class methods.
Categories: Game Theory & Design

Let's talk about accountability - by Adriel Wallick Blogs - 31 March 2014 - 12:21am
This is a cautionary tale of accountability and toxic environments.
Categories: Game Theory & Design

Unreality: My Takeaways After Being On and Subsequently Walking Off a Reality Show About Game Jams. - by Zoe Quinn Blogs - 31 March 2014 - 12:21am
I agreed to do a show about game jams, hoping to make a short game with friends. What that ended up being was something completely different. I contractually can't talk about what happened, but I can share what I learned from the experience.
Categories: Game Theory & Design

Web Omelette: 10 things you should be doing on your Drupal site

Planet Drupal - 31 March 2014 - 12:10am

This article comes as a continuation to the previous one in which I exemplified 5 things you should not do on or with your Drupal site. Today, however, I'll double up, take a more positive approach and go with 10 things you definitely should be doing. So let's begin.

Turn on caching and aggregation on production

When you develop locally you'll most likely disable css/js aggregation and turn off the caches. This makes it easier to quickly see changes as you make them and allows for a more efficient development. However, you have to make sure that these are turned back on when you move to the live site.

Drupal comes with a few powerful performance related settings that greatly improve the speed of your site. Page caching and compression for anonymous users is one of them. CSS/JS aggregation is another. And there are a bunch of contrib modules that enhance performance and I recommend you also look into those.

Disable development modules and functionality on production

If the previous point was about performance, this one is about security. There are various things you'll use locally while you develop or debug your Drupal site. The Devel module is something you'll probably enable and the error reporting will most likely be turned on so you can see what's going on.

This is all good and well but make sure that when you push your changes to the production site, these get turned off. Keeping the Devel module enabled on a live site is a big security risk. And although it constitutes security by obscurity, disabling the printing of errors to the screen is also important. Not to mention user friendly.

So either you create a checklist of things to do or automate these processes however you want. Drush will be a very good friend with this.

Use Drush for shell tasks like updating and installing modules

Speaking of Drush, any respectable Drupal developer will know how to use and will use Drush for one thing or another. It is a very helpful tool to run tasks related to Drupal from the command line. A Drupal shell basically.

I'm not even going to enumerate all the cool things you can do with it but I will refer you to a couple of articles I wrote before on how you can begin with Drush and some of the basic things you can use it for.

Keep regular backups of your production environment

The best backups are the ones you don't ever need. That being said, you'll need to keep regular backups of your site and server in order to revert if the worst should happen. There are many tools you can use for this (both manual and automated) but I'm not going to go into that right now. I will however share a story to scare you straight into opening your MySQL interface of choice and taking a database dump.

A while ago, I hosted a site for someone on a shared server from a random hosting company. One day I notice the site is down and in about 24 hours (of the site being down) I get an email. Someone hacked into their datacenter and deleted everything (both live servers and backup server). Apparently both were kept in the same place and their access was solely protected by the act of sending an email to the datacenter from the hosting company's email address asking for access...

The resolution was the following: no more data, ever, retrieved. Nobody got anything back. Luckily, I had backups and so should you. The moral of the story is obvious I think.

Find a good balance between contrib and custom

In the previous article I strongly advised against using too many contrib modules. I mean if the site is huge and needs them, it's fine. As long as they are accompanied with performance related enhancements to compensate for the load.

In this point I would like to stress the importance of finding a good balance between using contrib modules vs your own custom code. The rule of thumb is to use contrib modules as much as you can. This means do not write custom code that is already present in a module. This is because there are multiple people looking at that module and can spot problems, make updates and you'll be also better off.

That being said, you also have to be careful of (1) what modules you use and (2) what problem they solve. First of all, the module can be of bad quality or not performant, so you'll need to investigate a bit (how many people use it, how does the issue queue looks like, etc). Second of all, it can be an overkill. If you need a tiny piece of functionality offered by a module that does a bunch of other stuff you don't need, it's maybe time to think about whether or not you can implement that yourself. It's a judgement call depending on the case.

If you don't expect users to create accounts, disable this functionality

One of the things I kept forgetting and paid the price later was to disable the right for anonymous users to create user accounts on the site. By default on a fresh Drupal install, anonymous users can create accounts and you as an admin need to approve them. The problem is that if you forget, you can wake up in 6 months with a huge spam user list that you need to take care of.

This piece of advice concerns those who create new websites that don't need people creating accounts of course. If you require users to be able to create them themselves, make sure you implement some anti-spam techniques like Captcha, Mollom or Honeypot.

Employ Drupal coding and security standards

One of the important things that beginner Drupal developers need to learn is how to respect the Drupal coding and security standards in place.

The coding standards represent a particular way of writing, formatting and structuring code. Aside from syntactical rules, you also have readability rules and implementation rules (where and how should I use this function or hook).

The security standards represent the rules the respect of which ensures that you will write secure code. This means using helper functions and techniques that actually make Drupal a pretty secure system.

So make sure you got these down before attempting to write enterprise code for Drupal production sites.

Keep your code in Git

Using version control is a must with any web application. In this day and age you cannot write code without keeping it in some sort of versioning system like Git, Mercurial, or SVN. The Drupal community adopted Git and it's awesome. It's also one of the most popular ones out there.

If you want to develop Drupal modules, themes or contribute to existing ones or even core, you can't get around using Git. So make sure you start using it for all your projects if you don't already.

You can also use Git to deploy your code between environments. Keeping a central repository from which you can pull provides a fast and easy way to deploy code. This is of course if you're not already using some automated tool like Jenkins (that also integrates with Git by the way).

Update core regularly

It's recommended that you update your site when there are updates issued by the core maintainers, especially when they are security updates. Yes, it can take some time to perform these updates, but it's worth it.

Why? There is no getting around the fact that security updates need to be done. Once they are public, the vulnerabilities are as well. So if you haven't deleted the CHANGELOG.TXT file from your Drupal root (which you can do), potential attackers can find out the version of Drupal you are running. And the risk of exploiting those vulnerabilities increases. This is not to say that deleting the CHANGELOG.TXT file is enough and you shouldn't update.

Additionally, if you leave it for later, you'll end up having to do a big update across many version numbers which makes it much more difficult. It'll take much more time to do and the risk of breaking some functionality will increase as well.

So take the time regularly to do the updates, look at what is affected by them and test your site to make sure it won't break (locally!). If it does, fix the custom code (or update contrib) that no longer functions due to this. The problems should however be minimal with incremental updates.

Keep the modules in the right folders

There is a best practice in Drupal regarding the way you organise the modules on your site. We know that they must be kept in the sites/all/ folder but we can better organise them inside that as well.

Contrib modules need to go in a folder called contrib/ and custom modules in a folder custom/. Trust me, when you will have plenty of modules (of both types), finding them will be much easier.

Additionally, if you use the Features module, you should put all your features into a features/ folder. And if you patch any of the contrib modules, it's best if you move them from contrib/ to a folder called patched/. This way you have an overview of which modules you need to pay extra attention to when doing updates. After moving the module make sure you run a registry rebuild to update Drupal as well that the location has changed. With Drush this is easy: drush rr.


There you have them: 10 things I recommend you do on your Drupal site. Again, there are more of course, but here are 10 of my most important ones. By the way, do you know that saying: do as I say not as I do? :)

In Drupal var switchTo5x = true;stLight.options({"publisher":"dr-8de6c3c4-3462-9715-caaf-ce2c161a50c"});
Categories: Drupal

Procedural Generation for Bunker Punks (Unity 3D) - by Shane Neville Blogs - 31 March 2014 - 12:05am
Procedural Generation was something I was scared to tackle. With the help of a few great tutorials and a few mistakes, I got procedural rooms up and running.
Categories: Game Theory & Design

Fuzzy Thinking: Villains are People, Too

RPGNet - 31 March 2014 - 12:00am
The fuzziness continues.
Categories: Game Theory & Design

netsperience 2.x: Connect Drupal to Multiple Remote Databases via SSH Tunnel

Planet Drupal - 30 March 2014 - 10:42pm

I'm working on a site that stores data in separate mysql databases, and updates them frequently from Salesforce via nodejs scripts run through CouchDB.

The extra mysql dbs are 16+ GB and it's not practical nor necessary to keep them locally since I only want to read the latest data in local development.

Wouldn't it be cool if the local Drupal site can read from the remote database servers?

In some cases you can just use the connection you find in the remote site's settings.php:

'otherdb' => 'mysqli://username:password@hostname/dbname'

(note: it's a Drupal 6 site so that's why you don't see an array - I will give a Drupal 7 example below)

However, there's often a twist: I must create a SSH tunnel to connect to this particular db server, based on information clearly presented by Engine Yard.

First, you need to have configured and installed SSH keys on your local and remote machines.

Then fire up your terminal and create the SSH tunnel to forward the remote mysql port to a local port. Keep this connection alive as long as you need to connect to the remote database.

ssh -L [local port]:[database host]:[remote port] [ssh-username]@[remote host] IMPORTANT: use a different port for your tunnel [local port] than the one you normally use for mysql; for example, if you connect to mysql locally on the default port 3306, use 3307 (or any other unused port) for your tunnel. You should use the correct [remote port] which is typically 3306, and you can see if it is different by looking at settings.php in the remote site. ssh -L 3307:[database host]:3306 [ssh-username]@[remote host] Then you can test your connection (in a different terminal instance): mysql -u[dbuser] -p -P 3307 -h Here is the connection in settings.php for Drupal 6: 'otherdb' => 'mysqli://username:password@' What's cool is that you can mix local and remote databases. For example, I want to use a local copy of the Drupal database, which is smaller and easier to sync, and read the data from the second (and third, in my case) remote dbs. $db_url = array(  'default' => 'mysqli://local-dbuser:password@localhost/local-dbname',  'otherdb' => 'mysqli://username:password@',  'otherdb2' => 'mysqli://username:password@'); You can also connect Drupal to the default remote database, but it makes sense to use a local instance for development. And in Drupal 7: $databases['default']['default'] = array(  'driver' => 'mysql',  'database' => 'local-dbname',  'username' => 'local-dbuser',  'password' => 'password',  'host' => 'localhost',  'prefix' => '',);$databases['otherdb']['default'] = array(  'driver' => 'mysql',  'database' => 'dbname',  'username' => 'username',  'password' => 'password',  'host' => '',  'port' => '3307',  'prefix' => '',); 


If the db user for the remote db has all privileges, your application may alter the remote database. Therefore, you should create a "read-only" user for the remote database which will prevent you from altering it. THINK 
Categories: Drupal

Commercially Viable Design on Mobile - by Ted Brown Blogs - 30 March 2014 - 10:07pm
How should commercially-focused designers approach the mobile space? This article suggests starting with the interface, using explanations and examples to describe why.
Categories: Game Theory & Design
Syndicate content

about seo