2010-02-02 2 views
0

멀티 플레이어 3D 게임을 작성하고 싶습니다. 그것은 가상 세계가 될 것이며, 그 사용자는 선수로 대표됩니다. 모든 플레이어는 3D 모델입니다. 이것을 Java와 JOGL로 작성하여 크로스 플랫폼이되고 웹 (애플릿)을 통해 액세스 할 수있게 될 것입니다. 서버는 C++에서 wrriten 될 것입니다.가상 세계 도움말

가상 세계의 어떤 지점에서 마우스를 클릭하면 애니메이션의이 지점으로 이동합니다. 내 질문은 클라이언트가 어디로 갈지 계산하고 매번 서버에 새로운 위치를 보내면 서버가 클라이언트를 업데이트 할 것입니까? 또는 클라이언트가 원하는 위치로 서버를 보내면 서버가이 클라이언트와 모든 클라이언트에게 새로운 위치를 보냅니 까? 최소한의 대역폭을 원하고 스크립트 키디를 방지 할 것을 고려하십시오.

감사합니다.

+0

Yay RuneScape clone! 몇 주 또는 몇 달 후에 여기로 돌아와서 당신이 한 일을 우리와 공유하십시오. 나는 당신의 진전을 보러 솔직히 관심을 가질 것입니다. – Ricket

답변

4

일반적인 디자인은 클라이언트에서 동작이 성공할 것이라고 가정하고 서버가 수행 한 작업을 서버에 알려주고 서버가 클라이언트가이를 감지하면 클라이언트를 "수정"할 수 있다고 믿습니다. 뭔가 비린내가. 이렇게하면 게임 클라이언트가 서버의 거부권을 계속 제공하면서 플레이어의 요청에 응답 할 수 있습니다.

서버는 항상 세계 상태에 대한 권한을 가지며 다른 게임 클라이언트는 서버를 통해서만 정보를 수신하므로 클라이언트의 불법적 인 작업은 항상 서버에 의해 잡히게됩니다 다른 플레이어에게 영향을줍니다.

0

클라이언트 쪽에서 치트가 싫다면 서버로 플레이어의 위치를 ​​계산하는 것이 더 좋지만 서버가 다른 사람의 위치를 ​​처리 할 때 다른 플레이어보다 늦지 않도록 스레딩을해야합니다.

0

절대 클라이언트 측을 신뢰하지 마십시오. 고의적 인 속임수와 주목받지 못한 부패를 포함하여 모든 종류의 문제가 발생할 수 있습니다. 클라이언트가 문자의 위치를 ​​지정할 수 있도록 허용하는 경우 일부 클라이언트는 클라이언트의 범위를 벗어나기를 원하는 위치를 지정하고 일부는 정상적인 방법으로 벗어날 수없는 격렬한 부정확 한 위치를 생성합니다 (단, 텔레포트에서 가내 기지 능력).

클라이언트는 문자를 전송할 서버에 알려야하며 서버는 그에 응답해야합니다. 캐릭터가하는 일은 이미 다른 모든 관련 고객에게 알려야하기 때문에 모든 클라이언트에 대해 그렇게 할 수 있습니다.

Runescape은 제가 제안한 유일한 MMORPG입니다. Runescape에서 연결 문제가있어 이동하려면 클릭하면 서버가 동작을 인식하고 인식 할 때까지 캐릭터가 계속 움직입니다 (사소한 방향으로 움직여도 살아 보이기는하지만). (당신의 캐릭터는 사용자 입력없이 싸울 것이며, 위험한 지역에서 나쁜 연결을 견뎌 낼 수있는 기회를 제공합니다.)

+0

예, 저는 RuneScape에서 아이디어를 가져 왔습니다. –