서버가 하는 일
server/main.luau 는 GameHost 에서 돕니다. 화면도, 입력 장치도, 파일 시스템도
없습니다 — 있는 것은 세계와 그 안의 사람들입니다.
시작과 매 틱
Chain2D.onStart(function()
print("world server started")
end)
Chain2D.onTick(function(delta)
-- 초당 60번. delta 는 지난 시간(초)입니다.
end)
Chain2D.onTick 은 시뮬레이션과 같은 박자로 돕니다. 여기서 오래 걸리는 일을 하면
모두의 게임이 그만큼 늦습니다.
기다리기
task.wait(1.5) -- 1.5초 뒤에 이어서
task.spawn(fn) -- 지금 시작하는 별도의 흐름
task.defer(fn) -- 이번 틱이 끝나면
task.delay(2, fn) -- 2초 뒤에
task.cancel(thread) -- 예약을 취소
task.wait 은 스크립트를 멈추지만 세계는 멈추지 않습니다. 기다리는 동안에도
시뮬레이션은 계속 돌고, 사람들은 계속 움직입니다.
채널
한 게임 서버는 여러 채널을 돌릴 수 있고, 채널마다 이 스크립트가 한 벌씩 돕니다. 같은 게임의 다른 방이라고 생각하면 됩니다.
Chain2D.Channels.move(player, 2) -- 이 사람을 2번 채널로
이 스크립트가 할 수 없는 것
파일을 열 수 없고, 아무 주소로나 요청을 보낼 수 없고, 프로세스를 만들 수
없습니다. 필요한 것은 엔진이 건네줍니다 — 맵 문서는 이름으로 부르고, 데이터는
Data 로 읽고 씁니다. 업로드된 게임이 그것을 받은 기계를 읽을 수 있으면 안 되기
때문입니다.