알파고와 이세돌간의 바둑대결을 보고 필을 받아 저도 사람과 대결하는 보드 게임을 만들어 보고 싶더군요.
바둑은 제가 룰을 잘 몰라서 대신 장기 게임을 만들어보았습니다.
컴퓨터나 폰에 뭔가를 설치할 필요 없이 웹 브라우저에서 바로 게임을 즐길 수 있도록 자바스크립트로 작성하였습니다.
http://choco6.ivyro.net/
여기저기 자료 찾아보면서 구현은 해 보았는데 쉽지가 않네요.
게임 화면의 인터페이스는 10년 전에 어느 분이 phpschool에 올리신 자바스크립트 소스를 기반으로 만들었습니다.
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=74746
화면 인터페이스는 위 소스를 참고했고 원본 소스의 인공지능이 워낙 형편없어서 인공지능 엔진 부분을 새로 짰습니다.
일단 브라우저 내에서 돌아가는 환경이라 cpu 자원을 맘껏 쓸 수가 없기 때문에 기력이 무척 낮습니다.
레벨로 치면 하수레벨에 속하는 것 같습니다. 가끔 컴퓨터가 뻘짓도 하는군요..-_-;;
게임은 그렇게 빠르지 않습니다.
속도를 높이려면 인공지능 수준을 낮춰야 해서 어느 정도 수준을 유지하려다 보니 속도를 포기해야 했습니다.
그래서 컴퓨터가 수를 둘 때는 다소 시간이 걸립니다.
15초 타이머를 둬서 최대 15초를 쓰긴 하는데 가끔 15초도 초과하곤 합니다.
동네 노인네랑 둔다고 생각하시고 느긋하게 두시기 바랍니다.. -_-;;;
기력을 높이고 싶은데 웹 브라우저에서 돌아가는 자바스크립트라는 성능의 한계 때문에 못하고 있습니다.
조금만 더 깊게 연산을 하려고 해도 랙이 걸려서 게임을 할 수 없는 지경이 되더군요.
게임 속도를 높이려면 기력을 낮춰야 해서 나름대로 적절한 타협점을 잡아서 구현했는데 솔직히 만족스럽진 않습니다.
대용량 연산이 필요한데 그럴려면 멀티코어나 멀티스레딩 기법을 사용해야 하지만 자바스크립트에서 그런 것들을 구현하는게 만만치가 않네요.
고수 분들이 계시면 게임을 보시고 조언을 부탁드립니다.~