[javascript] Phaser를 통한 게임 서버와의 통신

Phaser는 HTML5 기반의 게임 개발 프레임워크로, 웹 브라우저 상에서 동작하는 게임을 만들기 위해 사용됩니다. Phaser는 게임 플레이어의 동작, 애니메이션, 화면 전환 등 다양한 기능을 제공합니다. 이번 글에서는 Phaser를 사용하여 게임 서버와의 통신을 어떻게 할 수 있는지 알아보겠습니다.

웹 소켓을 통한 통신

Phaser에서 게임 서버와 통신을 하기 위해서는 웹 소켓을 사용해야 합니다. 웹 소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 서버와 클라이언트 간에 데이터를 주고받을 수 있습니다.

Phaser에서 웹 소켓을 사용하기 위해서는 WebSocket 객체를 생성하고, 서버의 주소를 입력하여 연결을 수행해야 합니다. 연결이 성공하면, 서버와의 통신을 할 수 있는 콜백 함수를 등록할 수 있습니다.

// 서버 주소
const serverAddress = "ws://example.com";

// 웹 소켓 연결
const socket = new WebSocket(serverAddress);

// 연결 성공 시 콜백 함수
socket.onopen = function(e) {
    console.log("서버와 연결되었습니다.");
};

// 데이터 수신 시 콜백 함수
socket.onmessage = function(e) {
    const data = JSON.parse(e.data);
    console.log("서버로부터 데이터를 수신했습니다.", data);
};

// 연결 종료 시 콜백 함수
socket.onclose = function(e) {
    console.log("서버와의 연결이 종료되었습니다.");
};

위 예시 코드에서는 ws://example.com 주소로 웹 소켓 연결을 수행하고, 연결이 성공하면 각각의 콜백 함수가 호출됩니다. 이제 서버와 데이터를 주고받을 준비가 되었습니다.

데이터 송신과 수신

Phaser에서 웹 소켓을 통해 데이터를 송신하고 수신하는 방법은 간단합니다. socket.send() 메서드를 사용하여 데이터를 서버로 전송할 수 있습니다. 데이터는 JSON 형식으로 구성되어야 하며, JSON.stringify() 메서드를 사용하여 JSON 문자열로 변환해야 합니다.

// 데이터 송신 예시
const data = {
    name: "John",
    score: 100
};
socket.send(JSON.stringify(data));

데이터를 서버로 전송할 때는 JSON 문자열로 변환하여 송신하였습니다. 이제 서버에서 보낸 데이터를 수신하는 방법을 알아보겠습니다.

// 데이터 수신 시 콜백 함수
socket.onmessage = function(e) {
    const data = JSON.parse(e.data);
    console.log("서버로부터 데이터를 수신했습니다.", data);

    // 서버에서 보낸 데이터에 따라 게임 로직을 처리할 수 있습니다.
    if (data.type === "gameOver") {
        console.log("게임이 종료되었습니다.");
    }
};

수신한 데이터를 JSON으로 파싱하여 사용할 수 있습니다. 위 코드에서는 data.type이 “gameOver”일 경우에는 게임 종료 처리를 하도록 하였습니다.

결론

Phaser를 사용하여 게임 서버와 웹 소켓을 통한 통신을 구현하는 방법을 알아보았습니다. 웹 소켓은 Phaser와 게임 서버 사이의 실시간 데이터 통신을 가능하게 해주므로, 다양한 멀티플레이어 게임 등에 유용하게 사용될 수 있습니다.