Tvorba her - C# nebo C++

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Gobo 17. 10. 2007 20:21

Dobrý den,
zajímalo by mě, zda a jak je možné programovat hry ve výše zmíněných prog. jazycích ? Viděl jsem něco o C++ a OpenGL, ale nikdy ne C# a OpenGL. Trochu umím C# a pokud bych s tímto jazykem nemohl vytvářet 3D hry, přešel bych na C++. Hodily by se mi nějaké rady ohledně tohoto.

Děkuju, Daniel.
Gobo
Kolemjdoucí

Odeslat příspěvekod Nargon 17. 10. 2007 20:52

Jak je to s OpenGL v C# nevim, ale DirectX tam jde celkem dobre pouzit.
Ale nedosahnes tak vysokych fps jako v pripade C++.

Moje pokusy s DirectX byly takove, ze scena, ikdyz byla nejjednoduzsi co sla (zobrazeni polygonu myslim) tak mela kolem 60-70 fps. Zase tak spatnou grafiku nemam GF 6600GT a zarazilo me ze je to tak malo. Kdyz si vzpomenu na drivejsi testy Quake :) kde nebyl problem 300 fps a vice :D
Ale u slozitejsi sceny (ulice, model auta, osvetleni...) jsem byl stale na nejake hodnote 55-60 fps takze to zase moc nekleslo. U C++ by asi ta jednoducha scena mela kolem tisice fps, a ta slozitejsi by asi take zustala nekde u tech 60 fps.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod rb 17. 10. 2007 21:01

Nargon píše:Jak je to s OpenGL v C# nevim, ale DirectX tam jde celkem dobre pouzit.
Ale nedosahnes tak vysokych fps jako v pripade C++.

Moje pokusy s DirectX byly takove, ze scena, ikdyz byla nejjednoduzsi co sla (zobrazeni polygonu myslim) tak mela kolem 60-70 fps. Zase tak spatnou grafiku nemam GF 6600GT a zarazilo me ze je to tak malo. Kdyz si vzpomenu na drivejsi testy Quake :) kde nebyl problem 300 fps a vice :D
Ale u slozitejsi sceny (ulice, model auta, osvetleni...) jsem byl stale na nejake hodnote 55-60 fps takze to zase moc nekleslo. U C++ by asi ta jednoducha scena mela kolem tisice fps, a ta slozitejsi by asi take zustala nekde u tech 60 fps.


Nezapol si pri inicializacii DirectX, aby cakal na vsync? Lebo potom to hadze take fps, ako pises, inak okolo 900 (zalezi od grafiky)...

Inak ja odporucam sa naucit najskor C++ (da to riadne zabrat), C# sa da naucit uz potom ovela rychlejsie...
Human knowledge belongs to the world;-)
rb
Junior
Uživatelský avatar

Odeslat příspěvekod suk 17. 10. 2007 21:08

klidne jdi do C++ jen je to o hodne slozitejsi, C# ti mnoho ulehci...
co do rychlosti, c# se afaik kompiluje za behu podle procesoru (mozna zase kecam) takze by to melo bejt srovnatelne rychly...

jinak OGL taky nejspis pujde naimplementovat do C# pres DllImport, ale asi to bude o neco malo slozitejsi a nebude to takovej komfort...
Pokud nesouhlasíte s mým názorem, popřemýšlejte sami nad sebou. Opravdu si myslíte, že já bych se mohl mýlit?
----
You are an inspiration for a birth control...
suk
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Gobo 17. 10. 2007 21:33

Právě, že já mám základy C#. C++ neovládám (popravdě se mi ani nelíbí představa, že bych musel složitě alokovat pamět a podobné věci, které C# ošetří automaticky), takže asi zkusím štěstí s C# a DirectX. No ještě si o tom zkusím něco najít a přečíst a pak uvidím. Díky
Gobo
Kolemjdoucí

Odeslat příspěvekod petrusek 18. 10. 2007 00:08

Prakticka volne dostupna ukazka 3D v C# pro inspiraci je treba v NASA World Wind (neco na zpusob GoogleEarth)
petrusek
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 18. 10. 2007 16:05

rb píše:Nezapol si pri inicializacii DirectX, aby cakal na vsync? Lebo potom to hadze take fps, ako pises, inak okolo 900 (zalezi od grafiky)...

Urcite ne, to jsem kontroloval. A hlavne kdyz je zaplej vsync tak to haze vysledky ktere jsou nejakym nasobkem nebo podilem obnovovaci frekvence. Me monitor bezi na 85Hz, a ty fpska se dost menily videl jsem snad vsechny hodnoty mezi tema 60ti a 70ti Kdyz jsem u jinych her zapnul vsync tak fps drzelo presne na hodnote treba 42fps, nekdy to skocilo na 21fps, ale zadne "plynule" zmeny poctu fps.
Nargon
Moderátor

Odeslat příspěvekod dnv 18. 10. 2007 16:12

OpenGL pre C# existuje,vyžaduje ovšem verziu net.framework 2.0,pre nižšie verzie port OpenGL zatial nieje,resp.lepšie povedané som sa s ním nestretol,takže aj na platforme C# sa dá v OpenGL normálne pracovať a programovať
dnv
Mírně pokročilý

Odeslat příspěvekod subdivider 18. 10. 2007 16:28

Ak to myslis vazne s vyvojom v C# + OpenGL, tak by si mal vyskusat The Tao Framework
http://www.taoframework.com/
Starsie verzie su na
http://sourceforge.net/project/showfile ... _id=194813
a myslim, ze boli pre .NET Framework 1.1
subdivider
Junior

Odeslat příspěvekod Falhar 18. 10. 2007 20:39

Pokud by jsi chtěl dělat s grafikou tak doporučuji XNA. Je to high-level api postavené nad Directama primárně určené pro C#.
Inicializace je tam na pár řádků, jednoduché načítání modelů a textur jakbysmet. A je možné v tom dělat i pro XBox 360 (pokud máš XNA Game Creators licenci).
AD to porovnání výkonu C++ vs C# s takovými FPS jsi určitě měl zapnuté VSync .. jinak je to blbost..
Falhar
Junior

Odeslat příspěvekod piErcE 18. 10. 2007 20:45

Falhar píše:Pokud by jsi chtěl dělat s grafikou tak doporučuji XNA. Je to high-level api postavené nad Directama primárně určené pro C#.
Inicializace je tam na pár řádků, jednoduché načítání modelů a textur jakbysmet. A je možné v tom dělat i pro XBox 360 (pokud máš XNA Game Creators licenci).
AD to porovnání výkonu C++ vs C# s takovými FPS jsi určitě měl zapnuté VSync .. jinak je to blbost..
piErcE
Junior

Odeslat příspěvekod slivo2 19. 10. 2007 02:11

ako povedal SUK, C# nebezi na danej platforme nativne, ale je prekladany za behu. Proces vyzera asi takto: skompilovanim svojho C# projektu dostanes bytecode (CLI). Tento bytecode nie je priamo vykonatelny na danom CPU a OS a musi byt do spustitelnej podoby prelozeny pomocou tzv. virtual machine (napr. CLR od MS). Na to sa v sucasnosti pouziva just in time kompilacia - CLR sa rozhodne ako bude bytecode kompilovat, ci ho skompiluje naraz, alebo skompiluje len potrebne triedy ci metody. To ze je kod z bytecode prekladany za behu prinieslo niekolko vyhod, napr. tebou spominany memory manazment, bezpecnost, prenositelnost atd. Ale nevyhodu je performance hit. Globalne mozes povedat, ze najpomalsie su interpretovane jazyky, potom nasleduju jazyky s medzikodom (ako C#) a najvykonnejsie su jazyky kt. kompiluju priamo do spustitelneho kodu (napr. C++)
- 1. veci ako assembler, strojovy kod vynecham
- 2. hovorim vseobecne, uz som videl benchmark kde bola Java* v matematickych vypoctoch vykonnejsia** ako C
* Java a C# maju vela spolocneho, venujem sa Jave preto ten priklad. proste vela zavisi na optimalizacii a efektivite VM
** napr. http://www.stefankrause.net/wp/?p=4 , benchmarkov je vela - google it


A teraz odpoved na tvoju otazku:
ak sa chces venovat hram seriozne, chod do C++. Tento jazyk ma trochu tvrdy start (kto v nom robil viac ako zadania do skoly ti moze porozpravat), ale uz za rok kodovania si schopny dostat sa na rozumnu uroven.
ak si chces 3D iba vyskusat, napisat nejake jednoduche hry a nevadi ti, ze z pocitaca nedostanes maximum, tak C# je uplne ok.

Ani v jednom ani v druhom pripade nenarazis, na nete mas kopu open-sourcovych projektov a tutorialov ktore ti pomozu. tak ci tak mam pocit, ze sa zaujimas viac o 3D ako o programovacie jazyky a preto si myslim ze prelezies vsetko co najdes, budes porovnavat a casom si sam spravis nazor ktory jazyk ti najviac vyhovuje:)
A mozno by si si mal este polozit otazku OpenGL / DirectX / raytracing (vid sucasne promo intelu)

links:
OpenGL
http://en.wikipedia.org/wiki/OpenGL
http://www.opengl.org/resources/libraries/glut/
GLUT na zaciatok mozem odporucit, zadanie som mal za par dni, ale ja som to nerobil zo zaujmu ale pre zapocet :)
http://taoframework.com/ (vid prispevok od subdivider)

DirectX
z vlastnej skusenosti nemam nic, ale skus wiki, google
http://en.wikipedia.org/wiki/DirectX (hlavne cast .net framework)
http://www.google.com/search?q=directx+tutorial
slivo2
Kolemjdoucí

Odeslat příspěvekod Jancino 19. 10. 2007 15:33

Zdravim

Je vseobecne zname, ze jazyky kompilovane priamo do strojoveho kodu su "vyknnejsie" ...o tom niet pochyb...
No nepletme dojmi s pojmamai.
Maloktory uzivatel si sada za pocitac zo stopkami v ruke ....
C++ aj C# maju svoje klady a zapory ale C# ich ma ovela viac... C# a 15 rokov novsie a nove je obycajne lepsie ako stare (to je viac menej logicke)...
Len by som opravil par veci...
.NET jazyky sa nekompiluju do bytoveho kodu ale do MSIL (MS Intermediate Language)
To kedy chces svoj program koplilovat do nativneho kodu procesora si mozes vybrat sam alebo za behu JIT (Just In Time)- (vhodne u kancelarskych app.) alebo NGEN - pri sa prvom spusteni programu sa vytvori tzv. nativni imege (strojovy kod ako u C++) co je zase vyhodne pre hry...
V C# mozes robit skoro vsetko co v C++
Jancino
Junior
Uživatelský avatar

Odeslat příspěvekod Lord Elrond4. 19. 10. 2007 18:01

Nepracujem v ani jednom C, v jave áno. Jancino, postup, ktorý si spomínal, je zaujímavý, ale ako je na tom tento strojový kód s kompatibilitou a výkonom?
Manželka posílá programátora nakoupit. Kup deset rohlíků a když budou mít vejce, kup jich 30. Programátor přijde do obchodu a povídá: "Máte vejce ?" "Ano, máme" odpoví prodavačka. "30 rohlíků, prosím."
Lord Elrond4.
Junior
Uživatelský avatar

Odeslat příspěvekod Jancino 19. 10. 2007 18:46

Zdravim

C++ aj C# maju svoje klady a zapory ale C# ma tich kladov neporovnatelne viac...
C# 3.0 je o 15 rokov novsie a nove je obycajne lepsie ako stare (to je viac menej logicke)...
Je vseobecne zname, ze jazyky kompilovane priamo do strojoveho kodu su teoreticky rychlejsie ...o tom niet pochyb... ale je rychlejsi aj lepsi ????
Ale nepletme dojmi s pojmami
Maloktory uzivatel si sada za pocitac zo stopkami v ruke a za spolahlivost, bezpecnost a.t.d. sa tych par ms naviac obetovat oplati => rychlejsi != lepsi....
Je kopa inich veci kde sa da v programe “usetrit cas”
V niektorych veciach je kod MSIL dokonca rychlejsi ako C++..
(Treba podotknut ze tu nehovorime o rychlosti C# ale rychlosti MSIL)

Len by som opravil par veci...
.NET jazyky sa nekompiluju do bytoveho kodu ako Java ale do MSIL (MS Intermediate Language) s coho prameni mnoho vyhod...
Kedze je to kompilovane na pocitaci uzivatela moze vyuzit ovela viacej vyhod konkretneho procesora a programi skompilovane do MSIL su viac menej nezavisle na platforme…
A program sa nemusi vzdy prekladat JIT...
To kedy chces svoj program koplilovat do nativneho kodu procesora si mozes vybrat sam pri tvorbe projektu. Mas dve moznosti
1. Za behu programu JIT (Just In Time)- (vhodne u kancelarskych app.) alebo 2. NGEN - pri sa prvom spusteni programu sa vytvori tzv. nativni image (strojovy kod) co je zase vyhodne pre hry (s pomockou dodavanou s .NET fw Ngen.exe nozes skompilovat do nativneho kodu vsetky MSIL assemby)...
V C# mozes robit skoro vsetko co v C++ (mozes pouzit unsafe code a ukazovatele) ale okrem toho aj kopu inych veci (ASP.TET, Office Tools, App pre Windows Mobile a.t.d.)…

C# a .NET ma este tieto vyhody:
1. Perfektne (free) vyvojove prostreda ako Visual Studio 2008
2. Ovela lepsi objektovy model (obj. model .NET sa s COM a COM+ neda ani len porovnat)…
3. Tisickrat lepsia kompatibilita medzi jazykmi splnajucimi CLS a CTS ako v COM
4. Jazyk C# nezatazuje programatora zbitocnostami (automaticka sprava pameti, Lepsia prehladnost kodu)
5. V C# mozes programovat prakticky vsetko co sa len programovat da…
6. Ovela lepsia podpora API vo Viste
7. Velmi dobra podpora DirectX a OpenGL

Takze som jednoznacne za C# a ak sa aj nakoniec rozhodnes pre C++ tak nech to je C++ /CLI ….

A treba mat na pameti ze programovani neplati heslo:
“Kolko programovacich jazykov vies tolko krat si programator”…
Jancino
Junior
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků