let challenges = {}; //variantName --> socketId, name
let games = {}; //gameId --> gameInfo (vname, fen, players, options, time)
let challenges = {}; //variantName --> socketId, name
let games = {}; //gameId --> gameInfo (vname, fen, players, options, time)
let sockets = {}; //socketId --> socket
const variants = require("./variants.js");
const Crypto = require("crypto");
let sockets = {}; //socketId --> socket
const variants = require("./variants.js");
const Crypto = require("crypto");
// If a player deletes local infos and then tries to resume a game,
// sockets[oppSid] will probably not exist anymore:
if (socket)
// If a player deletes local infos and then tries to resume a game,
// sockets[oppSid] will probably not exist anymore:
if (socket)
// Provide seed in case of, so that both players initialize with same FEN
function launchGame(gid) {
// Provide seed in case of, so that both players initialize with same FEN
function launchGame(gid) {
const gameInfo = Object.assign(
{seed: Math.floor(Math.random() * 1984), gid: gid},
games[gid]
const gameInfo = Object.assign(
{seed: Math.floor(Math.random() * 1984), gid: gid},
games[gid]
- let opponent = undefined,
- choice = undefined;
- const vname = obj.vname,
+ let oppIndex = undefined, //variant name
+ choice = undefined; //variant finally played
+ const vname = obj.vname, //variant requested
randvar = (obj.vname == "_random");
if (vname == "_random") {
// Pick any current challenge if possible
randvar = (obj.vname == "_random");
if (vname == "_random") {
// Pick any current challenge if possible
if (choice == "_random")
choice = getRandomVariant();
// Launch game
let players = [
{sid: sid, name: obj.name, randvar: randvar},
if (choice == "_random")
choice = getRandomVariant();
// Launch game
let players = [
{sid: sid, name: obj.name, randvar: randvar},
games[obj.gid].fen = obj.fen;
games[obj.gid].time = Date.now(); //update timestamp in case of
const playingWhite = (games[obj.gid].players[0].sid == sid);
games[obj.gid].fen = obj.fen;
games[obj.gid].time = Date.now(); //update timestamp in case of
const playingWhite = (games[obj.gid].players[0].sid == sid);