Pokémon TCG Live will be offline for scheduled maintenance from 15:00 ~ 23:00 (UTC) on September 10, 2026.
Please see the Version 1.42.0 - Patch Notes for more information.
Abort game feature in TCG live
Too many times I have had a failed connection on android on mobile data on sign in (rest of games connect fine) this issue has not been resolved for several years. Damaging ELO and streak runs before I've even drawn a card. If no way of fixing connection issue, please implement a game abort if no cards have been drawn for turn 1.
See Sample code:
using System;
public enum GameState
{
Connecting,
Initialization,
InProgress,
Completed,
Aborted
}
public class MatchSession
{
public string MatchId { get; private set; }
public Player Player1 { get; private set; }
public Player Player2 { get; private set; }
public GameState CurrentState { get; private set; }
public int TotalCardsDrawn { get; private set; }
public MatchSession(Player player1, Player player2)
{
MatchId = Guid.NewGuid().ToString();
Player1 = player1;
Player2 = player2;
CurrentState = GameState.Connecting;
TotalCardsDrawn = 0;
}
/// <summary>
/// Simulates a failed connection during load or setup.
/// </summary>
public void HandleConnectionTimeout(Player disconnectingPlayer)
{
// Rule check: If no cards have been drawn yet, abort without penalties
if (TotalCardsDrawn == 0 && CurrentState != GameState.InProgress)
{
AbortMatch($"Opponent ({disconnectingPlayer.Username}) failed to fully connect before game start.");
}
else
{
// If the game had already started, handle as a standard forfeit/concede
ProcessNormalConcede(disconnectingPlayer);
}
}
private void AbortMatch(string reason)
{
CurrentState = GameState.Aborted;
Console.WriteLine($"[MATCH ABORTED] Match {MatchId}: {reason}");
Console.WriteLine("No MMR/Rating adjusted. Win streaks preserved.");
// Log match telemetry for connection diagnostics without updating competitive stats
MatchLogger.LogAbortedMatch(MatchId, Player1.Id, Player2.Id, reason);
// Clean up match resources and notify both clients
Player1.ClientRpc_NotifyMatchAborted("Opponent failed to connect. Match safely aborted.");
Player2.ClientRpc_NotifyMatchAborted("Connection lost before match started.");
}
private void ProcessNormalConcede(Player forfeitingPlayer)
{
CurrentState = GameState.Completed;
// Standard logic that updates MMR, loss records, and win streaks goes here...
}
}