Page 1 of 1

Posted: Wed Aug 11, 2010 2:41 am
by Imago

Code: Select all

BEGIN TRANSACTION;
CREATE TABLE EventResults (
    eid                   INTEGER PRIMARY KEY,
    gid                INTEGER,
    Event                INTEGER,
    DateTime            DATE,
    ComputerName            VARCHAR(15),
    Subject                INTEGER,
    SubjectName            VARCHAR(32),
    Context                VARCHAR(24),
    ObjectRef            VARCHAR(4000)
);
CREATE TABLE GameResults (
    gid               INTEGER PRIMARY KEY,
    szGameID              VARCHAR(18),
    szName                VARCHAR(65),
    szWinningTeam         VARCHAR(21),
    szCore            VARCHAR(21),
    nWinningTeamID         INTEGER,
    bIsGoalConquest     BOOLEAN,
    bIsGoalCountdown     BOOLEAN,
    bIsGoalTeamKills     BOOLEAN,
    bIsGoalProsperity     BOOLEAN,
    bIsGoalArtifacts    BOOLEAN,
    bIsGoalFlags         BOOLEAN,
    nGoalConquest         INTEGER,
    nGoalCountdown         INTEGER,
    nGoalTeamKills         INTEGER,
    fGoalProsperity     FLOAT,
    nGoalArtifacts         INTEGER,
    nGoalFlags         INTEGER,
    nDuration         INTEGER,
    timeEnter         DATE
);
CREATE TABLE PlayerResults (
    pid                   INTEGER PRIMARY KEY,
    gid                INTEGER,
    szGameID            VARCHAR(18),
      nTeamID                INTEGER,
      szName                VARCHAR(32),
      cPlayerKills            INTEGER,
    cBuilderKills            INTEGER,
    cLayerKills            INTEGER,
    cMinerKills            INTEGER,
    cBaseKills            INTEGER,
    cBaseCaptures            INTEGER,
    cPilotBaseKills            INTEGER,
    cPilotBaseCaptures        INTEGER,
    cDeaths                INTEGER,
    cEjections            INTEGER,
    cRescues            INTEGER,
    cFlags                INTEGER,
    cArtifacts            INTEGER,
    cTechsRecovered            INTEGER,
    cAlephsSpotted            INTEGER,
    cAsteroidsSpotted        INTEGER,
      fCombatRating            FLOAT,
      fScore                FLOAT,
      nTimePlayed            INTEGER,
      nTimeCmd            INTEGER,
      bWin                BOOLEAN,
      bLose                BOOLEAN,
      bWinCmd                BOOLEAN,
      bLoseCmd            BOOLEAN,
      CharacterID            INTEGER
  
);
CREATE TABLE TeamResults (
    tid                   INTEGER PRIMARY KEY,
    gid                INTEGER,
    szGameID            VARCHAR(18),
    nTeamID                INTEGER,
    szName                VARCHAR(25),
    szTechs                VARCHAR(101),
    nCivID                INTEGER,
    cPlayerKills            INTEGER,
    cBaseKills            INTEGER,
    cBaseCaptures            INTEGER,
    cDeaths                INTEGER,
    cEjections            INTEGER,
    cFlags                INTEGER,
    cArtifacts            INTEGER,
    nConquestPercent        INTEGER,
    nProsperityPercentBought    INTEGER,
    nProsperityPercentComplete    INTEGER,
    nTimeEndured             INTEGER
);
CREATE TRIGGER insert_GameResults_timeEnter AFTER INSERT ON GameResults BEGIN UPDATE GameResults SET timeEnter = DATETIME('NOW') WHERE rowid = new.rowid; END;
COMMIT;
I'm looking now for trigger's or a background worker task that does the calculations for the leaderboard / to get values required for TrueSKill and work in another table that stores the fresh MSR data similar to

Code: Select all

sub CreateBalanceTables() {
    $dbh->do(qq{
CREATE TABLE balance (
    bid       INTEGER PRIMARY KEY,
    name      VARCHAR(12),
    mu        NUMERIC(2,2),
    sigma     NUMERIC(2,2),
    rank      INTEGER,
    timeEnter DATE
);});
    $dbh->do(qq{
CREATE TABLE balancelog (
    blid         INTEGER PRIMARY KEY,
    bid         INTEGER,
    bidOLD         INTEGER,
    nameNEW     VARCHAR(12),
    muNEW       NUMERIC(2,2),
    sigmaNEW    NUMERIC(2,2),
    rankNEW        INTEGER,
    nameOLD        VARCHAR(12),
    muOLD            NUMERIC(2,2),
    sigmaOLD    NUMERIC(2,2),
    rankOLD        INTEGER    ,
    sqlAction     VARCHAR(15),
    timeEnter        DATE,
    timeUpdate       DATE,
    timestamp       DATE
);});

$dbh->do(qq{CREATE TRIGGER update_balancelog AFTER UPDATE ON balance BEGIN INSERT INTO balancelog (bid,bidOLD,nameOLD,nameNEW,muOLD,muNEW,sigmaOLD,sigmaNEW,rankOLD,rankNEW,sql
Action,timeEnter,timeUpdate,timestamp) values (new.bid,old.bid,old.name,new.name,old.mu,new.mu,old.sigma, new.sigma,old.rank,new.rank, 'UPDATE',old.timeEnter,DATETIME('NOW'),DATETIME('NOW') ); END;});
$dbh->do(qq{CREATE TRIGGER insert_balancelog AFTER INSERT ON balance BEGIN INSERT INTO balancelog (bid,nameNEW,muNEW,sigmaNEW,rankNEW, sqlAction,timeEnter,timestamp) values (new.bid,new.name,new.mu,new.sigma,new.rank,'INSERT',new.timeEnter,DATETIME('NOW') ); END;});
$dbh->do(qq{CREATE TRIGGER delete_balancelog DELETE ON balance BEGIN INSERT INTO balancelog (bid,nameOLD,muNEW,sigmaOLD,rankOLD,sqlAction,timeEnter) values (old.bid,old.name,old.mu,old.sigma,old.rank, 'DELETE',DATETIME('NOW') ); END;});
$dbh->do(qq{CREATE TRIGGER insert_balnce_timeEnter AFTER INSERT ON balance BEGIN UPDATE balance SET timeEnter = DATETIME('NOW') WHERE rowid = new.rowid; END;});

    return;
}

Posted: Wed Aug 11, 2010 2:42 am
by Imago
Thanks for any help anyone can provide *ahem* this is being tracked as ticket #50 related to #192

http://trac.alleg.net/ticket/50
http://trac.alleg.net/ticket/192

Posted: Sat Aug 14, 2010 4:39 pm
by Imago
Here is the latest sample data showing off the structure of the actual POST over the wire.

http://alleg.builtbygiants.net/AllegSkill/...2-8680-12432.7z

As per Pkk and others' suggestions, the entire Mission Parameters and AGC Event Log are now captured.

Posted: Mon Aug 16, 2010 5:00 am
by Imago
I've put together a Zip of the latest code, it's working slick: http://build.alleg.net/AllegSkill/Allegiance R6 Game Results & AGC Event Log CGI-DBI Handler.zip

If there is ANY interest at all I can whip up a "Game Summary" page that lets you view the data in a somewhat readable fashion...

Posted: Mon Aug 16, 2010 5:01 am
by Imago
also ticket #50 has been closed. This is done. The next steps are now to gather feedback from the community on the most important NEW PIECES OF INFO we need that is not currently being tracked (like time spent repairing your base/drones/allies) - If this system is the most thorough, reliable and efficient way to record STATS then the other BIG DEAL would be to compute the RANK/TrueSkill from THIS source.

Posted: Mon Aug 30, 2010 2:42 am
by Imago

Posted: Mon Aug 30, 2010 3:00 am
by Imago

Posted: Thu Sep 02, 2010 1:32 am
by Imago

Posted: Thu Sep 02, 2010 11:12 pm
by Imago
http://174.120.142.26/~imago/gs_test.html

Dynamically generated Game Options / Map Preview from a remote image server (all params are passed on query string)