• More bugs and defects discovered in GnuBG

    From MK@21:1/5 to All on Fri Jan 26 19:53:16 2024
    When I decided to learn Python to write my own scripts,
    I discovered that Noo-BG had a hard-coded exception for
    the bot player to always auto-roll and auto-play, even
    if the user deselected it in the GUI. This made it very
    difficult and actually impossible to experiment with bot
    vs bot, by intercepting and substituting one bot's moves.

    When I posted about in the Noo-BG forum, only Ian Shaw
    tried to help but it was what it was. The only solution
    is to set one player to human and manipulate its moves.

    This is, of course, very bad software design. Instead
    of improving the auto-roll and auto-move features, they
    took back half of the half-ass implementation of it, by
    hard-coding instead of letting the user, (the master),
    control how he wants the bot player, (his slave), to act.

    No matter, I proceeded with making human play against
    bot, but I kept getting a stupid error saying: "What? No
    dice?" that I couldn't trace where it was coming from.

    It took me quite some debugging to discover that it was
    happening when the human player fail to enter from bar.

    Documentation says that the getbestmove returns zeroes
    for unplayable numbers but when the human player dances,
    the dice is cleared and the turn passes to the bot. In
    proper implementation, the function would return 0/0 for
    the best move, meaning it's unplayable but instead it
    causes a stupid error message because the function ends
    up being called with blank dice.

    I found a way to handle it in my scripts but will or can
    the Noo-BG team fix it in their software...?

    For the cube, there is no "gestbestcube". Thus, if you
    want the human make the same best cube decisions as the
    bot and manipulate the human's checker players, one can
    perhaps use the "eval" function but then you would need
    to know the "int recommendation" values that it returns
    which I wasn't able to find documented anywhere, having
    searched for hours... :(

    In CLI, when the game ends, Noo-BG reports which player
    has won, using the names for players "O" and "X". But if
    you try to extract the winning player from the match info,
    "X" means "O", "O" means "X" :) and you have to swap them
    back in your script.

    The same is true for the player who made the last move in
    the game, (i.e. played, resigned or dropped), so you need
    to swap them back in your script.

    I'll stop here. I'm getting tired of writing about all
    the bugs and defects in Noo-BG. What a pile of patchwork
    software design and programming/implementation... :((

    MK

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)