면책 조항 : 내가 좋아하는 게임 유형은 텍스트 기반이며 오래된 MUD의 오랜 프로그래머로 작성합니다.
나는 당신이 스스로에게 물어봐야 할 중요한 질문은 이것이라고 생각합니다. 심지어 스레드가 필요합니까? 그래픽 게임이 MT를 더 많이 사용한다는 것을 이해하지만 게임의 메커니즘에도 달려 있다고 생각합니다. (GPU, CPU 및 오늘날 우리가 보유한 다른 모든 리소스를 사용하면 리소스에 대한 우려가 사용자에게 보이는 것처럼 문제가 될 수 있습니다. 실제로 100 개의 객체는 거의 제로입니다). 또한 '한 번에 모든 문자'를 정의하는 방법에 따라 다릅니다. 당신은 정확히 동시에 의미합니까? 베드로가 합리적으로 지적했듯이 한 번에 모든 것이 문자적인 의미와 관련이 없다는 것을 알 수 없습니다. 이 방법으로 만 나타납니다.
스레드와 함께 갈 것이라고 가정하면 : 100 개의 스레드를 고려해서는 안됩니다 (그리고 CPU에 너무 많은지 여부에 대해서는 다루지 않을 것입니다. 나는 합병증과 실용성 만 참조합니다).
그러나 이것을 기억하십시오 : 멀티 스레딩은 쉽지 않으며 (필립이 지적한 것처럼) 많은 문제가 있습니다. 다른 사람들은 MT보다 훨씬 더 많은 경험을 가지고 있지만, 그들도 같은 것을 제안 할 것이라고 말할 것입니다.
어떤 사람들은 스레드가 유익하지 않다고 동의하지 않으며 어떤 개체는 각 객체에 스레드가 있어야한다고 주장합니다. 그러나 필립은 게임이 목록을 반복하는 경향이 있다고 지적하면서 (이것은 모든 텍스트이지만 두 개 이상의 스레드를 고려하더라도 각 객체에 대해 고려할 필요는 없습니다.) 그러나 너무 적은 객체에 대해서만 (아마도 그가 너무 적은 객체의 매개 변수에만 응답하고 있음을 알 수 있지만) 아닙니다. MUD에서 나는 우리에게 다음과 같은 것을 가지고있는 프로그래머입니다 (그리고 이것은 실시간으로 일어나는 모든 활동이 아니기 때문에 그것을 명심하십시오).
(인스턴스 수는 물론 높고 낮음)
모바일 (NPC, 즉 비 플레이어 캐릭터) : 2614; 프로토 타입 : 1360 개체 : 4457; 프로토 타입 : 2281 실 : 7983; 프로토 타입 : 7983. 각 객실에는 일반적으로 자체 인스턴스가 있지만 객실 내에 방을 말하는 동적 방도 있습니다. 또는 이동체 내부의 방, 예를 들어 용의 위; 또는 물체의 방 (예 : 마법의 물체를 입력). 이 동적 룸은 실제로 정의 된 오브젝트 / 룸 / 모바일마다 존재합니다. 그렇습니다. 이것은 월드 오브 워크래프트와 매우 비슷합니다. (게임을하지는 않지만 친구가 Windows 머신을 가지고있을 때 한동안 친구가 게임을했던 경우) 월드 오브 워크래프트가 존재하기 훨씬 전에 인스턴스를 제외하고는 인스턴스에 대한 아이디어를 얻었습니다.
스크립트 : 868 (현재) (이상하게도 통계 명령은 프로토 타입이 몇 개인 지 보여주지 않기 때문에 추가 할 것입니다). 이들 모두는 지역 / 지역에서 개최되며 103 개가 있습니다. 우리는 또한 다른 시간에 처리하는 특별한 절차를 가지고 있습니다. 다른 행사도 있습니다. 그런 다음 소켓도 연결했습니다. 모바일은 움직이며 다른 활동 (전투 이외)을하고 플레이어와 상호 작용하는 등의 일을합니다. 다른 유형의 엔티티도 마찬가지입니다.
지체없이이 모든 것을 어떻게 처리합니까?
소켓 : select (), 큐 (입력, 출력, 이벤트, 기타 사항), 버퍼 (입력, 출력, 기타 사항) 등 이들은 초당 10 번 폴링됩니다.
캐릭터, 물체, 방, 전투, 모든 것 : 모두 다른 펄스의 중앙 루프에 있습니다.
또한 (창업자 / 다른 프로그래머와 본인 간의 토론을 기반으로 한 구현)에는 광범위한 링크 목록 추적 및 포인터 유효성 테스트가 있으며 실제로 필요한 경우 충분한 무료 리소스가 있습니다. 이 모든 것 (세계를 확장 한 것을 제외하고)은 몇 년 전에 RAM, CPU 전력, 하드 디스크 공간 등이 적었을 때 존재했습니다. 실제로도 우리는 아무런 문제가 없었습니다. 설명 된 루프에서 (스크립트는 다른 것들과 마찬가지로 영역 재설정 / 다시 채우기와 같이) 몬스터, 객체 (항목) 및 기타 것들이 생성되고 해제되는 등의 일을합니다. 연결도 수락, 폴링 및 기타 기대할 수 있습니다.