Programovanie moderných PC hier
Dobry den,
chcel by som sa spýtat, ze v akých presne prog. jazykoch sa programujú dnesné moderné pocitacové hry? Napr. The Witcher 3, Fallout 4, PUBG, CS:GO, Rise of the Tomb Raider a pod. Viem ze je to kus "blbá" otázka, ale ja by som sa v buducnosti chcel venovat takýmto veciam, no neviem ze aký programovací jazyk sa mám zacat ucit. Lebo každý nato vraví nieco iné, niekto radí ze urcite Java (Minecraft), niekto C/C++, niekto Python, a iný zase PHP atd. Alebo poprípade, dá sa nejako zistit že v akom jazyku je daná hra naprogramovaná? No a potom by som si vedel z toho urobit priemer.
Dopredu sa ospravedlnujem ked sa pýtam hlúpo, no som v tejto oblasti iba novácik. Tak berte prosím ohlad a neposlite ma hned do p...
Zalezi od urciteho ENGINE, jako Unity3D, Unreal Engine etc, kazdy tento ENGINE podporuje nebo muze podporovat jiny jazyk. Kuprikladu u UNITY 3D, hodne vyvojaru pouziva prevazne csharp (c#), Blender - Blender Game, Maya pouziva zase Python, jinak zpravidla c++, zalezi.
Takze jazyk vybiras dle pouziteho ENGIME, nebo naopak, podle toho jaky jazyk ovladas si ENGINE vyberes.
Až na výjimky jsou všechny "velké" hry napsané v C/C++. A to buď kompletně, nebo alespoň jejich engine.
Dnes i c#, java/JavaScript (pro WEB, potkavame js API snad vsude) popripade i python , v 2017 navysily podstane % produktivity pro cilovi motor prostredi "gaming-engine" .
c# je na tom mnohem lepe jak pred lety, kde prevladalo c++/C, Assembler. Kde bych to seradil :
1) c++
2) java/js
3) c#
4) Objective-C, HTML5
5) Python
List of game engines : https://en.wikipedia.org/wiki/List_of_game_engines
Podíl se možná zvýšil, ale pořád jsou dost v menšině. A když už, tak stejně využívají engine napsaný v "céčku".
Ano, ale rad bych znovu vzpomel Unity 3D, (hry) které jsou psane v csharpu a v Unity3D (MonoGame je jen v c#) je psanych hodne her a "pro vice platform ! (plaformy by byla episoda sama osobe)". I kdyz ano podporuje i c++ kdyz nahledneme na literaturu uvedene priklady jsou zpravdila v c#. Jinak ano, rozumim, skupinove je ENGINE napsany v cecku to je "True" ! .
Jazyk a Engine je jedna vec, ale chci upozornit (tazatele), az si bude vybirat nejaky graficky motor "podivej se po dokumentaci", ne kazdy jazyk nebo engine ma dostupnou dokumentaci (IMHO se bez ni neobejdes), nebo je hodne chaba, neaktualizovana (c# ma kuprikladu vybornou dokumentaci, to se musi MS nechat), coz je v prvnich krocich a ne jen snad tou nejdulezitejsi polozkou co te bude doprovazet celou dobu vyvoje, nebo pri tve vyuce vubec.
Posledni bod, umet alespon zaklad ENG, nemusis mit na to vylozene jazykovku, staci ti technicka anglictina bez ktere se bohuzel nehnes a zacatek vyuky si opravdu zneprijemnis, zkomplikujes. Drtiva vetsina prikazu (ktere v ENG i lepe pochopis) bez ohledu na pouzity jazyk nebo dokumentace je v anglictine.
Dobre, dakujem za rady, no ešte ku tomu C-cku. Preco často krát počúvam názory na tento jazyk... ze sa ho uz neoplatí ucit, lebo je starý a dnes sa uz takmer vobec nepoužíva? A ze dnes už existuje vela efektívnejších, jednoduchších a hlavne novších programov (vid Python), ktoré toho dokázu ovela viac? Logické to je, lebo C-cko vzniklo až 1972, taký Python a Java v 1991.
Protože v C se dá napsat brutální a vysoce efektivní kód (žádné objekty, žádné berličky,...). Ještě efektivněji to jde v assembleru. Jenže pokud na to, abys to zvládl v C musíš být Mistr, tak na ASM potřebuješ být BŮH. A samozřejmě potřebuješ moře času. Tyhle programovací jazyky ti nic neodpustí, narozdíl od "moderních" jazyků pro darmošlapy, ve kterých nikdy tak efektivní kód nenapíšeš.
No a pak přijde vydavatel, řekne ti, že na to máš 12 měsíců, že dostaneš tlupu "programátořů" a ty pochopíš, že v assembleru to nikdy nenapíšeš.
I proto jsou dnešní hry taky takové sračky.
To je nesmysl. Pořád se používá a ještě dlouho používat bude. Tam kde je potřeba maximální výkon, nemá téměř konkurenci. Samozřejmě existuje i spousta případů, kdy ten výkon není potřeba a tam dostávají přednost jiné jazyky.
Dobre, vdaka vsetkym za rady. V podstate som sa aj trafil ze najlepsie su asi C, a potom Java + Python. No ešte by som sa chcel spýta na PHP, co je to za jazyk? Lebo ja som si myslel ze sa to používa len na tvorbu webu (dynamického), no ako cas plynie tak som prisiel nato že sa cez to dajú naprogramovat aj nejaké hry...
Pokud neumis vubec programovat, tak se nejdriv nauc programovat, az pak vyber jazyk. Je imho blbost zacit se hrabat v objektovem programovani kdyz nezvladnes ani obecene sesmolit jednoduchy cyklus.
Pokud neumíš dokonale matematiku, 3d prostory a všechny ty kraviny okolo, které mají "ošklivý názvy", tak se tím vůbec zabývat nemusíš, protože nikdy hry dělat nebudeš.
Tohle je založený na matematice. (na sakra těžký)
Presne, bez precizniho pochopeni diferencialnich rovnic nenapises ani piskvorky.
Huuu huuu.
Ty brdo to jsou pecky !
A astro fyziku ne ? Jestli nebude delat a to urcite delat nebude novy Battlefield tak mu to muze byt uplne nahaku. Mensi zkusenost s vyvojem mam, vic nez skolni matiku jsem zatim nepotreboval, tady ty keci o tom jak to bez "sakra tezke" matematiky nejde jsou "sakra tezke hlouposti" se kteryma se nikdo na zacatku tvorby nebo uceni nikde nepotka.
Osobně si myslím že nemáš s tímto přístupem šanci, ale to zjistíš sám. Beztak jsi nějaký děcko.
Ukaz mi kod pro chuzi hrace, nebo pro pohyb s predmety, nejaky zakladni veci jako ukladani promenych (predmetu ve hre) do list, zakladni smycky for/if (nebo nevim co podle tebe bude jako ze zacatku delat az se bude s jazykem-engine ucit) a ted mi rekni, kolik prvnacku by to nepochopilo ? ty 'sakra tezka motyko'. Navic kazdy druhy eng ma takove veci jiz automatizovane v nabidce kde pro pridani funkci jako 'pohyb' (predmet 2D/3D, kamera, svetlo, zakladni asset predmetu a postav) staci i jeden klik mysi. Vlastni Engine od zakladu urcite delat nechce a sam by ho driv nez 3 roky stejne neudelal.
'Beztak' jsi zadny engine nikdy nevidel ani s zadnym nepracoval. Videl jsem projekty, vyukove kurzy zacinat ruzne, ale nikdy "strasne tezkou matikou". A to ani za mesic, nebo dva, nebo tri po tom.
A ano, jsem decko a poradne jsem pritom jak jsem psal nalozil do plynek a neboj pojmenoval jsem po tobe nez to poleti do trash.
Tak jak si představuješ pohyb (implementaci kódu) v 3D prostoru, napiš, ať se pobavím.
Neviděl, jsem jenom blbej kokot.
PS: matematický předpis napiš.
Jo, usnadním ti to, jestli to má nějakej ten tvůj engine hotový, tak prosím v OpenGL.
Lenže ja som sa Vás nepýtal ci potrebujem ku programovaniu hier matematiku..
No ale ked uz sme pritom tak momentálne som na vysokej skole, a zatial z matikou problémy nemám (moja matika = derivácie + integrály..proste klasická vysokoskolska + zaklady diskrétnej matematiky a štatistiky).
Spýtam sa ešte raz...PHP co je? Myslel som ze sa používa na tvorbu dynamického webu. Dajú sa v tomto jazyku tvorit dobré hry?
A na webu snad nemůžou být hry?
Môžu, len ja mám na mysli ci to PHPcko sa da pouzit na tvorbu normálnej hry (napr. takého typu ako Zaklínac), nemyslím browser hry ako travian, ikariam a tie podobné kraviny.
Na Zaklínače si ale bez té extrémní matiky myslet nemůžeš, protože CDprojekt si pro něj vyvinul vlastní engine.
Pokud jsi pod pojmem "programování her" myslel něco jako použít stávající engine typu Unreal engine, tak to o programování zase až tak moc není, pokud nebudeš vyvíjet vlastní AI (což je typický případ, většina dnešních her místo AI používá dementní triggerované skripty).
Tak to koncim, hra jako witcher v php,
Engine AAA hier býva v drvivej väčšine napísaný v C++:
Witcher 3 - C++ (REDEngine)
Fallout 4 - C++ (Creation Engine)
PUBG - C++ (Unreal Engine 4)
CS:GO - C++ (Source)
Rise of the Tomb Raider - C++ (Foundation Engine)
Každá hra pozostáva z viacerých vrstiev, pričom engine samotný je na tej najnižšej a v podstate definuje možnosti hry. Logika hry, dialógy a pod. bývajú napísané v rôznych jazykoch, pričom častokrát ide o skriptovací jazyk napísaný len pre danú hru/engine. Okrem toho pozostávajú hry z assetov (3D modely, animácie, shaders, zvuky, hudba, ...). A aj keď je engine napísaný v C++, samotná hra môže byť napísaná v hocičom inom (C#, Java, JavaScript, Python, ...).
Pri vývoji hier je veľa oblastí, ktorým sa dá venovať, pričom nemusíš ovládať C++ (napr. skripty pre export modelov, alebo herné skripty a pod.). Všeobecne, čo čítam po internete je, že vývojári hier nie sú príliš dobre zaplatení, pracujú veľa nadčasov a majú menšiu stabilitu zamestnania (najmä po ukončení vývoja titulu). To vychádza zo skúseností vývojárov v zahraničí.
Čo sa týka programovacích jazykov, tak je rozdiel medzi C a C++. Ak sa chceš venovať na nízkej úrovni takýmto hrám, tak sa zameraj na C++ a skús si niečo napísať v Unreal Engine. Ak chceš vidieť výsledky svojho učenia rýchlejšie, tak si vyskúšaj nejaký engine v JavaScripte, ktorý používa WebGL.
Dakujem