목차
'풀 가이즈'는 에픽 게임즈(Epic Games)에서 서비스하고 있는 폴 가이즈(Fall Guys)를 벤치마킹해서 만든 3D 플랫포머 게임입니다. 멀티 플레이가 가능하고 회원 관리가 웹 게임 플랫폼에서 이루어진다는 점이 특징입니다. 웹과 게임, Python FastAPI와 C++ IOCP, C# Unity 등 사용하는 언어와 관심사가 전부 다른 팀원들과 소통을 통해 하나의 결과물을 만들어가는 과정이었습니다.
에픽 게임즈(Epic Games)에서 서비스하고 있는 폴 가이즈(Fall Guys)를 벤치마킹해서 만든 3D 플랫포머 게임입니다.
-
🪜 멀티 플레이 게임
-
🗺️ 2개의 게임 월드 맵
-
🫂 솔로, 듀오, 스쿼드 등의 모드 선택이 가능한 로비 시스템
-
🕸️ 회원 관리가 이루어지는 웹 게임 플랫폼
2022.11.25 - 2023.02.24
| 김정도 | 김민관 | 임우영 | 홍지현 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Platform & Lobby | Game Client | Full Stack | Game Server |
- ✏️ 웹 게임 플랫폼
- 🗨️ 로비 및 매치 메이킹
- 🎮 인게임 플레이
- ✏️ 웹 게임 플랫폼
| 회원 가입 | 로그인 |
|---|---|
![]() |
![]() |
| • 패스워드는 bcrypt로 암호화 |
• 로그인 성공 시 쿠키에 JWT 토큰 저장 • Redis에 접속 상태 동기화 |
| 게임 설치 | 게임 실행 |
|---|---|
![]() |
![]() |
| • 빌드 파일로 설치 및 게임 클라이언트 생성 • 클라이언트 레지스트리에 Custom URL Scheme 등록 |
• Scheme에 등록된 경로로 게임 클라이언트 실행 • 매개변수로 유저ID 및 닉네임 전달 |
- 🗨️ 로비 및 매치메이킹
| 로비 화면 | 매치메이킹 |
|---|---|
![]() |
![]() |
| • 사운드 및 게임 모드 설정 • 로비 서버와 매치메이킹 서버 간 소켓 연결 |
• 게임 클라이언트와 FastAPI 서버 간 HTTP 통신 • FastAPI 서버는 IOCP 서버에 프로토콜 버퍼 패킷 전송 |
- 🎮 인게임 플레이
| 게임 스타트 | 게임 플레이 |
|---|---|
![]() |
![]() |
| • 본인 캐릭터는 ⚪️ 표시 • 매칭된 유저들의 로딩이 모두 완료될 때까지 대기 |
• 장애물을 피해서 목적지까지 이동 • 추락 시 출발지로 다시 리스폰 |
| 도착 및 관전 모드 | 승리 및 게임 종료 |
|---|---|
![]() |
![]() |
| • 도착 시 관전 시점으로 전환 • 목표 인원을 달성하면 다음 스테이지로 이동 |
• 최종 스테이지에서 승리 시 게임 종료 |
- Python 3.9
- FastAPI 0.62.0
- 프로젝트 클론
git clone https://github.com/blue-birds/poor-guys.git
- 서버 실행
(1) 게임 서버 실행
binary/server/Debug/ServerGame.exe
(2) NPC 서버 실행
binary/server/Debug/ServerNpc.exe
(3) 매치 서버 실행
binary/server/Debug/ServerMatch.exe
(4) 웹 서버 실행
cd src/ServerPlatform
pip install -r requirements.txt
uvicorn app.main:app --reload
웹 개발과 게임 개발을 접목하기 위해서 웹 게임 플랫폼을 개발하게 되면서 웹을 통해 접속한 유저를 어떻게 게임 클라이언트로 전달할 것인가에 대한 문제를 해결해야 했습니다. 유저가 어떻게 클라이언트를 설치하도록 할 것이며, 실행할 수 있도록 할 것이며, 클라이언트가 해당 유저의 정보를 어떻게 특정할 것인지 등이 예상되는 문제점들이었습니다.
이 모든 것들을 해결할 수 있는 방법이 Custom URL Scheme를 활용하는 것이었습니다. Custom URL Scheme는 사용자가 직접 만드는 Scheme입니다. 사실 엄밀히 이야기하면 Custom URI Scheme가 더 올바른 표현입니다.
URI는 특정한 리소스에 대한 위치 정보를 제공합니다. 해당 자원에 접근했을 때 어떤 유형인지 식별하여 처리하기 위한 정보를 URI Scheme라고 하며, http, ftp, mailto 등과 같이 공식적으로 지정되고 관리되는 Official URI Scheme도 있지만
사용자가 직접 지정할 수도 있도록 대부분의 OS가 지원합니다. 이 방법을 통해 클라이언트의 컴퓨터에 bluebird Custom URI Scheme를 등록해 웹에서 게임 클라이언트를 실행하도록 처리할 수 있었습니다.














