Giter Club home page Giter Club logo

chase-ai's People

Contributors

skotz avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

simondorfman

chase-ai's Issues

Change board representation?

Instead of storing the board as an array of 81 tiles (of which at most 20 indices will be non zero at any moment), maybe it makes sense to store the position as an array of piece objects that each have a value, player, and location. This would also make finding point distributions after a capture much easier.

Fix search depth

Always search an even number of moves deep to record a move and its counter move. Right now I believe a point distribution after a capture is considered a move meaning a depth of 4 might not search two full moves. Always evaluate to a point where your opponent made the last move in the line.

Fix evaluation to consider mobility

Just calling the existing GetAllMoves method in the evaluation function killed the search speed (difference of 600k nps and 8000k nps). Find a way to include move counts in the calculation without slowing things down that much.

Prevent repetition of moves

Right now the engine sometimes infinitely repeats moves. Add a way to force the engine to stop repeating itself.

Red player not as active

For some reason, the red player makes meaningless moves even when it can capture a blue piece without being recaptured or land on the chamber and split.

UI enhancement idea: show the last move visually

It would be nice to see a visual indicator that the AI took its turn. It would also be nice to see what they did visually rather than having to parse the coordinate moves. Perhaps with arrows pointing From the hex moved from to the hex moved to. Sharing points between dice: perhaps arrow of a different color or something.

UI Idea: section to write notes to yourself

superdupergames.org has this feature. it's useful for asynchronous play where you want to write notes to yourself so you remember you plan when you look at your next turn. You can store notes like: if he does x, do y, then probably z, etc.

Idea: test game design tweak ideas

I can't help but think of variants of chase. Now that there is an AI, maybe it could be used to quickly test ideas to see if they are worth testing further. Some ideas:

  1. Change wraparound to bounce (why? Humans have a hard time seeing wraparound moves. Would the game still work & still be interesting with this change.)
  2. A. Change pieces to d4s (instead of d6s) on a smaller board
  3. B. Also change to grid and only allow orthogonal movement, so d4 corresponds with to the number of directions a piece can travel (north, south, east & west)
  4. A. Change to d8s (instead of d6s) on larger board
  5. B. Also change to grid and allow orthogonal & diagonal movement, so d8 corresponds with to the number of directions a piece can travel (north, south, east. west, north-east, south-east, south-west, & north-west)
  6. When a piece enters the chamber, the whole chamber moves 1 in the direction the piece moved into the chamber. Then the piece splits out of the chamber normally. I guess the chamber could bump pieces when it moves like this. Someone told me this idea once. Seems like a bad idea; too chaotic, but I'm curious to see what would happen if we threw the AI at it. Maybe it would be interesting.

UI idea: Analysis mode

the chess.com app has this feature. clicking analysis mode lets you try out your turn, then take your opponent's turn, then yours, etc. you can go back and forth and explore different moves for both players.

Show path of last piece(s) that moved

after a piece moves, show an arrow from the start hex to the end hex. if the piece bounced or wrapped around, be sure to show the actual route, follow the bounce or wraparound. if there was a bump, have multiple arrows showing each piece. e.g.:
chase arrows from start to end of move

Read up on the official rules of the game

See if there's special rules for things like landing on the chamber when you already have 10 pieces or if you repeat the same position 3 time it's a draw (if that's a rule).

UI Idea: show how many captures you are away from losing

Where you show how many dice a player has in their hand (off the board), maybe also say how many captures before they lose the game. it will help new players know how close they are to losing and whether they can go for a move that involves an exchange or not.

Draw interface from scratch

Right now the interface is using WinForm buttons to draw the board, but that limits the ability to draw more complex stuff like arrows, zoom, anti-aliasing, etc.
Instead, this needs to be completely drawn from scratch onto a graphics object, potentially with a full game loop.

Interaction enhancement idea: confirmation or undo button

Sometimes a misclick causes an accidental move. Maybe use a confirmation like chess.com uses. Or give an undo button. Multiple undo might be nice for trying out different choices after realizing a prior move was not so good after all...

Add position notation similar to FEN (from chess)

Maybe letters could be used for the values. Capital letters for red and lowercase for blue. Numbers represent empty squares, and slashes represent new lines. Then there's a space and the player to move (either b or r).

So the starting position would be...

abcdedcba/9/9/9/9/9/9/9/ABCDEDCBA b

And the position in the image below would be...

a2de2ba/9/b8/Ec2c1E2/C1DB4d/5B3/9/9/AA3A2A b

Chase Position

Find the fastest win

When the computer knows for sure it will win, it considers all winning moves the same value. This leads to skipping a win-in-one since it has the same value as a win-in-3.

4de2c/9/2E2F3/7b1/6D1d/5e3/4b4/9/5EE2 r

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.