오델로 게임의 선택

BoB 7기에 보안 제품 개발 트랙(이하 개발 트랙)이 신규로 생겼습니다. 2018년 12월 Top 30을 결정되고 나서 공 Top 10을 선발하는 데 있어서 교육생 평가를 해야 하기 때문에 무엇인가 경연을 통하여 점수를 산정할 수 있는 방법이 필요하였습니다. 이에 개발 트랙에서는 각자 만든 보드 게임을 통해 승패를 결정하고 그 결과를 점수로 반영하기로 하였습니다.

바둑, 장기, 오목 등도 고려해 보았으나 구현의 어려움과 게임룰의 복잡성 등 다양한 것들을 고려해서 비교적 간단하다고 여겨지는 오델로라는 게임을 최종적으로 결정하였습니다.


게임 개발(1) - 프로토콜의 설계

각자가 만든 게임을 클라이언트 서버 모델의 네트워크 기반으로 게임이 진행되어야 합니다. 이에 클라이언트와 서버간의 프로토콜을 설계하였습니다. 일주일 이후 8명 모두서 각자 만든 프로토콜의 발표를 하게 되고, 이중에 가장 이해하기도 쉽고 구현하기에도 용이한 프로토콜 문서를 하나 결정하여 모든 교육생이 각자 게임을 개발하게 됩니다.


게임 개발(2) - 프로그램 개발

일단은 사람이 돌을 두는 것으로 네트워크 상으로 데이터들이 잘 오고 가는지를 확인합니다. TUI(Terminal User Interface)기반으로 작성한 친구도 있고 GUI(Graphic User Interface) 기반으로 작성한 친구들도 있습니다. 교육생들이 각자 만든 프로그램의 스크린샷을 공개합니다.


게임 개발(3) - 인공지능 탑재

최종적으로는 사람이 아닌 컴퓨터가 돌을 두어야 하기 때문에 각자 인공지능 기반의 방법론을 각자 만든 프로그램에 탑재하게 됩니다. 여기에는 다양한 기법들이 사용되어 집니다. 고전적인 방식인 Minimax 및 그의 변형, Monte Carlo tree search, Edax 등 기법이 사용되었습니다. AlphaZero를 사용하려고 하였으나 성능과 학습 시간상의 문제로 사용하지 못했다는 교육생도 있었습니다.


대회

2019년 2월 13일 오후 3시부터 약 2시간동안 대회가 열렸습니다. BoB 센터 네트워크 상의 문제로 3개의 동영상으로 편집되었습니다. 게임 진행에 사회자가 없어서 다소 지루하기도 하네요. 내년에는 사회자를 둬야 할까 고민 중입니다. ^^


첫 번째 영상


두 번째 영상


세 번째 영상


결과

토너먼트를 통하여 홍성빈이라는 교육생이 최종 우승을 하였습니다. 박수 짝짝짝!!! 이에 홍성빈 교육생이 만든 프로그램을 공개하고자 합니다(컴퓨터 플레이에서는 Edax라를 기법을 사용하였습니다). 몇 번 게임을 해 봤는데 인간은 도저히 이길 수가 없겠더군요. 여러분도 다운받아서 게임을 한번 해 보시기 바랍니다.

file download


후기

사실 이번 오델로 게임 개발 후기를 제가 작성하는 것이 맞는지도 잘 모르겠습니다. 저는 그냥 애들한테 이것 해와라 저것 해와라 시키기만 했을 뿐이거든요. 교육생들이 정말 고생이 많았습니다. 프로토콜 설계, 네트워크 프로그래밍, GUI 꾸미기, 인공지능 탑재 등 한달 안에는 도저히 끝낼 수 없을 거라 예상을 했는데 예상의 뒤집고 8명의 교육생들 모두(강현우, 김유준, 엄성범, 이세린, 임대동, 현지산, 홍성빈, 황태원)가 구현에 성공하였습니다. 이 자리를 빌어서 정말 수고가 많았다는 얘기를 해주고 싶습니다(아래 사진은 대회를 마치고 나서 저녁 먹는 모습).

BoB 7기 때 처음 도전해 본 게임 대회였습니다. 이번 대회를 통하여 교육생들 스스로 힘들었지만 재미있었다는 경험을 가질수 있었으면 하는 바램인데 다들 어떻게 생각할런지는 잘 모르겠네요. 내년 BoB 8기에서는 어떠한 주제를 가지고 애들을 괴롭힐지(?) 고민을 해 봅니다. ^^