Gamedev przegląd technologii

Posted on Tue 09 May 2017 in Gamedev

Cześć. Dziś taki post z kategorii teoretyczno-poradnikowej. Mowa tu będzie o technologiach jakie polecam do tworzenia gier i dlaczego moim zdaniem ta a nie inna jest fajna. Traktujecie te przemyślenia nie jak prawdę objawioną, ale jako moje przemyślenia z perspektywy czasu. Od razu na początku chcę powiedzieć, że nie będzie w tym przeglądzie o Unity3D lub Unreal Engine, ponieważ żadną z tych technologii nie bawiłem się na tyle długo, aby mój osąd był konstruktywny. Tworząc gry wychodzę z założenia, że sam chce stworzyć technologię dlatego, że wtedy lepiej rozwinę się jako programista, a o to w tym wszystkim chodzi.

Generalnie można przyjąć, że każdy język programowania posiadający biblioteki do obsługi GPU może służyć do programowania gier, ale jedne mają ciekawsze propozycje od innych. Rozpocznijmy od języków kompilowanych do kodu maszynowego, czyli takich bez środowiska uruchomieniowego. W tej kategorii najbardziej popularny jest C/C++. Jest to również standard, jeżeli chodzi o branżę grową. Takie tytuły jak Wiedźmin, Battlefield czy Call of Duty są w większości napisane w C++, z dodatkiem języków skryptowych (Lua, Python). Jeżeli chodzi o biblioteki jakie upraszczają prace to jest ich również masa - SDL, Allegro, GLFW, itd. Oczywiście można też zaimplementować wszystko samemu, ale jest to proces długi i skomplikowany, a prace trzeba sobie ułatwiać. Z innych języków to słyszałem że, D jest również ciekawym wyborem. Ja osobiście próbowałem bawić się językiem Rust - jest to dość ciekawa technologia, ponieważ nie jest to język obiektowy a strukturalny. Dodatkowo zarządzanie pamięcią odbywa się poprzez smart pointery. Posiada on też ciekawy system modułów oraz parę bibliotek graficznych.

Kolejnymi technologami jakimi chciałem się przyjrzeć, są języki działające na maszynach wirtualnych z JIT. Tu prym od lat wiedzie Jvm i .NET. Jeżeli chodzi o Jvm to w ostatnich latach pojawiło się na nim parę ciekawych języków, ale nie miałem okazji używać żadnego z nich poza samą Javą. Z popularnych bibliotek do produkcji gier należałoby wymienić LibGDX -ciężko to nazwać jeszcze biblioteką, ponieważ dba ona o bardzo dużo spraw: zarządzanie scenami, aktor system, kontrolki, assety. Pozwala on tworzyć gry multiplatformowe, więc może być całkiem ciekawą opcją. Mniej popularnymi bibliotekami dla Jvm to: AndEngine, jMonkey, LWJGL i inne. W .NET do pewnego momentu był lekki nieurodzaj, jeżeli chodzi o frameworki do tworzenia gier. Obecnie mocno się to zmieniło i w .NET mamy oprócz popularnego Unity 3D trochę mniejszych bibliotek. Z ciekawszych propozycji to można spróbować Monogame, WaveEngine, Xenko. Jeżeli ktoś chciałby zejść niżej to polecam OpenTK (Open GL) lub SharpDX (DirectX).

Ostatnią kategorią są języki skryptowe, na tym polu mamy takie technologie jak: Python, Ruby, PHP, JavaScript, Lua i wiele innych. Z rzeczy którymi, sam osobiście się bawiłem to PyGame dla Pythona - jest to dość prosta biblioteczka, która pozwala na stworzenie dość szybko prototypu gry, z tego co wiem jest częściowo oparta o SDL. Z drugiej strony, jeżeli chcemy tworzyć gry pod przeglądarki internetowe to polecam pobawić się opartym na JavaScript Phaserem. Ja osobiście chwile pobawiłem się Phaserem tyle, że nie w czystym JavaScript, a w TypeScript i tą drogę również wam polecam, ponieważ TS mocno ułatwia pisanie i strukturyzację kodu, dzięki silnemu typowaniu. Moim zdaniem języki skryptowe nadają się jednak tylko i wyłącznie do prototypowania. Pozwalają one stworzyć szybko coś co możemy pokazać, natomiast dalszy rozwój powinien się obyć w szybszej technologii (C++, Jvm, .NET).

To tyle, mam nadzieję, że nie zraziłem nikogo, tak jak już pisałem to są wyłącznie moje przemyślenia i każdy może próbować w JS tworzyć nowego Wiedźmina czy innego COD możliwe, że efekty pracy będą całkiem ciekawe.