Giter Club home page Giter Club logo

go_dilab's People

Contributors

benjaminaaron avatar karthikeyakaushik avatar liu-yushan avatar nathanaelbosch avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

benjaminaaron

go_dilab's Issues

generate_move() - simple

Implement a simple move generation function, that choses randomly from one of the valid moves that are on the board.

Something we have to think of: When would we stop playing with that logic? But maybe that doesn't even matter, as this is more of a proof of concept anyways.

setting up a GO server to compete between the teams

๐Ÿ’ญ Thoughts:

  • speaks only GTP during games (see #7)
  • build it as close as possible to how the big GO servers operate, but super simplified of course
  • make it Python-based ๐Ÿ
    • Django seems like a good choice
    • Django Channels seems a good choice to get a two-way communication based on WebSockets (traditional Django just responds to requests like in the old days of the internet - we need the server to be able to actively ask its connected players for their move though)
  • have a simple web-frontend that shows active and ended games
  • allow player-clients to connect to the WebSocket... and why not via the web-frontend as well ๐Ÿค“
  • put it on a virtual machine in the LRZ Compute Cloud โ˜๏ธ , keep security in mind ๐Ÿ”’

Adapt to different rulesets

The ruleset is currently stored in self.rules.

Some things change depending on the ruleset:

  • KO: I think we can just use the "A certain constellation should only appear once" rule, which is already implemented. This might lead to our bot thinking that moves are invalid even though he could play them, but the resulting generated move will be valid in both rulesets
  • Area vs. Territory: That's quite straight forward, just if/else on the rules variable I guess :)

image upload issue :)

To avoid having screenshots in the repo, upload them here and link to them in .md files ๐Ÿ‘

Counting points correctly

The territory/area counting is not completely right yet.

The case I'm thinking of is when there is a single dead stone in the enemy territory, it should probably count as captured by the enemy.

Bonus Idea: Implement some way of visually displaying the reasoning! I have some ideas there for how to do that in the console, maybe we could later add some of that to the GUI :)

GTP: Go Text Protocol

We need to be able to understand ๐Ÿ‘‚ and "speak" ๐Ÿ—ฃ GTP.

GTP is supported by various clients and engines. GNU GO seems to be the go-to choice if we want the quasi-standard. So it seems a good idea to find out how GTP works by playing around with it in GNU GO.

Download source files for GNU GO from this site (direct download link for gnugo-3.8.tar.gz).
Build gnugo by running ./configure, then make, then make install. Now you can start GNU GO in the terminal using gnugo. To start it in GTP-mode use gnugo --mode gtp. Now you have to use GTP-commands, see some commands to try out at the bottom of the Sensei's Library GTP site.

๐Ÿค” What makes me wonder, there seems to be no support for turn-by-turn management in GTP. There is no method get_current_player or something like that. black can just submit arbitrarily many moves without getting an error like "it's not your turn". Either I haven't found the option to turn this on yet, or it'd be our task to create a game controller logic around it.

import board-state via image recognition

An image recognition app that lets you hold your smartphone-camera over the Go-Board and it recognises the state of the board and converts it to some simple string that can be used as input for our program ๐Ÿค“

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.