Как показать разные карты каждому пользователю в фазерной игре

#javascript #phaser-framework #tiled

#javascript #фазер-фреймворк #плиточный

Вопрос:

Я разрабатываю одно приложение (платформу), где у меня 10 пользователей (возможно, со временем это увеличится). Я создал одну страницу входа и создал одну карту, используя tiled (фреймворк phaser). Но теперь эта карта одинакова для всех пользователей, я хочу создать отдельную карту для каждого пользователя, которая будет видна после входа в систему. Пожалуйста, дайте мне какое-нибудь предложение, чтобы я мог хотя бы попробовать. Или дайте мне какую-нибудь идею для этой реализации.

Следующий код предназначен для разбора плиточной карты.

 var game = new Phaser.Game(450, 300, Phaser.CANVAS, 'phaser', { preload: preload, create: create, update: update, render: render });

function preload() {
    game.load.tilemap('map', '../tileMap/background.json', null, Phaser.Tilemap.TILED_JSON);
    game.load.image('tile2', '../tileMap/floor2.png');
    game.load.image('player','../tileMap/bot2.png');
}

var map;
var layer;

function create() {
    map = game.add.tilemap('map');
    map.addTilesetImage('floor2','tile2');
    layer = map.createLayer('Tile Layer 1');
    layer.resizeWorld();
}
  

Комментарии:

1. Какой код у вас есть на данный момент? Поскольку в настоящее время это сформулировано, я думаю, что этот вопрос будет помечен как слишком широкий для этого сайта.

2. @JamesSkemp Пожалуйста, проверьте мой обновленный вопрос.

Ответ №1:

Проблема в том, что если все будут перенаправлены на одну и ту же страницу после входа в систему, то все пользователи увидят одну и ту же карту, расположенную в разделе «.. / tileMap /background.json».

Решением было бы каким-то образом соединить карту с пользователем, в примере вы можете создать такой массив:

 var maps= {};
maps['bob'] = '../tileMap/backgroundBob.json';
maps['joe'] = '../tileMap/backgroundJoe.json';
  

Затем вы можете создать глобальную переменную (но для этого определенно есть лучший способ, возможно, используя значение входа из файла cookie при инициализации phaser) для tilemapPath и после аутентификации пользователя сделать что-то вроде:

 tilemapPath = maps[login];
  

И загрузите tilemap с:

 game.load.tilemap('map',tilemapPath, null, Phaser.Tilemap.TILED_JSON);
  

Надеюсь, это вам как-нибудь поможет.

Комментарии:

1. Спасибо. Я сделал то же самое, что и выше, и его работа