Public Notebook/작품 전시관

2016 - Silent Storm (고1)

Syphon 2023. 1. 7. 16:30

2016년, 고1의 3월에는 알파고와 이세돌의 대국이 있었다.

그냥 지나칠 수 없었던 나는 (지금기준) 간단한 Minimax 알고리즘의 오목 AI를 구현해본다.

당시 나는 코딩을 본격적으로 시작한 지 1년도 채 안된 뉴비였기에 나름 큰 도전이었었다.

 

To my own surprise, 일주일만에 동작하는 무언가를 만들어낸다. 하지만 오목 성능은 그닥 좋지 않았었다. 여러가지 최적화를 통해 착점 속도를 3분에서 3초까지 낮추었지만 여전히 성능은 구렸다 ㅋㅋㅋㅋ

 

조금 더 탐색공간이 작은 게임을 찾다가 오셀로 게임을 발견한 것으로 기억한다.

(아니면 그냥 다른게임도 해보려고 했을지도? 아니면 동아리 부장 선배가 "오 나도 오셀로 AI 만들려고 했었는데"를 듣고 했을지도? 기억이 정확히 안난다. 쓰고보니 후자였던 것 같다.)

 

로직이 어렵지 않아서 오셀로 AI로  개조하는데에는 반나절도 걸리지 않았다. 또, 오셀로 성능은 준수하게 나와서 인터넷상에 떠돌아다니는 많은 AI들보다 우위에 있었다.

 

Silent Storm은 당시 트리 탐색, heuristic의 설계와 조합, 강화학습 등의 개념을 배우게 된 계기이다.

 

아, Silent Storm이라는 이름은, 고요해보이는 화면 아래에서 수많은 계산을 통해 최적의 수를 찾는 AI의 모습을 비유하여 지은 이름이다.

 

그리고 처음에는 CLI만 있었던 AI인데, Tkinter를 이용해 GUI를 만들게 된다. 놀랍게도 이 GUI를 만드는 것이 AI를 만드는 것보다 훨씬 오래 걸리고 코드도 길어졌다 ㅋㅋㅋㅋ

애니메이션들도 한 프레임 한 프레임 만들어서 노가다로 넣은 작품..

 

아무튼 이 이후에도 1년이 넘는 기간 동안 온갖 튜닝과 최적화를 조금씩 진행하여, 2017년의 정보올림피아드 공모전(지금은 사라진 대회)에 출품을 한다. 왜인지는 모르겠지만 은상을 받아서, 미국에서 열리는 ISEF 출전권을 따내기 위한 ISEF-K 대회에 진출하게 된다. ISEF-K에서는 탈락했다. (별다른 새로움이 없었던 작품이라 옳게 된 탈락이라고 본다.)

 

ISEF-K 대회 시점의 Silent Storm(이름을 Vibrant Storm으로 변경하여 출품했었다), 그리고 당시 발표자료를 첨부한다.

Vibrant Storm.zip
10.93MB

GUI 프로그램인 vivid.py를 실행시키면 된다.

아, numpy와 pygame이 필요할 것이다.

사실 어떤게 뭐였고 무슨 dependency가 있었는지 잘 기억이 안난다. Git, requirements.txt 등등 아무것도 모르고 안쓰던 시절이라.. 실행해보고자 한다면 조금 삽질을 해야할수도? 어쨌든 it can't be that hard.

 

Launcher
오랜만에 보니 생각보다 반갑다
노가다의 산물, Vivid!

즐겜하세요.

'Public Notebook > 작품 전시관' 카테고리의 다른 글

2018 - A Fidgety Problem (고3)  (0) 2023.01.07
2015 - Adventureland (중3)  (0) 2023.01.07