GAE를 사용하는 멀티 플레이어 기능이있는 턴 기반 RPG 게임을 만들고 있습니다. 나는 플레이어가 온라인에있는 다른 플레이어를 볼 수있는 pvp 로비를 가지고있다. 플레이어는 또한 로비에서 서로 도전하고 싸움을 시작할 수 있습니다. 실제 싸우는 것은 많은 자원을 차지하지 않습니다. 뭐가 리소스를 차지하는가 로비입니다. 대시 보드에서 "데이터 저장소 읽기 작업"이 대부분의 리소스를 차지하는 것을 볼 수 있습니다.GAE 데이터 스토어 최적화 읽기
나는이 일을하는 방식이 매우 어리 석다는 것을 확신한다. 나는 더 좋은 방법이되어야한다는 것을 의미한다. 로비에있는 모든 플레이어는 매초마다 서버에 핑합니다. 그런 다음이 발생합니다
서버 점검 등록 된 플레이어의 목록을 통해 핑 플레이어의 이름이 목록에있는 플레이어의 이름과 일치하는지 확인. 그 객체는 (2)와 (3)에서 사용됩니다.
서버는 플레이어가 핑 (ping) 한 시간을 업데이트하여 지난 10 초 동안 서버에 ping 한 플레이어 만 포함하는 목록을 반환 할 수 있습니다.
서버는 누군가 해당 플레이어에 도전했는지 확인합니다. 여기
javax.jdo.Query query = pm.newQuery("SELECT FROM " + Player.class.getName());
List<Player> players = new ArrayList<Player>();
players = (List<Player>) query.execute();
for(int i = 0; i < players.size(); i ++)
{
if(players.get(i).getName().equals(playerName))
{
//Found correct player!
break;
}
}
로비에있는 각 플레이어는 실제 낭비처럼 보입니다.
질문 :이 작업을 수행하는 데 더 좋은 방법이 있습니까? 아마도 콜링 플레이어를 비효율적으로 가져 오는 것 같아요?
일시적인 데이터처럼 들리며 데이터 저장소에 유지되는 것이 아니라 memcache에서 더 나은 서비스를 제공 할 수 있습니다. – Martin