docs: function GameDB(options, db) {
          var that;
          that = this;
          options = options || {};
          options.name = options.name || 'gamedb';
  
          if (!options.update) options.update = {};
  
          // Auto build indexes by default.
          options.update.indexes = true;
  
          NDDB.call(this, options, db);
  
          this.comparator('stage', function(o1, o2) {
              var _o2;
              if ('string' === typeof o2.stage && that.node) {
                  if (false === J.isInt(o2.stage)) {
                      _o2 = that.node.game.plot.normalizeGameStage(o2.stage);
                      if (_o2) o2.stage = _o2;
                  }
              }
              return GameStage.compare(o1.stage, o2.stage);
          });
  
          if (!this.player) {
              this.hash('player', function(o) {
                  return o.player;
              });
          }
          if (!this.stage) {
              this.hash('stage', function(o) {
                  if (o.stage) {
                      return GameStage.toHash(o.stage, 'S.s.r');
                  }
              });
          }
  
          this.node = this.__shared.node;
      }