Matrix Games Forums

Space Program Manager will be launching on SteamCome and see us during the Spieltagen in Essen!New Screenshots for Pike & ShotDeal of the Week Command: Modern Air/Naval Operations WOTYCommand: Modern Air/Naval Operations WOTY is now available!Frontline : The Longest Day Announced and in Beta!Command gets Wargame of the Year EditionDeal of the Week: Pandora SeriesPandora: Eclipse of Nashira is now availableDistant Worlds Gets another update
Forums  Register  Login  Photo Gallery  Member List  Search  Calendars  FAQ 

My Profile  Inbox  Address Book  My Subscription  My Forums  Log Out

RE: AGElint v1.1 progress report

 
View related threads: (in this forum | in all forums)

Logged in as: Guest
Users viewing this topic: none
  Printable Version
All Forums >> [Current Games From Matrix.] >> [World War I] >> Revolution Under Siege >> Mods and Scenarios >> RE: AGElint v1.1 progress report Page: <<   < prev  3 4 5 [6] 7   next >   >>
Login
Message << Older Topic   Newer Topic >>
RE: AGElint v1.1 progress report - 1/12/2012 8:11:55 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Thanks! I'll remove that from the error list.

_____________________________

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

(in reply to Chliperic)
Post #: 151
RE: AGElint v1.1 progress report - 1/12/2012 10:48:27 PM   
Chliperic


Posts: 955
Joined: 3/21/2010
Status: offline
I've myself adopted the convention to use always the $ sign for such commands, because looking back to a code with multiple ways of writing a command is source of confusion. The better for an error if it works nowaday, but potential loss of time when reading back events a few weeks or months later.Some could say the offical csvsplitter could do this automatically, except time lost by the official way of scripting is so huge a few moments of doubts aren't a real consideration for me.

< Message edited by Chliperic -- 1/12/2012 10:50:42 PM >


_____________________________

Fatal Years mod for RUS version 1.07
Struggle for a Vast Future 2.0 for AACW in advanced beta:

http://moddercorner.com/

(in reply to berto)
Post #: 152
RE: AGElint v1.1 progress report - 1/12/2012 11:18:19 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

I see some kinds of script and data anomalies and I wonder: how could the CSV Splitter methodology have caused that?

I believe it's a flawed implementation that permits too much laxness, allows too many exceptions and alternative ways of doing things. It causes confusion. Bloats the code and slows down program execution. Not to mention creates a rich feeding ground for bugs.

Precisely specify the script and data formats, then enforce that precision in the engine code.

Lay down the law, then make the devs/modders obey it!

_____________________________

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

(in reply to Chliperic)
Post #: 153
RE: AGElint v1.1 progress report - 1/13/2012 12:11:45 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Is SelUnqSubUnit more appropriately in Conditions or Actions? I see examples of both usages.

_____________________________

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

(in reply to berto)
Post #: 154
RE: AGElint -- an AGE debugging toolkit - 1/13/2012 2:11:50 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

If anybody thinks that AGElint is poppycock, that I'm just making this up, please read this:

http://en.wikipedia.org/wiki/Static_code_analysis

http://en.wikipedia.org/wiki/Automated_code_review

Proactive, pre-execution debugging (AGElint) vs. reactive, post-execution debugging (the traditional way).

Static analysis (AGElint) vs. dynamic analysis (playtest the game, inspect the log files).

Each approach has its strengths and weaknesses, but together they've got the bugs surrounded -- no escape!

_____________________________

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

(in reply to berto)
Post #: 155
AGElint -- v1.1.0rc5 beta release - 1/13/2012 9:49:36 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

There have been so many improvements and changes in AGElint since the previous official release (AGElint_1.00.20111230), that I have decided to issue a beta (release candidate) version now. Going forward, my new policy will be to issue release candidates frequently, every few days or so. This is so you can, if you wish, keep up with the latest and greatest (if not quite polished and thoroughly debugged) AGElint.

Here is the latest beta AGElint version, 1.1.0rc6:

NOTE: AGElint version 1.1.0rc6 has fully reviewed, and thoroughly vetted, chklint.pl (agelint) results for: ACW, NCP, ROP, RUS & WIA.

This beta version has many improvements and bug fixes, most notably:

  • Removing genericalness from the txt.y parser (a significant revamp).
  • Better describing errors, and not so readily defaulting to the generic, often uninformative "syntax error".
  • Much fewer false positives (and better error messages making clear why reported errors are not really "false").
  • New chkselfac.pl & chkselreg.pl scripts.

And still many other changes besides.

I am currently in the process of vetting this 1.1.0rc* for "official" release early this week. Although some cleanup is still required (see below), this beta version is quite usable, and well worth your time investment.

There are still a few buggy, unexplained false positives, but no more than a dozen across all five of the analyzed AGEOD games (no vetting for PON). Good enough for now.

Still to be done before the official release: Update docs, and tie up a few other odds & ends.

Enjoy!

< Message edited by berto -- 1/16/2012 9:09:35 PM >


_____________________________

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

(in reply to berto)
Post #: 156
RE: AGElint -- v1.1.0rc1 beta release tryout - 1/13/2012 11:00:07 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Trying out a new AGElint version, while retaining your older version(s).

Here is an easy way to try out an AGElint beta release without disturbing your previous working release(s).

If you have installed AGElint in a subfolder of your home directory, you might proceed like so:



Berto@brito ~/Games/AGEOD
$ ls [list your current AGElint installation(s)]
agelint

Berto@brito ~/Games/AGEOD
$ mv agelint agelint.bak [rename your previous agelint folder to a backup]

Berto@brito ~/Games/AGEOD
$ mkdir agelint [make a new agelint folder]

Berto@brito ~/Games/AGEOD
$ cd agelint [change into that new agelint directory]



Download the latest AGElint beta (or whatever) release into this newly made agelint directory.



Berto@brito ~/Games/AGEOD/agelint
$ ls [list the downloaded distribution .zip file]
agelint.windows.1.1.0rc2.20120114.zip

Berto@brito ~/Games/AGEOD/agelint
$ unzip agelint.windows.1.1.0rc2.20120114.zip [unzip the distribution .zip file]

Berto@brito ~/Games/AGEOD/agelint
$ cp -p agelint.conf agelint.conf.bak [make a backup of the distribution agelint.conf]

Berto@brito ~/Games/AGEOD/agelint
$ cp -p ../agelint.bak/agelint.conf agelint.conf [copy into your new directory your previous version agelint.conf]

Berto@brito ~/Games/AGEOD/agelint
$ make [make the new agelint executable]

Berto@brito ~/Games/AGEOD/agelint
$ ./agelint +V [verify that you can run the new version, by showing the version #]

Berto@brito ~/Games/AGEOD/agelint
$ make check [run the 'make check']



Then use the new AGElint as you wish.

If you want to return to your previous version, just change directory into that older installation



Berto@brito ~/Games/AGEOD/agelint
$ cd ../agelint.bak

Berto@brito ~/Games/AGEOD/agelint.bak
$ ls [list your old stuff]



The older version should still work fine, too.

I sometimes remind myself that maybe you don't know much Linux/Cygwin Windows yet, and are reluctant to go off the beaten path. So I demonstrate some HOW-TOs from time to time, like this one.

Hope this helps.

< Message edited by berto -- 1/14/2012 11:31:31 PM >


_____________________________

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

(in reply to berto)
Post #: 157
AGElint: chksel*.pl results - 1/16/2012 6:41:58 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Barring the unexpected, AGElint 1.1.0 "official" should be released Tuesday morning.

I am currently in the process of vetting AGElint 1.1.0rc* for "official" release. All is going well.

After fixing the new chksel.pl script (with links to that script: chkselfac.pl, chkselreg.pl), I have discovered these interesting bugs in WIA:



[root@telemann agelint]# cat chkselfac.wia.out
/media/KINGSTON/Games/AGEOD/Wars in America/WIA/Events/55Replacements.sct:233: ENG not found
/media/KINGSTON/Games/AGEOD/Wars in America/WIA/Events/55Replacements.sct:235: ENG not found
/media/KINGSTON/Games/AGEOD/Wars in America/WIA/Events/55Replacements_COL.sct:239: ENG not found
/media/KINGSTON/Games/AGEOD/Wars in America/WIA/Events/55Replacements_COL.sct:241: ENG not found



Confirming:



[berto@telemann Factions]$ egrep FactionTag *
0America.fac:FactionTag = USA
10Colonials.fac:FactionTag = COL
1France.fac:FactionTag = FRA
2England.fac:FactionTag = GBR
3Spain.fac:FactionTag = SPA
4Indian.fac:FactionTag = IND
5Holland.fac:FactionTag = NED
6Canada.fac:FactionTag = CAN
7Germany.fac:FactionTag = GER
8Indifra.fac:FactionTag = INF
9indigbr.fac:FactionTag = ING

[berto@telemann Events]$ egrep "SelectFaction.+ENG" *.sct
55Replacements_COL.sct:SelectFaction = $ENG
55Replacements_COL.sct:SelectFaction = $ENG
55Replacements.sct:SelectFaction = $ENG
55Replacements.sct:SelectFaction = $ENG



I am happy to report that across all five checked AGEOD games (no PON), there appear to be no other SelectFaction or SelectRegion "bad" alias refs!

In fairness, I should say that, from an AGElint perspective, WIA is generally the cleanest, most bug-free of all the AGEOD games.

Alas, from an AGElint perspective, RUS is generally the most buggy of all the AGEOD games.

But not RUS/Fatal Years! Fatal Years is close to being squeaky clean.

(As for PON, I have no recent opinion about that game.)

< Message edited by berto -- 1/16/2012 8:41:01 PM >


_____________________________

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

(in reply to berto)
Post #: 158
AGElint: refined error messaging - 1/17/2012 11:15:31 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Here are some ways we have refined the agelint error messaging to clarify, reduce confusion, and dispel the appearance of false positives.

One example:



Aliases/NATO Families Images pre Steam.ini, Fri Dec 10 2010 15:06:48

ERROR: in Aliases/NATO Families Images pre Steam.ini, at (or near) line 42: line-specific or other contextual syntax error (else file doesn't end with CR/LF): #s# (0x73), #symbol_admiral_2#

33 $Imgfam76 = symbol_navalengineer.png^M
34 $Imgfam91 = symbol_warship.png^M
35 $Imgfam92 = symbol_warship.png^M
36 $Imgfam93 = symbol_smallsteam.png^M
37 $Imgfam94 = symbol_privateer.png^M
38 $Imgfam95 = symbol_transport.png^M
39 $Imgfam96 = symbol_ironclad.png^M
40 $Imgfam97 = symbol_privateer.png^M
41 $Imgfam112 = symbol_balloons.png^M
42> $Imgfam198 = symbol_admiral_2.png



The problem? The ACW "Aliases/NATO Families Images pre Steam.ini" file fails to end "properly", with a proper CR/LF sequence. We can see this by cat'ing the file:



[root@berto agelint]# cat "/media/KINGSTON/Games/AGEOD/AGEod's American Civil War/ACW/Aliases/NATO Families Images pre Steam.ini"
// Pre-Steam

$Imgfam0 = symbol_general_2.png
$Imgfam11 = symbol_armyHQ.png
$Imgfam12 = symbol_hq1.png
$Imgfam21 = symbol_inf.png
...
$Imgfam96 = symbol_ironclad.png
$Imgfam97 = symbol_privateer.png
$Imgfam112 = symbol_balloons.png
$Imgfam198 = symbol_admiral_2.png[root@berto agelint]#



Do you see where the command prompt, '[root@berto agelint]#' immediately follows the 'symbol_admiral_2.png'?

This in itself presents no problem to the AGE engine. The data file will process just fine. But it creates insuperable difficulties for the agelint lexer! Since we really can't solve the lexer problem generally (without adding excessive code complications, or suppressing other possibly legitimate error messages), we mention parenthetically that possible explanation beyond the more generic "line-specific or other contextual syntax error." Note that, in the error output, you can infer the end-of-file, no CR/LF problem because you can see lines of context before the indicated error line but not afterwards.

The "line-specific or other contextual syntax error" -- that in itself is an improvement over the previous, simply stated "syntax error". In conjunction with the 'at (or near) line ...', it reminds you to look not just at the indicated line but also at the context. Again, the parsing technology is not always capable of pinpointing the exact point of syntax error, so you sometimes have to look around (usually before). Again, this is not a failure unique to agelint. The C and Perl (and other) compilers also share this limitation. (See earlier posts.)

AGElint 1.1.0 does a better job of categorizing bugs as ERRORs vs. WARNINGs (vs. NOTICEs). Generally speaking, you should see fewer ERRORs (which tend to have the more generic "syntax error ..." messages), and more WARNINGs (with specific and clearly stated warning messages).

After a more careful referencing of the AGEWiki, I have coded in many more exceptional parser rules. The result: fewer false positives still.

I have fully reviewed, and thoroughly vetted, chklint.pl (agelint) results for: ACW, NCP, ROP, RUS & WIA.

If you see what you think might be a false positive, think about it first, look around, try to see the problem. If you still think it's a false positive, please report it here in the forum! Then we can debate whether or not it's real, and if need be I will code the necessary adjustment(s) in future AGElint releases.

I think you will find the error reports in AGElint 1.1.0 to be more accurate, with fewer distractions and aggravations than ever before.

If not, we will strive to do better!

< Message edited by berto -- 1/17/2012 8:31:41 PM >


_____________________________

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

(in reply to berto)
Post #: 159
AGElint -- v1.1.0 official release - 1/17/2012 2:21:45 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Here is the second "official" AGElint version, 1.1.0 (20120117):

AGElint version 1.1.0 features a substantially revamped txt.l lexer and txt.y parser, refined error messaging, and fewer false positives.

Here is a more detailed list of changes in AGElint 1.1.0:



Changes from AGElint_1.00 (20111230) to AGElint_1.1.0 (20120117):

  • Removed most genericalness from the txt.y parser, and reorganized the event syntax sequence (significant revamps).
  • Refined agelint error categorization and error messages, not so readily defaulting to the generic, often uninformative "syntax error".
  • Much reduced false positives (with better error messages making clear why reported errors are not really "false").
  • Fully reviewed, and thoroughly vetted, chklint.pl (agelint) results for: ACW, NCP, ROP, RUS & WIA.
  • Added any missing command Syntax: descriptions in txt.y.
  • Added chkloc(), for checking command location (still a work-in-progress).
  • Remade CHKINT() as a function, chkint().
  • Added many more chkint() & txterrmsg() calls in txt.y.
  • Implemented the DECHO() macro in txt.l.
  • Further refined pattern matches and RETURN*()s in txt.l
  • Added chksel.pl, and two links to that script, chkselfac.pl & chkselreg.pl, for checking SelectFaction & SelectRegion alias refs.
  • Added islist_selects (in support of the chksel*.pl scripts).
  • Squelched some problematic chkaliases.pl cases (for ACW).
  • Fixed $GAMEDIR initializations in chklint.pl.
  • Bug fixes.
  • Other minor code & doc fixes/changes.



AGElint 1.1.0 is the first release I am truly happy with. Some problems remain, but they are hidden, behind the scenes. You should get much useful results, with fewer distractions and aggravations, in this latest official AGElint version.

The "hidden" problems? They include:

  • A loosely specified event syntax sequence. Due to some technical quirks with the bison (yacc) parser (the "lookahead" mechanism), I am yet unable to report erroneous action statements in Conditions, condition statements in Actions, and mistakenly omitted Conditions and Actions statements. This will be addressed in future versions.
  • In some situations, errors/warnings will mask subsequent errors/warnings. I need to improve parser 'error' recovery, for detecting *all* errors etc. in a given data file.

There are other things I still want to implement -- see the distribution TODO file -- but in general I am pleased with AGElint 1.1.0. I hope you will be, too.

Enjoy!

< Message edited by berto -- 1/17/2012 2:23:15 PM >


_____________________________

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

(in reply to berto)
Post #: 160
more AGEWiki errors -- NOT! - 1/19/2012 7:56:32 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

At the AGEOD AGEWiki

AGEWiki

there are at least sixteen different command reference pages where the indicated Syntax: specification (and example, if any) is in conflict with actual usage, as revealed by an inspection of the various AGEOD game data files.

...

Having been fed an important clue about the interchangeability of the | and ; as separator character, I retract my comments about alleged AGEWiki errors in that regard. (And: see my [oft-repeated] quote two posts following this one.)

Adapting the AGElint parser rules to this new info will be easy.

Still fewer, needless false positives. The truth wins out. Yay!

< Message edited by berto -- 1/19/2012 8:19:29 PM >


_____________________________

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

(in reply to berto)
Post #: 161
RE: more AGEWiki errors - 1/19/2012 1:05:52 PM   
lodilefty


Posts: 75
Joined: 7/28/2008
Status: offline
http://www.ageod.net/agewiki/Separator_Characters



_____________________________

AGEOD Volunteer
Visit the AGE Wiki at http://www.ageod.net/agewiki/Main_Page

(in reply to berto)
Post #: 162
RE: more AGEWiki errors - 1/19/2012 1:59:47 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline
quote:

ORIGINAL: lodilefty

http://www.ageod.net/agewiki/Separator_Characters


Thanks for the tip. It was helpful.

quote:

ORIGINAL: berto

NOTE: I make no claim about the significance or insignificance of any discovered bug, problem, glitch, or anomaly. Whether or not it impacts game play, or goes entirely unnoticed. Whether in the larger scheme of things it's important, or unimportant. It's up for you to decide, and maybe for us as a community to determine. (If over time we agree that something is not worth reporting, or is not in fact any kind of problem, I will program it out of the toolkit.)

FURTHER NOTE: I offer no judgment about AGEOD, or its games. Nothing asserted, nothing implied. AGElint is a tool, not a weapon. We use it to build better games, not to tear down any company or anybody.

... This is the current state of AGElint, which reflects my imperfect and evolving understanding of the AGE system and its scripting. I make my share of mistakes, but except for honest differences of opinion, I correct my goofs!



< Message edited by berto -- 1/19/2012 3:36:41 PM >


_____________________________

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

(in reply to lodilefty)
Post #: 163
AGElint -- v1.1.1 official release - 1/19/2012 8:06:25 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Here is the third "official" AGElint version, 1.1.1 (20120119):

AGElint version 1.1.1 features some minor changes to the txt.y parser.

Here is a more detailed list of changes in AGElint 1.1.1:



Changes from AGElint_1.1.0 (20120117) to AGElint_1.1.1 (20120119):

  • Based on new info released at the AGEWiki (http://www.ageod.net/agewiki/Separator_Characters), relaxed checking of ; vs. | as field separator.



The practical significance of these changes is very little. I ran chklint.pl against all five of the analyzed AGEOD games (ACW, NCP, ROP, RUS & WIA), and there were no differences in the error reports. Nonetheless, I thought it important to keep up with new info, and insights, hence this new release.

NOTE: There are still discrepancies, not relating to the ; vs. | field separator issue, between the AGEWiki docs and actual game data usage. The several cases of this are noted in the txt.y parser comments.

There Will Be Bugs. And they will be fixed!

_____________________________

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

(in reply to berto)
Post #: 164
another game bug checking toolkit project - 1/25/2012 10:43:06 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

quote:

ORIGINAL: berto

AGElint 1.1.[1] is the first release I am truly happy with. Some problems remain, but they are hidden, behind the scenes. You should get much useful results, with fewer distractions and aggravations, in this latest official AGElint version.

...

The "hidden" problems? They include:

  • A loosely specified event syntax sequence. Due to some technical quirks with the bison (yacc) parser (the "lookahead" mechanism), I am yet unable to report erroneous action statements in Conditions, condition statements in Actions, and mistakenly omitted Conditions and Actions statements. This will be addressed in future versions.
  • In some situations, errors/warnings will mask subsequent errors/warnings. I need to improve parser 'error' recovery, for detecting *all* errors etc. in a given data file.

There are other things I still want to implement -- see the distribution TODO file -- but in general I am pleased with AGElint 1.1.[1]. I hope you will be, too.


Despite the "hidden" problems and the remaining TODOs, AGElint v1.1.1, the current "official" AGElint release, is more than "good enough" for now.

Over the near term, I am moving on to develop another *lint bug checking toolkit (sharing much of the same code and technologies in AGElint) for another non-AGEOD game system.

quote:

ORIGINAL: berto

How much further I take AGElint development depends on a lot of things, in particular

  • actual usage (not necessarily by me; I am finished running AGElint reports for others)
  • useful, constructive feedback (let us strive to keep negativity out of the discussion)
  • possibly other coders joining the effort (so AGElint is a community Open Source project)
  • user and player enthusiasm


I will return to developing, improving, and debugging AGElint as the need arises.

But for now, I've got that other game bug checking toolkit project to work on...

_____________________________

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

(in reply to berto)
Post #: 165
RE: another game bug checking toolkit project - 1/30/2012 3:59:39 PM   
Chliperic


Posts: 955
Joined: 3/21/2010
Status: offline
Installed and running on the last AACW beta patch. There are yet about 100 events bugged.

_____________________________

Fatal Years mod for RUS version 1.07
Struggle for a Vast Future 2.0 for AACW in advanced beta:

http://moddercorner.com/

(in reply to berto)
Post #: 166
RE: another game bug checking toolkit project - 1/30/2012 6:46:03 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

If you think it worthwhile, I can set aside temporarily my other *lint-like project and attempt to fix the unresolved AGElint issue of

  • A loosely specified event syntax sequence. Due to some technical quirks with the bison (yacc) parser (the "lookahead" mechanism), I am yet unable to report erroneous action statements in Conditions, condition statements in Actions, and mistakenly omitted Conditions and Actions statements. This will be addressed in future versions.

I don't think it should take me more than a day or two to fix this.

_____________________________

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

(in reply to Chliperic)
Post #: 167
recursive diffs of one AGEOD game install to another - 1/30/2012 9:03:29 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Here is a technique for determining all of the differences between two different AGEOD game installations, from one release to another.

For example, a recursive diff between the latest "official" RUS 1.04 and that version patched with RUS/Fatal Years 1.06RC:



Robert@roberto /cygdrive/c/Games/AGEOD
$ ls
Revolution under Siege Revolution under Siege FY

Robert@roberto /cygdrive/c/Games/AGEOD
$ diff -r "Revolution under Siege" "Revolution under Siege FY" 2>&1 | tee RUS.diff



The Cygwin (Unix/Linux) 'tee' command outputs to both screen and the specified file. If you prefer, you could instead avoid the screen output and just capture to the file with:



Robert@roberto /cygdrive/c/Games/AGEOD
$ diff -r "Revolution under Siege" "Revolution under Siege FY" 2>&1 > RUS.diff



You could then inspect the RUS.diff file, with either of:



Robert@roberto /cygdrive/c/Games/AGEOD
$ less RUS.diff

Robert@roberto /cygdrive/c/Games/AGEOD
$ view RUS.diff



or use NotePad (or your preferred Windows editor or file viewer) as you wish.

Here are some snippets from the RUS.diff file:



diff -r Revolution under Siege/!Profiler0.txt Revolution under Siege FY/!Profiler0.txt
1c1
< 12:19:48 AM (Reporting) TFileParser.MakeAliases 6803 Aliases loaded, out of 31 files
---
> 3:44:02 PM (Reporting) TFileParser.MakeAliases 7051 Aliases loaded, out of 31 files
Only in Revolution under Siege FY: FY.exe
Only in Revolution under Siege FY: Fatal Years 1.05.pdf
Only in Revolution under Siege FY: Fatal Years mod 1.06.zip
Only in Revolution under Siege FY: How to install the mod.txt
diff -r Revolution under Siege/RUS/Aliases/Areas_Aliases.ini Revolution under Siege FY/RUS/Aliases/Areas_Aliases.ini
1c1
< $Area_Kuban = 0
---
> $Area_Open_Seas = 0
56c56
< $Area_Open_Seas = 55
---
> $Area_Kuban = 55

[...]

diff -r Revolution under Siege/RUS/Aliases/MetaAreas_Aliases.ini Revolution under Siege FY/RUS/Aliases/MetaAreas_Aliases.ini
76,79c76,86
< $EventArea_WhiteAttackAnarchists = 154
< $EventArea_PolishIntervention = 155
<
<
---
> $Event_RepairRailroad = 154
> $Event_RepairRailroadWH3 = 155
> $Event_RepairRailroadWHI = 156
> $Industrial_Towns = 157
> $Odessa_French = 158
> $Kazan_check = 159
> $Arzamas_check = 160
> $Orel_check = 161
> $Tula_check = 162
> $Huliaipole_check = 163
> $Tzaritsyn_check = 164
diff -r Revolution under Siege/RUS/Aliases/TerrainsTypes.ini Revolution under Siege FY/RUS/Aliases/TerrainsTypes.ini
23a24,28
> $Beach = 19
> $Fort = 20
> $LandInterdictionLink = 21
> $TransitionLink = 22
> $City = 23
25,26c30,34
< $MajorFerry 25
< $Steppe = 29
---
> $MajorFerry = 25
> $NavalInterdictionLink = 26
> $LongTransitionLink = 27
> $VeryLongTransitionLink = 28
> $Steppes = 29

[...]

diff -r Revolution under Siege/RUS/Events/3-November1918.sct Revolution under Si
ege FY/RUS/Events/3-November1918.sct

[...]

433a434,435
> MaxDate = 1919/05/01
> Probability = 50
565c567
< FixType = 999
---
> FixType = 0
569a572
> FlavorName = A.V. Kolchak
576c579
< SelectRegion = $Odessa
---
> SelectRegion = $Gulf of Odessa
579,580c582,583
< SelectRegion = $Odessa
< StartEvent = evt_nam_Renforts_CMN_FrenchIntervention|1|2|evt_txt_Renforts_CMN_FrenchIntervention|Event-img_Renforts_CMN_FrenchIntervention|$Odessa|NULL
---
> SelectRegion = $Gulf of Odessa
> StartEvent = evt_nam_Renforts_CMN_FrenchIntervention|1|2|evt_txt_Renforts_CMN_FrenchIntervention|Event-img_Renforts_CMN_FrenchIntervention|$Gulf of Odessa|NULL
583c586
< MinDate = 1918/12/01
---
> MinDate = 1918/12/15
586c589
< Probability = 60
---
> Probability = 40
595,598d597
< SelectRegion = $Odessa
< SelectRegion = $Odessa
< BlockState = 0
<
600,601c599,601
< SelectRegion = $Odessa
< ChangeRgnOwner = UKR
---
> SelectRegion = $Gulf of Odessa
>
> SelectRegion = $Gulf of Odessa
604c604
< SelectRegion = $Odessa
---
> SelectRegion = $Gulf of Odessa
607c607
< SetKind = $Land
---
> SetKind = $Nav

[...]

diff -r Revolution under Siege/RUS/Events/CaucasusSetup.sct Revolution under Siege FY/RUS/Events/CaucasusSetup.sct
0a1,769
>
> NULL = NULL
>
>
> SelectFaction = $WHI
> StartEvent = evt_nam_WHI_CaucasusJoin_armydeploymentcondition1|1|0|NULL|NULL|NULL|NULL
>
> Conditions
> MinDate = 1918/12/01
>
> EvalEvent = evt_nam_RED_CaucasianDOW_Tracker;=;1
>
> Actions
>
>
> SetEvtOccurs = evt_nam_WHI_Caucasusarmydeploymentconditionfulfilled;CuOccurs;1
> SetEvtOccurs = evt_nam_WHI_Caucasusarmydeploymentconditionfulfilled;MaxOccurs;1
>
> EndEvent

[...]

diff -r Revolution under Siege/RUS/Events/REDAI1918.sct Revolution under Siege FY/RUS/Events/REDAI1918.sct
52c52
< AI.SetLocalInterest = $Kungrad;5;$Chodzenli;5;$Khiva;5;$Ust-Urt Steppe;5;$Mirzachirla;5;$Sarakhs;5;$Yerbent;5;$Bakhardok;5;$Kara Koum;5;$Tashauz;5;$Tedzhen;5;$Il Yaly;5;$Krasnovodsk;5;$Koturdebe;5;$Okarem;5;$Nebit Dag;5;$Madav;5;$Sharlavuk;5;$Kum Dag;5;$Bajgiran;5;$Kara-Kala;5;$Kazandzhik;5;$Bakharden;5;$Achkhabad;5;$Karabogaz Coast;5;$Chagyl;5;$Sarykamysskoe;5;$Karakum Lake;5;$Urgench;5;$Sumanaj;5;$Kizyl-Bajdak;5;$Turkmenistan Desert;5;$Gorelde;5;$Repetek;5;$Merv;5;$Uch-Adzhi;5;$Kerki;5;$Novyy Uzen;5;$Aqtau;5;$Shebir;5;$Zharmysh;5;$Kabanbay;5;$Bejneu;5;$Akzigit;5;$Sam Pervij;5;$Saura;5;$Fetisovo;5;$Senek;5;$Moynoq;5;$Kaplankyr;5;$Darvaza;5;$Bugdayly;5;$Monzhukly;5;$Kerpichli;5;$Bikuri;5;$Bayramaly;5;$Kyzyl HodzhREDzar;5;
---
> AI.SetLocalInterest = $Kungrad;5;$Chodzenli;5;$Khiva;5;$Ust-Urt Steppe;5;$Mirzachirla;5;$Sarakhs;5;$Yerbent;5;$Bakhardok;5;$Kara Koum;5;$Tashauz;5;$Tedzhen;5;$Il Yaly;5;$Krasnovodsk;5;$Koturdebe;5;$Okarem;5;$Nebit Dag;5;$Madav;5;$Sharlavuk;5;$Kum Dag;5;$Bajgiran;5;$Kara-Kala;5;$Kazandzhik;5;$Bakharden;5;$Achkhabad;5;$Karabogaz Coast;5;$Chagyl;5;$Sarykamysskoe;5;$Karakum Lake;5;$Urgench;5;$Sumanaj;5;$Kizyl-Bajdak;5;$Turkmenistan Desert;5;$Gorelde;5;$Repetek;5;$Merv;5;$Uch-Adzhi;5;$Kerki;5;$Novyy Uzen;5;$Aqtau;5;$Shebir;5;$Zharmysh;5;$Kabanbay;5;$Bejneu;5;$Akzigit;5;$Sam Pervij;5;$Saura;5;$Fetisovo;5;$Senek;5;$Moynoq;5;$Kaplankyr;5;$Darvaza;5;$Bugdayly;5;$Monzhukly;5;$Kerpichli;5;$Bikuri;5;$Bayramaly;5;$Kyzyl Hodzhanazar;5;
146c146
< EvalSubUnitCount = >=;5
---
> EvalSubUnitCount = >=;30
198c198
< EvalSubUnitCount = >=;5
---
> EvalSubUnitCount = >=;30
406c406
< EvalSubUnitCount = >=;5
---
> EvalSubUnitCount = >=;25

[...]

diff -r Revolution under Siege/RUS/Events/REDAIICEMARCH.sct Revolution under Siege FY/RUS/Events/REDAIICEMARCH.sct
185c185
< AI.SetLocalInterest = $Tikhoretskaya;200;$Ekaterinodar;200;$Novorossiyk;200;
---
> AI.SetLocalInterest = $Tikhoretskaya;200;$Ekaterinodar;200;$Novorossiysk;200;

[...]



And on and on.

In the diff output, things like '185c185' refer to line #s in the diffed files; '<' denotes lines in the first listed file (in the diff command); '>' denotes the second listed file.

Tons of interesting stuff there, including not a few bug fixes (changed parameters, fixed alias misspellings for example).

You can also use this 'diff -r' technique to track changes between AGEOD-released betas and "official" releases.

I am sure you will all find this recursive diff technique to be quite useful.

< Message edited by berto -- 1/31/2012 7:46:19 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

(in reply to Chliperic)
Post #: 168
RE: another game bug checking toolkit project - 1/31/2012 9:36:28 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

At the public AGEOD Forum

http://www.ageod-forum.com/showthread.php?t=23891&page=3

this (freely available, for anybody to read) exchange:

quote:

[Nikel:] Those Python check scripts is a tool similar to Berto's to detect bugs?

Does it mean that AGE engine next title will have less bugs?

Is Lafrite the author of both the Piton checks and the next game?

quote:

[PhilThib:] Yes, similar but does not require Linux and faster to operate, directly onto excel files sources

This help solve a lot of pre-release "bugs" or errors, although it will require a little bit of extra time, this is a great improvement...

Also, earlier in that message thread Lodilefty's thanking Lafrite for "the Python© script checking tools."

You all have no idea how happy I am to learn this. Truly.

There is more than one way to skin a cat.

Clearly, AGEOD is forever wedded to its .XLS DB-centric approach. No doubt, they will find any tool "faster to operate" that works "directly onto excel files sources." More power to them!

Although some of us might disagree about the merits of the .XLS DB-centric approach in the first place, and find it more convenient and faster to work directly on the end-product text files, avoiding the whole .XLS DB -> saved .CSV file -> CSV splitter -> text file rigramole altogether.

One way or the other, whatever works.

The data files for the AGE games are massive, amounting to hundreds of megabytes in tens of thousands of files. (In PON's case, there is over 1 gigabyte of data in 60,000+ files!)

In game data sets of that size: There Will Be Bugs. Lots and lots of them, you can be sure. What's important: facing the issue squarely, and resolving to do something about it. Something meaningful. Something powerful.

It is truly great to learn that AGEOD is applying automated tools and techniques, in whatever form, to improve its QA.

"In whatever form." "Whatever works." I sincerely believe that.

A few years ago, while working with the Magna Mundi development team, I wrote:

quote:

At first glance, I am impressed with Jamie550's Validator

http://forum.paradoxplaza.com/forum/showthread.php?t=428317

The most impressive thing is that, by exposing the guts of the system, by laying out the parser to user modification, we can adapt it to MagnaMundi use. I will busy myself with learning this tool and proceeding with the adaptation.

I might still develop my mmdebug program, if after all I still see a need for it, but it will suffer from: it will probably remain a Linux and/or Cygwin tool, hence will likely not be used by other than myself. The fact that anybody--including the MM devs--can use and adapt Validator is a powerful argument in its favor.

So, despite having worked long and hard on mmdebug (and its earlier eu3debug forebear), I was willing to stifle disappointment and pride and instead endorse the tool (Validator) that people would actually use.

A debugging tool (or toolkit) is pointless if nobody uses it. (Although, for the record: By now, over a dozen persons have downloaded AGElint, if only to have a look-see.) If AGEOD actually uses Lafrite's tool, it's a win-win situation: Less work for AGEOD, fewer bugs for us gamers. What's not to like?

Which tool is more powerful? In the overall development sequence, which tool gives faster results?

Which tool kills the most bugs?

May the best tool win!

I'd be happy to "lose" this "competition". Lose the battle, win the war.

Then I could set aside this very hard and time-consuming QA work and get back to actually playing games again!

< Message edited by berto -- 2/2/2012 7:15:29 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

(in reply to Chliperic)
Post #: 169
RE: another game bug checking toolkit project - 1/31/2012 11:41:42 AM   
Chliperic


Posts: 955
Joined: 3/21/2010
Status: offline
Too late.

Howewer, you were right.For my own use, agelint is unvaluable. And it may be used with windows 7.

_____________________________

Fatal Years mod for RUS version 1.07
Struggle for a Vast Future 2.0 for AACW in advanced beta:

http://moddercorner.com/

(in reply to berto)
Post #: 170
chkweathers.pl -- another script forthcoming - 2/1/2012 10:38:14 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

At the "RUS weather mod" thread

http://www.matrixgames.com/forums/tm.asp?m=2994074&mpage=1&key=�

post #5:

quote:

On a hunch, I did some data mining. And discovered still more default RUS weathers errors!

...

Recapping, we have at least the following errors in the default RUS weathers specification:

  • duplicate weather area region assignments: Alexandrovsk, Lake Ladoga, Pacific Ocean, Zalitch
  • weather area assignment in Areas.ini, not among Regions: Don River, Lappeenranta, Pieksamaki, Tuymazy
  • among Regions, no weather area assignment in Areas.ini: Aleksandrovsk, Don, Lappeenrenta, Pieksimaki, Wallachia, Zelenaya Roshcha (in effect, these regions have no assigned weathers!)

...

One more item to check with AGElint.

... In final AGElint form, these checks will take the form of a script, for example (something like): 'chkweathers.pl -g rus'.

Quoting myself again:

quote:

At present, AGElint is more than a beginning, but far from an ending. The dream is to code a set of utilities and capabilities to check all manner of AGEOD bugs/errors/glitches/anomalies... There's still much more untapped potential, much more to be done...

Indeed, indeed.

_____________________________

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

(in reply to Chliperic)
Post #: 171
a reminder, a clarification, and some general comment - 2/1/2012 10:54:46 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

I feel I need to repeat:

quote:

I offer no judgment about AGEOD, or its games. Nothing asserted, nothing implied. AGElint is a tool, not a weapon. We use it to build better games, not to tear down any company or anybody.

And to clarify:

I do not find fault with AGEOD, or any dev, beta team member, or Coordinator, for not finding these mistakes.

quote:

In game data sets of [RUS' etc. massive] size: There Will Be Bugs.

How can there not be? There is simply too much detail for any human being, or any team of humans no matter how hard working and dedicated, to discover on their own. This is where

http://en.wikipedia.org/wiki/Static_code_analysis

http://en.wikipedia.org/wiki/Automated_code_review

come into play. We leverage the power of the computer, together with the appropriate software tools and techniques, to help us discover the bugs.

There is no shame in not knowing how to data mine, in not knowing Linux (Cygwin) command-line "sorcery", in not knowing how to program the appropriate and needed tools.

What I do find fault with, however, is: Knowing about the bugs, being provided with the tools (AGElint, or whatever), then: doing nothing about it.

I, too, am human, therefore fallible. I will reveal ignorance. I too will make mistakes. And I will do something about them!

But even if I don't, if AGEOD doesn't, the tools and techniques are there, for empowering the players (and modders).

Players of the world unite! You have nothing to lose but your bugs!

< Message edited by berto -- 2/1/2012 12:41:37 PM >


_____________________________

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

(in reply to berto)
Post #: 172
thoughts for the day - 2/2/2012 6:13:57 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Ralph Nader, (in)famous American consumer protection advocate:

quote:

Power has to be insecure to be responsive.

quote:

Your best teacher is your last mistake.

Not that I'm a Green or anything.

_____________________________

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

(in reply to berto)
Post #: 173
RE: thoughts for the day - 2/2/2012 5:20:13 PM   
Chliperic


Posts: 955
Joined: 3/21/2010
Status: offline
I will not compare Lafrite 's tool and yours, even if I'm using both, when possible, as much of the xls data of the official versions are older than the current version (AACW database in xls is 2009 vintage....).
I will just say:

- using both tools is better, I don't understand why i should use only one, especially when both tools are running under windows 7)
- agelint is reporting bugs Lafrite 's one doesn't.

After all, there are 2 unofficial tools, done freely by people wanting to enhance QA. Like me.

_____________________________

Fatal Years mod for RUS version 1.07
Struggle for a Vast Future 2.0 for AACW in advanced beta:

http://moddercorner.com/

(in reply to berto)
Post #: 174
RUS Areas.ini errors - 2/4/2012 12:27:47 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

In the course of working on my RUS weather mod, in the RUS Areas.ini file, three interesting finds:



// Area #149
{Area}
UID = $EventArea_GermanOccupation2
Name = $EventArea_GermanOccupation2
Hierarchy = -1
ListParams = $Dymer|$Kiev|$Kaniv|$Nijyn|$Poltava|$Lubny|$Kremenchuk|$$Lebedyn|$Krasnokutsk|$Mahdalynivka|$Karlivka|$Novomoskovsk|$Brovary|$Boryspil|$Pryluky|$Lokhvitsa|$Pereiaslav|$Bakhmach|$Konotop|$Nossivka|$Borzna|$Shostka
{/Area}



The duplicate $ anomaly (in $$Lebedyn).

Then the misplaced $ bugs:



// Area #132
{Area}
UID = $EventArea_Epidemic_Swamp
Name = Event$Area_nam_Epidemic_Swamp



It should of course be: $EventArea_nam_Epidemic_Swamp



// Area #135
{Area}
UID = $EventArea_Close_to_Petrograd
Name = Event$Area_nam_Close_to_Petrograd



And this one should be: $EventArea_nam_Close_to_Petrograd

At this point, it is not clear what if any impact these anomalies might have on game play. Still, they are "interesting".

Please note: In AGElint, I have not yet incorporated Areas.ini checks. (Hint: there are more "interesting" finds, especially in the other games.) Maybe I should? (Of course!)

< Message edited by berto -- 2/4/2012 5:54:13 PM >


_____________________________

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

(in reply to Chliperic)
Post #: 175
RE: RUS Areas.ini errors - 2/4/2012 5:39:52 PM   
Chliperic


Posts: 955
Joined: 3/21/2010
Status: offline
These 3 ones aren't used in FY.

_____________________________

Fatal Years mod for RUS version 1.07
Struggle for a Vast Future 2.0 for AACW in advanced beta:

http://moddercorner.com/

(in reply to berto)
Post #: 176
RE: RUS Areas.ini errors - 2/4/2012 5:54:26 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Right. Although I sometimes try to clarify if a found bug is in this or that version, my comments can often be misconstrued.

When I post stuff in the AGElint or weathers mod threads, it is usually of generic nature.

When I post stuff in the RUS/FY thread, it is usually specific to that mod.

But there is ambiguity, sure.

Which is why, for the most part (except when explaining a new script, feature, or AGElint bug fix), the best policy is just to make tools, not to issue (widespread, specific) bug reports.

Let the modders/players make of AGElint (and any other mod) what they will. Empower them, then let them decide for themselves.

_____________________________

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

(in reply to Chliperic)
Post #: 177
another false positive: numbers vs. aliases - 2/5/2012 12:12:36 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

Regarding a "false positive" about use of numbers in, for example, EvalRgnWeather.

No doubt numbers would work everywhere an alias is suggested. But it's probably not good practice.

Rather than signalling "syntax error", I think I will relax the grammar to permit numbers in place of aliases, but with a WARNING.

A nice and very worthwhile adjustment.

... On second thought, not!

It blows apart the parser (introduces potentially 1,000s of reduce/reduce ambiguities) and creates all manner of difficulty.

For example, consider the two (among very many) possibilities:



AI.SetLocalInterest = $Novocherkassk;5;$Rostov;5;$Taganrog;5;$Donetsk;5;$Makeievka;5



versus (the region numbers have been made up):



AI.SetLocalInterest = 21;5;22;5;30;5;32;5;34;5



Allowing the second case introduces all sorts of mischief, including: How do we (easily, or at all) distinguish between a missing region alias vs. a missing interest coefficient?

Back to the drawing boards...

< Message edited by berto -- 2/5/2012 2:07:02 PM >


_____________________________

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

(in reply to Chliperic)
Post #: 178
no end to it ... or is there? - 2/6/2012 1:55:40 PM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline

I have programmed two more bug checking scripts, chkareas.pl & chkregions.pl, which between them have detected, across all five of the analyzed AGEOD games, more indisputable game data file errors.



It all grows to be so tiresome, more trouble than it's worth...

< Message edited by berto -- 9/10/2012 10:39:11 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

(in reply to berto)
Post #: 179
chkareas.pl & chkregions.pl - 8/15/2012 10:55:33 AM   
berto


Posts: 4628
Joined: 3/13/2002
From: metro Chicago, Illinois, USA
Status: offline



Getting back to work...

In developing chkareas.pl & chkregions.pl, I encounter a puzzle:

In ACW, there are two Regions files, both with the name "Susquehanna, PA":



[root@berto Regions]# pwd
/media/KINGSTON/Games/AGEOD/AGEod's American Civil War/ACW/GameData/Regions

[root@berto Regions]# ls -1 *Susquehanna*
46Susquehanna, PA.rgn
76Susquehanna, PA.rgn



The contents of those files:



[root@berto Regions]# egrep "^UID =|^Name =" 46Susquehanna,\ PA.rgn
UID = 46
Name = Susquehanna, PA
[...]

[root@berto Regions]# egrep "^UID =|^Name =" 76Susquehanna,\ PA.rgn
UID = 76
Name = Susquehanna, PA
[...]



In ACW/Aliases/Regions.ini, we have:



[root@berto Aliases]# pwd
/media/KINGSTON/Games/AGEOD/AGEod's American Civil War/ACW/Aliases

[root@berto Aliases]# egrep "= 46" Regions.ini | head -n 1
$Lackawanna, PA = 46

[root@berto Aliases]# egrep "= 76" Regions.ini | head -n 1
$Susquehanna, PA = 76



Note that Region 46 is "Susquehanna, PA", but for alias value 46, the corresponding alias is "Lackawanna, PA".

It gets curiouser. In LocalStrings_ACW.csv, we have:



[root@berto Settings]# pwd
/media/KINGSTON/Games/AGEOD/AGEod's American Civil War/ACW/Settings

[root@berto Settings]# egrep "Susquehanna|Lackawanna" LocalStrings_ACW.csv
RegionName46;Lackawanna, PA;Lackawanna, PA;Lackawanna, PA;Lackawanna, PA;NULL;Lackawanna, PA;
RegionName76;Susquehanna, MD;Susquehanna, MD;Susquehanna, MD;Susquehanna, MD;NULL;Susquehanna, MD;



Note that for alias RegionName76, the values are all "Susquehanna, MD". But as you can see above, region 76 is otherwise given as "Susquehanna, PA".

So what is it (for region 46): "Susquehanna, PA" or "Lackawanna, PA"?

And is it (for region 76): "Susquehanna, PA" or "Susquehanna, MD"?

Are you thoroughly confused yet?

There are more than a few discrepancies like that in the various AGEOD game data files.

Do these discrepancies matter? Are they cosmetic flavor only? Mere oversights? Are they clever kludges to solve obscure problems? Or are they bugs, that impact actual game play?

Whichever, I don't see what good can come from such (needless?) confusion.

< Message edited by berto -- 8/15/2012 12:14:59 PM >


_____________________________

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

(in reply to berto)
Post #: 180
Page:   <<   < prev  3 4 5 [6] 7   next >   >>
All Forums >> [Current Games From Matrix.] >> [World War I] >> Revolution Under Siege >> Mods and Scenarios >> RE: AGElint v1.1 progress report Page: <<   < prev  3 4 5 [6] 7   next >   >>
Jump to:





New Messages No New Messages
Hot Topic w/ New Messages Hot Topic w/o New Messages
Locked w/ New Messages Locked w/o New Messages
 Post New Thread
 Reply to Message
 Post New Poll
 Submit Vote
 Delete My Own Post
 Delete My Own Thread
 Rate Posts


Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI

0.129