먼저 코드에서이 코드를 시도하지 않았다고 고백 할 것이므로이 코드가 총을 뛰어 넘으면 사과드립니다. 좋은 질문을 올리기 위해서는 충분한 노력과 연구가 선행되어야한다는 것을 알고 있습니다. 그러나 GameKit과 Game Center 문서 및 iOS 개발자 요리 책을 읽은 후에 GameKit에서 올바른 기능을 찾을 수없는 것 같아서이 문제를 해결하기 위해 API 외부에서 어떻게 모험 할 수 있었는지 궁금합니다.iOS/iPhone - 연결이 끊어진 플레이어와의 경기에서 컴퓨터 플레이어 (임의 배우)를 구현하는 방법은 무엇입니까?
가장 단순한 수준에서 한 플레이어가 우연히 또는 악의적으로 연결을 끊은 후에 종료되지 않는 시간 제한 2 인 게임을 구현하고 싶습니다. (현재는 별다른 차이가 없으며 기술적으로 가능한지 모르겠습니다. . 본질적으로 경기가 시작되고 두 명이 경기를 시작하면 한 선수가이기거나 경기 시간 (예 : 10 분)이 만료 될 때까지 경기가 계속되기를 원합니다.
내가 조언하고 싶은 것은 한 선수가 연결을 끊을 때 경기를 유지하는 방법입니다. (현재 두 플레이어가 동시에 연결을 끊고 조기에 연결을 끊으면 결과가 표시되지 않으므로 아무런 문제가 없습니다.) 사용자의 연결이 끊어진 경우 iOS 클라이언트가 임의로 작업을 선택하도록 설정하려면 어떻게해야합니까? 이 프로그램을 서버 또는 iOS 클라이언트에서 모두 실행해야합니까? iOS 응용 프로그램과 일치하도록 Objective-C에서 가장 잘 수행 되었습니까? 아니면 PHP와 같은 다른 네트워킹 언어의 서버 측 코드 여야합니까? 이 동작을 잘 처리하는 API가 있습니까? 로큰롤 가위처럼 매 턴마다 플레이어는 공격이나 방어와 같은 액션을 선택하는 데 1 분의 시간 제한을두고 선택없이 타이머가 만료되면 컴퓨터 프로그램이 플레이어의 액션을 무작위로 선택합니다. 연결이 끊긴 플레이어도 같은 방식으로 다루고 싶습니다. 액션의 선택을 제공하기 위해 그 또는 그녀가 경기에 연결되어 있지 않은 경우, 컴퓨터는 분당 1 분에 무작위로 그 또는 그녀가 연결되어 있다면. 이와 같이 온라인으로 경기를 유지하고자하는 나의 목적은 (a.) 패배하기 직전에 연결을 끊는 플레이어에게 적절한 손실이 있는지 확인하고, (b) 선의로 온라인에 머물러있는 플레이어가 자신의 당첨 자격이되는지 평가하고, 우연히 또는 우연히 연결을 끊은 플레이어는 적시에 반환하여 경기를 구제 할 수 있습니다. 온라인 게임이 많이 있지만, iOS 또는 iPhone을 연결하는 두 명의 플레이어가 적절한 API 또는 과거 예제를 찾지 못했습니다. Game Center는 경기를 중단하거나 턴베이스의 게임에서 드롭을하는 것처럼 보입니다. (내 지식에) 집행 가능한 턴 타이머가 없습니다. 나는 문서에서 누가 연결을 끊었는지를 알 수있는 방법을 찾지 못했고 실패했을 때 온라인 상태로 유지하는 확실한 방법은 보이지 않았지만 타이머는 계속 실행되었습니다. 피어 - 투 - 피어의 모든 것이 클라이언트 - 서버 관계 (클라이언트와 서버 중 하나는 피어)를 시뮬레이트하는 것처럼 보였습니다. 서버 장치가 연결을 끊으면 일치가 끝나야하며 연결이 끊긴 플레이어가 다시 연결되면 일치가 다시 시작될 수 없습니다. 간단히 말해 코드 솔루션에 반대하지는 않지만이 동작을 지원하는 프레임 워크에 대한 조언이나 조언조차도 대단히 감사하겠습니다. 고맙습니다!
흥미로운 토론입니다. 나는 그것을 고려했으나, 그것이 다른 한 곳은 내 게임에서 플레이어가 같은 시계에 자신의 움직임을 제출한다는 것입니다. 즉 턴 기반 게임이지만 두 플레이어가 자신의 몬스터에 대한 액션을 선택하면 턴이 가장 먼저 진행되는 몬스터와 함께 진행됩니다. 동시 "턴"을 구현할 방법이있는 경우 (두 플레이어가 시계 방향을 결정하기 전에 두 플레이어가 모두 자신의 동작을 선택합니다), 그게 해결책입니다. – Cindeselia
@Cindeselia 글쎄, 턴 기반 게임 (약간의 스트레칭처럼 들리네)으로 모델링하고 싶다면 iOS 7 게임 센터 교환이 플레이어를 동기화하는 것 외에도 도움이 될 것 같네요. – Drux
각 액션이 순서대로 수행되기 때문에 턴 기반 게임입니다. 즉플레이어 A와 플레이어 B를 상상하십시오. 1 턴 동안 플레이어 A와 플레이어 B가 이동을 선택하고 두 플레이어가 모두 선택하면 (또는 회전 제한 시간이 경과하면) 실시간 동작에 의존하지 않고 이동이 전개됩니다. 가장 빠른 속도의 캐릭터가 가장 먼저 이동 한 다음 가장 빠른 속도의 캐릭터가 선택되며, 선택된 모든 명령이 실행될 때까지 회전합니다. 그런 다음 턴 2가 시작되고 플레이어 A와 B가 다시 이동을 선택합니다. 실시간이 아니며 각 방향마다 시간 제한이 있습니다. – Cindeselia