Czy środowisko XNA jest odpowiednie do programowania po stronie serwera?

11

Chcę utworzyć tekstowy MUD, więc wiele elementów frameworka XNA wydaje się odpowiednie do tego, czego potrzebuję. Zwłaszcza takie rzeczy, jak ogólna pętla gry, praca w sieci itp. Wygląda na to, że XNA jest ściśle powiązany z interaktywnym środowiskiem z interfejsem użytkownika i dźwiękiem, więc nie jestem pewien, czy to właściwa droga.

Czy łatwiej byłoby po prostu odtworzyć te typy aspektów samemu, spróbować zginać szkielet XNA do tego, czego potrzebuję, czy też jest lepszy szkielet dla tego rodzaju pracy?

Agent_9191
źródło

Odpowiedzi:

5

Nie sądzę, aby środowisko XNA mogło zaoferować wiele korzyści po stronie serwera gry tekstowej, nie. Powinieneś spojrzeć na standardowe biblioteki klas środowiska .NET dla tego przypadku użycia.

Ale poszerzając nieco to pytanie, chociaż frameworki XNA są naprawdę przeznaczone do tworzenia gier 2d i 3d po stronie klienta, może być powód, aby używać ich części po stronie serwera w grze 2d lub 3d. Częste jest ponowne wykorzystywanie części silnika graficznego na serwerze, ponieważ serwer musi wykonywać takie czynności, jak testy widoczności i kolizji tak samo jak klient. W tym scenariuszu, jeśli Twój silnik użył biblioteki matematycznej z XNA, musisz połączyć ją również w kodzie serwera.

U62
źródło
3

Jeśli używasz C #, powinieneś po prostu rozważyć użycie WCF do wyodrębnienia warstwy sieciowej. Mówiąc relatywnie, MUD nie miałby dużo ruchu w sieci, więc wybranie tej trasy może ci ułatwić. Używam WCF do turowej gry strategicznej i całkiem dobrze mi to wyszło.

Mike Strobel
źródło
1
Generalnie zgodziłbym się, ale WCF nie obsługuje prostych telnetpołączeń. W przypadku zwykłych tekstowych MUD-ów udzielanie użytkownikom dostępu telnetdo serwera jest oczywiste.
Agent_9191
@ Agent_9191 W zależności od twoich celów, sensowne może być, aby telnetinterfejs był warstwą na bardziej niezawodnym API, np. Zbudowanym na WCF.
Cody Brocious,
Czy WCF nie wprowadziłby opóźnienia, czy użyłby niestandardowego powiązania, które mówiło o surowych gniazdach?
Nate,
Cóż, jeśli potrzebuje interfejsu telnet, WCF i tak prawdopodobnie nie jest dobrym wyborem; Podejrzewam, że to byłoby przesada. Ale nie sądzę, że opóźnienie byłoby problemem, biorąc pod uwagę, że informacje przesyłane tam iz powrotem byłyby stosunkowo proste - z pewnością prostsze niż ładunki wielu usług internetowych. Używam WCF do dość złożonej turowej gry strategicznej i nie miałem żadnych problemów z wydajnością. Utrzymuję niewielki ładunek dzięki niestandardowej serializacji, a opóźnienie nie stanowi problemu, ponieważ wiadomości nie są wysyłane bardzo często tam i z powrotem (w moim projekcie większość komunikatów odbywa się na końcu każdej tury).
Mike Strobel,
1

Możesz przejść trasę XNA i po prostu użyć określonych elementów (audio, sieci itp.); ale zwiększa złożoność projektu i zmniejsza „natychmiastowe zrozumienie” bazy kodu.

Zasadniczo, gdy dodajesz więcej oprogramowania pośredniego, Twoja wiedza o tym, jak działa Twój kod, zmniejsza się - chyba że zagłębisz się w implementację oprogramowania pośredniego. W miarę dystansowania tracisz wydajność, umiejętności i zrozumienie.

Tak więc, jak wspomniano powyżej, korzystniejsze byłoby używanie C # i odpowiednich bibliotek innych niż XNA.

Jeśli robisz to dla własnego rozwoju, równie dobrze możesz rzucić własny, tam gdzie jesteś zainteresowany obszarem - w ten sposób dowiesz się więcej.

Idź po to! Baw się dobrze!

AA Grapsas
źródło
1

W dużej mierze zależy to od twoich wymagań.

Jeśli interesuje Cię obsługa audio, przyjaciel zaprasza i tak dalej, niż sądzę, że XNA jest właściwą drogą.

Głównym ograniczeniem, jakie napotykasz przy korzystaniu z XNA do sieci, jest limit 32 graczy na grę.

Gdy tworzysz grę ze środowiskiem XNA, nie jest absolutnie konieczne łączenie się z wszystkimi różnymi interfejsami API. Wiele osób korzysta z frameworka XNA, ale korzysta z innych frameworków do tworzenia sieci.

Moją sugestią jest, aby fizycznie (zapisać je w notatniku lub coś takiego) wypisać swoje potrzeby i potrzeby dotyczące aspektu sieciowego. Następnie porównaj i skontrastuj różne ramy.

Krisc
źródło
-1

Skłaniam się do powiedzenia „twórz od zera”, ale to tylko przeczucie, oparte na osobnej pracy z kodem C # i MUD. Będziesz mieć większą kontrolę i dowiedz się więcej, tworząc własne wersje wszystkiego, co możesz użyć z XNA.

Jakiś powód, dla którego nie używasz istniejącego silnika MUD, przynajmniej w celach informacyjnych?

Andrew Brockert
źródło
Czy stopień używam istniejącego silnika w celach informacyjnych. Próbuję przenieść bazę kodu SMAUG do C # z istniejącej bazy C. Tak więc zestaw funkcji jest głównie zdefiniowany, po prostu działa w języku C #.
Agent_9191