프로젝트/[윈도우 어플리케이션] blokus-online

[blokus-online] 멀티플레이어 보드게임 프로젝트 개요

마달랭 2025. 6. 26. 22:08

개요

어느새 SSAFY도 끝이 났다. 덕분에 세 번의 팀 프로젝트를 진행하며 경험을 쌓았지만 앞으로 더 발전 하기 위해서 사이드 프로젝트는 꾸준히 진행해야겠다는 생각이 들었다.

이전의 프로젝트들을 진행하면서 백엔드 개발 역량을 많이 쌓았다. Spring Boot와 같은 웹 프레임워크를 통해 MSA 구조를 설계하고 마이크로서비스를 구현, 인증, 로깅과 같은 시스템도 많이 경험해 보았다.

또한 게임 프로젝트를 진행하며 소켓 서버를 통해 stateful 서버도 개발을 해 보았다. 이러한 경험을 쌓을 수 있었던 이유는 6명의 팀원과 함께하며 SSAFY 측에서 제공해 주는 서버를 사용하면서 부터였다.

 

하지만 이제 내겐 팀원도 지원 받을 수 있는 교보재도 존재하지 않는다. 따라서 이번 사이드프로젝트는 SSAFY 입과 전 나에게 개발에 재미를 붙여주었던 Qt와 함께하려고 한다. 당시 나는 Python기반의 PyQt5라이브러리를 사용하여 윈도우 어플리케이션을 개발하였다.

매우 무거웠고, 성능이 좋지 않았다. 당시 나는 이를 개선하기 위해 많은 자료를 찾아보았고 C++을 사용한 Qt개발이 굉장히 빠르고 가벼운 윈도우 어플리케이션 개발에 사용된다는 것을 알았다. 하지만 당시 나는 C++을 이해하기엔 개발 역량이 너무 부족했었다.

 

이젠 다르다 SSAFY 임베디드 트랙으로 다져진 역량을 통해 C++기반의 Qt클라이언트를 개발하고, Boost.asio기반의 TCP 소켓 서버를 구현하여 Qt기반의 보드 게임을 제작하고자 마음을 먹었다. 이 프로젝트를 선택한 이유는 기본적으로 혼자서 진행하기에 적합한 프로젝트라고 생각이 들었다. 또한 C++만으로 클라이언트와 서버를 구현할 수 있다는 것 자체도 굉장히 매력적으로 다가왔다. 무엇보다 나는 C++이라는 언어가 굉장히 마음에 든다. 

 

 

주제 선택

구현하고자 하는 게임은 Blokus로 결정하였다.

 

어디서 많이 본 게임이지 않은가? 보드게임의 대명사로 각자의 모서리에서부터 시작해 21개의 테트로미노를 통해 자신의 블럭을 모서리로 이어가고 가장 많은 면적을 차지하는 사람이 승자가 되는 게임이다.

사실 보드게임을 구현하기로 맘을 먹은건 최근에 루미큐브를 배우면서부터 시작되었다. 뭐니뭐니해도 20*20의 격자 범위 안에서 Qt로 가장 구현하기가 쉬워보였다.

 

 

프로젝트 목표

아무래도 윈도우어플리케이션 개발을 통해 배포하기는 힘들어 보인다. 서버를 계속 띄워두어야 하는데 AWS 프리티어로는 너무 느려서 엄두가 나지 않을 것 같고, 집에 있는 안쓰는 노트북에 Linux를 깔아 절전모드로 돌리며 서버를 돌려야 할지도 모른다.

게임 서버 개발과 임베디드 어플리케이션 레벨 개발에 흥미를 느꼈었기 때문에 두 가지 역량을 모두 키울 수 있는 좋은 기회라고 생각된다. 따라서 완성이 되면 우선 주변 친구들과 즐겁게 게임을 즐기고, 포트폴리오의 사이드 프로젝트 경험으로 넣어볼 생각이다.

 

가장 중요한건 중간에 포기하지 않고 끝까지 구현에 성공해 내는 것이다. 혼자서 풀스택 개발을 해보는건 SSAFY 입과 전 유니티 기반의 게임 개발 이후 처음이다. 그땐 역량이 매우 부족해 판만 엄청 크게 벌려놓고 끝내 포기를 하였는데 이번엔 꾸준히 프로젝트를 완성해 볼 생각이다.

728x90