Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Quel avenir pour le C# dans les jeux vidéos ?
Pourra-t-il concurrencer le C++ dans un futur proche ?

Le , par SBHR_, Membre régulier
Les jeux vidéo sont aujourd'hui souvent développés à l'aide du langage C++.
Un indicateur fiable sont les offres d'emploi dans les studios de développement.

Pourtant, aujourd'hui, quelquefois, des connaissances en C# commencent à être demandées.
Cela reste rare.

J'ai posé directement la question suivante : "Hello. Do you think that C# will replace C++ in studios in a near future?"
à Stefan Boberg (directeur technique du Frosbite Engine chez EA DICE) et à Christopher Kline (directeur technique d'Irrational Games).

Voici leur réponse :
- Stefan Boberg : "Hi, no it will not replace C/C++ for AAA games at least. It may be used as a supplement though, for higher-level gameplay code."
- Christopher Kline : "not for AAA console titles. XBLA and other smaller games are already using it."

John Carmack (fondateur et directeur technique d'Id Software) a même écrit récemment :"if you are just starting, java or c# might be better than c++" et "all the snarky comments about shooting yourself in the foot with C and C++ are true. C# and java trade some perf for some safety."

Quel est votre avis sur le sujet?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de - http://www.developpez.com
le 26/05/2011 à 16:07
c'est très complet, merci pour les informations.
On est bien d'accord en général, mon avis diffère sur le coût de lancer le JIT une fois de temps en temps, et sur le fait que le coût est negligeable par rapport au code généré.
Et apparemment on est pas d'accord sur le cout en mémoire du runtime.
Avatar de supertonic supertonic - Membre habitué http://www.developpez.com
le 27/05/2011 à 12:06
je crois que c'est pas la peine d'insister là LLB, ya rien à faire
Avatar de rt15 rt15 - Membre confirmé http://www.developpez.com
le 27/05/2011 à 12:09
Citation Envoyé par LLB  Voir le message
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
            int sum = 0; 
00000000  push        ebp  
00000001  mov         ebp,esp  
00000003  sub         esp,0Ch  
00000006  mov         dword ptr [ebp-4],ecx  
00000009  cmp         dword ptr ds:[0011313Ch],0  
00000010  je          00000017  
00000012  call        61BD63AB  
00000017  xor         edx,edx  
00000019  mov         dword ptr [ebp-0Ch],edx  
0000001c  xor         edx,edx  
0000001e  mov         dword ptr [ebp-8],edx  
00000021  xor         edx,edx  
00000023  mov         dword ptr [ebp-8],edx  
            for (int i = 0; i < 100; i++) 
00000026  xor         edx,edx  
00000028  mov         dword ptr [ebp-0Ch],edx  
0000002b  nop  
0000002c  jmp         00000037  
                sum += i; 
0000002e  mov         eax,dword ptr [ebp-0Ch]  
00000031  add         dword ptr [ebp-8],eax  
            for (int i = 0; i < 100; i++) 
00000034  inc         dword ptr [ebp-0Ch]  
00000037  cmp         dword ptr [ebp-0Ch],64h  
0000003b  jl          0000002E  
            Console.WriteLine(sum); 
0000003d  mov         ecx,dword ptr [ebp-8]  
00000040  call        5B41C340  
        }

C'est mieux à la main quand même.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
 
xor eax, eax 
mov ecx, 63h 
add eax, ecx 
dec ecx 
jnz -5h 
push eax 
push dword ptr ... 
call printf 
add esp, 8h
Avatar de supertonic supertonic - Membre habitué http://www.developpez.com
le 27/05/2011 à 12:11
Oui clairement on peut aussi dire que c++ ne permet pas les optimisations que l'ont peut faire en C et en assembleur ou alors me trompe-je ?
Avatar de oxyde356 oxyde356 - Membre éprouvé http://www.developpez.com
le 27/05/2011 à 12:23
Citation Envoyé par screetch  Voir le message
mon avis diffère sur le coût de lancer le JIT une fois de temps en temps, et sur le fait que le coût est negligeable par rapport au code généré.

Surtout dans le cas d'un jeu vidéo ...
Citation Envoyé par screetch  Voir le message
Et apparemment on est pas d'accord sur le cout en mémoire du runtime.

+1
Citation Envoyé par supertonic  Voir le message
je crois que c'est pas la peine d'insister là LLB, ya rien à faire

Faut pas faire sa mijaurée, on peut être en désaccord, le débat fut très intéressant
Citation Envoyé par supertonic  Voir le message
Oui clairement on peut aussi dire que c++ ne permet pas les optimisations que l'ont peut faire en C et en assembleur ou alors me trompe-je ?

Théoriquement c'est possible mais il faudrait embarquer un cerveau humain avec le compilateur
Avatar de supertonic supertonic - Membre habitué http://www.developpez.com
le 27/05/2011 à 13:18
Merci pour le "mijaurée".
Si on veut pas comprendre qu'il est possible d'avoir un programme natif (sans aucune machine virtuelle ou je ne sais quoi d'autre en mémoire) en compilant totalement à l'avance un programme dotnet bon ben tant pis on va pas insister...

J'ai l'impression que coder en c++ rend pas très aimable en tout cas.
Avatar de dourouc05 dourouc05 - Responsable Qt http://www.developpez.com
le 27/05/2011 à 13:26
Citation Envoyé par supertonic  Voir le message
Oui clairement on peut aussi dire que c++ ne permet pas les optimisations que l'ont peut faire en C et en assembleur ou alors me trompe-je ?

On peut absolument faire les mêmes optimisations, on peut même déclarer des bouts de code en C ou en assembleur, histoire d'encore gagner un peu. Le C++ est prévu principalement pour les perfs tout en permettant l'OO, alors que l'OO permet déjà de perdre en perfs et en mémoire par rapport à du code C de base (on va créer plus d'objets, avec des getters/setters ; en C, on aura peut-être autant de structures, mais on va plus modifier barbarement les propriétés - même si un bon compilateur C++ va inliner ces méthodes, on ne perdra alors plus rien).

Quand on voit aussi le temps que prend le C++ à compiler, c'est surtout à cause des optimisations que le compilo fait (bon, pas uniquement, c'est déjà pas un langage qu'on parse facilement...). Si, en plus, tu fais beaucoup de travail d'optimisation à la main, tu peux aller encore plus loin. En cela, le C++ permet énormément d'optimisations par rapport au C# : on peut notamment aller en assembleur pour certaines routines, ce qui ne se fait pas de base en C# (AFAIK).
Avatar de - http://www.developpez.com
le 27/05/2011 à 13:32
Citation Envoyé par supertonic  Voir le message
Merci pour le "mijaurée".
Si on veut pas comprendre qu'il est possible d'avoir un programme natif (sans aucune machine virtuelle ou je ne sais quoi d'autre en mémoire) en compilant totalement à l'avance un programme dotnet bon ben tant pis on va pas insister...

J'ai l'impression que coder en c++ rend pas très aimable en tout cas.

le RTTI est toujours en mémoire, quoi qu'il arrive, la description des classes/méthodes disponibles au runtime, et le code de Mono sera chargé lui aussi (il fait 2,5 a 4 megs chez moi), et je suis même pas certain que le bytecode soit pas chargé.
minimum 10% de ta mémoire sur consoles... shhhhhlllllurp
Avatar de LLB LLB - Membre expérimenté http://www.developpez.com
le 27/05/2011 à 14:54
Citation Envoyé par rt15  Voir le message
C'est mieux à la main quand même.

Je croyais avoir dit que je n'avais pas activé les optimisations. C'était en debug et je pouvais faire du pas à pas et voir chacune des variables (d'où les nop et le fait que ce soit similaire au code de base).

Si tu veux optimiser, tu peux même enlever la boucle et utiliser la formule de maths.
Avatar de supertonic supertonic - Membre habitué http://www.developpez.com
le 27/05/2011 à 16:21
Le fait qu'il existe monoTouch, qui génère du code natif statique pour iOS ne prouve t il pas qu'il n'y pas RTTI ou je ne sais quoi en sus du code natif, comme pour une application écrite en C++ ? (vu qu'apple n'accepte rien d'autre)
Avatar de - http://www.developpez.com
le 27/05/2011 à 17:38
Citation Envoyé par supertonic  Voir le message
Le fait qu'il existe monoTouch, qui génère du code natif statique pour iOS ne prouve t il pas qu'il n'y pas RTTI ou je ne sais quoi en sus du code natif, comme pour une application écrite en C++ ? (vu qu'apple n'accepte rien d'autre)

le RTTI est différent, ca fait partie du langage C#.
Offres d'emploi IT
Développeur ruby on rails #RoR #Ruby H/F
Urban Linker - Rhône Alpes - Lyon (69000)
Architecte fonctionnel sales & supply H/F
MENWAY TALENTS - Ile de France - Paris (75000)
Analyste développeur
LITOO - Ile de France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil