berto
Posts: 1336
Joined: 3/13/2002 From: metro Chicago, Illinois, USA Status: online
|
This is an amended posting of the AGElint RUS 1.04 QA/bug check report I posted at the AGEOD Forum. I must stress: These results are imperfect, but they are much better than nothing. Agelint is a work in progress, and improves over time. More layers of bug checking can be added, and its capabilities are far from exhausted. These results merely reflect the current state of AGElint. I make my share of mistakes, but except for honest differences of opinion, I correct my goofs! In the spirit of sharing knowledge, and empowering the players, I repost this. -------- Please see posted here the file agelint_rus_1034_20111020.zip, which is the AGElint QA/bug check for RUS 1.04. What is AGElint? Akin to the well-known C programming language utility lint ("Lint: A Unix C language processor which carries out more thorough checks on the code than is usual with C compilers. Lint is named after the bits of fluff it supposedly picks from programs." See http://en.wikipedia.org/wiki/Lint_%28software%29.). Similarly, AGElint is a toolkit of programs designed to discover and report bugs, problems, glitches, anomalies in the AGEOD game data files. I will be releasing the AGElint source code, and unveiling other related project work, in the weeks and months ahead. AGElint will be a community-effort, quasi Open Source kind of software project. More about AGElint at a later date... (NOTE: AGElint does not debug the AGE executables, rather just the data files. Also please note: AGElint deals directly with the game data text files, and only peripherally with the AGEOD source .xls/DB files. So AGElint works outside "the system". It might be said that if you muck with the game data text files, you are on your own and should expect no official support from AGEOD. Might be so. You might be advised also to just wait ... and wait ... for the next patch, beta or official. But for how long? AGEOD is swamped with work lately; and as always -- but exacerbated by recent developments -- is more than usually undermanned. Projects, and support, languish. Patches get bottlenecked. Bug fixes pile up in The Queue. There are some very good reasons for all of this, and we should all cut AGEOD lots of slack. But in the meantime, we want to play our games, right? We want our fun, and we want it now! AGElint, and the AGElint QA/bug check reports, give us something to do while we wait. Or we roll up our sleeves, dig deep, and begin fixing the games to our better satisfaction sooner rather than later. Knowledge is power, and AGElint is all about empowerment -- the players' empowerment. But enough of the preamble. On to the meat and potatoes...) Reports included in the agelint_rus_104_20111020.zip file: chklint_rus_104_20111020_error_rpt.txt chklint_rus_104_20111020_warning_rpt.txt chkaliases_rus_104_20111020_lst.txt chkaliases_rus_104_20111020_pat.txt chkaliases_rus_104_20111020_rpt.txt chkaliases_rus_104_20111020_sorted_rpt.txt chklocals_rus_104_20111020_lst.txt chklocals_rus_104_20111020_rpt.txt chklocals_rus_104_20111020_sorted_rpt.txt chkimages_rus_104_20111020_lst.txt chkimages_rus_104_20111020_rpt.txt chkimages_rus_104_20111020_sorted_rpt.txt chkfiles_rus_104_20111020_lst.txt chkfiles_rus_104_20111020_rpt.txt chkfiles_rus_104_20111020_sorted_rpt.txt The chklint_rus_104_20111020_error_rpt.txt file has content like so: quote:
[...] Events/CaucasusSetup.sct, Thu Dec 30 2010 10:39:56 Events/FinlandSetup.sct, Tue Jun 28 2011 17:24:38 Events/GRNAI.sct, Mon Nov 8 2010 13:51:40 ERROR: in Events/GRNAI.sct, at (or before) line 102: syntax error: #A# (0x41), #Aera# in event evt_nam_AI_GRNzoneKuban: 93 94 SelectFaction = $GRN 95 StartEvent = evt_nam_AI_GRNzoneKuban|1|0|NULL|NULL|NULL|NULL 96 97 Conditions 98 99 CheckAILevel = 1 100 MinDate = 1917/11/01 101 MaxDate = 1923/01/01 102> SelectSubUnits = Aera $Area_Kuban;FactionTags $GRN;Domains $Land 103 EvalSubUnitCount = >=;1 104 105 Actions 106 AI.SetLocalInterest = $Kurganinsk;200;$Eysk;200;$Akhtarsk;200;$Kanevskaya;200;$Temriuk;200;$Korenovsk;200;$Romanovski Khoutor;200;$Taman;200;$Novorossiysk;200;$Gelendzhik;200;$Ekaterinodar;200;$Krymsk;200;$Goriachiy Klyuch;200;$Maikop;200;$Solnechnodolsk;200;$Nevynominsk;200;$Essentuki;200;$Tuapse;200;$Mostovskoy;200;$Batalpachinskaya;200;$Teberda;200;$Sochi;200;$Elbrus Mountain;200;$Tikhoretskaya;200;$Armavir;200; 107 108 EndEvent 109 110 SelectFaction = $GRN 111 StartEvent = evt_nam_AI_GRNKubanend|1|0|NULL|NULL|NULL|NULL http://www.ageod.net/agewiki/SelectSubUnits Syntax: SelectSubUnits = Region <RgnUID>;Area <AreaUID>;Families <Fam1> <Fam2> ...;Models <Mdl1> <Mdl2> ... ;FactionTags <Tag1> <Tag2> ... ;Domains <_domLand> <_domNav> <_domAir>;<Attributes>;Generations <ModelGen1> <ModelGen2> ... [...] A list of all checked files, with date/time stamps (so you know precisely the data file you are dealing with). And if a problem is found, an ERROR (or WARNING or NOTICE) stanza of the problem, including: - an ERROR (or WARNING or NOTICE) statement, summarizing the problem
- the affected event, if occurring within an event
- the error line, marked with a >, surrounded by x lines of context (in these reports, 9 lines before and after)
- a URL to the AGEOD Wiki page for the indicated command, if there is one
- a short syntax summary (not available in all cases)
NOTE where it says "at (or before) line ..." For technical reasons, the AGElint software can't always determine precisely the error location. If you don't see the problem in the indicated line, be sure to check the previous line (and in a few rare cases, even before that)! Here is another interesting chklint example: quote:
ERROR: in Events/GRNAI.sct, at (or before) line 1031: missing field (duplicate ;;) in event evt_nam_AI_GRNzoneTaurida: 1022 Conditions 1023 1024 CheckAILevel = 1 1025 MinDate = 1917/11/01 1026 MaxDate = 1923/01/01 1027 SelectSubUnits = Aera $Area_Taurida;FactionTags $GRN;Domains $Land 1028 EvalSubUnitCount = >=;1 1029 1030 Actions 1031> AI.SetLocalInterest = $Berdjiansk;200;$Vasylivka;200;$Melitopol;200;$Kakhovka;200;$Akimovka;200;$Perekop;200;$Klyutchevoie;200;$Skadovsk;200;$Dzhankoi;200;$Eupatoria;200;$Simferopol;200;$Zuya;200;$Sevastopol;200;$Feodosia;200;$Kertch;200;$Dnieper Estuary;200;$Dnieper;200;;200;$Kamenskaya;200;$Novocherkassk;200;$Rovenki;200;$Rostov;200;$Taganrog;200; 1032 1033 EndEvent 1034 1035 SelectFaction = $GRN 1036 StartEvent = evt_nam_AI_GRNTauridaend|1|0|NULL|NULL|NULL|NULL 1037 1038 Conditions 1039 1040 CheckAILevel = 1 http://www.ageod.net/agewiki/AI.SetLocalInterest Syntax: AI.SetLocalInterest = RegionUID1;Coeff1;RegionUID2;Coeff2 .. Do you see the problem? Do you see the ';200;;200;', where a region UID is missing between the dual 200s? Sometimes looking for the problem can be like looking for a needle in a haystack. Where's Waldo? WARNINGs, in the chklint_rus_104_20111020_warning_rpt.txt file, are similar: quote:
WARNING: in Events/RUS Drang Misc Events.sct, at (or before) line 123: suspicious, undocumented usage of Theater in event evt_nam_GER_FullWar: 114 SelectRegion = $Eastern Turkey 115 116 SelectRegion = $Eastern Turkey 117 SelectRegion = $Eastern Turkey 118 BlockState = 0 119 120 SelectRegion = $Anatolia 121 SelectRegion = $Anatolia 122 BlockState = 0 123> SelectSubUnits = Theater $EventArea_Caucasus;FactionTags TUR;OnlyNPermFixed 124 AlterCuSubUnit = AlterCuSubUnit;ApplyToList;SetFixing 0 125 SelectSubUnits = Arear $Area_Central_Powers;FactionTags TUR;OnlyNPermFixed 126 AlterCuSubUnit = AlterCuSubUnit;ApplyToList;SetFixing 0 127 128 SelectFaction = $GER 129 ChangeFacMorale = 5 130 131 SelectFaction = $RED 132 ChangeFacMorale = 1 http://www.ageod.net/agewiki/SelectSubUnits Syntax: SelectSubUnits = Region <RgnUID>;Area <AreaUID>;Families <Fam1> <Fam2> ...;Models <Mdl1> <Mdl2> ... ;FactionTags <Tag1> <Tag2> ... ;Domains <_domLand> <_domNav> <_domAir>;<Attributes>;Generations <ModelGen1> <ModelGen2> ... But unlike the error report, where the ERRORs are usually "syntax error ...", the WARNINGs are usually more explicit. No guesswork! In the chklint WARNING report, the problems are: quote:
[root@telemann agelint]# egrep "^WARNING" chklint_rus_104_TEST_warning_rpt.txt | awk -F: '{print $NF}' | sort | uniq -c | sort -n 1 MinDate 1922/12/01 same as MaxDate 1922/12/01 1 needless leading | 1 suspicious, undocumented usage of a number instead of sound ID 6 no Actions section 6 suspicious, undocumented usage of Theater 11 suspicious, undocumented usage of $gmaMCEvent as GameActorUID 12 no Conditions section 13 missing field (duplicate ||) 77 suspicious, undocumented usage of ; as field separator 383 suspicious, undocumented usage of Line in StartEvent That is, there are for example 383 instances of the "problem" "suspicious, undocumented usage of Line in StartEvent" in all of the checked data files. NOTE: I make no claim about the significance or insignificance of any reported bug, problem, glitch, or anomaly. Whether or not it impacts game play, or goes entirely unnoticed. It's up for you to decide, and for us to determine. (If over time we agree that something is not worth reporting, or is not in fact any kind of problem, I will omit it from the reports.) But I think we can all agree that misspelling "Area" as "Aera" in a SelectSubUnits statement most likely signifies something important, and very possibly breaks the affected event. (ALSO: I too make mistakes! Where I am wrong, I will fix it. Where there is a difference of opinion, or a difference in priorities, I may or may not make changes -- to the AGElint toolkit. Soon to be released. So you can use it, and if you can fix it, to suit your personal tastes.) Here are the reported ERRORs, with instance counts, in the chklint error report: quote:
[root@telemann agelint]# egrep "^ERROR" chklint_rus_104_TEST_error_rpt.txt | awk -F: '{print $NF}' | sort | uniq -c | sort -n ... 1 #4# (0x34), #4# 1 #5# (0x35), #50 #PoliticalUnit## 1 #C# (0x43), #ChgRgnDecisionFP# 1 #D# (0x44), #DescEvent# 1 #E# (0x45), #EnemyEnemy# 1 #e# (0x65), #evt_desc_RED_IvanovoTankFactoryCaptured# 1 #K# (0x4b), #Klyuch# 1 #M# (0x4d), #MindDate# 1 #O# (0x4f), #Orel# 1 #R# (0x52), #REDLET# 1 #R# (0x52), #Reg# 1 #r# (0x72), #rd# 1 #s# (0x73), #symbol_general_2.png# 1 #T# (0x54), #TurnIndex# 2 # 2 #$# (0x24), #$Kiev# 2 #$# (0x24), #$Moscow# 2 #$# (0x24), #$POL# 2 #$# (0x24), #$Yurgamisk# 2 #1# (0x31), #1923# 2 #A# (0x41), #AlterCuSubUnit# 2 #A# (0x41), #Arear# 2 #E# (0x45), #Elets# 2 #E# (0x45), #Erroneous# 2 #F# (0x46), #FixedDate# 2 #N# (0x4e), #NULL# 2 #P# (0x50), #Probability# 3 #$# (0x24), #$evt_nam_RED_PartialMobilization_AIActivate# 3 #-# (0x2d), #-8# 3 #_# (0x5f), #_# 3 bad uid reference (duplicate $$) 3 #C# (0x43), #COccurs# 3 #S# (0x53), #SetEvtOccurs# 4 #$# (0x24), #$Austria# 4 #$# (0x24), #$Bavaria# 4 #$# (0x24), #$Bohemia# 4 #$# (0x24), #$Germany# 4 #$# (0x24), #$Hungary# 4 #$# (0x24), #$Kiel# 4 #$# (0x24), #$Silesia# 4 #$# (0x24), #$WHI# 4 #A# (0x41), #AI.SetLocalInterest# 4 mistaken # 4 #P# (0x50), #PoliticalUnit## 4 #S# (0x53), #Shakhty# 5 #$# (0x24), #$Helsinki# 5 #$# (0x24), #$mdl_GER_Art4# 5 #E# (0x45), #EndEvent# 6 #C# (0x43), #ChgVPCount# 7 #.# (0x2e), #.# 7 #1# (0x31), #1# 8 #D# (0x44), #DICE# 9 mistaken trailing $ 10 #=# (0x3d), #=# 10 missing Coeff in AI.SetLocalInterest 10 missing RegionUID in AI.SetLocalInterest 10 mistaken leading ; 11 #$# (0x24), #$Maikop# 11 #;# (0x3b), #;# 17 #C# (0x43), #CurOccurs# 92 missing field (duplicate ;;) 110 #A# (0x41), #Aera# As you can see, there are 110 instances of the "Aera" misspelling. And perhaps 110 events significantly undermined by a simple spelling mistake. There is one other report, the chklint warning report, that I have omitted from this collection. Its problem summary: quote:
[root@berto agelint]# egrep "^NOTICE" chklint_rus_104_20111020_notice_rpt.txt | awk -F: '{print $NF}' | sort | uniq -c | sort -n 7008 needless trailing ; 85780 needless trailing | 85780 "needless trailing |" -- that's a lot of "problems"! In the chklint NOTICE report, I have isolated the less important (perhaps not at all important), more nitpicky, and often (much) more numerous anomalies. You might safely ignore these altogether. (And/or wait for the release of the AGElint source code package, where I will provide tools to fix these and other common problems automatically! ;)) Moving on to the other reports... The chkaliases reports show all "bad" alias references -- references in the data files to non-existent, unregistered (in the Aliases/*.ini files) UIDs and aliases. Bad alias references are often due to simple misspellings. According to the devs, bad alias references are among the most important of the data file errors (for example, bad alias references gave rise to the infamous PON North Pole bug) and deserve your attention. The file chkaliases_rus_104_20111020_lst.txt lists all of the "bad" alias references, with instance counts: quote:
[root@telemann agelint]# head -n 20 chkaliases_rus_104_20111020_lst.txt 138 AIAff0_inf 53 AIAff2_inf 52 AB_French-Greek 51 AIAff3_cav 48 uni_POL_Gar3 48 AIAff4_bad 41 AB_Poles 38 Ekaterinbourg 37 foeCounterer 36 Ekaterinovslav 30 Volynskyt 26 Saruymir 20 AB_Anarchist 16 Rojitche 16 AIAff1_mil 15 mdl_WH3_Sup 15 AIAff2_mil 14 Theater_Central Russia 12 AIAff5_Raid 11 Baltrpa [...] And the file chkaliases_rus_104_20111020_pat.txt shows each "bad" alias ref, with suggested matching aliases/UIDs actually found registered in the Aliases/*.ini files, for example: quote:
WoodedHill $WoodedHills = 15 $WoodedHillsTropical = 47 So, for example, for the bad alias ref WoodedHill (singular), the suggested registered aliases are WoodedHills and WoodedHillsTropical. In many cases, Ekaterinbourg for example, the bad alias refs are simple misspellings, and our automated matching algorithm can't determine a suggested match, or matches. You will have to play detective! The AGElint chklocals reports are much like the chkaliases reports, except they deal in "bad" localizations -- referenced localizations not found in the Settings/*.csv files. In many cases, "bad" localizations don't matter! The chkimages reports show referenced, non-existent image files. In some cases, the problem is merely due to an extra space tacked onto the file name end; in other cases, due again to simple misspellings. The chkfiles reports show referenced, non-existent non-image files. I am happy to report that in RUS 1.04 there are zero problems of this type! In RUS 1.04, there are quote:
[root@telemann RUS]# find Aliases Events GameData Includes Scens Scripts -print | wc -l 6074 6074 game data text files, and AGElint checks them all! Or just about all. I have a file exclude mechanism that excludes non-referenced data files, especially Events & Includes files not referenced by any scenario. (These might be data files for scenarios in the making, but not yet released. Or test files. Or other clutter. Probably best to ignore.) For this AGElint RUS 1.04 QA/bug check, I have excluded from the reports the following: quote:
[root@telemann agelint]# cat excludes.rus.dat # rus excludes (Test|Parse|Samples|CzechLegion) Scripts/Script.ini Events/2-CzechLegion1918.sct Events/2-CzechLegion1918Demo.sct Events/AigarPolishrussowar.sct Events/POLAIrpwar.sct Events/RegistrySamples.sct That is: (a) any filename matching in part any of "Test", "Parse", "Samples", or "CzechLegion"; and (b) any of the other listed files. (Evidently, and AFAIK, CzechLegion1918 is a scenario that never saw the light of day.) There is a lot of material here. And lots of things to fix. We can only speculate how fixing these hundreds (thousands even) of bugs, problems, glitches, anomalies might impact RUS game play. But it might be interesting to find out! :) And remember: Soon I will be releasing the AGElint toolkit so that you the players (and the devs, too, to the extent that they wish) can routinely, in automated fashion, QA/bug check RUS (and all the other AGEOD games!). Think of it: The devs give it their best effort, then you can build on that effort. Over time, from patch to patch, fewer and fewer bugs. Better and better game play. Everybody wins! :thumbsup: Enjoy!
< Message edited by berto -- 10/23/2011 5:50:26 AM >
_____________________________
Early MusiChicago, http://earlymusichicago.org PIKT, http://pikt.org Campaign Series Lead Programmer, http://www.matrixgames.com/forums/tt.asp?forumid=226 AGElint debugging toolkit, http://www.matrixgames.com/forums/tm.asp?m=2978333
|