Jaki standard c++ jest dominujący w gamedevie? Czy istnieje lista/zbiór elementów języka, które można pominąć, żeby skrócić sobie naukę? Patrz załącznik. Czy visual studio to jedyne IDE, które jest używane w branży?
Standard c++ w gamedevie oraz tooling
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196
A co ma załącznik do pytania ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 55
Oskarlesk napisał(a):
Jaki standard c++ jest dominujący w gamedevie? Czy istnieje lista/zbiór elementów języka, które można pominąć, żeby skrócić sobie naukę? Patrz załącznik. Czy visual studio to jedyne IDE, które jest używane w branży?
Najlepszą opcją w każdym przypadku jest według mnie korzystanie z najnowszego standardu który znamy. Nie ma co patrzeć na to, czego używają inni.
Raczej nie ma takich rzeczy których nie trzeba się uczyć. Owszem są elementy języka rzadko stosowane, ale "nie znasz dnia ani godziny" kiedy akurat ci się to przyda. Gamedev wymaga dość różnorodnych umiejętności.
Jest multum IDE, ale większość osób zapewne używa VS. Jest po prostu rozbudowane, znane i sprawdzone.
- Rejestracja: dni
- Ostatnio: dni
Jaki standard c++ jest dominujący w gamedevie?
Nie wiem, choć się domyślam. Otóż każdy, od C++11 w zwyż, w zależności gdzie się trafi. Poniżej C++11 to już raczej archeologia. Najnowszy C++23 to jeszcze pewnie rzadko spotykany, ale C++14/17/20 to pewnie chleb powszedni.
Ta analogia JavaScript definitive guide i chudsza JavaScirpt the good part to raczej do C++ nie pasuje. Zamiast jednej chudej książeczki, której wszyscy starają się trzymać to każdy projekt/zespół ma swoją własną książeczkę :D Dlatego nie ma jednej odpowiedzi na pytanie Jaki standard c++ jest dominujący w gamedevie? bo ten standard zaraz może się zmienić z kolejnym apdejtem SDK na konsole. Jak obecnie się pisze na XBOX możesz sam się dowiedzieć czytając https://learn.microsoft.com/en-us/gaming/gdk/ Jakiego standardu używa się w godot też możesz sam sprawdzić https://github.com/godotengine/godot
Aczkolwiek, na pewne pytania mogę odpowiedzieć trochę konkretniej.
Czy istnieje lista/zbiór elementów języka, które można pominąć
Ogólnie to nie, raczej wszystkiego się dotknie, chyba że pracujesz na gotowym silniku takim jak Unreal i ten silnik wyznacza Ci granice. Aczkolwiek, metaprogramowania nie ma za dużo w silnikach, które widziałem. Oczywiście, trzeba znać jakieś podstawy szablonów, bo generyki się zdażają, ale raczej nic wykręconego.
Czy visual studio to jedyne IDE, które jest używane w branży?
Czy jedyne to nie wiem, ale dominujące na pewno. XBOX należy do MS więc toolset masz dostępny z instalatora VS. Sony i nintendo wydają swoje oficjalne pluginy do swoich SDK właśnie pod VisualStudio. Pisać kod możesz w czymkolwiek Ci pasuje, ale debugger to raczej tylko VisualStudio.
- Rejestracja: dni
- Ostatnio: dni
Starszych standardów się używa, ze względów na ograniczenia techniczne.
Przykładowo kod jest dostarczany na platformę, gdzie dostęne kompilatory nie wspierają nowszych wersji języka.
Przykładowo w jakimś projekcie używałem C++03 + tr1, bo dostarczaliśmy bibliotekę, która miała działać też na Anrdoid 4.4 (jeśli dobrze pamiętam).
Albo masz system wbudowany, którego producent dostarczył ze zestawem narzędzi, gdzie kompilator wspiera C++98 i już nie robi upgradów.
itd itp. Wszystko co jest związane z compability.
Albo cały system ma wielki code base, więc migracja do nowszego standardu, reprezentuje takie koszty, że nie jest przeprowadzana.
No to teraz Gamedev siedzi w sytuacji, gdzie zwykle działa na najnowszym hardware, nie ma długożyciowego wsparcia oprogramowania, ergo jedyni limit na stadnard C++ to dostępne kompilatory.
Niby C++23 już wyszedł, ale jego wsparcie jest dość ograniczone, ergo GemeDev zapewne korzysta teraz, z C++23/C++20.
Mój obecny projekt korzysta z C++20, z ograniczeniami wynikającymi, że na jednej platformie musimy używać Clang10 (jakiś Linux) i na razie nie ma czasu, by przeprowadzić i zweryfikować, czy mżmy użyć nowszego clang-a.
Na MacOS używamy Apple-Clang16, ale wspieramy jeszcze macOS 10.15 (Catalina), więc są ograniczania na to, co można użyć ze standardowej biblioteki C++ (która jest częścią systemu MacOS).