Tag: Difference between revisions

From FreeAllegiance Wiki
Jump to navigationJump to search
(Howto get TAG run on x64 systems)
Line 164: Line 164:
====HQ (all): Game post failed.  This server is not authorized to post game statistics.====
====HQ (all): Game post failed.  This server is not authorized to post game statistics.====
Server is not authoriesed to post games to ASGS database server.
Server is not authoriesed to post games to ASGS database server.
===Known issues===
====Running TAG on x64 systems====
TAG may crashs on x64 systems and you get the following error within trace.txt:
[code]1/3/2011 12:17:10 AM: TAG Build 15 is starting...
1/1/2011 12:00:00 AM: Initializing logging...
1/1/2011 12:00:00 AM: Configuration Loaded.
1/1/2011 12:00:00 AM: Checking for updates...
1/1/2011 12:00:01 AM: No updates are available.
1/1/2011 12:00:01 AM: Connecting to GameServer...
1/1/2011 12:00:01 AM: TAG could not connect to Allsrv: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)[/code]
To fix this you need [http://www.microsoft.com/downloads/details.aspx?FamilyID=1aef6fce-6e06-4b66-afe4-9aad3c835d3d .net framework 2.0 SDK (x64)] installed.
Use the tool [http://msdn.microsoft.com/en-us/library/ms164699(v=vs.80).aspx CorFlags] to set 32BIT flag for TAG.exe.
[code]C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\Bin>corflags.exe "C:\Program Files (x86)\Micrsoft Games\Allegiance\Server\Tag\Tag.exe" /32BIT+[/code]
Now TAG runs fine without producing a error on event log or trace.txt.
Further reading:
*http://blogs.msdn.com/b/joshwil/archive/2005/05/06/415191.aspx


[[Category: Articles yet to be categorised]]
[[Category: Articles yet to be categorised]]

Revision as of 14:50, 4 January 2011

Tigereye's Allegiance Gizmo (TAG) is a replacement for AGMNet, providing logging services for Allegiance games. GameServer Administrators can run TAG on their systems next to their Allegiance Gameservers to collect ingame events and upload them to ASGS (provided their server has been "cleared" to post statistics).

TAG allows admins and authorised personal to send messages as HQ to current or all games on the server. It allows also to tag games, for further investigations of @Alleg.

How does TAG work

TAG hooks into the Allegiance server and records events like chat, kills, ejects, basekills, basecaptures and game settings. TAG stores this data into a XML file. After the game ends, TAG sends the recorded game data to the ASGS server, which handles the rank system.


TAG XML file

Below you find the XML schema of TAG XML files. [code]<?xml version="1.0" standalone="yes"?> <GameDataset>

 <xs:schema id="GameDataset" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   <xs:element name="GameDataset" msdata:IsDataSet="true">
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
         <xs:element name="Game">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="GameName" type="xs:string" />
               <xs:element name="CoreFile" type="xs:string" />
               <xs:element name="MapName" type="xs:string" />
               <xs:element name="SquadGame" type="xs:boolean" />
               <xs:element name="Conquest" type="xs:boolean" />
               <xs:element name="DeathMatch" type="xs:boolean" />
               <xs:element name="DeathmatchGoal" type="xs:int" minOccurs="0" />
               <xs:element name="FriendlyFire" type="xs:boolean" />
               <xs:element name="RevealMap" type="xs:boolean" minOccurs="0" />
               <xs:element name="AllowDevelopments" type="xs:boolean" />
               <xs:element name="AllowShipyards" type="xs:boolean" />
               <xs:element name="AllowDefections" type="xs:boolean" />
               <xs:element name="InvulnerableStations" type="xs:boolean" />
               <xs:element name="StatsCount" type="xs:boolean" />
               <xs:element name="MaxImbalance" type="xs:int" />
               <xs:element name="StartingMoney" type="xs:float" />
               <xs:element name="TotalMoney" type="xs:float" />
               <xs:element name="Resources" type="xs:int" />
               <xs:element name="StartTime" type="xs:dateTime" />
               <xs:element name="EndTime" type="xs:dateTime" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="GameEvent">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="EventID" type="xs:int" />
               <xs:element name="EventTime" type="xs:dateTime" />
               <xs:element name="PerformerID" type="xs:int" />
               <xs:element name="PerformerName" type="xs:string" />
               <xs:element name="TargetID" type="xs:int" />
               <xs:element name="TargetName" type="xs:string" />
               <xs:element name="IndirectID" type="xs:int" />
               <xs:element name="IndirectName" type="xs:string" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="ChatLog">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="ChatTime" type="xs:dateTime" />
               <xs:element name="SpeakerName" type="xs:string" />
               <xs:element name="TargetName" type="xs:string" />
               <xs:element name="Text" type="xs:string" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="Team">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="TeamID" type="xs:int" />
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="TeamNumber" type="xs:int" />
               <xs:element name="TeamName" type="xs:string" />
               <xs:element name="Commander" type="xs:string" />
               <xs:element name="Faction" type="xs:string" />
               <xs:element name="ResearchedStarbase" type="xs:boolean" />
               <xs:element name="ResearchedSupremacy" type="xs:boolean" />
               <xs:element name="ResearchedTactical" type="xs:boolean" />
               <xs:element name="ResearchedExpansion" type="xs:boolean" />
               <xs:element name="ResearchedShipyard" type="xs:boolean" />
               <xs:element name="Won" type="xs:boolean" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="TeamMember">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="TeamID" type="xs:int" minOccurs="0" />
               <xs:element name="Callsign" type="xs:string" minOccurs="0" />
               <xs:element name="Duration" type="xs:int" minOccurs="0" />
               <xs:element name="JoinTime" type="xs:dateTime" minOccurs="0" />
               <xs:element name="LeaveTime" type="xs:dateTime" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:choice>
     </xs:complexType>
     <xs:unique name="GameIDKey" msdata:PrimaryKey="true">
       <xs:selector xpath=".//Game" />
       <xs:field xpath="GameID" />
     </xs:unique>
     <xs:unique name="PK_TeamID" msdata:PrimaryKey="true">
       <xs:selector xpath=".//Team" />
       <xs:field xpath="TeamID" />
     </xs:unique>
     <xs:keyref name="TeamTeamMember" refer="PK_TeamID" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//TeamMember" />
       <xs:field xpath="TeamID" />
     </xs:keyref>
     <xs:keyref name="GameTeams" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//Team" />
       <xs:field xpath="GameID" />
     </xs:keyref>
     <xs:keyref name="GameChatLog" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//ChatLog" />
       <xs:field xpath="GameID" />
     </xs:keyref>
     <xs:keyref name="GameGameEvent" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//GameEvent" />
       <xs:field xpath="GameID" />
     </xs:keyref>
   </xs:element>
 </xs:schema>

</GameDataset>[/code]

GameDataset

This part of the XML file tells you everything about the game settings.

GameID

The GameID will be requested by TAG from ASGS database server, before TAG sends the game data to the database server. If TAG is unable to reach the database server, it will save the game as Game unknown.

GameName

Basicly the name of the game session (server name).

CoreFile

Name (filename) of the used core].

SquadGame

Allegiance doesn't support this option (yet).

StatsCount

This is an relict, maybe used later. All games will count played on current game servers.

StartTime

Local server time, when the game started.

EndTime

Local server time, when the game ended.

automated TAG messages

If you don't notice such a message at the start/end of a game, TAG isn't running on the gameserver.

HQ (all): The game has started.

Message that the game has been started and TAG starts recording the game.

HQ (all): servername 's game has completed. Game#: 123456'

Game has been successfull posted to ASGS database server and will be counted on ranks page.

HQ (all): servername 's game has completed. Insert lots of HTML stuff here

TAG on gameserver is unable to send data to ASGS database server. Game will be stored as Unknown game. It will not affect ranks.

HQ (all): Game post failed. This server is not authorized to post game statistics.

Server is not authoriesed to post games to ASGS database server.

Known issues

Running TAG on x64 systems

TAG may crashs on x64 systems and you get the following error within trace.txt:

[code]1/3/2011 12:17:10 AM: TAG Build 15 is starting... 1/1/2011 12:00:00 AM: Initializing logging... 1/1/2011 12:00:00 AM: Configuration Loaded. 1/1/2011 12:00:00 AM: Checking for updates... 1/1/2011 12:00:01 AM: No updates are available. 1/1/2011 12:00:01 AM: Connecting to GameServer... 1/1/2011 12:00:01 AM: TAG could not connect to Allsrv: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)[/code]

To fix this you need .net framework 2.0 SDK (x64) installed.

Use the tool CorFlags to set 32BIT flag for TAG.exe.

[code]C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\Bin>corflags.exe "C:\Program Files (x86)\Micrsoft Games\Allegiance\Server\Tag\Tag.exe" /32BIT+[/code]

Now TAG runs fine without producing a error on event log or trace.txt.

Further reading: