로그인과 업데이트
로비가 정하는 것은 시점입니다. 언제 로그인하고, 언제 받고, 어디로 들어갈지. 검증과 순서의 강제는 엔진이 쥐고 있어서, 여기서 단계를 건너뛰려 해도 거부됩니다.
로그인
local providers = Chain2D.Auth.providers() -- { "google", "steam", ... }
local ok, why = Chain2D.Auth.signIn(providers[1])
Chain2D.Auth.onFailed(function(reason)
-- 무언가 바뀌기 전에는 다시 눌러도 같은 자리에서 멈춥니다.
-- 다시 시도 버튼보다 이유를 보여주는 것이 맞습니다.
end)
어떤 로그인 방법이 있는지는 게임마다 다르고, 콘솔에서 켠 것만 옵니다. 목록이 비었으면 이 게임은 아직 로그인 방법이 없습니다.
업데이트
Chain2D.Update.start()
Chain2D.Update.state() -- "idle" "manifest" "downloading" "verifying" "done" "failed"
Chain2D.Update.onProgress(function(progress)
progress.stage
progress.receivedBytes, progress.totalBytes
progress.fileIndex, progress.fileCount
progress.error
end)
받는 동안의 화면은 창작자의 것입니다. 무엇을 받을지, 순서가 맞는지, 해시가 맞는지는 엔진이 쥐고 있고 스크립트는 그림만 그립니다 — 건너뛸 방법도, 다 받았다고 선언할 방법도 없습니다.
서버 고르기
for _, realm in ipairs(Chain2D.Realms.list()) do
print(realm.id, realm.name, realm.slug, realm.isDefault)
end
Chain2D.join(chosen.id)
고를 것이 하나뿐이면 고르라고 하지 마세요. 선택지가 없는 선택 화면은 사람을 한 번 더 누르게 할 뿐입니다.