sleep 왜? 언제? 얼마나? (1)

오호 09.01 22:32 조회 272 댓글 1

 


script 동작 중에 대기 시간을 주는 기능입니다.

단위는 0.001초 (milliseconds) 입니다.


Sleep 1000

이렇게 하면 1초의 대기 시간이 생깁니다.


이 sleep 기능을 왜? 언제? 얼마나? 사용해야 하는지 이야기 하려고 합니다.


-------------------------------------------------------------------------------

앞에서 자동기원은 초당 8번, 중독,혼마술은 초당 5번 사용 가능하다고 했습니다.

ms단위로 따져보면 혼마술은 200ms마다 한번씩 사용 가능합니다.



그런데 마법을 더 빨리 쓰고 싶은 마음에

sleep(timer period값)을 더 짧게 줘서 더 빨리 쓰라고 하면 어떻게 될까요??


sleep 10 또는 SetTimer, Heal, 10

이런 식으로 10ms마다 마법을 사용하게 한다면요.

(초당 100번. 사람은 절대 할 수 없는 속도를 오토핫키는 해낼 수 있습니다.)




당연하게도 마법이 더 빨리 나가지는 않습니다.

그런데 그냥 마법만 안 나가고 마는 것이 아니고 예상치 못한 문제가 발생할 수 있습니다.


 

서버 과부하?



클라이언트(여러분)가 키보드를 누르면 내용이 네트워크를 타고 서버로 넘어갑니다.

서버는 그에 해당하는 모든 처리를 놓치지 않고 수행해야 합니다.


 - 캐릭터가 어디로 움직이고

 - 마법은 어떤 마법 사용했으며

 - 쿨타임이 얼마나 남았는지

 - 체력, 마력이 얼만큼 늘고 줄어들 지

 - 등등등등등


서버는 이러한 일련의 과정을 모두 처리하고 그 결과를 다시 네트워크를 통해

같은 맵에 있는 모든 클라이언트들에게 뿌려 같은 화면을 볼 수 있게 합니다.



이렇게 들으면 할 일이 많아 보이지만 보통 이런 일로 서버에 과부하가 걸리진 않습니다.

사람이 아무리 키보드를 빠르게 친다고 한들 게임 서버의 처리 속도가 훨씬 빠르기 때문이죠.

네트워크 트래픽이 감당 못할 정도도 아닐 거고요.




그런데 오토핫키는 위에서 설명 드린 것처럼 서버가 처리하기 힘든 속도로 키보드를 칠 수 있습니다.

(어쩌면 서버가 렉 걸리는 원인이 자신이 될 수도?)


따라서 오토핫키는 조심히 사용해야 합니다. (큰 힘에는 큰 책임이 따른다고 하죠)



하지만 너무 걱정할 필요가 없는 게

서버에 과부하를 주지 않고 오토핫키를 안전하게 사용할 수 있도록 하는 것이 바로 sleep의 기능입니다.

sleep을 적절하게 사용하면 서버 뿐만 아니고 여러분들의 PC의 부담을 줄일 수 있습니다.



(이어서)

댓글 1
녹차 09.20 19:50
이야.. 최고!