Il framework XNA è appropriato per la programmazione lato server?


11

Sto cercando di creare un MUD basato su testo, quindi molti elementi del framework XNA sembrano appropriati per ciò di cui ho bisogno. Soprattutto cose come il loop di gioco generale, il networking, ecc. Sembra che XNA sia strettamente associato a un ambiente interattivo con interfaccia utente e audio, quindi non sono sicuro che sia la strada giusta da percorrere.

Sarebbe più semplice ricreare questi tipi di aspetti da solo, tentare di piegare il framework XNA a ciò di cui ho bisogno o esiste un framework migliore per questo tipo di lavoro?

Risposte:


5

Non credo che il framework XNA ti offrirebbe molto utile per il lato server di un gioco basato su testo, no. Dovresti guardare le librerie di classi .NET framework standard per quel caso d'uso.

Ma allargando un po 'la domanda, anche se i framework XNA sono davvero destinati allo sviluppo di giochi 2D e 3D sul lato client, potrebbe esserci motivo di usarne parti sul lato server di un gioco 2D o 3D. È comune riutilizzare parti del motore grafico sul server perché il server ha bisogno di fare cose come il test di visibilità e di collisione proprio come fa il client. In quello scenario, se il tuo motore ha utilizzato la libreria matematica di XNA, dovrai collegarla anche nel codice del tuo server.


3

Se stai usando C #, dovresti semplicemente considerare di usare WCF per astrarre il livello di rete. Un MUD non avrebbe molto traffico di rete, relativamente parlando, quindi seguire questo percorso potrebbe rendere le cose molto più facili per te. Ho usato WCF per un gioco di strategia a turni, e per me ha funzionato abbastanza bene.


1
In generale, sono d'accordo, ma WCF non supporta telnetconnessioni diritte . Per i normali MUD basati su testo, consentire agli utenti di accedere al telnetserver è un dato di fatto.
Agent_9191,

@ Agent_9191 A seconda dei tuoi obiettivi, potrebbe essere logico che l' telnetinterfaccia sia uno strato sopra un'API più solida, ad esempio uno basato su WCF.
Cody Brocious,

WCF non introdurrebbe la latenza o utilizzeresti un'associazione personalizzata che parlava di socket non elaborati?
Nate,

Bene, se ha bisogno di un'interfaccia telnet, WCF probabilmente non è comunque una buona scelta; Sospetto che sarebbe eccessivo. Ma non credo che la latenza sarebbe un problema considerando che le informazioni inviate avanti e indietro sarebbero relativamente semplici - sicuramente più semplici dei payload di molti servizi web. Uso WCF per un gioco di strategia a turni abbastanza complesso e non ho avuto problemi di prestazioni. Tengo piccolo il payload con la serializzazione personalizzata e la latenza non è un problema perché i messaggi non vengono inviati avanti e indietro molto spesso (per il mio progetto, la maggior parte dei messaggi avviene alla fine di ogni turno).
Mike Strobel,

1

Puoi seguire il percorso XNA e usare solo gli elementi particolari che desideri (audio, networking, ecc.); ma sta aumentando la complessità del progetto e diminuendo la "comprensione immediata" della base di codice.

Fondamentalmente, quando aggiungi più middleware, la tua conoscenza del modo in cui il tuo codice sta effettivamente diminuendo, a meno che tu non approfondisca l'implementazione del middleware. Man mano che ti allontani, perdi efficienza, abilità e comprensione.

Quindi, come detto sopra, sarebbe molto più utile usare C # e le librerie non XNA appropriate.

Se lo stai facendo per la tua edificazione, potresti anche ruotare il tuo dove ti interessa l'area - imparerai di più in questo modo.

Fallo! Divertiti!


1

Dipende in gran parte dalle vostre esigenze.

Se sei interessato a supportare l'audio, gli amici ti invitano, eccetera di quanto credo che XNA sia la strada da percorrere.

Il limite maggiore che affronti usando XNA per il networking è il limite di 32 giocatori per partita.

Quando si sviluppa un gioco con il framework XNA, non è assolutamente necessario essere accoppiati a tutte le varie API. Molte persone usano il framework XNA ma si affidano ad altri framework per il networking.

Il mio suggerimento è quello di elencare fisicamente (annotarli nel blocco note o qualcosa del genere) le tue esigenze e desideri per l'aspetto della rete. Quindi confrontare e contrastare i vari framework.


-1

Sono incline a dire "crea da zero", ma è solo una sensazione viscerale basata sull'aver lavorato separatamente con i codici C # e MUD. Avrai più controllo e imparerai di più realizzando le tue versioni di qualsiasi cosa tu possa essere in grado di usare da XNA, comunque.

Qualche motivo per cui non stai utilizzando un motore MUD esistente, almeno per riferimento?


Fai un grado che sto usando un motore esistente come riferimento. Sto tentando di trasferire la base di codice SMAUG su C # dalla base C esistente. Quindi il set di funzionalità è per lo più definito, lo fa funzionare in C #.
Agent_9191,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.