C# für DirectX geeignet oder nicht?
-
Hi,
ich möchte damit beginnen ein Spiel in DirectX zu schreiben. Ich weiss jetzt nur nicht, ob ich dazu C++ oder C# benutzten soll. Denkt ihr, C# bringt hat in der Spieleprogrammierung Zukunft, oder kommt es nicht an C++ ran? Ich bin mir schon darüber im klaren, dass im Moment C++ schneller ist. Aber die .NET Laufzeitumgebung wird ja schliesslich auch weiterentwickelt und dadurch bestimmt nicht langsamer. (siehe Java)
Es stellt sich eben die Frage ob es sich noch lohnt sich in die aufwendige Windowsprogrammierung unter C++ einzuarbeiten?
-
für windowsprogrammierung brauchst du nicht in c++ zu machen, da gibt es VB,c#,delphi,profan... die das einfacher bieten.
für spiele eignet sich c++ wohl am besten, was aber _nicht_ heißen soll, dass man das nutzen _muss_, wenn du möchtest kannst du qbasic benutzen um spiele zu machen, oder java, VB, delphi.. am ende kommt es meißtens drauf an, was du leistest und nicht so sehr was für ne sprache du nimmst, mit jeder kannst du es schaffen ein vielgespieltes spiel zu machen oder im ideengebluber untergehen.am besten fährst du wohl mit der sprache, mit der du besser zurecht kommst bzw erfahrungen hast.
rapso->greets();
-
-
TGGC schrieb:
naja ich bleibe mal hier im forum, dass da ist mir zu "angsteinflüssend"
du meinstest dass wenn du was zeitkirtischen einfügen mußt in dein c# projeckt, du ne dll mit c++ bauen würdest.
das .NET framework ist eigentlich darauf aufgebaut (also mit dem ziel) dass man alles mit der sprache coden kann, mit der man will, es ist doch also möglich, dass du deine algos, die du (laut deiner aussage) 1:1 von c# in c++ übernehmen kannst, gleich in c++ compilierst und nutzt als wären sie in einem c# modul gemacht worden.ganz soviel erfahrungen hab ich damit noch net, aber ich hab kolegen die in teams sind wo jeder ne andere sprache codet und alle zusammen arbeiten trotzdem an einem spiel, manchmal läuft etwas nicht und dann wird das modul von jemandem anderen neu geschrieben in einer ganz anderen sprache ohne dass auch nur jemand was anpassen müßte....
will damit janur sagen, an sich könntest du beides nutzen und es spricht nichts dagegen es nicht so zu machen, oder?
naja, das wäre wohl auch an den threaderöffner gerichtet... am ende kommt es auf das ergäbnis an und nicht auf die arbeit, das erlaubt .NET
rapso->greets();
-
Also ich habe das so verstanden, das man theoretisch aus jeder Programmiersprache diesen "intermediate" Code für erstellen kann, mit dem NET ja läuft. Der wird dann zur Laufzeit "fertigkompiliert" und läuft dann relativ schnell (besser als Java). Aber zur Zeit geht es ja nur mit C# und VB.NET (oder wie es auch immer heisst), um den Code zu erzeugen im VS. Mit andere Tools haben ich keine Ahnung, kann scho sein, das es auch C++ Compiler da gibt. Wenn man nun aber C++ Code in die intermediate Sprache übersetzt, büsst der natürlich auch an Geschwindigkeit ein, darum ist eine dll schneller. Und letztendlich habe ich ja genau das gemacht, ich habe meinen C++ Code mit den C# Compiler übersetzt. Dazu habe ich den quasi nur in die entsprechende Klasse packen müssen.
Und was ist denn da so angsteinflössend, da wird doch auch nur gespammt.
-
angsteinflüssent ist z.B. dass die das .Net framework beschrieben und meinen dass sie c# beschrieben.
der code der generiert wird, ist der austauschbare (wie du schon gesagt hast), der wird aber auch von c++ generiert und von java.net und... diese behauptung, dass c# durch die VM schneller laufen würde wegen profilierung, das ist quatsch, denn es wird höchstens der bytecode optimiert, der aber von jeder anderen programmiersprache erzeugt werden könnte (sofern der compiler der sprache sich an den .Net standart hällt). natürlich könnte der c++ oder c# compiler besseren bytecode generieren, das würde aber einem auf bytecode optimiertern JIT egal sein.
zudem war die studie, wonach das schneller werden könnte, nur eine theoretische studie, die haben ein programm profiliert, dabei lief das also etwa so wie im debug mode (wohl noch langsammer), die profiler werden wohl kaum ein spiel erstmal ne stunde lang auf 25% performance fahren, wer möchte das schon? neue level, neuer gegner -> neu profilieren. soweit ich weiß haben die das auch noch auf einer cpu getestet, die selbst nicht "profilieren" kann. heutige compiler profilieren den code schon. für viele conditinal jumps wird in einer table eine statisik festgehalten und je nachdem ob man "jae m1" schreibt oder "jnb m1" schreibt interpretiert die cpu den jump anders, und das noch abhängig davon ob der einsprungspunkt davor oder danach liegt..... alles was die VM in der studie gemacht hat.
und auch sonst schreiben die leute dort manchmal sachen vom hochen niveau aber in falschen zusammenhängen... das wäre ne flamewar die aufzuklären (auch wenn das jetzt überhäblich klingt)... beängstigen sowas.
ich werde mich mal erkundigen wie das mit c++ auf .net ausschaut, mein kolege meinte er codet damit schon... oder ich hab halbwissen (was mir peinlich wäre
)
rapso->greets();
-
so hab nachgefragt, man müßte beim installieren des devstudios wohl angeben dass man noch die nötigen sachen für .net mit c++ haben möchte.. nachvollziehen kann ich das also nicht
irgendwie ist es cool eine VB zu haben für oberflächen mit c++ syntax(alike). hätte man aber lieber CB statt c# nennen müssen
rapso->greets();