C# und Spielprogrammierung
-
Schau mal hier, da gibt es Webcasts zu 3D Grafikprogrammierung mit DirectX. Vielleicht nützt es Dir ja was.
-
Grundsätzlich spricht eigentlich nichts dagegen. Es gibt ja schon einige kommerzielle Spiele die in C# geschrieben wurden.
Was die Geschwindigkeit angeht, musst du dich natürlich sehr auf den JIT verlassen. Und nicht immer muss der guten nativen Code erzeugen.
Ich hatte schon Situationen bei dem .NET Programme auf einem Pentium 4 mit 3,8 Ghz langsamer liefen als auf einem alten Athlon 1,2 Ghz. (Raytracer mit vielen Gleitkommaoperationen)
Hat wahrscheinlich was mit der recht grottigen SSE "Optimierung" in .NET zu tun. Anders kann ichs mir jedenfalls nicht erklären.
Aber vielleicht kriegen die das irgendwann auch mal auf die Reihe
-
google mal nach 'c#' und 'airplane'. das ist ein kleiner flugsim
in directx geschrieben.
-
Die GC ist nicht unbedingt ein Vorteil bei der Spieleentwicklung. Da man keinen Einfluss darauf hat, wann Speicher wieder frei gegeben wird...
Wenn ich viel im Speicher habe und die GC nun meint einfach mal ein bischen auf zu räumen, dann ist das Mist!
-
odenter schrieb:
Wenn ich viel im Speicher habe und die GC nun meint einfach mal ein bischen auf zu räumen, dann ist das Mist!
Bekanntlich werden ja nur Objekte aufgeräumt die nicht mehr aktiv sind, also sehe ich kein wirkliches Problem.
-
Noodles schrieb:
Schau mal hier, da gibt es Webcasts zu 3D Grafikprogrammierung mit DirectX. Vielleicht nützt es Dir ja was.
Die DirectX Videos sind alle ohne Ton. Gibts die auch irgendwo mit Ton?
-
Fragenderr schrieb:
Noodles schrieb:
Schau mal hier, da gibt es Webcasts zu 3D Grafikprogrammierung mit DirectX. Vielleicht nützt es Dir ja was.
Die DirectX Videos sind alle ohne Ton. Gibts die auch irgendwo mit Ton?
hat sich erledigt -.-
-
tommazzo schrieb:
odenter schrieb:
Wenn ich viel im Speicher habe und die GC nun meint einfach mal ein bischen auf zu räumen, dann ist das Mist!
Bekanntlich werden ja nur Objekte aufgeräumt die nicht mehr aktiv sind, also sehe ich kein wirkliches Problem.
Was passiert denn wenn auf einmal sehr sehr sehr viele Objekte nicht mehr gebraucht werden?
Das wird dann nie zu einem Problem führen?
-
Ob viele Objekte allokiert werden, hängt auch mit deinem Prgrammierstiel zusammen. In einer Gameloop stängig Speicher zu allokieren - und zu hoffen das der GC das schon macht - ist sicherlich auf dauer tötlich für die Performance. Aber das Problem hast du in ähnlicher weise auch in C++. Ständig allokieren und deallokieren in performancekritischen Bereichen macht sich einfach nicht gut.
Abhilfe kannst du einfach mit ein paar Regeln schaffen:
- Darauf achten das wenig Referenzobjekte in der Gameloop generiert werden.
- Referenzobjekte mehrmals benutzen und nicht stängig per new erzeugen wenn man sie braucht.
- Große Strukturen per ref übergeben.
- Objekte cachen.
-
odenter schrieb:
Was passiert denn wenn auf einmal sehr sehr sehr viele Objekte nicht mehr gebraucht werden?
Das wird dann nie zu einem Problem führen?asdfgjkl hat hier ganz recht - du musst eben so programmieren, dass es nie zu dieser Situation kommt.