본문 바로가기
■ 로블록스 개발 노트/개발일지

[로블록스]#8 - RemoteEvent & 서버 통신

by Popbox 2025. 12. 30.

[로블록스]#8 RemoteEvent & 서버 통신

UI 버튼을 눌렀다.
그런데 서버에서 반응해야 한다.
이때 반드시 이해해야 하는 것이 RemoteEvent다.


 

 

1. 왜 서버와 통신이 필요한가

로블록스는 기본적으로 멀티플레이 게임이다.

그래서 다음과 같은 작업은 반드시 서버에서 처리해야 한다.

  • 재화 지급
  • 아이템 획득
  • 스탯 변경
  • 데이터 저장

LocalScript에서 값을 바꾸는 건
“내 화면만 바꾸는 것”이다.

 

 

 


2. RemoteEvent란 무엇인가

RemoteEvent는 클라이언트와 서버를 연결하는 통신 통로다.

Unity로 치면 RPC(Remote Procedure Call)에 가깝다.

  • 클라이언트 → 서버
  • 서버 → 클라이언트

단, 로블록스에서는 이 방향을 명확히 구분해서 사용해야 한다.

 

 

 


3. RemoteEvent 기본 구조

RemoteEvent는 보통 ReplicatedStorage에 둔다.

ReplicatedStorage
 └─ RemoteEvents
     └─ BuyItem
    

이렇게 두면 서버와 클라이언트 모두 접근할 수 있다.

 

 

 


4. 클라이언트 → 서버 (FireServer)

UI 버튼을 눌렀을 때 서버에 요청을 보내는 전형적인 구조다.

-- LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local buyEvent = ReplicatedStorage.RemoteEvents.BuyItem

button.MouseButton1Click:Connect(function()
    buyEvent:FireServer("Sword")
end)
    

이 시점에서는 아무것도 확정되지 않았다.

“요청”만 보낸 상태다.

 

 

FireServer는 RemoteEvent에 딸려 있는 함수다.

RemoteEvent:FireServer(...)
  • 클라이언트 → 서버 단방향 통신
  • LocalScript에서만 호출 가능
  • 서버의 OnServerEvent가 받음

 

 

 


5. 서버에서 처리 (OnServerEvent)

서버 Script에서 요청을 받고 판단한다.

-- Script (Server)
buyEvent.OnServerEvent:Connect(function(player, itemName)
    if player.leaderstats.Gold.Value >= 100 then
        player.leaderstats.Gold.Value -= 100
        print(itemName .. " 지급")
    end
end)
    

중요한 포인트는 이것이다.

서버는 절대
클라이언트를 믿지 않는다.

가격, 조건, 보상은 항상 서버에서 검증해야 한다.

 

 

 


6. 서버 → 클라이언트 (FireClient / FireAllClients)

서버에서 처리한 결과를 다시 클라이언트에 알려줄 수도 있다.

  • FireClient : 특정 플레이어
  • FireAllClients : 전체 플레이어
buyEvent:FireClient(player, "Success")
    

UI 갱신, 이펙트, 알림은 이런 방식으로 처리한다.

 

 

 


7. 가장 많이 하는 실수

  • LocalScript에서 재화를 직접 변경한다
  • 가격 검증을 클라이언트에서 한다
  • RemoteEvent를 Workspace에 둔다
  • 서버 Script에서 UI를 만진다

이 실수들은 전부 치명적인 핵(치트) 포인트가 된다.

 

 

 


8. RemoteEvent 핵심 요약

  • 클라이언트는 요청만 한다
  • 판단과 확정은 서버가 한다
  • RemoteEvent는 통신 통로다
  • ReplicatedStorage에 둔다
  • 서버는 클라이언트를 믿지 않는다

 

 

 


9. 다음 글 예고

다음 글에서는 데이터 저장(DataStore)을 다룬다.

서버를 껐다 켜도
데이터는 남아야 한다


반응형

댓글