Jump to content
IGNORED

Chess


Andrew Davie

Recommended Posts

19 minutes ago, root42 said:

@Andrew Daviedid you talk to Oscar aka @nanochess? It seems he is an expert on tiny chess engines. Maybe you two can spice up the AI? Also, depending on ROM size you can probably store quite a few openings in there. 

Already speak about it. I've offered my chess engine as a start point. Andrew wants to follow his own route and already has something working.

 

  • Like 1
Link to comment
Share on other sites

1 hour ago, nanochess said:

Already speak about it. I've offered my chess engine as a start point. Andrew wants to follow his own route and already has something working.

 


Your offer was very kind and appreciated.


However, once I decided that it would be useful to have a 6502 engine (as opposed to ARM/online) for the first version, it became a matter of "what's easier?".  Given that I've previously programmed (bad) chess engines, it seemed simple enough for me to start another - and in particular because of the limitations of the bankswitch scheme and my desire to retain the option of doing AI "in the background" while the screen is on, this required particular structure of the code and how things are done. It just seemed much much much simpler to start afresh with these things in mind.

Now, having said that, I am a big believer in collaboration - I rather enjoy it, even with the difficulties it can sometimes bring. I value the expertise and experience of others, and I don't think I've ever regretted such an approach.  Well, yes you could say "Andrew wants to follow his own route" - but it's a bit more nuanced than that. I needed to get the structure sorted properly - decisions on data formats, processing "patterns" and those sort of things, based on my systems design.

I would be more than happy to collaborate with anyone who would like to make the chess engine a good one. But beware, I'm picky and hard to work with, right @Al_Nafuur and @DirtyHairy and @Thomas Jentzsch ?!

  • Like 1
Link to comment
Share on other sites

1 hour ago, root42 said:

@Andrew Daviedid you talk to Oscar aka @nanochess? It seems he is an expert on tiny chess engines. Maybe you two can spice up the AI? Also, depending on ROM size you can probably store quite a few openings in there. 

Yes, I do have the idea of storing openings - I'm not familiar with standard storage formats - I would assume a hash of the board is done, pointing to a move to make. I think it's a good idea, but I do so hate opening books in chess programs. It strikes me as "cheating", so to speak. But of course human players do it all the time. I believe that Alpha Zero discarded the idea and figured out good openings from square one.

 

Link to comment
Share on other sites

I like how the graphics look like on CRT. I can clearly identify each piece--I was worried that the black pawns would look too much like sticks.

 

1900050263_Chess(1).thumb.jpg.b8dde605e24d198997d4b41f8e7c3fa5.jpg

 

I haven't followed all the changes you've been making, but I was playing around with the controls and I like the feature where holding down the button shows you all legal moves.

 

222690701_Chess(2).thumb.jpg.4e3c93152be8f1b87742896080b76bcc.jpg

 

I really hope you do implement AtariVox support. That could give this game a lot of personality.

 

  • Like 5
Link to comment
Share on other sites

1 hour ago, spspspsp said:

One thing I did have a problem with, though, is that sometimes my button presses wouldn't register to make a move. Meaning, I'd have to click twice.

Thank you. That's probably when you're selecting the "to" square - I'll fix that up very soon :)

 

Link to comment
Share on other sites

1 hour ago, spspspsp said:

I like how the graphics look like on CRT. I can clearly identify each piece--I was worried that the black pawns would look too much like sticks.

 

1900050263_Chess(1).thumb.jpg.b8dde605e24d198997d4b41f8e7c3fa5.jpg

 

 

Looks great to me! Thanks for the screenshots.

 

1 hour ago, spspspsp said:

I really hope you do implement AtariVox support. That could give this game a lot of personality.

 

 

Yes, I've pretty much decided to make the game have a personality, as you say. But maybe several - one game you'll get a cocky player that keeps saying stuff that's offputting. Another game you might get an insecure player. Another game, a bluffer... who knows. I've started the process by asking Al about getting an AtariVox if I have any credit on the store.


I'll need to track down some documentation on how to program it, too - especially with stella on MacOS.

  • Like 3
Link to comment
Share on other sites

1 minute ago, digdugnate said:

if this was asked, my apologies if i didn't see it in the thread.  are there plans to make a cart/purchasable image of your Chess project?

I haven't definitely decided, yet.

There is not a lot of incentive to do so.

I'm leaning slightly towards "yes" at the moment.

Edit: I have no plans to sell binaries. I release those for free.

Edited by Andrew Davie
  • Thanks 3
Link to comment
Share on other sites

Sometimes you just make design decisions that in hindsight are the work of a gibbering idiot. One such decision I made a while back (when doing the UI stuff) was to have a second state machine. One was running the movement of pieces (the nice UI flashing/moving stuff), and I thought it would be sensible to have a second one actually managing the player choices, generation of player moves and stuff like that.


So I started that, and it's been working fine. But I found myself having to implement flags for the two state machines (which were running concurrently) to make sure that state machine A was halted while state machine B did X, and that state machine B re-started state machine A, but not if it was the computer turn, etc., etc.  It was ugly.

So, I've spent the last day or two rejigging everything so that it's now a single state-machine. It's much more elegant, and the "states" now cleanly reflect what's happening in the process. This will also be useful as I can theoretically start to put "available time" checking simply based on the current state and how long it needs. I might do that soon.

Anyway, we're back to "where we were" with this version - at least, it seems to be working correctly with selection of legal moves, and computer randomly throws a reply at you. Sometimes it's uncanny that the reply seems a perfect refutation - which really just shows that I'm a bad player.

The one "big" change in usability in this version is that I spent some time working on the responsiveness, and making sure that user inputs (joystick, button) were acted upon as soon as computerly possible. It seems to make it all feel much more responsive and less clunky.

 

 

chess_20200220b.bin

Edited by Andrew Davie
Updated binary fixing delay in cursor movement
  • Thanks 1
Link to comment
Share on other sites

12 hours ago, Nathan Strum said:

It would also be a huge help in saving a game-in-progress.

If this gets implemented I'll be after an AtariVox for sure.

 

5 hours ago, devwebcl said:

Anyway, it would be nice to make both engines play against each other.

I'v done this with a few games always interesting to see how the machines work and when they make a mistake, it's usually a really bad one that has you wondering why the game gives you a hard time, the other times when you played.

Link to comment
Share on other sites

15 hours ago, Andrew Davie said:

I'll need to track down some documentation on how to program it, too - especially with stella on MacOS.

If you're just using the SaveKey part of the AVox, then you technically don't need a real one at all for development in Stella (since that part is emulated by saving the data to a file on your hard drive).

 

If you're using the actual voice part of the AVox, then you will need the real thing, since Stella doesn't emulate that.  And you'll also need another adaptor to connect the AVox to USB, then to your computer.  I believe someone was selling these here on AtariAge.  Also, I believe a 2600-daptor D9 can be reflashed to act as such an adaptor.

 

Let me know if you need any help setting it up, once you get all the pieces.

  • Thanks 1
Link to comment
Share on other sites

It's been hard to get motivated the past few days.  Nonetheless, I have found and fixed that bug where towards the end of the game the computer decided to start moving your pieces around. It was fairly subtle - to do with choosing a random move amongst n moves, where n was really small or zero.  Anyway, hopefully this new binary won't exhibit that behaviour anymore.

I'd actually embarked on a "major" new addition, but could barely bring myself to load the python IDE yet alone actually write some code to do the necessary tools. The idea, though, is to overlay (large) text onto the board. When there's check, checkmate, stalemate, or a draw then I'll overlay the large text as playfield graphics over the board. I'll ether do that in the next few days, or finalise the UI stuff.  By finalise, I mean the following...


    * get en-passant working again

    * pre-cull the movelist so that you cannot make moves which leave you in check

    * get some sort of pawn promotion selection happening. I could use the "big text" for this, possibly.

 

With those three, I could then release a "human vs human" version which would, as far as I'm aware, allow to players to play a legal game of chess without illegal moves, including castling, en-passant, pawn promotion. I do not plan to handle repetitive position or 50-move draw rules, though. Those are for purists. I don't think I've ever played a game where these applied.

One other addition to this binary - if your king is in check after a computer move, the background will show red for a second or so... so I know at least that the basic concept of "check" is working :P

 

chess_20200223.bin

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

On 2/13/2020 at 7:51 AM, Andrew Davie said:

On a more serious note, I was also thinking about the concept of Atari programming as "art". What's wrong with someone writing a game (ooh, let's pluck something out of midair... say a Chess variant)... and just releasing a few cartridges. Just like an artist makes an artwork, and releases a few prints of their work. Do we see those artists being criticised for doing just that?  I definitely see the things I write as much more a creation and form of art, than I do as a moneymaking project, or even as a game. They're my babies, created with passion and unbelievable amounts of obsession.

 

Programming is an art. Not all that different from other things involving creation and working with media. Most all programming vibrates with a style and personality all your own.

 

On 2/13/2020 at 4:45 PM, Andrew Davie said:

Well, much to my surprise I saw that @ZeroPage Homebrew did a brief showing of Chess on the recent show. I do wish you guys would give a heads-up, as I would have fixed a few things. For example, here's a version with the left-column bug fixed. And, much nicer with a computer doing something, anything in opposition!  Oh well. I could see from the lack of comments/response that Chess is not exactly setting the '2600 world on fire anyway.

 

Chess. Well. In today's world of smartphone twitch games that goes without saying. Compared to whatever top-10 the app store is featuring, chess has got to be the most boring thing invented. And smartphone gaming trends leak into other platforms. The VCS is no exception.

 

In the 1970's, that a computer could play the game, was a remarkable experience. Especially for myself having just learned the game. To me the computer was intelligent and there was no debating it!

 

My first computer chess "stuff" was a Fidelity Chess Challenger. And not long after that VideoChess for the VCS. VC was one of my favorite "stay home from school because of snow" games. Moody. Mysterious. Downtempo. Rewarding. Dusted with a bit of magic.

 

Magic because I didn't understand shit about how it worked, how a computer worked. Let alone any programming. Didn't even know that VCS games were programmed to begin with! Never mind the cartridges were clearly labeled "Game Program". I adamantly thought they were made of little parts and drew things inside the cartridge that were somehow connected and transmitted to the TV set. There were specially shaped wires and templates that spun the electricity around into various shapes that flowed through the wires.

 

When I decapped the chips (smashed'em with hammer) all I found was a sliver of silver. God only knows how many rare and valuable IC's I put out of commission. Eventually I learned how it all worked - else I'd be decapping Core i7's today!

  • Like 1
Link to comment
Share on other sites

2 hours ago, Keatah said:

My first computer chess "stuff" was a Fidelity Chess Challenger. And not long after that VideoChess for the VCS. VC was one of my favorite "stay home from school because of snow" games. Moody. Mysterious. Downtempo. Rewarding. Dusted with a bit of magic.

 

As a 16yo in 1981 I won a trip to Switzerland (from Australia). None of my family could afford to travel with me, so I saved up AUS$1000 so I could spend a month travelling around Europe. By myself. At 16. And in the first week there, I found a (French-speaking) chess challenger which I absolutely HAD to have. It was US$400; roughly half my entire money for a month. And I bought it!  I still have it somewhere. I survived the trip around Europe, and still have the passion for computer chess.

Edited by Andrew Davie
Link to comment
Share on other sites

After many hours of essentially trial-and-error programming - brain not working the last few days - I finally got the pawn promotion UI working. The video shows me moving the H pawn to the back row, and then up pops a flashing "?" which is the signal to choose the new piece. You move the joystick, and it then cycles through knight/bishop/rook/queen. Push the button when you're happy. Whatever piece is shown, that's what the pawn promotes to. Seems to work nicely.
 

Edited by Andrew Davie
  • Like 2
Link to comment
Share on other sites

Just now, Karl G said:

I didn't know until now that you could promote a piece to anything other than a queen. I imagine it would be rare to want to pick any other piece. 

It's pretty rare, yes. This rule was added specifically to make it difficult for chess programmers.

 

  • Haha 4
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...