2017-11-19 15 views
0

사람들이 다른 게임에 참여할 수있는 로비가있는 멀티 플레이어 게임을 개발 중입니다.Java 서버의 각 게임 룸에 대한 스레드?

각 게임 룸마다 스레드를 시작해야하는지 궁금합니다.

나는 이미 각 플레이어마다 스레드가 있으므로 java.io를 사용하고 있습니다.

각 스레드에 많은 부하가 없어도 많은 스레드가 내 서버를 느리게합니까?

만약 내가 100 명의 플레이어와 30 개의 객실을위한 서버를 호스팅한다면 avarage 가상 서버는 한번에 150 개의 스레드를 처리 할 수 ​​있습니까? 아니면 게임 플레이에 영향을 미칩니 까?

각 위치 업데이트 (UDP)에 대해 인스턴트 메시지 전송이 필요한 실시간 게임입니까?

+0

일반적으로 유용한 것보다 더 많은 스레드를 사용하면 성능이 저하 될 수 있습니다. 그러나이 수치가 작을수록 성능면에서 약간의 차이는 아마도 추가 복잡성의 가치가 없을 것입니다. (성능을 향상 시키려면 스레드를 130 번 정도 전환하지 않고 100 개의 클라이언트와 30 개의 룸 각각에 대해 약간의 작업을 수행 할 수 없으므로보다 효율적인 설계로 이러한 모든 컨텍스트 전환을 피할 수 있습니다.) –

+0

@DavidSchwartz 예, 각 플레이어와 연결에 대해 별도의 객체를 사용하면 훨씬 쉽게 디자인 할 수 있습니다. 조언을 주셔서 감사합니다. 다른 것에 대해 너무 많이 걱정하지 않고 제 디자인에 집중하는 것이 좋습니다. :) –

답변

0

스레드는 (이미 알고있는 것처럼) 작업을 동시에 실행할 수 있도록 허용합니다. 많은 수의 스레드가 서버의 속도를 항상 돕거나 단점으로 만들지는 않습니다. 인터넷 속도 나 컴퓨터의 처리 능력과 같은 다른 요소에 의해 제한됩니다. 반대편에있는 사람들의 게임 플레이는 컴퓨터가 모든 요청을 처리 할 수있는 한 빨리 실행됩니다. 10000 개의 스레드가 있어도 인터넷을 통해 처리 능력과 연결이 모두 필요합니다.

요약하면 서버 속도와 클라이언트 속도는 인터넷 연결 속도 및/또는 CPU 성능에 따라 제한됩니다.

질문에 답변하지 않은 경우 일반적인 질문을 많이하지 말고 실제 질문을보다 명확하게 정의하십시오.

편집 : 내 의견을 읽은 후 내 의견 : 서버에 가장 적합하다고 생각되는 모든 것을 수행하십시오. 가닥의 하중을 가하면 좋거나 나쁘다고해서 서버에 영향을 미치지 않습니다. :)

+0

감사합니다. 나는 그것이 서버에 대한 최선의 선택이 아닐지라도 그것이 정말로 나쁠지를 알고 싶었다. –