메시지 전송 (롤백)
이 행동은 다른 플레이어에게 문자열 메시지를 전송하는 데 사용됩니다. 전송할 문자열을 지정하며, 최대 128 바이트까지 가능합니다. 두 번째 인자를 지정하지 않으면 메시지는 발신자를 포함한 모든 플레이어에게 전송됩니다. 두 번째 인자에 플레이어 ID를 지정하면, 해당 플레이어에게만 메시지가 전송됩니다.
## 사용 방법
이 행동은 "로컬"에서 사용되므로 로컬 입력에 의해 발생하며, 롤백 입력에 의해 발생하지 않습니다. 하단의 사용 예제를 참고하세요. 롤백 이벤트에서 수신된 메시지를 듣는 방법을 설명합니다.
### 동작 구문
```gml
SendMessage(message, player_id);
인자
| 인자 | 설명 |
|---|---|
message |
전송할 메시지, 문자열 형태입니다. |
player_id |
선택 사항. 메시지를 전송할 플레이어의 ID입니다. 이 인자를 지정하지 않거나 -1로 지정하면 모든 플레이어에게 메시지를 전송합니다. |
사용 예제
로컬에서 Enter 키가 눌리면 keyboard_string 값이 모든 플레이어에게 전송됩니다. 그런 다음 해당 문자열은 지워져 새로운 메시지를 입력할 수 있게 됩니다. 이 과정은 메시지가 모든 클라이언트(발신자 포함)에 의해 수신될 때 롤백 이벤트를 촉발합니다.
롤백 이벤트 예제
아래는 수신된 메시지를 출력 로그에 인쇄하는 롤백 이벤트의 예입니다.
event_rollback() {
var received_message = GetReceivedMessage();
// 수신된 메시지를 출력 로그에 기록
show_debug_message(received_message);
}
다양한 활용 및 응용 예제
- 게임 내 채팅 기능
- 플레이어 간의 채팅을 구현하여 실시간으로 소통할 수 있는 기능을 추가합니다.
if (keyboard_check_pressed(vk_enter)) {
var chat_message = keyboard_string;
SendMessage(chat_message, -1); // 모든 플레이어에게 전송
keyboard_string = ""; // 입력 필드 초기화
}
- 시스템 알림 기능
- 특정 이벤트(예: 보스 몬스터 소환) 발생 시 모든 플레이어에게 알림 메시지를 전송합니다.
function summon_boss() {
SendMessage("보스 몬스터가 소환되었습니다!", -1);
}
- 게임 상태 공유
- 게임의 상태 업데이트(예: 점수, 아이템 등)를 모든 플레이어에게 전송하여 정보를 동기화합니다.
function update_score(new_score) {
SendMessage("현재 점수는 " + string(new_score) + "입니다.", -1);
}
이와 같이 메시지 전송 기능을 활용하여 다양한 게임 내 상호작용을 구현할 수 있습니다. ```