LiaMga developer

Mga Gabay

Isang room para sa dalawang manlalaro. Lumikha nito sa iyong server, i-invite ang isang kaibigan sa loob nito gamit ang Lia's friend picker o isang link, at ilagay ang parehong manlalaro sa parehong room.

Ang ideya: ang isang silid ay may isang id, at ang id ay pumasok sa invite's startParam. Ang sinumang buksan ang invite ay buksan ang iyong app na may startParam na iyon, at ang iyong pahina ay sumali sa kanila sa room. Lia'naka-own Lia XO ganito ang paraan.

#1. Lumikha ng isang room sa iyong server

server.js
app.post("/api/rooms", async (req, res) => {
  const playerId = await playerFrom(req.body.session); // see Verify on your server
  if (!playerId) return res.status(401).end();
  const room = "room-" + crypto.randomUUID().replace(/-/g, "").slice(0, 10);
  await db.createRoom(room, { host: playerId, players: [playerId] });
  res.json({ room });
});

app.post("/api/rooms/join", async (req, res) => {
  const playerId = await playerFrom(req.body.session);
  if (!playerId) return res.status(401).end();
  const room = await db.room(req.body.room);
  if (!room) return res.status(404).json({ error: "no_room" });
  if (room.players.length >= 2 && !room.players.includes(playerId)) return res.status(409).json({ error: "full" });
  await db.addPlayer(req.body.room, playerId);
  res.json({ room: req.body.room });
});

Ang mga room id ay dapat sumunod sa isang startParam: 1 hanggang 64 ng mga letra, numero, _ at -.

#2. Invite ang isang kaibigan

game.js
async function playWithAFriend() {
  const { room } = await api("/api/rooms", {});
  showWaiting(room);
  const { invited } = await Lia.inviteFriend({ startParam: room });
  if (!invited) Lia.toast("Share the link to invite someone");
}

// Or a link to send anywhere: opens your app in Lia, or the App Store without it.
async function shareRoom(room) {
  await Lia.share("Play with me: " + Lia.inviteLink(room));
}

Bawat kaibigan na pinili ay kumikita ng isang card sa kanilang Lia chat. Lia ay nagpapahintulot lamang sa mga tao na mag-udyok ng kanilang mga kaibigan, at ang mga kaibigan lamang na maaaring buksan ang iyong app (habang ito'ng in test.

#3. Lumanding sa room

Basahin ang startParam kapag ang iyong app ay buksan, at pakinggan ang isang dumating habang ito'naka-bukas (ang tao ay tumatama ng pangalawang panawagin):

function route(startParam) {
  if (startParam && startParam.startsWith("room-")) joinRoom(startParam);
}

Lia.init().then(function () {
  route(Lia.startParam);
  Lia.ready();
});
Lia.on("startParam", function (data) { route(data.startParam); });

async function joinRoom(room) {
  try {
    await api("/api/rooms/join", { room });
    openTable(room);
  } catch (error) {
    Lia.toast(error.message === "full" ? "That game is full" : "That game has ended");
  }
}

Ang isang startParam ay isang hinto lamang: anumang tao ay maaaring gumawa ng isang link na may anumang startParam, kaya ang iyong server ang magpapasiya kung ang room ay umiiral at ang manlalaro ay maaaring sumali.

#4. Maglaro nang live

I-connect ang parehong manlalaro sa iyong server (isang WebSocket ay karaniwan), at i-verify ang bawat manlalaro'ang session bago sumali sa room. Habang ang laro ay nasa proseso:

Lia.enableClosingConfirmation(); // "Leave the game?" if they close
Lia.disableVerticalSwipes();     // a swipe down won't close the sheet mid move
Lia.onPause(function () { socket.send(JSON.stringify({ type: "away" })); });
Lia.onResume(function () { socket.send(JSON.stringify({ type: "back" })); });

#5. Ang iyong pagkakataon, sa pamamagitan ng pahayag

Kapag ito'ang someone's galaw at sila'nakalabas sa iyong app, isang pangungusap kasama ang room bilang its startParam ay dinala sila direkta:

{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "@kofi played. Your move.", "startParam": "room-a81c2e09f4" }

#Pangkabahayan na mga mesa

Ang mga pag-invite ay para sa mga kaibigan. Para pahintulutan ang sinumang nasa Lia sumali, ilista din ang room sa lobby habang ito ay naghahatid:

server.js
// When the room is made: list it (as the host, with one seat taken).
await lia("POST", "/lobby/tables", { tableId: room, hostPlayerId: playerId, seats: 2, taken: 1, title: "Quick game" });

// When someone joins from the lobby: seat them through Lia first (it refuses blocked players and full tables).
app.post("/api/rooms/sit", async (req, res) => {
  const playerId = await playerFrom(req.body.session);
  if (!playerId) return res.status(401).end();
  try {
    const { full } = await lia("POST", `/lobby/tables/${encodeURIComponent(req.body.room)}/sit`, { playerId });
    await db.addPlayer(req.body.room, playerId);
    if (full) startGame(req.body.room);
    res.json({ room: req.body.room });
  } catch (error) {
    res.status(409).json({ error: error.data?.error ?? "failed" }); // full, not_found, own_table
  }
});

// When the game starts or the room closes: take it out (safe to repeat).
await lia("DELETE", `/lobby/tables/${encodeURIComponent(room)}`);

Sa iyong pahina, ipakita ang mga bukas na tables, at i-seat ang mga tao na pumili ng iyong table sa Lia'naka-own lobby (silang dumating na may startParam lobby-<table id>):

const { tables } = await Lia.lobby.tables();
renderTables(tables, (table) => api("/api/rooms/sit", { room: table.id }));

function route(startParam) {
  if (startParam?.startsWith("lobby-")) return api("/api/rooms/sit", { room: startParam.slice(6) }).then(openTable);
  if (startParam?.startsWith("room-")) return joinRoom(startParam);
}

Ang mga dayuhan ay maaaring't mag-chat sa pamamagitan ng Lia, ang mga bloke ay pinapahalagahan, at ang mga manlalaro ay maaaring ulat isa't isa.

#Limits na dapat alam

  • Isang tao ay maaaring mag-udyok ng 20 mga kaibigan sa iyong app araw-araw, kaya ang mga panata ay nananatili bilang bagay na tinatanggap ng mga tao sa kanilang mga chat.
  • Ang isang host ay maaaring magkaroon ng 3 bukas na pampublikong tables sa iyong app sa isang oras, at ang isang listing ay tumatagal ng kalahating oras.
  • Lia.inviteFriend() mga sagot { invited }, walang kinalaman kung sino ang inirerekta: ang iyong server natututo kung sino ang sumali nang sila ay sumali.

Awtomatikong isinalin. Ang English ay ang source of truth. Basahin sa Ingles

Pindutin para maghanap sa lahat ng pahina, paraan at endpoint.