2010-03-13 10 views
13

Un gioco scritto in C# avrà problemi di velocità dopo lunghi periodi di gioco, come per 24 ore alla volta? Sto parlando in particolare di un gioco di ruolo in 2D simile ai vecchi giochi di Final Fantasy o Dragon Quest. So che linguaggi come Python rallenteranno troppo, curioso di sapere come C# starebbe in piedi.C# è abbastanza veloce per i giochi

Modifica: programmi che scrivo sono un po 'come un albero di termiti infestate :)

@jimmy - questo è l'intero punto di questo. Sto lavorando su un piccolo clone FF per migliorare la mia codifica

+7

"problemi di velocità dopo lunghi periodi di gioco" - indipendentemente dalla lingua, che suona come perdite di memoria, o semplicemente 'cimici ol .. –

+1

@Mitch Grano - Non è possibile che il modo in cui funziona il raccoglitore di rifiuti lo possa influenzare? Se non è molto buono e causa la frammentazione, è ipotizzabile che dopo 24 ore le cose rallenteranno. –

+1

@Edan: questo sarebbe un bug nel garbage collector. – kervin

risposta

11

Sì, lo è. Dai uno sguardo a XNA. Ci sono già alcuni giochi scritti in C#.

0

Il kit XNA Game per Xbox 360 utilizza C# ...

+0

Nessuna idea perché hai un voto negativo. +1 da me. –

2

mi piacerebbe prendere uno sguardo a questo Canale 9 video pubblicato anni fa da Eric Lippert

Eric Lippert - Have you noticed a performance hit in .NET?

E 'un grande orologio se ti stai chiedendo prestazioni comparative. L'hardware del computer ha fatto molti più progressi da allora, ma il concetto non è cambiato, C# /. Net può avere prestazioni eccellenti se lo si utilizza correttamente.

+1

Wow, è un vecchio. Oggi ho incontrato Charles sull'autobus; speriamo di ricevere altri video su Channel 9 uno di questi giorni. –

2

Se il codice rallenta nel corso della sua esecuzione - e con questo intendo che fare la stessa cosa richiede più tempo - è un segno che la memoria non viene gestita correttamente. Non so cosa intendi per il rallentamento di Python, ma non ho molta esperienza con esso. È possibile che alcune librerie di giochi o di grafica non gestiscano correttamente la memoria, il che potrebbe causare il deterioramento delle prestazioni (e infine l'arresto anomalo). Ma chiudere l'app e riavviare risolverebbe qualsiasi problema del genere - e sicuramente avresti una funzione di salvataggio se un utente dovesse giocare per 24 ore?

Per rispondere alla tua domanda, C# scritto correttamente non rallenta se si gioca lo stesso gioco troppo a lungo. (Ma nessuno dei due avrebbe scritto correttamente il codice Python o qualsiasi altra lingua).

2

La logica di gioco di alto livello potrebbe essere sicuramente scritta in Python. In effetti è abbastanza comune usare un linguaggio di scripting "lento" per consentire più libertà al game designer. In pratica i livelli più bassi del gioco (come l'interfaccia/i driver hardware) sono scritti in C. Tutto il resto è aperto al dibattito a seconda del tipo di prestazioni richiesto e del tipo di hardware su cui verrà eseguito.

-1

La riscrittura .NET di Quake:

http://www.codeproject.com/KB/mcpp/quake2.aspx

+0

Eccellente esempio del potenziale delle prestazioni .NET! Ma quella porta era effettivamente fatta con C++ gestito e non C#. –

+1

Sì, è vero, Paul. Alla fine della giornata abbiamo un po 'di IL e un'applicazione gestita. Il linguaggio attuale utilizzato per arrivarci non dovrebbe essere troppo importante. – Alex

+0

@Alex, Managed C++ accetta anche l'uso di librerie native non gestite. Parte del tuo programma potrebbe essere gestita e l'altra potrebbe essere non gestita, ciò che è speciale in Managed C++. Quindi non è esattamente come VB .NET e C# che sono assembly puramente gestiti con IL. – Mzn