Świat tworzenia gier jest zabawny: z jednej strony często szybko akceptują nowe pomysły, z drugiej strony wciąż są w epoce kamienia łupanego.
Prawda jest taka, że rzadko istnieje taka zachęta do przejścia na .NET / Java / cokolwiek innego niż C / C ++.
Większość firm produkujących gry licencjonuje części silnika gry od innych firm. Te części są napisane w C ++ i chociaż możesz mieć dostęp do źródła, aby móc je przenieść, wymaga to dużo wysiłku (i oczywiście licencja musi na to zezwolić).
Ponadto wiele starszego kodu istnieje już w C ++. Jeśli kod z poprzednich projektów można ponownie wykorzystać (powiedzmy, jeśli piszesz sequel), liczy się to jeszcze bardziej na korzyść trzymania się tego samego języka, zamiast przepisywania go w nowym języku (tym bardziej, że prawdopodobnie ponownie wprowadzisz mnóstwo błędów, które będziesz musiał poświęcić na ich naprawianie.
Wreszcie, i tak rzadko zdarza się, aby gry były pisane w 100% C ++ - wiele się robi przy użyciu języków skryptowych, niezależnie od tego, czy są one niestandardowe, czy po prostu integrują istniejące języki (Lua jest obecnie jednym z bardziej popularnych).
Jeśli chodzi o odśmiecanie, może to być trochę problem. Problem nie polega na tym, że istnieje, chodzi raczej o to, jak to działa - garbage collector MUSI być nieblokujący (lub przynajmniej mieć gwarancję, że blokuje się tylko na bardzo krótko), ponieważ po prostu niedopuszczalne jest zawieszanie gry na 10 sekund, podczas gdy skanuje całą przydzieloną pamięć, aby zobaczyć, co można zwolnić. Wiem, że Java ma tendencję do dławienia się podczas GC, gdy kończy się pamięć (aw przypadku niektórych gier tak się stanie).
Jesteś również nieco bardziej ograniczony w tym, co możesz zrobić: nie możesz w pełni wykorzystać sprzętu z powodu narzutu czasu wykonania. Wyobraź sobie, że Crysis jest napisany w Javie ... nawet jeśli to jedyna widoczna różnica, po prostu nie byłaby taka sama (jestem również pewien, że do uruchomienia potrzebny byłby Core i7).
Nie oznacza to, że te języki nie mają swojego miejsca w tworzeniu gier - i nie, nie mówię tylko o programowaniu narzędzi. W przypadku większości gier nie potrzebujesz dodatkowej wydajności, jaką zapewnia C ++, w tym gry 3D, a jeśli piszesz wszystko od zera, może mieć sens użycie czegoś takiego jak XNA - w rzeczywistości istnieje duża szansa, że tak się stanie.
Jeśli chodzi o gry komercyjne - czy RuneScape się liczy? To może być najbardziej udana gra Java na świecie.