차례 차례로 작동하는 턴 기반 멀티 플레이어 게임을 제작하고 있습니다. 기본적으로 플레이어는 성냥을 호스트하고 다른 사람이 그것을 합친 다음 게임이 진행됩니다. 내 서버는 이러한 일치 사항을 처리하고 5 초마다 클라이언트에 업데이트를 제공해야합니다. 나는 보통 타이머/thread.sleep()을 사용하여이 작업을 수행한다. 내 문제는 여러 일치를 동시에 수행하는 방법에 대해 확신 할 수 없다는 것입니다. 경기 당 스레드를 사용하는 것이 우스꽝스럽게 느껴질 것입니다. 아무 것도하지 않고 유휴 상태로 앉아있을 것입니다.Java NIO 서버 턴 기반 게임
내 생각으로는 5 초 간격으로 매치를 업데이트하는 스레드가 하나만있는 것입니다. 내가 거기있는 유일한 문제는 많은 경기가 한꺼번에 진행될 때 마지막으로 업데이트되는 게임이 상당히 지연 될 수 있다는 것입니다. (내 게임이 시간 기반이기 때문에 이것이 얼마나 비판적인지 모르지만 원시적 인 것처럼 보입니다.)
내 다른 옵션은 유망한 것으로 보이는 ScheduledExecutorService (스레드 풀)를 사용하는 것이 었습니다. 나는 또한 소켓 연결에 대한 스레드 풀을 실행하는거야 때문에
나는 나의 ScheduledExecutorService를 스레드 풀 문제로 실행시겠습니까?
2. 달성하고자하는 목표를 달성하는 데 더 좋은 방법이 있습니까?
그냥 명확히하기 위해 매치마다 매 5 초마다 함수를 호출하는 방법을 찾고 있습니다. 예 :
내 게임은 0에서 시작하고 게임은 2 초에서 시작됩니다. , 2,7,12,17,22,27 : 당신을 위해
... 05101520,25 등 : 나를 위해
: 서버는 업데이트 기능을 부를 것이다 등등 ...
이 게임은 Java Swing으로 작성되어 클라이언트 측에서 실행됩니까? – amphibient
이것은 네트워크 게임입니까? 로컬 네트워크 또는 이더넷 용? 어떤 프로토콜을 알림 (tcp, udp, 등)에 사용합니까? – iMysak
1, 서버가 바뀌면 자원 관리 문제 이외의 문제는 생기지 않습니다. 2, udp 멀티 캐스팅을 약간 볼 수 있으며 JMS 항목을 살펴볼 수도 있습니다. – BevynQ