티스토리 뷰

0. 동기

  평소에 내가 즐겨 보는 트위치 방송이 하나 있다. 슈퍼 마리오 메이커 2라는 게임의 '어디까지 마리오 챌린지' 매우 어려움 난이도를 주로 플레이하는 방송인데, 이게 뭔지 간략하게 설명하자면 전 세계 유저들이 만든 마리오 코스들 중에서 난이도가 가장 어려운 코스들이 무작위로 주어지면 한정된 목숨 내에서 그 코스를 클리어해야하는 컨텐츠다. 코스를 잘 클리어하면 목숨을 더 얻을 수도 있고, 여러 번 죽으면 많은 목숨을 잃을 수도 있다. 목숨이 0이 되면 게임 오버이고, 게임 오버가 되지 않는 한 무한정 코스들을 클리어하는 모드가 '어디까지 마리오 챌린지'이다.

 

'매우 어려움' 난이도의 코스들이 무작위로 주어진다. / 유명 스트리머 녹두로가 게임 초창기에 1위를 찍었던 그 모드다

 

  아무튼 이 방송을 하시는 분이 1위와 점점 가까워지고 있는 상황이라 방송에서 1위랑 차이가 얼마나 나는지, 언제쯤 세계 1위가 될 수 있는지 물어보는 채팅이 엄청 많이 올라왔었다. 그래서 매일 방송을 시작할 때 게임 랭킹 들어가서 순위를 손으로 적어서 명령어로 고정해놓고 !순위 명령어를 치면 저장해놓은 명령어가 보이도록 해 두셨었다.

 

  근데 이걸 매번 수작업으로 바꿔야 하다 보니 번거로울 거 같았다. 그래서 이걸 실시간으로 받아올 수 있지 않을까 싶어서 찾아보니 누가 게임 서버에서 데이터 받아오는 api를 만들어놨더라. 그래서 명령어를 치면 랭킹을 실시간으로 받아오는 챗봇을 하나 만들면 좋을 거 같아서 그냥 만들어보기로 했다. 이 글은 개발이랑은 담을 쌓고 PS만 하고 살아왔던 내가 정리 겸 해서 올리는 글이다. 사실 개발이랄 것도 없이 인터넷 글 몇 개 보고 따라한거긴 하지만 정리해두면 좋으니까~ 만든지 한 달이 지났는데 정리하는 걸 미루고 미루다가 결국 올해가 끝나기 전에 겨우 올리게 됐다. ㅋㅋㅋ

 

1. 만들기

  구글에 '트위치 챗봇 만들기'를 치면 상위에 노출되는 글인 이 글을 보고 틀을 잡았다. 저 글에 예시로 나와 있는 코드가 거의 모든 것들을 해줘서 커스텀 명령어만 조금 수정해주면 챗봇을 손쉽게 만들 수 있었다.

 

  다시 정리하자면 필요한 메인 기능은 '어디까지 마리오 챌린지'의 매우 어려움 난이도 순위의 1위부터 5위까지의 스코어와 유저 이름을 받아오는 것이다. 그런데 api 문서를 보면 그런 걸 받아오는 api는 없다. 그래서 어쩔 수 없이 상위 10명 정도의 유저 id를 직접 적어두고, 이 유저들의 매우 어려움 하이스코어를 직접 받아오는 식으로 코드를 짜야 했다. 즉, 11위가 5위 안까지 치고 올라오면 그걸 바로 반영할 수는 없는 로직이다. 그런데 게임 특성상 순위 변동이 크게 일어날 수 없는 구조라서 그런 일이 발생하면 수작업으로 고쳐주면 된다.. ㅎㅎ 그리고 한 달이 지났지만 그런 일은 역시 발생하지 않았다.

 

  그래서 이걸 구현했는데, 한 번에 여러 명의 유저 정보를 조회해야 하다 보니 !순위를 한 번 치면 7초가 걸렸다. 흠... 잘 작동하긴 했지만 이건 너무 느려서 순위를 미리 저장해 두고, 이걸 5분에 한 번 정도 갱신하는 식으로 코드를 수정하기로 했다. 어찌저찌 우여곡절 끝에 코드를 완성시키니 거의 딜레이 없이 바로바로 답이 나왔고, 업데이트도 순조롭게 잘 됐다. 이 명령어 하나만 만들어두기에는 밋밋해서 전날과의 차이도 보여주도록 매일 오후 5시에 전날 클리어 수를 저장해두고, 전날과 얼마나 차이가 나는지도 표시되도록 했다.

 

잘 작동하는 모습이다

2. 서버 구하기

내가 보고 따라한 글에서는 무료 호스팅 사이트를 꼼수를 써서 무제한으로 이용하는 방법으로 챗봇을 돌렸는데, 시도해보니 이제 그게 막힌 모양이었다. 그래서 구글 클라우드 플랫폼 App Engine을 이용해서 챗봇을 돌리기로 했다. 3개월 동안 무료로 쓸 수 있었고, 우연의 일치인지 3개월 후면 트위치가 어차피 한국에서 서비스 종료되기 때문에... 그냥 트위치가 살아있을 동안만 돌아가면 충분할 거 같았다. 챗봇을 치지직으로 옮길 수 있게 된다면 서버를 어떻게 할지는 생각해봐야할 것 같다.

 

어쨌든 이것도 구글에 검색하면 잘 설명된 글이 많아서 그대로 따라하기만 했더니 잘 돌아가는 것 같더라. cmd에 명령어 한 줄만 치면 알아서 업데이트해주는 게 편했고 버전 관리도 편해서 좋았다. 

 

잘 돌아가는 모습

 

3. 결론

뭐 아주 간단한 챗봇이지만 사람들이 매일 내가 만든 챗봇을 유용하게 사용하는 걸 보니 뿌듯했다. 처음 만든 이후로도 수요가 있거나 내가 만들고 싶은 간단한 기능들을 몇 번 업데이트했고, 업데이트한 기능이 잘 사용되는 걸 보는 것이 재미가 쏠쏠했다.

 

작년에 데이터베이스개론 과제할 때 잠깐 써 본 이후로 자바스크립트를 처음 다루는 거라서 api 응답을 다 받아오기도 전에 다음 로직이 막 실행되는 일이 계속 생겨서 이걸 짜면서 async/await, promise 같은 자바스크립트 문법 공부를 하면서 코드를 짜야 했다. 그리 어렵지 않은 것 같으면서도 자꾸 막혀서 개발 공부의 필요성을 몸소 느낄 수 있었다... 앞으로도 이렇게 뭔가 만들어볼 기회가 있으면 고민하지 말고 적극적으로 만들어봐야겠다. 끝!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함