×
all 17 comments

[–]felixjin 4 points5 points  (1 child)

Really great job! I also played around with UTTT reinforcement learning a few years ago (https://github.com/fqjin/ultimate-tictactoe). UTTT is quite an interesting game with deep concepts and strategy despite its simplicity and low branching factor.

I pitted MCTS and AB versions of my AI against your app with about 1 sec/move. Both drew as X and lost as O. Congrats!

[–]arnowaczynski[S] 0 points1 point  (0 children)

I agree that UTTT is fascinating game and I wish it was more popular.

AI deployed on uttt.ai isn't really optimized for playing 1 sec / move, but more like 1 minute / move (for a C++ version it would be more like ~10 seconds), so I'm glad it did well on your test. Thanks :)

[–]InoriResearcher 1 point2 points  (0 children)

Nice project!
You should reach out to folk at codingame if you want a strong baseline bot to benchmark against.

[–]yazriel0 1 point2 points  (1 child)

I love these one man projects! Looks nice.

Some questions
1. How long did this project take up to now ?
2. What were your previous coding languages? Was the js/browser part a major challenge?
3. Would you have made significantly more progress with some cloud credits ?

[–]arnowaczynski[S] 2 points3 points  (0 children)

  1. I worked on it full-time for the past 6 months.

  2. I had 2 years of experience in C/C++ coding algorithmic challenges (2014-2016) and 5 years of experience in Python doing Data Science / ML for a living (2016-2021). I've always been curious about Web dev and JS, but never had time to delve into it. I feel like it's very easy to learn basic frontend engineering, the challenging part is to be good at it. For me the hardest thing was to design a favicon/logo.

  3. Definitely. Generating data from self-play is a perfect use case for scaling with more hardware. When I run it on my computer, the CPU and GPU were 100% utilized for weeks.

[–]Zondartul 0 points1 point  (3 children)

Says "could not load AI, your browser is not supported". I'm on Chrome on Windows 7.

[–]arnowaczynski[S] 1 point2 points  (2 children)

Your browser has to support SIMD (https://v8.dev/features/simd). It's enabled by default in Chrome version >= 91. What is your Chrome version?

edit: Here you can find out: https://www.whatismybrowser.com/detect/what-version-of-chrome-do-i-have

[–]Zondartul 2 points3 points  (1 child)

Oh, nevermind. It loaded for me when I came back later. The website must have been under stress from too many Reddit users.

(For reference, I have Chrome 96)

[–]arnowaczynski[S] 1 point2 points  (0 children)

In the meantime I also changed the default domain from uttt.ai to www.uttt.ai because I noticed the first one fetching data much slower for some reason.

[–]Aceofsquares_orig 0 points1 point  (1 child)

Dang, nicely done. I, too, want to do something like this. I only get caught up in the Monte Carlo Tree Search. I understand the gist of it but am not sure about the details. For instance, not sure what the random rollouts should be of a given state. Is it just random moves and a returned calculation of the board state or is it more general than that? Any suggestions of any reading about MCTS?

[–]kevinwangg 0 points1 point  (0 children)

awesome!

[–]bOmrani 0 points1 point  (1 child)

Great project! It would be an interesting addition (and additional anxiety for the player ^^) to have an option to see the output of the value network for the current board configuration. That way I could see how quickly the algorithm thinks it can crush me...

[–]Muids 0 points1 point  (0 children)

Click on analysis on his website

[–]whats-a-monad 0 points1 point  (1 child)

Can you make this compatible with openspiel so that we can have AIs for all its games? I particularly like Pentango.

[–]arnowaczynski[S] 0 points1 point  (0 children)

https://github.com/deepmind/open_spiel already has AlphaZero implementation in two versions (C++ and Python). However, I have never used it, so I cannot tell you anything about it.