절 아는 사람들은 대부분 알지만, 전 보드게임을 엄청 좋아합니다. 중독인지 의심될 정도로 보드게임을 좋아해서 한동안 시간 낭비도 했었죠. 그래서 제가 첫 개인 프로젝트를 보드게임 관련으로 시작한 건 놀라운 일은 아닐 겁니다. 내가 쓰면서 좋아할 프로그램을 만들어야 더 열정을 가질테니까요.
보드게임은 모든 사람에게 인정받을 수 있는 취미 중 하나(사실 사람들이 잘 몰라서 그런 것도...맞죠 흑ㅠ)지만, 코로나가 되면서 보드게임한다고 사람을 모으기가 참 어려워졌습니다. 그래서 온라인으로 보드게임을 즐기는 사람들이 많아졌고, 이 타이밍에 첫 개인 프로젝트를 만들어보았습니다.
아직 웹사이트를 만들 줄도 잘 모르고, 빠르게 만들기는 어려워서 discord.py라는 API를 사용해 디스코드 봇을 만들어보았죠. 봇을 한 번 보고 싶으신 분들은 여기에서 추가하실 수 있습니다. 소개하는 글은 여기에 써져있고요.
처음 배포했을 때는 버그도 많고 수정도 많이 했지만, 주변 사람들과 많이도 써보고 메일로 제보도 많이 받으면서 이제는 버그가 거의 없는 상황까지 왔습니다. (...물론 거의입니다. 아예 없지는 않더라고요...)
그럼 이걸 전문가에게 보여주면 어떤 반응을 보이실까 궁금해서, 42서울의 멘토님에게 찾아가 멘토링을 부탁드렸습니다. 그리고...
코드를 보고나서 뭘 만들고 싶은지 잘 모르겠다. 설명하는 글을 적어서 나에게 보여달라.
는 말씀을 아주 친절하게 설명해주셨습니다. 생각해보니 저는 보드게임 중독자이자 제작자라 진행 순서를 잘 알지만, 코드를 처음 보는 다른 사람들은 어떤 프로그램인지 잘 모르겠죠. 그래서 프로그램을 설명하는 파일을 PPT로 만들어봅니다.
이렇게 게임 진행 단계마다 어떤 데이터가 필요한지, 데이터는 서로 어떻게 주고받는지 ppt에 만들어서 표현을 해봤습니다.
그 후 멘토님이 저에게 시나리오를 써보라고 권유해주셨습니다. 실제로 플레이어들이 게임을 진행했을 때 발생할 수 있는 시나리오를 말이죠. 저는 거기에 덧붙여서 앞에 게임 룰을 간략하게 설명하는 슬라이드까지 추가해 ppt를 하나 더 제작합니다.
이렇게 앞에 룰 설명도 넣고, 동시에
각 단계에 어떤 식으로 메세지를 보내는지까지 ppt에 작성해 배포합니다. 그래도 보드게임 룰 설명하던 실력이 어디 가지는 않는지, 여기까지는 큰 어려움 없이 진행되었던 것 같습니다.
이 ppt를 보시고 멘토님께서는 객체 지향 프로그래밍에 대해서 설명해주셨습니다. 현재 코드는 typescript보다는 C에 어울리는 코드라고 말씀하시면서, 여러 개의 게임을 동시에 돌리는 멀티 프로세싱을 위해서는 C같은 프로그래밍이 적합하지 않다고 말씀하셨습니다.
멘토님의 말씀을 제가 해석해보자면, C는 함수들이 순서대로 실행되는 절차적 프로그래밍에 적합한 언어라고 들었습니다. 저는 각 단계마다 어떠한 행위(=함수)가 일어나는지(=실행되는지)를 항상 생각했고, 실제로 소스코드를 보면 파일에 함수들만 엄청나게 많습니다. 만약 한 게임만 동시에 진행한다면 절차적으로 프로그래밍해도 되겠지만, 여러 게임을 동시에 돌리고 싶다면 멀티프로세싱에 적합한 객체지향 프로그래밍으로 바꾸는 것이 더 좋아보입니다. 여기서 드는 한 가지 의문. 그럼 현대 프로그래밍에는 절차적 프로그래밍을 하는 곳이 있을까요? 이건 좀 더 알아봐야겠습니다.
다음으로 제가 해볼 일은 플로우차트를 작성해보는 겁니다. 보기만 했지 실제로 작성해본 적은 없어서 살짝 떨리기는 하지만(...), 일단 다음 글에서 한 번 작성해보죠!