C # si C ++ sunt doua limbaje de programare care nu au nici cea mai mica legatura intre ele.
Oamenii întreabă, de asemenea
Cred că C ++. Deoarece c # au nevoie de instalare suplimentară pentru timpul de execuție C # care absoarbe doar spațiul de pe un disc. Și C # este, desigur, un pic mai lent.
C ++, din două motive.
1) o mulțime de jocuri sunt programate în C ++. Niciun joc curent nu este programat într-un limbaj gestionat.
2) C ++ este la fel de greu ca acesta. Trebuie să controlați gestionarea manuală a unei memorii și, în general, să nu verificați limitele (dincolo de excelentul Valgrind!). Dacă master C + +, veți găsi acest transferable la limba procedural gestionate. Mai puțin în sens invers.
C ++ sunt un nivel de complexitate aproape de APL ! Nu veți obține niciodată mai bine jucând adversari mai slabi.
Joel se confruntă cu un punct foarte puternic în legătură cu acest lucru . Oamenii care înțeleg cum funcționează aparatul fac programatori mai buni, deoarece toate abstractizările sunt neetanșe .
Dacă intenționați să intrați serios în industria jocurilor, vă recomandăm să învățați ambele limbi. Începeți cu C ++, apoi treceți într-o limbă gestionată ca C #. C ++ sunt avantaje față de C #, dar C # sunt și avantaje față de C ++.
Personalul preferă C # peste C ++ în orice zi. Acest lucru se datorează faptului că multe motive:, doar câteva:
- C # se confruntă cu distracția din nou;).
- Codul meu gestionat mă ajută să îmi îndeplinească cu ușurință sarcinile complexe și să nu uit siguranța.
- C # s "este OOP pur, forțând regulile din codul dvs. care vă ajută la menținerea codului mai ușor de citit, mentenabil și execuția este mai stabilă. Productivitatea depășește C ++ cu cel puțin 10%, cel mai bun programatorul C ++ ar putea fi un programator C # chiar mai bun.
- Acest lucru nu este cu adevărat un motiv, mai mult ca ceva "mi place" despre C #: LINQ.
Acum ... sunt multe lucruri pe care mi le lipsește despre C ++. Îmi lipsește capacitatea de a-mi administra (întreaga) memoria mea. Nu puteți spune câte ori am încercat să "șterg" o instanță / o referință. Un alt lucru care nu-mi place C # este incapacitatea de a folosi mai multe moșteniri, dar din nou a forțat să mă gândesc mai mult la modul în care să-mi structureze codul.
Au existat mai multe discuții pe această temă decât există în universul cunoscut și toate se închid într-un punct mort. Niciuna dintre limbi nu este mai bună decât cealaltă și refuzând una pentru cealaltă va răni doar pe termen lung. Timpul se schimba, la fel și standardele pentru programarea pe calculator.
Indiferent de limba pe care o alegeți să o păstrați în partea de sus a unei liste, mențineți întotdeauna opțiunile deschise și nu vă așezați în nici un singur limbaj. Spui că deja cunoști C ++, de ce să nu înveți C #, nu se poate face rău și îți promit că te vei confrunta cu un programator C ++ mai bun.
+1: Răspundeți bun acolo! ;) Aș dori să subliniez că C ++ este o metodă multi-paradigmă de îngrijire a limbajului, la rândul său, permite o mai mare libertate în comparație cu C #, care este un puternic PPE limbaj. În funcție de punctul de vedere, unul sau altul va fi mai bine din cauza asta.
Dar punctul dvs. 3 este foarte controversat, aproape greșit. C # este departe de "POO pur". Cel mai bine este să evitați discuțiile despre "puritate" atunci când vine vorba de programarea paradigmelor. Oamenii religioși vor fi întotdeauna diferiți. De exemplu, eu.
Cum să vă jucați pentru tine, pentru că în aceste zile preferă C ++ peste C #. În ceea ce privește numărul 3, pot spune cu certitudine că, în afară de staticele și staticele, C # este aproape de a fi o programare limpede orientată spre obiect.
Depinde de o mulțime de lucruri - obiectivele, experiența ta, intervalul de timp etc.
Majoritatea programelor de joc nu sunt specifice limbii. Matematica 3D este mathematică 3D în C # la fel de mult ca în C ++. În timp ce interfețele API pot fi diferite și poate fi nevoie de o "contabilitate" diferită, fundamentală logică și matematică vor rămâne aceleași.
Și este adevărat că majoritatea motoarelor de joc AAA sunt C ++ cu un limbaj de scripting pe ele. Acest lucru este incontestabil. Cu toate acestea, majoritatea motoarelor AAA au, de asemenea, o grămadă de instrumente de îngrijire in-house le susțin, iar acestea pot fi în orice - Java, C #, C ++ etc.
Dacă doriți să scrieți un joc și sunteți un dezvoltator experimentat, atunci C ++ și C # au multe de făcut pentru ei. C # sunt mai putine, în timp ce C ++ sunt mai multe biblioteci și unelte disponibile. Pentru orice lucru extrem de complex, cu toate acestea, ar fi mai bine să încercați să utilizați un motor existent ca punct de plecare.
Dacă doriți să scrieți un joc și sunteți un dezvoltator nou, atunci nu scrie un motor. Utilizați un motor existent și modificați-l sau utilizați facilitățile acestuia pentru a vă scrie jocul. Aveți încredere în mine.
Dacă doriți să învățați cum să scrieți un motor și sunteți un dezvoltator cu experiență, ar trebui probabil să vă gândiți la C ++. C # este posibil, dar cantitatea de cod și ușurința de integrare a unui C ++ probabil o plasează peste partea de sus.
Dacă doriți să învățați cum să scrieți un motor și sunteți un dezvoltator nou, aș recomanda probabil C # / XNA. Veți ajunge mai repede la jocul "chestii", cu mai puțină durere de cap de învățare a unui insulă și a ieșirilor din C ++.
Dacă doriți un loc de muncă în industrie, atunci trebuie să vă dați seama ce fel de slujbă doriți. Un limbaj de nivel superior vă poate ajuta să obțineți un pas în ușă care se ocupă de instrumente și / sau dezvoltarea web-ului, ceea ce poate duce la oportunități de lucru real în joc. Chiar și cunoașterea limbilor de scripting vă poate ajuta dacă doriți să mergeți mai mult în poziția de designer / scenarist de joc. Există șanse ca tu să nu obțineți un loc de muncă de lucru pe bază de motor de bază imediat, deoarece abilitățile necesare pentru a face acest lucru sunt destul de ridicate. Competențele puternice de dezvoltare C ++ sunt întotdeauna utile, în special în scenarii în timp real sau în rețea.
Dezvoltarea motorului de joc AAA implică un serios serios de răsucire a unui creier.
Dacă doriți să începeți o casă de dezvoltare profesională, atunci probabil că nu citiți acest lucru, dar deja știți că C ++ este probabil singurul răspuns viabil.
Dacă doriți să faceți o dezvoltare casuală, atunci ar trebui să luați în considerare Flash sau o tehnologie similară.
Dacă vrei cu adevărat o carieră în industria jocurilor, chiar și pe consola, ar trebui să faci un demo de fel care arată ceea ce știi. C ++ ar fi o alegere excelentă a limbii pe care să o utilizați în demo, dacă aplicați pentru o poziție de dezvoltare a unui consola. Ai putea arata mai mult făcând un instrument în C # \ XNA pentru a crea activele pentru demonstrația ta. Veți arăta managerii de angajare și conducătorii de tehnologie că nu sunteți doar un tip C ++ sau doar un tip C #: sunteți un dezvoltator.
C ++. Acesta este standardul de aur pentru programarea jocurilor AAA. Dacă aveți nevoie să faceți ceva interesant, trebuie să faceți C ++ sau să vă dați în C # ne-gestionat (nu întotdeauna frumos).
De asemenea, C ++ este mai rapid ( se aplică în mod obișnuit avertismente ).
Ca o experiență de învățare, C # nu merită. C ++ este fără îndoială mai bine, mai ales în lumea cvasi-încorporată a consolelor. Pentru a obține experiența orientată pe obiecte, mergeți spre Java.
Pentru a spune adevărul ... trebuie să luați decizia cu privire la cea mai bună limbă. Știu ce pot face cu C #. Știu ce se poate face în C ++. C # nu este facut sa faca ceea ce a fost facut C ... sa scrie codul la cel mai de baza nivel si totusi sa fie oarecum semnificativ atunci cand este citit de ochii omului.
Dezvoltăm un motor de joc cu C #, DirectX ... este o provocare? iad da ... dar este ceva pe care am ales să o facem. Ne uităm la niște niveluri de performanță care sunt foarte apropiate de ceea ce poate da C ++. Deci, nu văd probleme cu acest efort.
Pentru dezvoltarea pe mai multe platforme, în cazul în care nu era pentru Net, s-ar putea să nu avem platforma Mono. Platforma Mono ne-a lărgit baza platformei.
C ++ cu Win32 / GDI este relativ usor de facut, dar mult mai dificil decat sa spui Flash sau Python - cu toate acestea, folosind C ++ veti invata multe in acest proces si va fi bine gandit sa continuati avansarea carierei creator de jocuri. Puteți, de asemenea, să căutați în XNA dacă doriți să programați la xbox360.
Am luat câteva cursuri la Institutul de Jocuri (GI) și am învățat multe despre C ++, win32 API și DirectX.
Dacă învățați programarea, C # oferă o curbă de învățare mai moale decât C ++, dar puteți scrie C ++ fără a intra în zonele mai înfricoșătoare și complexe ale limbii, deci nu este într-adevăr mult mai dificilă.
Dacă doriți să programați cu grafică sau alte lucruri "gamesey", atunci C # este o alegere destul de proastă - mergeți pentru C ++ cu OpenGL sau DirectX.
Editați | ×
În cele din urmă, dacă vrei o carieră în jocuri, du-te la C ++. S-ar putea să puteți scrie codul jocului în C #, dar în mod realist nu veți găsi prea multe oportunități de carieră utilizând C # ca și în cazul C ++. Cu excepția cazului în care doriți să deveniți un programator de instrumente pentru jocuri, caz în care C # este mult mai bun decât C ++, deoarece puteți obține mult mai multă funcționalitate, lucrând într-un timp mult mai scurt. Multe companii de jocuri convertesc la C # pentru cât mai multe instrumente dev posibil.
Desigur, dacă se poate ocupa de volumul de lucru, cea mai bună modalitate este să învățați ambele limbi și să aplicați "cel mai bun instrument pentru lucrare". Deoarece sunt atât de asemănătoare, nu este cu adevărat dificil de învățat unul atunci când l-ați învățat pe celălalt. (Într-adevăr, cea mai mare parte a curbei de învățare care se deplasează de la C ++ la C # este .net și LINQ etc, mai degrabă decât limba centrală C # per se - o grămadă este aproape identică, cu doar câteva biți de zahăr sintactic, aici și acolo)
Depinde într-adevăr de tipul jocului pe care intenționați să îl construiți: multe jocuri ar putea fi realizate într-o limbă precum C #. Acestea fiind spuse, majoritatea dezvoltării jocurilor se face în C ++, deoarece majoritatea dezvoltării jocurilor trebuie să scoată la iveală orice ultimă performanță pe care platforma o poate oferi și asta înseamnă un asamblator C, C ++ sau ( shudder ).
Uită-te la asta așa - în timp ce poți scrie un joc în C #, nu va deschide multe uși de carieră pentru tine. Dacă cunoașteți C ++ și Lua, atunci veți fi mult mai ocupabili.
De asemenea, nu vorbiți doar despre desktop-urile PC și consolele, jocurile de astăzi sunt foarte mult pentru dispozitivele mobile, astfel încât numai cunoașterea C # vă va limita chiar și mai mult. Sigur, C ++ nu va fi alegerea optimă pentru scrierea aplicațiilor iPhone, dar veți fi mult mai aproape de a fi un programator obiectiv C dacă cunoașteți C ++ decât dacă știți C #.
Jocuri devs utilizează C ++ nu pentru motive moștenite (deși au înființat motoarele C ++ și bibliotecile ajută), ci pentru performanță și experiență. Game devs cunoaște C ++, funcționează foarte bine pentru ei, deci nu este nevoie să se schimbe. Nu este ca aplicații de linie de afaceri (pe Windows) unde dezvoltatorul mindshare se mișcă cu instrumentele Microsoft actuale.
C ++ este lingua franca a industriei de jocuri de consolă. Pentru mai bine sau mai rău, trebuie să știți că este un programator profesionist de jocuri pe console.
Dacă doriți să fiți angajat profesional ca dezvoltator de jocuri, trebuie să cunoașteți
C / C ++. Sfarsitul povestii!
Cred că C ++ este limba pe care o căutați. Majoritatea dezvoltării jocurilor este în C ++, deoarece este o limbă multi-paradigmă (OOP, meta-programare etc.) și deoarece permite gestionarea memoriei. Ceea ce face C ++ chiar mai bine este că poate fi folosit pentru a se dezvolta pe o multitudine de platforme, în timp ce C # nu poate face acest lucru pe o scară atât de mare.
Mulți vor spune că cu C # nu va trebui să vă faceți griji cu privire la alocarea memoriei și acest lucru este adevărat la un anumit preț. Veți avea povara cadrului .NET pe umerii dvs. și veți vedea lent limitele C # în modul în care anumite sarcini trebuie făcute.
Probabil ați citit din câteva răspunsuri că C ++ este un limbaj de programare greu. Acest lucru este în mare parte adevărat, dar probabil că nu ați auzit despre C ++ 0x. Unele funcții găsite în C #, cum ar fi colecția de gunoi, vor deveni disponibile (opțional pentru utilizare) cu C ++ 0x. De asemenea, multi-threading va fi susținut în sfârșit de limbajul cu această revizuire a standardului C ++.
Aș recomanda să cumpărați câteva cărți C ++, precum și cărți C ++ DirectX / OpenGL.
Dacă ai fi știut C # și XNA, ai putea să faci niște jocuri de probă într-o manieră destul de directă, care ar putea ajuta să intri pe teren.
Cred că motoarele de bază ale jocurilor sunt scrise în C ++, dar unele din celelalte coduri din jurul nucleului ar putea fi în C #.
Nu este raspunsul pe care-l cauti? Răsfoiți alte întrebări etichetate c # c ++ sau întrebați-vă propria întrebare .
Sursa : https://stackoverflow.com/questions/2203093/should-c-sharp-or-c-be-chosen-for-learning-games-programming-consoles
C# si C++ sunt doua limbaje de programare care nu au nici cea mai mica legatura intre ele .
C# e un limbaj de programare inventat si patentat de Microsoft, cu care poti crea aplicatii managed (dependente de un runtime care cunoaste sa iti interpreteze asa zisul "executabil" creat). A fost creat in principal pentru realizarea unor aplicatii fiabile, nu rapide, mai exact erorile uzuale de programare de genul alocarii si dealocarii de memorie nu mai cad in sarcina programatorului. Tinta principala este crearea rapida a unor aplicatii frumos colorate. Partile sale proaste (multe la numar) sunt de obicei:
- dependenta de un runtime (.NET)
- nu prea e cross-platform (99.99% din aplicatiile C# ruleaza doar sub Windows care sa aiba si .NET instalat)
- codul e intrepretat deci executia programului este mai lenta decat un executabil nativ
- 99% din lucrurile care le poti realiza foarte simplu in C sau C++ necesita kilometri intregi de cod in C#
C++ e un limbaj de programare derivat din C, cu care un programator poate realiza aplicatii native (adica rulabile direct de procesor, fara intemediul unui interpretor software ca in cazul C#). Este un limbaj de programare portabil (poate fi compilat pe orice arhitectura), poti scrie cu el aplicatii Windows, Linux, drivere, BIOS-uri, firmware-uri pentru orice tip de dispozitiv hardware sau componenta electronica corespunzatoare (de la routere pana la microcontrollere). Partile sale negative sunt:
- trebuie sa ai idee despre arhitectura unui PC / dispozitiv
- trebuie sa fii atent la leakuri de memorie. In C++ nu exista verificari in timpul rularii ale depasirii granitelor vectorilor sau alte chestii de genul asta, decat daca ti le faci tu singur (sau folosesti alte librarii pentru asta)
- mici greseli de programare se pot transforma intr-o catastrofa, lucru valabil atat datorita sintaxei extrem de permisibile, cat si diverselor greseli ale programatorului
Nu exista "trecere" de la C# la C++ sau invers. Exista doar motive de a folosi unul sau altul, in functie de prioritati, motive personale sau profesionale, timpul necesar realizarii a ceea ce vrei sa faci, si evident chestiuni legate de performanta aplicatiei pe care vrei sa o ai. Insa, ca idee, orice se poate face in C# se poate face si in C++, insa invers, niciodata! De aceea majoritatea aplicatiilor critice (de pilda sistemele de operare, bazele de date, serverele) sunt realizate in ASM/C/C++, iar C#/.NET are ca tinta aplicatii desktop pe care le poate scrie chiar si cineva care are programarea doar ca hobby, nu la un nivel serios. NumeDeCod
C# e un Java , care n-are nici un motiv de existenta pentru ca ruleaza numai pe windws
În functie proiectul la care o sa lucrezi, o sa ai ocazia sa folosesti si c++ si c# Daca inveti bine c++ atunci o sa te descuri relativ bine de la inceput si in c#, invers cred ca este mai greu. denverash
https://forum.softpedia.com/topic/559446-c-vs-c/
Am decis ce vreau cu adevărat să fac programarea jocurilor. Așadar, întrebarea este că, la 18 ani, care dorește să învețe programarea auto-predată, care este cel mai potrivit limbaj de programare între C # și C ++? (Ar trebui să spun că nu-mi pasă de Unix pentru că eu cred că windows-ul va fi încă cel mai folosit sistem de operare)
Cunosc elementele de bază ale C ++, dar nici unul despre C #. Știu că C ++ are mai multe ghiduri de tutoriale, dll-uri și așa ceva, în timp ce C # nu este, dar este mult mai ușor să înveți și să folosești pentru o singură persoană pentru a dezvolta un program, dar am citit chiar dacă programul este obfuscated este ușor să obțineți sursa acesteia.
Ei bine, vreau să mă concentrez mai întâi pe elementul de bază, trebuie să spun că am o preferință pentru C ++ doar pentru că mă simt mai potrivit, dar trebuie să mă gândesc că lucrez singur. Deci, chiar dacă îmi place, este posibil să nu fie cel mai bun lucru de făcut.
Nu sunt sigur de cine să meargă, am citit o mulțime de fire pe diferite site-uri web și se pare că C # devine tot mai popular decât C ++. Dar da, care a spus, am specificat, de asemenea, că vreau să fac programarea jocului. Așadar, trebuie să știu câteva puncte mai bune decât "C # este mai ușor din cauza manipulării memoriei .net în timp ce C ++ nu este", pentru că nu am putut să o găsesc.
Învăț C ++ programând un joc. A fost o experiență foarte plăcută. Vă încurajez foarte mult să faceți la fel!
Cu toate acestea, acum sunt un programator C #, știu că ar fi fost mult mai productiv dacă C # era disponibil la acea dată.
C # este alegerea perfectă pentru dezvoltarea jocurilor de învățare. Are tot ce aveți nevoie pentru a începe de la cadre la cărți și limba este uimitoare.
Am văzut zeci de cărți scrise în mod specific pe C # Game Programming și Microsoft depune mult efort pentru a-și îmbunătăți cadrele, inclusiv DirectX și XNA .
Majoritatea companiilor de jocuri folosesc C ++, poate cu script-uri Python sau alte limbi care rulează în fundal. Moreso deoarece legăturile pentru OpenGL și DirectX sunt orientate spre C ++ (altho Im destul de sigur că puteți face exact aceleași lucruri Direct3d în C #), dar pentru programarea jocurilor, C ++ este limba principală.
Îți voi da un avertisment corect (deși nu te lasă să te descurajezi), dar grafica 3D poate deveni extrem de complicată. Noul Direct3D a făcut-o un pic mai ușor decât era, dar este încă un pic de matematică (care poate deveni destul de confuz) și doar bibliotecile însele pot fi confuze.
Voi începe cu ceva foarte simplu primul. pentru lucrurile 2d SDL (Simple Directmedia Layer) este mult mai ușor de folosit (pentru ceva de genul jocului de sus în jos) odată ce intri în 3D. PERSONAL cred că OpenGL este mai ușor de învățat (dar asta este tot opinia). MS are câteva tutoriale / exemple frumoase în documentația DirectX SDK, așa că merită să aruncați o privire. Tutorialele de la Nehe, deși sunt puțin depășite, sunt încă plăcute.
În primul rând, veți dori să stabiliți anumite priorități. Vrei să faci mai întâi un joc, apoi să înveți despre aspectele mai avansate ale programării mai târziu sau invers. Ambele abordări au avantajele și dezavantajele lor, dar sunt și ele legitime în opinia mea.
Dacă vrei să începi să faci jocuri, aș recomanda să înveți C #. Dacă cunoașteți deja elementele de bază ale C ++, atunci nu ar trebui să aveți probleme la ridicarea C #. Efectuarea unui instrument C # are avantaje. Este ușor de învățat limbajul (în comparație cu C ++) și este un "limbaj gestionat", ceea ce înseamnă că acesta face în mod automat memoria sanitară pentru dvs. (ceva ce mulți începători în C ++, și chiar nu-așa-începători, au probleme cu ). Acesta vă oferă, de asemenea, acces la Microsoft XNA Framework, care face chiar mai mult de sanitare plictisitoare pentru tine. Asta te lasa sa te concentrezi pe lucruri precum ciclul jocului si designul, fara sa te ingrijorezi (prea mult) sa-l faci sa functioneze. Adevărat, toate aceste insta-plumbing are deasupra capului, ceea ce înseamnă că, probabil, nu veți face jocuri industriale 3D, dar tocmai ați intrat în programarea jocului, așa că mă îndoiesc că vei face următorul Halo pe primele tale încercări. :)
Iată un post mortem de tipul care a dezvoltat un joc de succes XNA (Weapon of Choice). El detaliază modul în care utilizarea lui C # / XNA ia salvat timpul de dezvoltare, spre deosebire de faptul că trebuie să utilizeze C ++.http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Acestea fiind spuse, ar trebui să investești puțin timp în a ști cel puțin cum funcționează lucrurile în fundal. Cum ar face un programator C ++. Învățarea de a face un joc în C poate face mai ușor să se alăture unei alte echipe de dezvoltare a jocului (deoarece majoritatea lucrează în C ++), dacă ceea ce doriți este să câștigați poziția în industria jocurilor de noroc. Dar chiar dacă ați terminat niciodată cu C ++, știind cum funcționează internii vă poate face doar un programator mai bun, indiferent de limba pe care o utilizați.
Sunt complet de acord. Problemele de gestionare a memoriei cu care vă confruntați cu C ++ sunt cea mai mare problemă. Nu a fost un joc pe care am lucrat la acest lucru nu a avut probleme de memorie, și am auzit același lucru a spus de veterani de 20 de ani, care au făcut zeci de jocuri. Chiar și RAII și pointerii inteligenți nu rezolvă problema, deoarece aveți probleme cu indicii care indică date vechi și probleme legate de proprietate. Învățând cum să le găsiți și să le reparați vă va face un programator mult mai bun, dar ar putea să vă loviți de luni de când ați avut o depășire a tamponului și un accident de joc într-o parte necondiționată.
Promovez C ++ pentru dezvoltarea jocurilor. Există câteva obstacole suplimentare, cu diferite argumente pro și contra, unul dintre motivele cele mai bune este portabilitatea.
Cu C # te poți dezvolta destul de mult în zilele astea și există unele motoare uimitor de mari acolo programate în ea cu siguranță. Ambele sunt limbi bune pentru programarea jocurilor, dacă vizați numai platformele Windows / Xbox, atunci veți avea în mod special motive să vă îndreptați spre C #.
Limba pe care cred că ar trebui să o învățați ar fi OpenCL sau CUDA, o limbă GPGPU. Personal prefer OpenCL, deoarece pare să depășească și să crească în continuare, este în esență doar stil C. Există OpenTK care este un pachet frumos pentru C ++ sau C #.
Programarea jocului brut vă va lăsa destul de rece. Lucrul cu apelurile grafice de nivel scăzut în C # sau C ++ este un coșmar minor și chiar nu doriți să reconstruiți roata de redare a spritelor 2D, să nu mai vorbim de modele 3D. Deoarece sunteți pe cont propriu și doriți să învățați programarea, cel mai bun pariu este să găsiți un cadru care vă poate face un avantaj.
De vreme ce ai o familiaritate cu limbajul bazat pe C, sugestia mea ar fi sa dai Unity 3D o privire. Nu numai că se confruntă cu o adopție serioasă în adoptarea de la magazinele de jocuri comerciale și are câteva opțiuni de platformă interesante (inclusiv PC-uri, Android, iPhone și runtimes web), dar are și o versiune gratuită foarte ușor de folosit și multe tutoriale pentru a vă arăta cum să treceți de la concept la implementare. Cel mai bun dintre toate (IMO) una dintre limbile de scripting acceptate este C #.
https://softwareengineering.stackexchange.com/questions/55040/game-programming-c-or-c
Ce ar trebui să aleg pentru dezvoltarea jocului: C # sau C ++?
Aceasta va depinde aproape complet de ceea ce încerci să faci. Există multe tipuri diferite de dezvoltatori de jocuri, inclusiv în subcategoria de programare. Doriți să faceți o dezvoltare a jocului HTML5 (JavaScript)? Dezvoltare nativă pe Windows? Dezvoltarea jocului mobil (ușor se suprapune cu HTML5 în zilele noastre)?
De asemenea, ce tip de programare doriți să faceți? Scenariul jocului sau doriți să construiți arhitectura de la bază până la capăt?
Dacă doriți să construiți lucruri de la bază și să înțelegeți cum funcționează jocurile de la partea de jos spre partea de sus, atunci faceți călătoria lungă de învățare a C ++. Nu numai că acest lucru vă va ajuta să deveniți un inginer software destul de bine rotunjit în general (mai multe oportunități de locuri de muncă chiar și în afara dezvoltării jocurilor), dar vă va permite de asemenea să gestionați scripturile la nivel inferior în motorul Unreal. O mulțime de companii indie colaborează cu UE și ar dori ca cineva care poate face o programare serioasă în ea.
Cu toate acestea, dacă doriți doar să luați un alt motor de joc deja existent, cum ar fi Unity (în prezent chiar la fel de puternic și util ca Unreal), și să sară direct în scripting, încercați C # și începeți să construiți jocuri foarte mici pentru a învăța fluxurile de lucru pentru dezvoltarea jocurilor. Beneficiați aici este că veți începe să învățați o limbă care vă va permite să intrați mai rapid în joc și care vă poate ajuta, de asemenea, dacă vreți să mergeți în jos pe calea dezvoltării .NET (în afara jocurilor).
În timp ce C # poate fi destul de complicat, la fel ca orice altă limbă, C ++ este o investiție mult mai profundă și va fi cu siguranță mai dificilă dacă nu aveți experiență de programare, dar totuși foarte răsplătoare în cele din urmă. Dar această întrebare este mai mult despre ce limbă ar trebui să începețicu, deci dacă doriți să ajungeți în dezvoltare rapidă, aș sugera să începeți cu C # și să lucrați cu Unity Engine pe partea laterală în timp ce învățați limba. Apoi, odată ce aveți un mâner destul de puternic al limbii, săriți în C ++. Este o cale mult mai ușoară.
Din ceea ce am auzit vorbind cu profesorii și studenții care se află în dezvoltarea jocurilor, C # este de obicei calea pentru a începe dezvoltarea jocului.
Din răspunsul de top pe StackExchange: Programarea jocului: C # sau C ++?
"Am văzut zeci de cărți scrise în mod specific despre Programarea Jocurilor C # și Microsoft depune mult efort pentru a-și îmbunătăți cadrele, inclusiv DirectX și XNA ".
După cum puteți sau nu știți, DirectX și XNA sunt genunchii albinelor când vine vorba de programarea jocurilor. Acordat, acest lucru este în mod specific legate de Windows și poate nu este direcția pe care sunteți curioși, dar este un început ușor accesibil.
"Dacă vrei să începi să faci jocuri, atunci aș recomanda să înveți C # .. Dacă știi deja de bază despre C ++ atunci nu ar trebui să ai deloc probleme cu privire la ridicarea lui C # Efectuarea unui instrument C # are avantaje. în comparație cu C ++) și este un "limbaj gestionat", ceea ce înseamnă că acesta face în mod automat memoria sanitară pentru tine (ceva ce are mulți începători C ++ și chiar nu-așa-începători au probleme). "
Totul depinde de jocul pe care doriți să-l dezvoltați, deoarece există multe considerații pe care trebuie să le gândiți și nu ar trebui să vă fixați alegerea pentru un singur lucru, deoarece probabil veți trece la alte limbi atunci când veți dezvolta un alt joc mai târziu.
Dacă doriți să dezvoltați un joc de înaltă performanță care are suport nativ pe toate platformele de astăzi, ar trebui probabil să mergeți cu C ++, deoarece C ++ are capacitatea de a gestiona alocarea / dealocarea memoriei pe orice obiecte pe care le-ați creat, ceea ce poate crește performanța din joc, dar trebuie să știți că aceasta poate fi, de asemenea, o lamă cu două tăișuri, care poate fi o problemă pentru jocul dvs. dacă nu ați reușit bine. Majoritatea sistemelor de operare (OS) de pe piață au fost construite utilizând C / C ++, astfel încât C ++ are un suport nativ bun pe ele. C ++ este, de asemenea, un limbaj mai scăzut comparativ cu C # care uneori poate fi un lucru bun atunci când doriți o anumită flexibilitate la nivel tehnic, cum ar fi șabloane de clasă și așa mai departe. Dar dezvoltarea jocului folosind C ++ va dura mai mult timp pentru că trebuie să scrieți, să gestionați și să optimizați fiecare detaliu al jocului.
Pe de altă parte, dacă doriți să dezvoltați un joc utilizând un limbaj de programare ușor de utilizat și nu trebuie să gestionați nimic manual, în special alocarea / dezalocarea memoriei a ceea ce ați creat, atunci C # este răspunsul. Deoarece C # este un limbaj de nivel superior pe care îl puteți crea abstracție de orice obiect ușor și există un lucru numit colector de gunoi care va gestiona memoria obiectelor dumneavoastră. Dar C # nu este susținut pe scară largă pe majoritatea platformelor, deoarece poate fi rulat doar pe partea de top a cadrului .NET / framework mono (versiunea open source a .NET framework) și, prin urmare, face ca performanța să scadă, deoarece Sistemul de operare trebuie să ruleze atât cadrul cât și jocul în același timp. Dezvoltarea jocului folosind C # este mai rapidă în ceea ce privește viteza de dezvoltare, mai ales dacă utilizați un motor de joc specific.
Pe lângă nivelul tehnic al limbilor, ar trebui să luați în considerare și alte lucruri, cum ar fi echipa dvs., domeniul proiectului, motorul de joc, suportul motorului de joc etc. Dacă sunteți singurul programator din echipa dvs. și alegeți C ++ pentru a utiliza pentru dezvoltarea proces, pot spune că este o încercare de sinucidere, chiar dacă alegeți un motor de joc bun.
Ar trebui probabil să faceți unele cercetări aprofundate pe cont propriu despre motoarele de joc și, de asemenea, să învățați câteva tehnici utilizate în mod curent de către dezvoltatorii de jocuri în zilele noastre pentru a facilita procesul de dezvoltare.
Dacă doriți să dezvoltați un joc de înaltă performanță care are suport nativ pe toate platformele de astăzi, ar trebui probabil să mergeți cu C ++, deoarece C ++ are capacitatea de a gestiona alocarea / dealocarea memoriei pe orice obiecte pe care le-ați creat, ceea ce poate crește performanța din joc, dar trebuie să știți că aceasta poate fi, de asemenea, o lamă cu două tăișuri, care poate fi o problemă pentru jocul dvs. dacă nu ați reușit bine. Majoritatea sistemelor de operare (OS) de pe piață au fost construite utilizând C / C ++, astfel încât C ++ are un suport nativ bun pe ele. C ++ este, de asemenea, un limbaj mai scăzut comparativ cu C # care uneori poate fi un lucru bun atunci când doriți o anumită flexibilitate la nivel tehnic, cum ar fi șabloane de clasă și așa mai departe. Dar dezvoltarea jocului folosind C ++ va dura mai mult timp pentru că trebuie să scrieți, să gestionați și să optimizați fiecare detaliu al jocului.
Pe de altă parte, dacă doriți să dezvoltați un joc utilizând un limbaj de programare ușor de utilizat și nu trebuie să gestionați nimic manual, în special alocarea / dezalocarea memoriei a ceea ce ați creat, atunci C # este răspunsul. Deoarece C # este un limbaj de nivel superior pe care îl puteți crea abstracție de orice obiect ușor și există un lucru numit colector de gunoi care va gestiona memoria obiectelor dumneavoastră. Dar C # nu este susținut pe scară largă pe majoritatea platformelor, deoarece poate fi rulat doar pe partea de top a cadrului .NET / framework mono (versiunea open source a .NET framework) și, prin urmare, face ca performanța să scadă, deoarece Sistemul de operare trebuie să ruleze atât cadrul cât și jocul în același timp. Dezvoltarea jocului folosind C # este mai rapidă în ceea ce privește viteza de dezvoltare, mai ales dacă utilizați un motor de joc specific.
Pe lângă nivelul tehnic al limbilor, ar trebui să luați în considerare și alte lucruri, cum ar fi echipa dvs., domeniul proiectului, motorul de joc, suportul motorului de joc etc. Dacă sunteți singurul programator din echipa dvs. și alegeți C ++ pentru a utiliza pentru dezvoltarea proces, pot spune că este o încercare de sinucidere, chiar dacă alegeți un motor de joc bun.
Ar trebui probabil să faceți unele cercetări aprofundate pe cont propriu despre motoarele de joc și, de asemenea, să învățați câteva tehnici utilizate în mod curent de către dezvoltatorii de jocuri în zilele noastre pentru a facilita procesul de dezvoltare.
În opinia mea, C ++ este mult mai potrivit pentru dezvoltarea jocului, apoi C #. Aceasta se datorează faptului că C ++ în multe moduri este un limbaj de nivel scăzut și oferă acces hardware la programator decât C #.
În jocuri, pot exista mii sau milioane de vertex și linii care trebuie să fie redate cât mai repede posibil. Doar pentru crearea unui singur cadru.
Și apoi există o mulțime de efecte și post-procesare care trebuie să fie făcut. Și după toate că aveți nevoie de joc pentru a rula într-o rată optimă de cadre ca 60fps.
Prin urmare, performanța este crucială.
Din acest motiv, Microsoft a proiectat DirectX API astfel încât să fie complet compatibil cu C ++.
În timp ce DirectX nu este complet compatibil cu C #.
Este adevărat că puteți crea grafică utilizând C # cu DirectX, dar C # vă oferă acces limitat la hardware și nu există niciun cod gestionat pentru dezvoltarea jocului.
În opinia mea, XAML este un exemplu excelent de C # cu DirectX. Dar din nou, este foarte limitat din cauza problemei de performanță. Puteți crea un software CAD asemănător, unde puteți face modelare 3D, dar efectuarea redării în timp real ca în REAL GAMES este o poveste foarte diferită.
Prin urmare, C ++ este mult mai bun pentru jocuri, atunci C #.
C # este mai potrivit pentru dezvoltarea aplicațiilor Desktop și un pic de efect grafic pentru acel software. Ea face munca programatorului mai ușoară și mai eficientă.
Dar pentru dezvoltarea jocului C ++ este cea mai bună limbă, nu C #.
Unitatea este mai mult sau mai puțin C # centrică. UE4 este fără echivoc un motor C ++. Am petrecut ani cu amândoi.
Dacă tocmai începusem să-i sfătuiesc pe sinele meu mai mic să meargă cu Unitatea. UE are multe puncte forte, însă este foarte neiertător în mai multe moduri importante, mai ales pentru noii coderi. Și, sincer, găsesc C # o plăcere să lucrez cu, în timp ce C ++ uneori doar mă face să-mi scutur capul în disperare.
Există o mulțime de alte platforme pe care le puteți utiliza. Naiba. Puteți chiar să mergeți direct la metal dacă doriți. Dar dacă obiectivul dvs. este acela de a obține lucruri interesante să se întâmple rapid cu instrumente software care întrunesc standardul profesional, mergeți la Unity și C #.
Sunt nou-născut la programare și am luat atât C și C ++ la școală și am luat Java chiar acum. M-am întâlnit cu C # în Visual Studio și folosind doar puținul pe care l-am cunoscut de la Java, am reușit să tipăresc scrisorile într-un șir înapoi și să le dau buclă după cum este necesar. Am fost cu adevărat surprins de cât de similar a fost cu Java. Eu personal nu sunt un mare fan al Java, așa cum mi se pare greoaie și ineficientă, dar sunt dispus să termin cursul pentru a putea înțelege mai bine C # și mai ușor de codat în Unitate. De asemenea, recent am aflat despre Visual C ++ și toate clasele și bibliotecile Microsoft și tocmai mi-a deschis ochii la toate aceste extensii de fișiere pe care le-am auzit de-a lungul anilor și deceniilor, fără să știu de fapt ce au însemnat și de unde au provenit, DLL (Biblioteci dinamice de legătură), CLR (Common Language Runtime). Așadar, am cumpărat o carte de bază și am aruncat o privire asupra sintaxei și am găsit-o destul de diferită de cea standard C ++. Am doar atât de mult timp și vreau să intru în dezvoltarea jocului fie singur, fie ca o afacere cu un singur om, sau să lucrez cu sau pentru altcineva, dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale. dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale. dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale.
Sunt nou-născut la programare și am luat atât C și C ++ la școală și am luat Java chiar acum. M-am întâlnit cu C # în Visual Studio și folosind doar puținul pe care l-am cunoscut de la Java, am reușit să tipăresc scrisorile într-un șir înapoi și să le dau buclă după cum este necesar. Am fost cu adevărat surprins de cât de similar a fost cu Java. Eu personal nu sunt un mare fan al Java, așa cum mi se pare greoaie și ineficientă, dar sunt dispus să termin cursul pentru a putea înțelege mai bine C # și mai ușor de codat în Unitate. De asemenea, recent am aflat despre Visual C ++ și toate clasele și bibliotecile Microsoft și tocmai mi-a deschis ochii la toate aceste extensii de fișiere pe care le-am auzit de-a lungul anilor și deceniilor, fără să știu de fapt ce au însemnat și de unde au provenit, DLL (Biblioteci dinamice de legătură), CLR (Common Language Runtime). Așadar, am cumpărat o carte de bază și am aruncat o privire asupra sintaxei și am găsit-o destul de diferită de cea standard C ++. Am doar atât de mult timp și vreau să intru în dezvoltarea jocului fie singur, fie ca o afacere cu un singur om, sau să lucrez cu sau pentru altcineva, dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale. dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale. dar nu sunt sigur care limbă este mai utilă și mai utilă în acest moment. Obiectivul meu principal este fie să fac jocuri 3d sau 2d pentru Windows sau să fac același lucru și pentru telefoanele inteligente. Am câteva abilități de animație și intenționez să converg cele două în dezvoltarea jocurilor. Aș aprecia gândurile tale.
În general, C ++ este favoritul favorit al jocului-dezvoltator: vă permite să vă apropiați de comportamentul "real" al hardware-ului și să vă controlați în mod direct alocarea resurselor - în special a memoriei, care este foarte importantă în jocurile cu performanță intensă.
C # nu este deloc lent în comparație cu C ++, dar este mai lent. Mai important, deoarece C # vă gestionează memoria pentru dvs., vor exista situații în care timpul de execuție C # decide să colecteze și să curețe memoria fără a cere permisiunea. Acest lucru produce aproape întotdeauna un decalaj notabil - uneori poate fi măsurat în secunde în care programatorii de jocuri sunt utilizați pentru a număra în milisecunde. Este posibil să evitați această atenție deosebită a utilizării memoriei - sau prin efectuarea unei rupturi finale în ceea ce privește gestionarea memoriei C # - dar la acel moment ați pierdut unul dintre primele bonusuri ale dezvoltării C #, care nu trebuie să vă faceți griji cu privire la mizerie până la alocările de memorie.
În jocurile în care presiunea de memorie nu este prea strânsă (jocuri cu conținut redus) sau unde există variații în ritm care pot ascunde colecțiile ocazionale de gunoi C # este un mediu fin: multe jocuri Unity utilizează C #. Cu toate acestea, pentru aplicațiile cu adevărat sensibile, de înaltă performanță, C ++ va avea o performanță superioară mai mare, deși cu prețul unui proces de dezvoltare mai complex.