Zdecydowałem, że naprawdę chcę programować gry. Pytanie więc, jako 18-latek, który chce nauczyć się programowania samouka, jaki jest najbardziej odpowiedni język programowania między C # a C ++? (Powinienem powiedzieć, że nie obchodzi mnie Unix, ponieważ uważam, że Windows nadal będzie najczęściej używanym systemem operacyjnym)
Znam podstawy C ++, ale nie znam C #. Wiem, że C ++ ma więcej przewodników samouczków, bibliotek DLL i tym podobnych rzeczy, podczas gdy C # nie, ale o wiele łatwiej jest się uczyć i używać dla jednej osoby do opracowania programu, ale przeczytałem nawet, jeśli program jest zaciemniony łatwo jest uzyskać jego źródło.
Cóż, trochę chciałbym najpierw skupić się na podstawowym, muszę powiedzieć, że wolę C ++ tylko dlatego, że wydaje mi się bardziej odpowiedni, ale muszę wziąć pod uwagę, że pracuję sam. Więc nawet jeśli mi się podoba, może nie być to najlepsze.
Naprawdę nie jestem pewien, który wybrać, przeczytałem wiele wątków na różnych stronach i wygląda na to, że C # staje się bardziej popularny niż C ++. Ale tak, powiedziawszy, określiłem również, że chcę robić gry. Muszę więc poznać kilka lepszych punktów niż tylko to, że „C # jest łatwiejszy z powodu obsługi pamięci .net, podczas gdy C ++ nie jest”, ponieważ nie mogłem go po prostu znaleźć.
źródło
Odpowiedzi:
Uczę się C ++, programując grę. To było bardzo przyjemne doświadczenie. Gorąco zachęcam do zrobienia tego samego!
Jednak teraz jestem programistą C #, wiem, że byłbym o wiele bardziej produktywny, gdyby C # był wówczas dostępny.
C # to idealny wybór do nauki tworzenia gier. Ma wszystko, czego potrzebujesz, aby zacząć od szkieletów po książki, a język jest niesamowity.
Widziałem dziesiątki książek napisanych specjalnie na temat programowania gier w języku C #, a Microsoft dokłada wielu starań, aby ulepszyć swoje frameworki, w tym DirectX i XNA .
UPDATE : może być zainteresowany przez to jak dobrze. To najnowszy post na blogu od Miguela de Icazy .
AKTUALIZACJA 2013-02-22 Microsoft planuje zaprzestać obsługi XNA .
źródło
Większość producentów gier używa C ++, być może ze skryptami Python lub innymi językami działającymi w tle. Moreso, ponieważ wiązania dla OpenGL i DirectX są skierowane do C ++ (chociaż jestem pewien, że możesz zrobić tyle samo Direct3d w C #), ale jeśli chodzi o programowanie gier, C ++ jest językiem głównym.
Dam ci jednak ostrzeżenie (i nie zniechęcaj), ale grafika 3D może się bardzo skomplikować. Nowy Direct3D sprawił, że jest o wiele łatwiejszy niż kiedyś, ale wciąż jest to dobra matematyka (może być dość myląca), a same biblioteki mogą być mylące.
Zacznę od czegoś bardzo prostego. na rzeczy 2d SDL (Simple Directmedia Layer) jest dużo łatwiejszy w użyciu (jak coś w rodzaju odgórnej gry) po wejściu do 3D. Osobiście uważam, że OpenGL jest łatwiejszy do nauczenia się (ale to wszystko opinia). MS ma kilka fajnych samouczków / próbek w dokumentacji DirectX SDK, więc warto się przyjrzeć. Samouczki Nehe, choć nieco przestarzałe, są nadal fajne.
ale tak, aby odpowiedzieć na twoje pytanie, wszystkie są zwykle wykonywane w C ++.
źródło
Najpierw będziesz chciał ustawić priorytety. Czy chcesz najpierw stworzyć grę, a potem dowiedzieć się o bardziej zaawansowanych aspektach programowania później lub odwrotnie? Oba podejścia mają swoje zalety i wady, ale moim zdaniem oba są uzasadnione.
Jeśli chcesz zacząć tworzyć gry, polecam naukę języka C #. Jeśli znasz już podstawy języka C ++, nie powinieneś mieć żadnych problemów z wybraniem języka C #. Tworzenie C # narzędziem ma zalety. Jest łatwy do nauczenia się języka (w porównaniu do C ++) i jest „językiem zarządzanym”, co oznacza, że automatycznie wykonuje hydraulikę pamięci dla Ciebie (coś, co wielu początkujących w C ++, a nawet niezbyt początkujących, ma problemy z ). Zapewnia również dostęp do platformy XNA firmy Microsoft, która wykonuje jeszcze więcej uciążliwych prac hydraulicznych. Dzięki temu możesz skoncentrować się na takich elementach, jak cykl gry i projektowanie, bez martwienia się (zbytnio) o uruchomienie. To prawda, że cała ta instalacja hydrauliczna ma swoje koszty ogólne, co oznacza, że prawdopodobnie nie będziesz tworzyć gier 3D klasy przemysłowej, ale dopiero zaczynasz programować gry, więc wątpię, żebyś robił następną Halo przy kilku pierwszych próbach. :)
Oto sekcja zwłok faceta, który opracował udaną grę XNA (Weapon of Choice). Wyjaśnia, w jaki sposób użycie C # / XNA pozwoliło mu zaoszczędzić czas na rozwój w porównaniu do konieczności używania C ++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Biorąc to pod uwagę, powinieneś poświęcić trochę czasu, aby przynajmniej wiedzieć, jak działają rzeczy w tle. Jak zrobiłby to programista C ++. Nauka tworzenia gry w C ++ może ułatwić dołączenie do innego zespołu tworzącego gry (ponieważ większość z nich pracuje w C ++), jeśli chcesz zdobyć pozycję w branży gier. Ale nawet jeśli nigdy nie użyjesz C ++, wiedza o tym, jak działają wewnętrzne, może uczynić cię lepszym programistą, bez względu na to, jakiego języka używasz.
źródło
Bardzo promuję C ++ do tworzenia gier. Istnieje kilka dodatkowych przeszkód, z różnymi zaletami i wadami, jednym z najlepszych powodów jest przenośność.
Dzięki C # możesz teraz rozwijać się o wiele więcej, a na pewno jest w nim zaprogramowanych kilka niesamowicie wspaniałych silników. Oba są dobrym językiem do programowania gier, jeśli kierujesz reklamy tylko na platformy Windows / Xbox, będziesz szczególnie miał powód, by skłaniać się w kierunku C #.
Językiem, który moim zdaniem powinien się nauczyć, byłby OpenCL lub CUDA, jakiś język GPGPU. Osobiście wolę OpenCL, ponieważ wydaje się, że może przetrwać i dalej się rozwijać, jest to po prostu styl C. Jest OpenTK, który jest dobrym opakowaniem dla C ++ lub C #.
Zawsze zastanawiałem się, jak wyglądałoby programowanie w Ruby z akceleracją sprzętową ...
źródło
Surowe programowanie gier sprawi, że będziesz całkiem zimno. Praca z niskopoziomowymi wywołaniami graficznymi w języku C # lub C ++ jest niewielkim koszmarem i naprawdę nie chcesz odbudowywać koła renderowania duszków 2D, a tym bardziej modeli 3D. Ponieważ jesteś sam i chcesz nauczyć się programowania, najlepszym rozwiązaniem jest znalezienie frameworka, który może cię nieco podnieść.
Ponieważ znasz trochę język oparty na języku C, sugeruję nadanie Unity 3D wyglądu. Nie tylko jest poważnie rozpowszechniony w sklepach z grami komercyjnymi i ma kilka interesujących opcji platformy (w tym na PC, Androida, iPhone'a i środowiska uruchomieniowe), ale ma również darmową wersję, która jest bardzo łatwa w użyciu i wiele samouczków aby pokazać, jak przejść od koncepcji do wdrożenia. Najlepszy ze wszystkich (IMO) jednym z obsługiwanych języków skryptowych jest C #.
źródło
Zrobiłem grę dla klasy dwa lata temu (wtedy miałem też 18 lat) i zrobiliśmy to w C #. Chociaż obserwuję, że duże programy w języku C # zwykle działają wolniej niż duże programy w języku C ++, C # wymaga również znacznie mniej pracy po twojej stronie. Zarządzanie pamięcią odbywa się automatycznie, a w przypadku pierwszej gry jest wystarczająco szybkie. (Nasza gra to pełnoprawny multiplayer 2D typu RTS podobny do Starcraft.)
Zrootowałem dla C #, ponieważ powinno być łatwiejsze w zarządzaniu. Jeśli jednak chcesz zostać profesjonalnym twórcą gier, pamiętaj, że działa tylko na platformach Microsoft. (Mimo to C # może być dobrym krokiem do C ++, a gdybym musiał ponownie nauczyć się dwóch języków, najpierw spróbowałbym nauczyć się C #.)
źródło
Głosowałbym na C ++ - przede wszystkim dlatego, że może być wieloplatformowy (oczywiście w zależności od tego, jak piszesz kod), a także dlatego, że uważam, że daje on więcej wiedzy na temat zarządzania pamięcią - ponieważ musisz o to dbać. Ale ponieważ nie zależy ci na Linuksie / Unixie, jeśli chcesz na chwilę pominąć złożoność pamięci, dlaczego nie skupić się teraz na C #, a następnie nauczyć się również C ++?
źródło