서버에 게임 로직이 있음.
- PVP 중심의 대전 오목 게임.
- AI와 붙는 것은 없다.
- 광고로 수익을 번다. 클라이언트에서 광고를 보았다고 알려주면 서버는 확인 후 게임 머니를 준다
- 대전 등을 하려면 광고 클릭을 통해 ‘게임 머니’를 벌어야 한다.
- 대전에서 이기면 상대방의 ‘게임 머니’를 뺏을 수 있다.
- 1:1 뿐만이 아닌 다:다 대전도 있다.
- 매칭 신청을 하면 적당한 상대방과 대전하도록 한다.
- 레이팅 기반으로 레벨을 쌓을 수 있도록 해서 최대한 비슷한 레벨끼리 대전하도록 한다.
- 대전에는 ‘게임 머니’가 필요하고, 승자는 패자는 ‘게임 머니’를 가져간다. ‘게임 머니’를 다 가져가지 않고 70%만 가져간다. 30%는 대전료
- 다:다(예 5:5) 대전을 할 수 있다.
- 참여 숫자가 정해진 방에서 대전을 한다. 최대 인원 수 이내까지 들어갔다 나갔다 할 수 있다.
- 흑/백으로 나눈 후 백팀의 차례가 되면 선수 중 선착순으로 돌을 놓을 수 있다. 선착 순은 방에 들어온 순서대로 돌을 놓기를 사전에 신청한 순서.
- 돌을 한번이라도 놓으면 대전 머니를 걸어야 하고, 경기가 끝날 때 이긴 팀의 방에 있는 사람만 게임 머니를 가져간다.
-
대전 게임이므로 실시간 통신을 한다.
-
구글 클라우드를 사용한다.
-
API 서버 부분은 Cloud Run을 사용하고 C#을 사용한다.
-
실시간 서버는 C# 혹은 C++을 사용한다.
- C#을 사용하면
MemoryPack
, C++을 사용하면ProtoBuf
를 사용한다.
- C#을 사용하면
-
클라이언트는 C#의 Winform으로 만든다.
-
Scale-Out 구조로 만든다.
-
새로운 블럭이 나올 때 클라이언트에 알림.
- 새로운 블럭의 타입
- 생성 시간
-
클라이언트는 새로운 블럭이 멈추면 서버에 알림
- 서버는 생성 했을 때의 시간과 비교하여 어뷰징은 아닌지 조사한다.
- 블럭이 멈출 수 있는 곳인지 확인한다.
- 블럭의 위치를 저장한다
-
클라이언트는 블럭이 사라짐을 알림
- 서버는 블럭이 저장된 데이터를 조사하여 사라질 수 있는지 확인한다.
-
블럭 멈춤과 블럭 사라짐은 하나의 패킷으로 보내도록 한다.