A c++ vagy a c# jobb Game Engine írásához?
De ehhez nem csak C++ tudás kell.
Egy ilyen program megírásához komoly matematikai tudás kell.
Ezen kívül a c++ ehhez nem lesz elég ahhoz,hogy megcsinálj egy olyan game enginét mint például az unity ahhoz profin fog kellened vágni az OpenGL,egy ablakkezelőt,és az OpenAL is és fizikai ismeretek is kellenek én bullet psihicset használnám.
Amelyiket jobban tudod. C++ gyorsabb (ha jól írod meg) mivel szabadabb az erőforrás kezelés. Viszont nagyságrendekkel rosszabb lesz, ha rosszul írod meg.
C# lassabb (valamivel) mivel ott sok dolgot a .net végez. Ebből kifolyólag sokkalta könnyebb pl a memóriakezelés, ezáltal gyorsabban megírhatod a programot, és a maradék időben tudod annyira optimalizálni, hogy utolérd a C++ kódot. Viszont, C#-ban is lehet bőven olyan hibákat elkövetni, hogy használhatatlan legyen...
Végeredményben: nincs olyan, hogy jobb :) Az a jobb, amiben profi vagy, amiből ki tudod hozni a maximumot. Ha ez a C++, akkor abban lesz jobb, ha C#-hoz értesz jobban, akkor azzal lesz jobb az eredmény. A nyelv csak egy eszköz, rajtad áll, hogyan tudod használni :)
"A just in time előnye egyben lehet hátrány is, minden célspecifikus, hiába vágod a c#-ot, ugyan az a kód c++-ba gyorsabb lesz."
Látom, sok fogalmad a C#/.NET világról nincs. Meg a C++-ról sem. Közel sem ennyire egyszerű a helyzet.
1. A .NET-ben létezik olyan, hogy GAC, innentől gyakorlatilag ugyanúgy natív kódot futtatsz, mint C++-ban.
2. Általános algoritmusok(iterálás tömbökön, ilyesmik) gyakorlatilag ugyanolyan sebességgel futnak(talán minimális sebesség-csökkenés van a C# kárára, de az kb. 0,01%), mint C++-ban, ha jól írod meg.
3. A GC-t nem úgy kell elképzelni, mint egy folyamatosan lassító plusz szálat, ami folyamatosan szkenneli a memóriát. Ennél jóval szofisztikáltabb a működése, de nem fogom most elmagyarázni. Nézz utána.
4. C/C++-ban memória-allokáláskor az átrendezések miatt hasonló lassulások felléphetnek, mint amit a C# GC-je okoz.
Hogy a kérdésre is írjak valamit: Nem vagyok játékfejlesztő, ezért csak sejtés, amit írok: valószínűleg a DirectX/OpenGL-hez nem nagyon vannak managed lib-ek, vagy ha vannak, azok se tudják kikerülni a sok marshaling-ot, tehát a managed/unmanaged boundary-k közötti folyamatos átjárás valószínűleg jelentős lassulást okozhat. Ezen okból kifolyólag, ha sebesség szempontjából kritikus az alkalmazás, amit írsz(márpedig a játékok általában ilyenek), akkor C++.
Gratulálok, megint egy nagyon okos beleszólt, mint mindig, és leírtad amit mondtam, csak más szavakkal.
Lehet hozzá találni managed dll-eket, pl OpenTK vagy lehet használni XNA-t, de a c++ gyorsabb lesz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!