XNA 프레임 워크가 서버 측 프로그래밍에 적합합니까?


11

텍스트 기반 MUD를 만들려고하므로 XNA 프레임 워크의 많은 요소가 필요한 것에 적절하게 보입니다. 특히 일반적인 게임 루프, 네트워킹 등과 같은 것들입니다. XNA는 UI와 오디오가있는 대화 형 환경과 밀접하게 연결되어 있으므로 올바른 방법인지 확실하지 않습니다.

이러한 유형의 측면을 직접 재현하는 것이 더 쉬울까요, XNA 프레임 워크를 필요한 것으로 구부리려고 시도합니까, 아니면 이러한 유형의 작업을위한 더 나은 프레임 워크가 있습니까?

답변:


5

나는 XNA 프레임 워크가 당신에게 텍스트 기반 게임의 서버 측에 많은 용도를 제공한다고 생각하지 않는다. 해당 사용 사례에 대한 표준 .NET 프레임 워크 클래스 라이브러리를 살펴 봐야합니다.

그러나 XNA 프레임 워크는 실제로 클라이언트 측 2d 및 3d 게임 개발을위한 것이지만, 2D 또는 3d 게임의 서버 측에서 일부를 사용하는 원인이있을 수 있습니다. 서버는 클라이언트와 마찬가지로 가시성 및 충돌 테스트와 같은 작업을 수행해야하기 때문에 서버에서 그래픽 엔진의 일부를 재사용하는 것이 일반적입니다. 이 시나리오에서 엔진이 XNA의 수학 라이브러리를 사용한 경우 서버 코드에서도 수학 라이브러리를 링크해야합니다.


3

C #을 사용하는 경우 WCF를 사용하여 네트워킹 계층을 추상화하는 것을 고려해야합니다. MUD는 ​​상대적으로 많은 네트워크 트래픽을 가지고 있지 않기 때문에이 경로를 사용하면 훨씬 쉬워 질 수 있습니다. 턴 기반 전략 게임에 WCF를 사용하고 있으며, 그것은 나에게 아주 잘 맞습니다.


1
일반적으로 동의하지만 WCF는 직접 telnet연결을 지원하지 않습니다 . 일반 텍스트 기반 MUD의 경우 사용자가 telnet서버에 액세스 할 수 있습니다.
Agent_9191

@ Agent_9191 목표에 따라 telnet인터페이스를보다 강력한 API (예 : WCF 기반의 API) 위에있는 계층으로 만드는 것이 좋습니다.
코디 브로셔 스

WCF에서 대기 시간이 발생하지 않습니까, 아니면 원시 소켓과 통신하는 사용자 지정 바인딩을 사용 하시겠습니까?
Nate

만약 그가 telnet 인터페이스가 필요하다면 WCF는 아마도 좋은 선택이 아닐 것이다. 과잉 일 것 같아요. 그러나 나는 많은 웹 서비스의 페이로드보다 훨씬 간단하고 전송되는 정보가 비교적 단순하다는 점을 고려할 때 지연 시간이 문제가 될 것이라고 생각하지 않습니다. 상당히 복잡한 턴제 전략 게임에 WCF를 사용하는데 성능 문제가 없었습니다. 나는 사용자 정의 직렬화로 페이로드를 작게 유지하며 메시지가 자주 전송되지 않기 때문에 대기 시간은 문제가되지 않습니다 (프로젝트의 경우 대부분의 메시지는 매번 끝날 때 발생합니다).
Mike Strobel

1

XNA 경로를 사용하여 원하는 특정 요소 (오디오, 네트워킹 등)를 사용할 수 있습니다. 그러나 프로젝트의 복잡성이 증가하고 코드베이스에 대한 "즉각적인 이해"가 감소하고 있습니다.

기본적으로 미들웨어를 더 많이 추가할수록 미들웨어 구현에 대해 자세히 다루지 않는 한 코드의 실제 작동 방식에 대한 지식이 줄어 듭니다. 거리가 멀어지면 효율성, 능력 및 이해력이 떨어집니다.

따라서 위에서 언급했듯이 C # 및 적절한 비 XNA 라이브러리를 사용하는 것이 훨씬 유리합니다.

당신이 당신의 자신의 교화를 위해이 작업을 수행하는 경우, 당신은 당신이 관심이있는 지역에 자신의 롤뿐만 아니라이 방법을 배울 것입니다.

해봐! 즐기세요!


1

그것은 당신의 요구 사항에 크게 의존합니다.

오디오 지원에 관심이 있다면 XNA가 나아갈 길이라고 생각하는 것보다 친구 초대 등이 있습니다.

네트워킹에 XNA를 사용할 때 직면하는 주요 제한 사항은 게임당 플레이어 수 제한입니다.

XNA 프레임 워크로 게임을 개발할 때 모든 다양한 API에 반드시 연결될 필요는 없습니다. 많은 사람들이 XNA 프레임 워크를 사용하지만 네트워킹을 위해 다른 프레임 워크에 의존합니다.

내 제안은 네트워킹 측면에 대한 요구 사항과 요구 사항을 물리적으로 (메모장이나 무언가로 적어 두십시오) 나열하는 것입니다. 그런 다음 다양한 프레임 워크를 비교하고 대조하십시오.


-1

나는 "처음부터 생성"이라고 말하지만, 그것은 C #과 MUD 코드를 따로 따로 작업 한 것에 불과합니다. 어쨌든 XNA에서 사용할 수있는 모든 버전을 롤링하여 더 많은 제어력을 얻고 더 많은 정보를 얻을 수 있습니다.

적어도 참고 용으로 기존 MUD 엔진을 사용하지 않는 이유는 무엇입니까?


참고로 기존 엔진을 사용하고 있습니다. SMAUG 코드베이스를 기존 C베이스에서 C #으로 이식하려고합니다. 기능 세트는 대부분 정의되어 있으며 C #에서 작동합니다.
Agent_9191
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.