오프라인 스킬을 구현하는 방법


13

오프라인 스킬의 예로는 EvE Online이 있습니다. 당신의 캐릭터 (파일럿)는 경험을 얻음으로써 기술을 얻지 못합니다. 대신, 당신의 캐릭터는 당신이 게임 중이 든 게임 중이 든 당신이 훈련하는 기술에 대한 스킬 포인트를 얻습니다. 또한 게임 서버가 다운 되어도 기술이 계속 발전 할 것이라고 확신합니다.

누구나 이것에 대해 어떻게 생각하는지, 또는 내가 개발중인 게임에서 이와 같은 것을 구현하는 방법에 대해 더 잘 알고 있습니다. 나는 여기에 자세한 설명을 찾고 있지 않지만 (나를 다시 만지지 말아라), 나는 올바른 방향으로 나를 가리키는 푯말을 찾고있다.

감사!

답변:


17

기술 개발이 결정적이고 선형 적이라고 가정하면, 시스템 시계 나 서버 시계와 같은 실시간 시계에 연결하고 기술이 개발 된 시간을 계산하기 만하면됩니다.

즉, 기술 개발이 시작되면 타임 스탬프를 가져 와서 저장하고, 스킬이 향상되었는지 확인하려면 타임 스탬프를 현재 타임 스탬프와 비교하고 델타가 충분히 큰지 확인하고 플레이어가 새로운 기술.


2
훈련 속도에 영향을 미치는 속성을 변경 한 경우 왜 훈련을 일시 중지해야하는 이유가 갑자기 합리적입니다! 그들이 필요한 델타를 다시 계산하기 때문에 ... 굉장합니다!
Dream Lane

5
@Dream Lane, 잠재적 인 계산 오버 헤드를 완화하기 위해. 사용자가 로그온 할 때만 획득 한 기술 / 포인트를 다시 계산하십시오. 따라서 수천 명의 로그 오프 된 사용자가 오버 헤드를 발생시키지 않습니다.
AttackingHobo

2

플레이어가 온라인 상태가 될 때까지 스킬을 사용하지 않으면 대기열에있는 스킬에 로그 오프 시간과 남은 시간을 저장 한 다음 플레이어가 로그인 할 때 다음과 같은 작업을 수행 할 수 있습니다.

timeRemaining = currentTime - logoutTime
while ( timeRemaining > 0 and hasQueuedSkill() ) {
     skillTime -= timeRemaining
     if ( skillTime <= 0 ) {
           popSkill()
           timeRemaining = -skillTime
     }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.