Silnik gry - Game engine

Silnik gry jest ramowy program przeznaczony przede wszystkim dla rozwoju gier wideo , a na ogół obejmuje odpowiednie biblioteki i programy wsparcia. Terminologia „silnik” jest podobna do terminu „ silnik oprogramowania ” używanego w branży oprogramowania .

Silnik gry może również odnosić się do oprogramowania deweloperskiego wykorzystującego tę platformę, zazwyczaj oferując zestaw narzędzi i funkcji do tworzenia gier.

Deweloperzy mogą używać silników gier do tworzenia gier na konsole do gier wideo i inne typy komputerów . Funkcjonalność rdzeń zazwyczaj dostarczana przez silnik gry może zawierać renderingu silnik ( „renderujący”) dla 2D lub 3D, grafiki , a silnik fizyki lub wykrywania kolizji (i odpowiedzi kolizji), dźwięk , włączony , animacji , sztucznej inteligencji , sieci , streaming, zarządzanie pamięcią , wątkowanie , obsługa lokalizacji ,wykres scen i obsługa wideo dla przerywników filmowych . Realizatorzy silnika gier często oszczędzają na procesie tworzenia gry , ponownie wykorzystując/dostosowując, w dużej mierze, ten sam silnik gry do tworzenia różnych gier lub do pomocy w przenoszeniu gier na wiele platform.

Cel, powód

W wielu przypadkach, oprócz komponentów oprogramowania wielokrotnego użytku , silniki gier zapewniają pakiet narzędzi do tworzenia grafiki. Narzędzia te są zazwyczaj dostarczane w zintegrowanym środowisku programistycznym, aby umożliwić uproszczone, szybkie tworzenie gier w sposób oparty na danych . Twórcy silników gier często próbują wyprzedzić potrzeby realizatorów, opracowując solidne pakiety oprogramowania, które zawierają wiele elementów, których twórca gier może potrzebować do zbudowania gry. Większość pakietów silników gier zapewnia udogodnienia ułatwiające tworzenie, takie jak grafika, dźwięk, fizyka i funkcje sztucznej inteligencji (AI). Te silniki gier są czasami nazywane „ oprogramowaniem pośredniczącym ”, ponieważ, podobnie jak w biznesowym sensie tego terminu, zapewniają elastyczną i wielokrotnego użytku platformę oprogramowania, która zapewnia wszystkie podstawowe funkcje potrzebne, od razu po wyjęciu z pudełka , do opracowania aplikacji do gier przy jednoczesnym obniżeniu kosztów , złożoność i czas wprowadzenia produktu na rynek — wszystkie krytyczne czynniki w wysoce konkurencyjnej branży gier wideo . Od 2001 r. Gamebryo , JMonkeyEngine i RenderWare były szeroko stosowanymi programami pośredniczącymi tego typu.

Podobnie jak inne typy oprogramowania pośredniczącego, silniki gier zwykle zapewniają abstrakcję platformy , umożliwiając uruchamianie tej samej gry na różnych platformach (w tym konsolach do gier i komputerach osobistych) z niewielkimi, jeśli w ogóle, zmianami w kodzie źródłowym gry . Często programiści projektują silniki gier z architekturą opartą na komponentach, która pozwala na zastąpienie lub rozszerzenie określonych systemów w silniku za pomocą bardziej wyspecjalizowanych (i często droższych) komponentów oprogramowania pośredniczącego gier. Niektóre silniki gier zawierają szereg luźno połączonych komponentów oprogramowania pośredniego gier, które można selektywnie łączyć w celu utworzenia niestandardowego silnika, zamiast powszechniejszego podejścia polegającego na rozszerzaniu lub dostosowywaniu elastycznego zintegrowanego produktu. Jednak osiągnięta rozszerzalność pozostaje wysokim priorytetem dla silników gier ze względu na szeroką gamę zastosowań, do których są stosowane. Pomimo specyfiki nazwy „silnik gier”, użytkownicy końcowi często zmieniają przeznaczenie silników gier na inne rodzaje interaktywnych aplikacji z wymaganiami graficznymi w czasie rzeczywistym – takich jak demonstracje marketingowe , wizualizacje architektoniczne , symulacje szkoleniowe i środowiska modelowania .

Niektóre silniki gier zapewniają tylko możliwości renderowania 3D w czasie rzeczywistym zamiast szerokiego zakresu funkcji wymaganych przez gry. Silniki te polegają na twórcy gry, który zaimplementuje resztę tej funkcji lub złoży ją z innych komponentów oprogramowania pośredniczącego w grze. Te typy silników są ogólnie określane jako „silnik graficzny”, „silnik renderujący” lub „silnik 3D” zamiast szerszego terminu „silnik gry”. Ta terminologia jest niespójnie używana, ponieważ wiele w pełni funkcjonalnych silników gier 3D jest określanych po prostu jako „silniki 3D”. Przykłady silników graficznych to: Crystal Space , Genesis3D , Irrlicht , OGRE , RealmForge , Truevision3D i Vision Engine . Współczesne silniki gier lub grafiki zazwyczaj udostępniają graf sceny – obiektową reprezentację świata gier 3D, która często upraszcza projektowanie gier i może być wykorzystywana do bardziej wydajnego renderowania rozległych wirtualnych światów.

Wraz ze starzeniem się technologii komponenty silnika mogą stać się przestarzałe lub niewystarczające do wymagań danego projektu . Ponieważ złożoność programowania zupełnie nowego silnika może skutkować niechcianymi opóźnieniami (lub wymagać ponownego uruchomienia projektu od początku), zespół ds. rozwoju silnika może zdecydować się na aktualizację istniejącego silnika o nowsze funkcje lub komponenty.

Historia

Niektóre silniki gier ewoluują w czasie i rozwijają drzewo genealogiczne, jak na przykład silnik Quake id, który zaowocował rodziną id Tech

Przed silnikami gier gry były zazwyczaj pisane jako pojedyncze jednostki: na przykład gra na Atari 2600 musiała być zaprojektowana od podstaw, aby optymalnie wykorzystać sprzęt wyświetlający — ta podstawowa procedura wyświetlania jest dziś nazywana przez programistów jądrem gier dla starszych systemów. Inne platformy miały więcej swobody, ale nawet jeśli wyświetlacz nie był problemem, ograniczenia pamięci zwykle sabotowały próby stworzenia projektu z dużą ilością danych, którego potrzebuje silnik. Nawet na bardziej przyjaznych platformach bardzo niewiele można było ponownie wykorzystać między grami. Szybki rozwój sprzętu do gier arcade — który był wówczas wiodącą przewagą rynku — oznaczał, że większość kodu i tak musiałaby zostać później wyrzucona, ponieważ późniejsze generacje gier wykorzystywały zupełnie inne projekty gier, które wykorzystywały dodatkowe Surowce. W związku z tym większość projektów gier w latach 80. została zaprojektowana przy użyciu zakodowanego zestawu reguł z niewielką liczbą poziomów i danych graficznych. Od złotego wieku arkadowych gier wideo powszechne stało się opracowywanie przez firmy zajmujące się grami wideo własnych silników gier do użytku z oprogramowaniem firmowym.

Godnym uwagi przykładem wewnętrznego silnika gier na konsole domowe w połowie lat 80. był silnik z płynnym przewijaniem bocznym opracowany przez zespół Shigeru Miyamoto w Nintendo na Nintendo Entertainment System (NES). Silnik, który opracowali do przewijanej gry wyścigowej Excitebike (1984), został później wykorzystany w przewijanej platformówce Super Mario Bros. (1985). W efekcie Mario mógł płynnie przyspieszać ze chodu do biegu, zamiast poruszać się ze stałą prędkością, jak we wcześniejszych platformówkach.

Chociaż silniki gier innych firm nie były powszechne do czasu pojawienia się grafiki komputerowej 3D w latach 90., w latach 80. powstało kilka systemów do tworzenia gier 2D przeznaczonych do niezależnego tworzenia gier wideo . Należą Pinball Construction Set (1983), ASCII „s Construction gra wojenna Kit (1983), Thunder Sił budowlane (1984), Adventure Construction Set (1984), Garry kuchni GameMaker (1985), Wargame Construction Set (1986), Shoot- 'Em-Up Construction Kit (1987), Arcade Game Construction Kit (1988) i najpopularniejsze silniki ASCII RPG Maker od 1998 roku. Klik & Play (1994) to kolejna spuścizna, która wciąż jest dostępna.

Termin „silnik gry” powstał w połowie lat 1990, zwłaszcza w związku z gier 3D, takich jak pierwszej osoby strzelanek z shooter silniku pierwszej osoby . Taka była popularność id Software „s Doom i Quake gier, że zamiast pracy od podstaw, inni deweloperzy licencjonowanych odcinki rdzenia z oprogramowania i mających własne grafiki, znaki, broni i poziomy -The«zawartości gry»lub„gra aktywa". Oddzielenie reguł i danych dotyczących gry od podstawowych pojęć, takich jak wykrywanie kolizji i encja gry, oznaczało, że zespoły mogły się rozwijać i specjalizować.

Późniejsze gry, takie jak id Software „s Quake III Arena i Epic Games ” s 1998 Unreal zostały zaprojektowane z myślą o tym podejściem, z silnikiem i treści opracowane oddzielnie. Praktyka licencjonowania takiej technologii okazała się dla niektórych twórców przydatnym dodatkowym źródłem przychodów, ponieważ jedna licencja na wysokiej klasy komercyjny silnik gier może wynosić od 10 000 USD do milionów dolarów, a liczba licencjobiorców może sięgać kilkudziesięciu. firm, jak widać z Unreal Engine . Przynajmniej silniki wielokrotnego użytku sprawiają, że tworzenie sequeli gier jest szybsze i łatwiejsze, co jest cenną przewagą w konkurencyjnej branży gier wideo . Chociaż istniała silna rywalizacja między Epic i id około 2000 roku, od tego czasu silnik Unreal Engine firmy Epic był znacznie bardziej popularny niż id Tech 4 i jego następca id Tech 5 .

Współczesne silniki gier to jedne z najbardziej złożonych aplikacji napisanych, często zawierające dziesiątki precyzyjnie dostrojonych systemów współdziałających w celu zapewnienia precyzyjnie kontrolowanego doświadczenia użytkownika. Ciągła ewolucja silników gier stworzyła silny rozdział między renderowaniem, skryptami, grafiką i projektowaniem poziomów . Obecnie na przykład typowy zespół tworzący gry ma kilka razy więcej artystów niż rzeczywistych programistów.

Gry FPS pozostają głównymi użytkownikami silników gier innych firm, ale teraz są również używane w innych gatunkach . Na przykład, RPG The Elder Scrolls III: Morrowind i MMORPG Dark Age of Camelot są oparte na silniku Gamebryo , a MMORPG Lineage II jest oparty na silniku Unreal Engine. Silniki gier są również używane w grach pierwotnie opracowanych na konsole domowe; na przykład silnik RenderWare jest używany w seriach Grand Theft Auto i Burnout .

Threading nabiera coraz większego znaczenia ze względu na nowoczesne systemy wielordzeniowe (np. Cell ) i rosnące wymagania dotyczące realizmu. Typowe wątki obejmują renderowanie, przesyłanie strumieniowe, dźwięk i fizykę. Gry wyścigowe zazwyczaj znajdowały się w czołówce wątków, a silnik fizyki działał w osobnym wątku na długo przed przeniesieniem innych podstawowych podsystemów, częściowo dlatego, że renderowanie i powiązane zadania wymagają aktualizacji tylko z częstotliwością 30–60 Hz. Na przykład na PlayStation 3 fizyka działała w Need For Speed przy 100 Hz i Forza Motorsport 2 przy 360 Hz.

Mimo, że termin został użyty po raz pierwszy w 1990, istnieje kilka wcześniejszych systemów w 1980 roku, które są również uważane za silniki gry, takie jak Sierry gra przygodowa Tłumaczka (AGI) i SCI Systems, LucasArts' Scumm systemu i Incentive Program „s Silnik Freescape (w 1986). W przeciwieństwie do większości nowoczesnych silników gier, te silniki gier nigdy nie były używane w żadnych produktach innych firm (z wyjątkiem systemu SCUMM, który był licencjonowany i używany przez Humongous Entertainment ).

W miarę jak technologia silników gier dojrzewa i staje się bardziej przyjazna dla użytkownika, zastosowanie silników gier rozszerzyło się. Obecnie są używane w poważnych grach : wizualizacjach, szkoleniach, symulacjach medycznych i wojskowych , czego przykładem jest CryEngine . Aby ułatwić ten dostęp, nowe platformy sprzętowe są obecnie atakowane przez silniki gier, w tym telefony komórkowe (np. telefony z systemem Android , iPhone ) i przeglądarki internetowe (np. WebGL , Shockwave , Flash , Trinigy 's WebVision, Silverlight , Unity Web Player , O3D i czysty DHTML ).

Dodatkowo, więcej silników gier jest tworzonych na językach wyższego poziomu, takich jak Java i C# / .NET (np. TorqueX i Visual3D.NET ), Python ( Panda3D ) lub Lua Script (Leadwerks). Ponieważ większość gier bogatych w 3D jest teraz w większości ograniczona przez GPU (tj. ograniczona mocą karty graficznej), potencjalne spowolnienie spowodowane kosztami tłumaczenia języków wyższego poziomu staje się znikome, podczas gdy wzrost wydajności oferowany przez te języki działa na silnik gry korzyści deweloperów. Te ostatnie trendy są napędzane przez firmy takie jak Microsoft, aby wspierać rozwój gier niezależnych . Firma Microsoft opracowała XNA jako zestaw SDK z wyboru dla wszystkich gier wideo wydanych na Xbox i powiązanych produktów. Obejmuje to kanał Xbox Live Indie Games, zaprojektowany specjalnie dla mniejszych programistów, którzy nie dysponują dużymi zasobami niezbędnymi do umieszczania gier na półkach sklepowych. Tworzenie silników gier dla platform obsługujących zarządzane frameworki staje się łatwiejsze i tańsze niż kiedykolwiek .

Silniki gier jako branża

Producenci silników do gier decydują, w jaki sposób pozwalają użytkownikom na wykorzystanie ich produktów. Tak jak gry to branża , tak samo silniki, z których są zbudowane. Główne silniki gier są dostępne w różnych cenach, niezależnie od tego, czy są to opłaty za subskrypcję, czy opłaty licencyjne.

Unreal Engine 4 , jeden z głównych silników gier i używany do tworzenia kilku godnych uwagi gier, takich jak Fortnite , Valorant , PlayerUnknown's Battlegrounds i Life Is Strange 2 , przyjął darmową strukturę z tantiemami od wszystkich gier sprzedawanych za pomocą tego silnika. Chociaż różnice między różnymi silnikami gier zacierają się, ponieważ są one budowane podczas procesu tworzenia gry, różni twórcy gier mogą być zbyt przyzwyczajeni do systemu, aby go zmienić, lub być przyciągani ogromnymi zaletami takich silników niezależnie od płatnych ścian.

Innym silnikiem gier, który obecnie przynosi znaczące dochody, jest silnik Unity , wykorzystujący podobny model monetyzacji do Unreal Engine. Ten silnik stoi za grami takimi jak Rust , Subnautica i Life Is Strange: Before the Storm .

Niektóre silniki gier przyjmują skrypty wizualne, a wśród nich są takie narzędzia, jak GameMaker: Studio , Construct 3 , GDevelop i Pixel Game Maker MV .

Oprogramowanie pośredniczące w grach

W szerszym znaczeniu same silniki gier można określić jako oprogramowanie pośredniczące. Jednak w kontekście gier wideo termin „oprogramowanie pośredniczące” jest często używany w odniesieniu do podsystemów funkcjonalności w silniku gry. Niektóre oprogramowanie pośredniczące do gier robi tylko jedną rzecz, ale robi to bardziej przekonująco lub wydajniej niż oprogramowanie pośredniczące ogólnego przeznaczenia.

Cztery najczęściej używane pakiety oprogramowania pośredniego, które zapewniają podsystemy funkcjonalności, to Bink, Firelight FMOD , Havok i Scaleform GFx firmy RAD Game Tools . RAD Game Tools opracowuje Bink do podstawowego renderowania wideo, wraz z dźwiękiem Miles i renderowaniem Babci 3D . Firelight FMOD to niedroga, solidna biblioteka audio i zestaw narzędzi. Havok zapewnia solidny system symulacji fizyki wraz z pakietem aplikacji do animacji i zachowania. Scaleform zapewnia GFx dla wydajnego interfejsu użytkownika Flash i wysokiej jakości odtwarzania wideo, a także dodatek Input Method Editor (IME) do obsługi czatu azjatyckiego w grze.

Inne oprogramowanie pośredniczące jest używane do optymalizacji wydajności — na przykład „ Simplygon ” pomaga optymalizować i generować siatki poziomu szczegółowości , a „ Umbra ” dodaje optymalizacje usuwania okluzji do grafiki 3D.

Niektóre oprogramowanie pośredniczące zawiera pełny kod źródłowy , inne dostarczają jedynie referencje API dla skompilowanej biblioteki binarnej . Niektóre programy oprogramowania pośredniego mogą być licencjonowane w dowolny sposób, zwykle za wyższą opłatą za pełny kod źródłowy.

Zobacz też

Bibliografia