Czy C ++ „wciąż” jest preferowane przy tworzeniu gier? [Zamknięte]


17

Jestem programistą gier 2D. Niektóre języki programowania, w których jestem dobry, to C, Java, C #. Znam też ActionScript 2.0.3.0 i trochę javascript. Jestem zainteresowany nauką programowania gier 3D. Do tej pory gromadziłem informacje, przeglądając i czytając różne fora i artykuły dotyczące gier. Zauważyłem, że większość programistów woli C ++, a także na kursie programowania gier online zauważyłem, że wolą uczyć C ++ i Visual C ++ jako kursu początkowego. Powód, dla którego zadaję to pytanie, ponieważ chciałbym poznać różnicę „siły” C ++, C # i Java do programowania gier 3D.

Dołącz także linki do dobrych artykułów na temat programowania gier 3D dla już programisty gier 2d.

PS: IMHO, uważam też, że C ++ jest tajemniczy.


Też bardzo to rozumiem. Zadano więc w społeczności pytanie, jakie umiejętności powinien posiadać profesjonalny programista gier. Otrzymałem kilka fajnych odpowiedzi na temat C ++ jako lepszego języka do tworzenia gier. sprawdź .. gamedev.stackexchange.com/questions/5552/…
GamDroid

@GamDroid: Nie interesuje mnie to, co czyni profesjonalnego programistę gier 2D. Interesuje mnie znajomość Visual C ++ i dlaczego tak się mówi.
Wisznu,

2
Btw: Visual C ++? Nie tylko zwykły C ++?
ścigający

Edytor Visual C ++ jest fajny, ale język Visual C ++ (to znaczy: C ++ z API GUI Win32 i tym podobne, zarówno z MS Visual C ++ lub Borland C ++ Builder) jest dość mylący i nie powinien być używany w grach (jest też zbyt wzdęty i używanie GDI jest wolniejsze niż używanie powiedzmy SDL do kontrolowania okna)
szybszy

1
@ Vish, przepraszam więc, możesz go edytować, aby był bardziej precyzyjny, biorąc pod uwagę dotychczasowe komentarze. Jeśli masz na myśli, że programowanie w Win32 jest mylące, powiedz to.
Tetrad,

Odpowiedzi:


30

Tak, C ++ jest najczęściej używanym językiem (choć niektórzy ludzie nadal używają C).

Jest tego wiele przyczyn. Sama pęd jest jeden - to po prostu język używany od lat, wiele technologii już istnieje i ludzie czują się z tym dobrze, więc zmiana nie nastąpi z dnia na dzień.

Potem jest kwestia kontroli. Twórcy gier są maniakami kontroli i lubimy wiedzieć wszystko, co dzieje się w naszym kodzie. C ++ daje nam kontrolę, C # i Java (aby wybrać dwie wspomniane alternatywy) odbierają kontrolę. Na wiele sposobów może to być dobre, ale programistom się to nie podoba :)

Wreszcie jest prosty praktyczny problem, że zestawy SDK dla różnych platform są bardzo skoncentrowane na C ++. Używanie innego języka nieuchronnie wiąże się z pisaniem opakowań, kompilacją krzyżową do maszyn wirtualnych i być może (w przypadku niektórych prac konsolowych) właściciel platformy nie zezwala na to (naprawdę nie lubią ludzi kompilujących JIT, na początek).


2
Tak, w głównym nurcie branży programistycznej.
JasonD

2
Jeśli chodzi o języki, przede wszystkim C ++ - w najbliższym czasie nigdzie się nie pojawi. Sugerowałbym, że znajomość języków skryptowych - Lua, Python itp.
zaszkodzi

8
Visual C ++ nie jest językiem, to IDE.
SurvivalMachine

2
Tak, choć prawdopodobnie jest to najczęściej używane IDE, warto więc o tym wiedzieć, ucząc się C ++.
JasonD

1
@SurvivalMachine Technicznie jest to dialekt (istnieje wiele rozszerzeń MSVC ++, które nie istnieją w standardzie)
bobobobo

4

Nadal preferowane jest C ++, jak widać na niemal każdej publikacji na temat tworzenia gier. Obecnie osobiście używam C do nurkowania w tworzeniu gier z tego prostego powodu, że kod C ++, który piszę, narusza funkcje szablonów, intensywnie wykorzystuje RAII, dynamiczną alokację pamięci i inne rzeczy, których nie powinieneś robić w kodzie gry z tego, co widziałem jak dotąd.

Trzymanie się C zmusza mnie do minimalistycznego myślenia o tym, co robię. Czasami może być trudniej, gdy trzeba zaimplementować coś, co STL daje ci za darmo, ale z drugiej strony wydaje mi się, że piszę czystszy kod i lepiej debuguję to.


3
RAII jest całkowicie akceptowalny (i należy do niego zachęcać) w kodzie gry.
stonemetal

1
@stonemetal: RAII zachęca do opóźnionego, a zatem nieprzewidywalnego przydziału zasobów. To, czy należy to zachęcać, zależy od wielkości twojej gry i twoich platform docelowych (i danego zasobu); średnio nie zachęciłbym tego. Ponadto RAII w C ++ jest najczęściej używane przy alokacji sterty, ponieważ OO w C ++ utrudnia alokację stosu.

3
W jaki sposób RAII zachęca do opóźnionego przydziału zasobów? Kiedy używam GLFW, tworzę klasę o nazwie GLFWRAII, która wywołuje funkcję init GLFW w konstruktorze i wywołuje procedurę czyszczenia GLFW w destruktorze. Alokuję go na stosie na początku Main, nic w żaden sposób nie opóźnia ani niczego nieprzewidywalnego. Inne zastosowania mogą polegać na alokacji na początku poziomu i czyszczeniu na końcu poziomu. Niewłaściwe użycie techniki nie czyni z niej złej techniki. Nic o RAII nie sugeruje nieprzewidywalnej alokacji zasobów innej niż słabe wykorzystanie.
stonemetal

Musisz tylko unikać korzystania z tych funkcji. Używam C ++ i nigdy nie używam szablonów w moim kodzie, a obiekty nie zgłaszają wyjątków w swoich konstruktorach. W C nadal możesz używać alokacji dynamicznej (i musisz to zrobić w przypadku gry 3D). Poza tym, należy zakodować w taki sposób, że również ktoś inny go znaleźć łatwe do zrozumienia - duży projekt w czystym kodzie C może być piekło, nawet jeśli Ci to zrozumieć. Jeśli nauczysz się myśleć o tym, co robisz, nawet jeśli język Cię do tego nie zmusza, będziesz w stanie napisać czysty kod w wielu innych językach.
Pablo Ariel

1

Osobiście nie jestem fanem C ++ i wolę Javę. Jednak większość ludzi w branży korzysta z niego i jest to najłatwiejszy język do konwersji na inne platformy bez opakowań i maszyn wirtualnych.

Czasami jednak inne języki działają całkiem dobrze w tworzeniu gier. Używam Java z LWJGL i to jest niesamowite. Więc jeśli chcesz zacząć od programowania 3D i OpenGL bez konieczności nauki C ++, wypróbuj LWJGL z Javą, ponieważ jest bardzo lekki i myślę, że to właściwie kod C ++ działający przez JNI.

Być może na dłuższą metę możesz chcieć przejść na C ++, ale możesz zacząć i ćwiczyć z C # lub Javą. Ponieważ większość kodu gry pochodzi z doświadczenia z językiem, ale powinieneś spróbować ćwiczyć OpenGL w języku, w którym czujesz się swobodnie. Ponadto, gdy ćwiczysz grafikę, powinieneś również wypróbować GLSL z OpenGL, ma on bardzo podobną do C składnię

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.