【笔记】移植C的GNU Go到网页版

最近重新思考了一下alphaGo和alphaGoZero,兴致一来,又去看了一遍柯洁和alphaGo的人机大战。第二局是真的可惜,alphaGo当时看来在胜率落后的情况下就会乱下…于是也想琢磨琢磨围棋。搜索了一下网上没有多少网页版的基础AI陪练,大多都是显示SGF读谱的库。多年前接触过GNU Go,虽然已经不更新了,不过还是可以拿来一用。

  • 下载GNU Go,编译一遍,把编译log dump出来,一堆gcc和ar命令。
  • 下载emscripten,我是centos 7老古董了,来个自带的llvm,要么版本过低要么需要GLIB版本xxxx。再见,编译一遍gcc 10再编译emscripten的llvm,好了emcc一个hello world,搞定。
  • 看一遍编译log,把gcc命令抽出来,然后把那些ar用emar再编译一遍出一个em版本的.a库。有些东西em识别不了,其实也用不上,直接在代码里干掉。
  • 看emscripten的doc,写一个wrapper模仿play_ascii.c里的函数expose一个易用的API集合。比如初始化,电脑走下一步,手动下一步,这样就好了:https://github.com/dna2ai/gnugo.js/blob/main/gnugowrapper.c
  • 写一个简单的test.html,可以直接运行显示文字棋盘。这样,简单框架就搭好了,来来来,和GNU Go手谈几把。后面,再写一个程序就可以自动对弈了。

GNUGO.js的成品文件可以直接下载使用:https://github.com/dna2ai/gnugo.js/tree/main/dist

当然,后面就是探索在资源极度受限的情况下,比如浏览器上,如何让计算智能达到巅峰了。

Enjoy!

你可能感兴趣的:(娱乐,数据处理,围棋,gnugo,js)