AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

PySupercell Core: Supercell 게임 서버 구축 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

소프트웨어 개발

대상자

- Python 및 네트워크 프로그래밍에 익숙한 개발자

- Supercell 게임 서버 아키텍처 구현을 원하는 중급 이상 개발자

- 게임 서버 핵심 로직 개발에 관심 있는 프로그래머

- 난이도: 중급 (Python 기초 및 네트워크 프로토콜 이해 필요)

핵심 요약

  • PySupercell Core(PSC)는 Supercell 게임의 서버 기반 아키텍처를 구현한 Python 기반 서버 핵심으로, 완전한 서버가 아닌 로직 구현이 필요한 프레임워크입니다.
  • PiranhaMessage 클래스를 상속받아 decode()encode() 메서드를 구현해야 하며, MessageManager.receive_message()를 통해 패킷을 처리합니다.
  • 예시: LoginMessageLoginOkMessage 클래스는 각각 클라이언트 로그인 요청 및 응답을 처리합니다.

섹션별 세부 요약

1. PySupercell Core 설치 및 설정

  • repo 클론 및 의존성 설치:

```bash

git clone

cd pysupercell-core

pip install -r requirements.txt

```

  • 게임별 매직 코드 설정:

- logic_magic_message_factory.py에서 게임의 codename(magic, laser 등)을 변경해야 합니다.

  • 구성 파일 설정:

- config.toml에서 major_version, build, content_version, environment 등을 설정합니다.

2. 메시지 클래스 구현

  • LoginMessage 클래스 구조:

- PiranhaMessage 상속:

```python

class LoginMessage(PiranhaMessage):

def __init__(self):

super().__init__()

self.account_id = LogicLong()

self.pass_token = ""

self.major_version = 0

```

- decode() 메서드: 스트림에서 account_id, pass_token, major_version을 읽어옵니다.

- get_message_type() 메서드: 메시지 타입 10101을 반환합니다.

  • LoginOkMessage 클래스 구조:

- encode() 메서드: 서버 응답을 위한 account_id, home_id, pass_token을 스트림에 씁니다.

- 메시지 타입: 20104를 반환합니다.

3. 메시지 처리 및 응답 전송

  • MessageManager 클래스 설계:

- receive_message() 메서드에서 메시지 타입에 따라 on_login()과 같은 핸들러를 호출합니다.

- 예시:

```python

async def receive_message(self, message):

match message.get_message_type():

case 10101:

await self.on_login(message)

```

  • on_login() 메서드:

- LoginOkMessage 인스턴스를 생성하고, account_id, pass_token을 채우고, send_message()로 클라이언트에 전송합니다.

- ```python

async def on_login(self, message: LoginMessage):

response = LoginOkMessage()

response.account_id = ...

await self.connection.send_message(response)

```

결론

  • PSC는 서버 핵심만 제공하므로, 개발자는 PiranhaMessage 상속 및 MessageManager 기반의 메시지 처리 로직을 반드시 구현해야 합니다.
  • 핵심 팁: decode()encode() 메서드의 구현이 정확해야 클라이언트-서버 통신이 정상적으로 작동합니다.
  • 실무 적용 시 주의 사항: 게임별 매직 코드와 구성 파일(config.toml) 설정이 필수적이며, 메시지 타입(10101, 20104 등)에 대한 정확한 이해가 필요합니다.