Game Engine
Specialized English communication Conf. univ. dr. Madalina Deaconu Student Vasile Constantin Gabriel(204) January 16, 2019
Game engine A game engine is a software-development environment designed for people to build video games. Developers use game engines to construct games for consoles, mobile devices, and personal computers. The core functionality typically provided by a game engine includes a rendering engine ("renderer") for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, scene graph, and may include video support for cinematics. Implementers often economize on the process of game development by reusing/adapting, in large part, the same game engine to produce different games or to aid in porting games to multiple platforms.
Purpose In many cases game engines provide a suite of visual development tools in addition to reusable software components. These tools are generally provided in an integrated development environment to enable simplified, rapid development of games in a data-driven manner. Game engine developers attempt to "pre-invent the wheel" by developing robust software suites which include many elements a game developer may need to build a game. Most game engine suites provide facilities that ease development, such as graphics, sound, physics and AI functions. These game engines are sometimes called "middleware" because, as with the business sense of the term, they provide a flexible and reusable software platform which provides all the core functionality needed, right out of the box, to develop a game application while reducing costs, complexities, and time-to-market — all critical factors in the highly competitive video game industry. As of 2001, Gamebryo, JMonkeyEngine and RenderWare were such widely used middleware programs. Like other types of middleware, game engines usually provide platform abstraction, allowing the same game to be run on various platforms including game consoles and personal computers with few, if any, changes made to the game source code. Often, game engines are designed with a component-based architecture that allows specific systems in the engine to be replaced or extended with more specialized (and often more expensive) game middleware
components. Some game engines are designed as a series of loosely connected game middleware components that can be selectively combined to create a custom engine, instead of the more common approach of extending or customizing a flexible integrated product. However extensibility is achieved, it remains a high priority for game engines due to the wide variety of uses for which they are applied. Despite the specificity of the name, game engines are often used for other kinds of interactive applications with real-time graphical needs such as marketing demos, architectural visualizations, training simulations, and modeling environments. Some game engines only provide real-time 3D rendering capabilities instead of the wide range of functionality needed by games. These engines rely upon the game developer to implement the rest of this functionality or assemble it from other game middleware components. These types of engines are generally referred to as a "graphics engine", "rendering engine", or "3D engine" instead of the more encompassing term "game engine". This terminology is inconsistently used as many full-featured 3D game engines are referred to simply as "3D engines". A few examples of graphics engines are: Crystal Space, Genesis3D, Irrlicht, OGRE, RealmForge, Truevision3D, and Vision Engine. Modern game or graphics engines generally provide a scene graph, which is an object-oriented representation of the 3D game world which often simplifies game design and can be used for more efficient rendering of vast virtual worlds. As technology ages, the components of an engine may become outdated or insufficient for the requirements of a given project. Since the complexity of programming an entirely new engine may result in unwanted delays (or necessitate that the project be completely restarted), a development team may elect to update their existing engine with newer functionality or components.
Components Such a framework is composed of a multitude of very different components.
Main game program The actual game logic has to be implemented by some algorithms. It is distinct from any rendering, sound or input work.
Rendering engine The rendering engine generates animated 3D graphics by any of a number of methods (rasterization, ray-tracing etc.). Instead of being programmed and compiled to be executed on the CPU or GPU directly, most often rendering engines are built upon one or multiple rendering application programming interfaces (APIs), such as Direct3D, OpenGL, or Vulkan which provide a software abstraction of the graphics processing unit (GPU). Low-level libraries such as DirectX, Simple DirectMedia Layer (SDL), and OpenGL are also commonly used in games as they provide hardwareindependent access to other computer hardware such as input devices (mouse, keyboard, and joystick), network cards, and sound cards. Before hardware-accelerated 3D graphics, software renderers had been used. Software rendering is still used in some modeling tools or for stillrendered images when visual accuracy is valued over real-time performance (frames-per-second) or when the computer hardware does not meet needs such as shader support. With the advent of hardware accelerated physics processing, various physics APIs such as PAL and the physics extensions of COLLADA became available to provide a software abstraction of the physics processing unit of different middleware providers and console platforms. Game engines can be written in any programming language like C++, C or Java, though each language is structurally different and may provide different levels of access to specific functions.
Audio engine The audio engine is the component which consists of algorithms related to the loading, modifying and output of sound through the client's speaker system. At a minimum it must be able to load, decompress and play sound files. More advanced audio engines can calculate and produce such things as Doppler effects, echoes, pitch/amplitude adjustments, oscillation, etc. It can perform calculations on the CPU, or on a dedicated ASIC. Abstraction APIs, such as OpenAL, SDL audio, XAudio 2, Web Audio, etc. are available.
Physics engine Definitions: 1. A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics (including collision detection), soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film. Their main uses are in video games (typically as middleware), in which case the simulations are in real-time. The term is sometimes used more generally to describe any software system for simulating physical phenomena, such as high-performance scientific simulation. 2. The physics engine is responsible for emulating the laws of physics realistically within the application. Specifically, it provides a set of functions for simulating physical forces and collisions, acting on the various objects within the game at run time.
Artificial intelligence The AI is usually outsourced from the main game program into a special module to be designed and written by software engineers with specialist knowledge. Most games will implement very different AI systems, and thus, AI is considered to be specific to the particular game for which it is created. Many modern game engines come packaged with search algorithms such as A-star and subroutines for baking level geometry into a Navmesh which can help speed up the process of scripting AI behavior.
History Before game engines, games were typically written as singular entities: a game for the Atari 2600, for example, had to be designed from the bottom up to make optimal use of the display hardware—this core display routine is today called the kernel by retro developers. Other platforms had more leeway, but even when the display was not a concern, memory constraints usually sabotaged attempts to create the data-heavy design that an engine needs. Even on more accommodating platforms, very little could be reused between games. The rapid advance of arcade hardware—which was the leading edge of the market at the time—meant that most of the code would have to be thrown out afterwards anyway, as later generations of games would use completely different game designs that took advantage of extra resources. Thus most game designs through the 1980s were designed through a hard-coded ruleset with a small number of levels and graphics data. Since the golden age of arcade video games, it became common for video game companies to develop in-house game engines for use with first party software. While third-party game engines were not common up until the rise of 3D computer graphics in the 1990s, there were several 2D game creation systems produced in the 1980s for independent video game development. These include Pinball Construction Set (1983), ASCII's War Game Construction Kit (1983), Thunder Force Construction (1984), Adventure Construction Set (1984), Garry Kitchen's GameMaker (1985), Wargame Construction Set (1986), Shoot'Em-Up Construction Kit (1987), Arcade Game Construction Kit (1988), and most popularly ASCII's RPG Maker engines from 1998 onwards. Klik & Play (1994) is another legacy offering that's still available. The term "game engine" arose in the mid-1990s, especially in connection with 3D games such as first-person shooters (FPS). (See also: first-person shooter engine.) Such was the popularity of Id Software's Doom and Quake games that, rather than work from scratch, other developers licensed the core portions of the software and designed their own graphics, characters, weapons and levels—the "game content" or "game assets". Separation of game-specific rules and data from basic concepts like collision detection and game entity meant that teams could grow and specialize.
Later games, such as id Software's Quake III Arena and Epic Games's 1998 Unreal were designed with this approach in mind, with the engine and content developed separately. The practice of licensing such technology has proved to be a useful auxiliary revenue stream for some game developers, as one license for a high-end commercial game engine can range from US$10,000 to millions of dollars, and the number of licensees can reach several dozen companies, as seen with the Unreal Engine. At the very least, reusable engines make developing game sequels faster and easier, which is a valuable advantage in the competitive video game industry. While there was a strong rivalry between Epic and id around 2000, since then Epic's Unreal Engine has been far more popular than id Tech 4 and its successor id Tech 5. Modern game engines are some of the most complex applications written, often featuring dozens of finely tuned systems interacting to ensure a precisely controlled user experience. The continued evolution of game engines has created a strong separation between rendering, scripting, artwork, and level design. It is now common, for example, for a typical game development team to have several times as many artists as actual programmers. First-person shooter games remain the predominant users of third-party game engines, but they are now also being used in other genres. For example, the role-playing video game The Elder Scrolls III: Morrowind and the MMORPG Dark Age of Camelot are based on the Gamebryo engine, and the MMORPG Lineage II is based on the Unreal Engine. Game engines are used for games originally developed for home consoles as well; for example, the RenderWare engine is used in the Grand Theft Auto and Burnout franchises. Threading is taking on more importance due to modern multi-core systems (e.g. Cell) and increased demands in realism. Typical threads involve rendering, streaming, audio, and physics. Racing games have typically been at the forefront of threading with the physics engine running in a separate thread long before other core subsystems were moved, partly because rendering and related tasks need updating at only 30–60 Hz. For example, on PlayStation 3, physics ran in Need For Speed at 100 Hz versus Forza Motorsport 2 at 360 Hz. Although the term was first used in the 1990s, there are a few earlier systems in the 1980s that are also considered to be game engines, such as Sierra's Adventure Game Interpreter (AGI) and SCI systems, LucasArts' SCUMM system and Incentive Software's Freescape engine. Unlike
most modern game engines, these game engines were never used in any third-party products (except for the SCUMM system which was licensed to and used by Humongous Entertainment). As game engine technology matures and becomes more user-friendly, the application of game engines has broadened in scope. They are now being used for serious games: visualization, training, medical, and military simulation applications, with the CryEngine being one example. To facilitate this accessibility, new hardware platforms are now being targeted by game engines, including mobile phones (e.g. Android phones, iPhone) and web browsers (e.g. WebGL, Shockwave, Flash, Trinigy's WebVision, Silverlight, Unity Web Player, O3D and pure DHTML). Additionally, more game engines are being built upon higher level languages such as Java and C#/.NET (e.g. TorqueX, and Visual3D.NET), Python (Panda3D), or Lua Script (Leadwerks). As most 3D rich games are now mostly GPU-limited (i.e. limited by the power of the graphics card), the potential slowdown due to translation overheads of higher level languages becomes negligible, while the productivity gains offered by these languages work to the game engine developers' benefit. These recent trends are being propelled by companies such as Microsoft to support Indie game development. Microsoft developed XNA as the SDK of choice for all video games released on Xbox and related products. This includes the Xbox Live Indie Games channel designed specifically for smaller developers who don't have the extensive resources necessary to box games for sale on retail shelves. It is becoming easier and cheaper than ever to develop game engines for platforms that support managed frameworks.
Game middleware In the broader sense of the term, game engines themselves can be described as middleware. In the context of video games, however, the term "middleware" is often used to refer to subsystems of functionality within a game engine. Some game middleware does only one thing but does it more convincingly or more efficiently than general purpose middleware. For example, SpeedTree was used to render the realistic trees and vegetation in the role-playing video game The Elder Scrolls IV: Oblivion[14] and Fork Particle was used to simulate and render real time particle system visual effects or particle effects in Sid Meier's Civilization V.
The four most widely used middleware packages[16] that provide subsystems of functionality include RAD Game Tools' Bink, Firelight FMOD, Havok, and Scaleform GFx. RAD Game Tools develops Bink for basic video rendering, along with Miles audio, and Granny 3D rendering. Firelight FMOD is a low cost robust audio library and toolset. Havok provides a robust physics simulation system, along with a suite of animation and behavior applications. Scaleform provides GFx for high performance Flash UI and high-quality video playback, and an Input Method Editor (IME) add-on for in-game Asian chat support. Other middleware is used for performance optimisation - for example 'Simplygon' helps to optimise and generate level of detail meshes, and 'Umbra' adds occlusion culling optimisations to 3d graphics. Some middleware contains full source code, others just provide an API reference for a compiled binary library. Some middleware programs can be licensed either way, usually for a higher fee for full source code.
First-person shooter engines A subset of game engines are 3D first-person shooter (FPS) game engines. Groundbreaking development in terms of visual quality is done in FPS games on the human scale. While flight and driving simulators and real-time strategy (RTS) games increasingly provide realism on a large scale, first-person shooters are at the forefront of computer graphics on these smaller scales. The development of the FPS graphic engines that appear in games can be characterized by a steady increase in technologies, with some breakthroughs. Attempts at defining distinct generations lead to arbitrary choices of what constitutes a highly modified version of an "old engine" and what is a brand-new engine. The classification is complicated as game engines blend old and new technologies. Features that were considered advanced in a new game one year become the expected standard the next year. Games with a mix of older generation and newer feature are the norm.
Motorul grafic
Comunicare de specialitate in limba Engleza Conf. Univ. Dr. Madalina Deaconu Student Vasile Constantin Gabriel(204) Ianuarie 16, 2019
Motorul Grafic Un motor grafic este un mediu de dezvoltare software conceput pentru a construi jocuri video de catre oameni. Dezvoltatorii utilizează motoare grafice pentru a construi jocuri pentru console, dispozitive mobile și computere personale. Funcționalitatea de bază oferită în mod obișnuit de un motor grafic include un motor de randare ("renderer") pentru grafica 2D sau 3D, un motor fizic sau detecție
de coliziune (și răspuns de coliziune), sunet, scripting, animație,
inteligență artificială, gestionare, threading, suport pentru localizare, scenă grafica și poate include suport video pentru cinematică. Implementatorii economisesc adesea procesul de dezvoltare a jocului prin reutilizarea / adaptarea, în mare parte, a aceluiași motor de joc pentru a produce diferite jocuri sau pentru a ajuta la portarea jocurilor pe mai multe platforme.
Scopuri În multe cazuri, motoarele grafice oferă o serie de instrumente de dezvoltare vizuală, pe lângă componentele software reutilizabile. Aceste instrumente sunt în general furnizate într-un mediu integrat de dezvoltare pentru a permite o dezvoltare simplificată și rapidă a jocurilor într-o manieră bazată pe date. Dezvoltatorii de motoare de jocuri încearcă să "inventeze roata" prin dezvoltarea unor suite robuste de software care includ multe elemente pe care un dezvoltator de jocuri ar putea avea nevoie să le construiască. Cele mai multe suite de jocuri pentru jocuri oferă facilități care ușurează dezvoltarea, cum ar fi funcțiile grafică, sunet, fizică și AI. Aceste motoare de jocuri se numesc uneori "middleware", deoarece, ca si in afaceria sensului termenului, ele oferă o platformă software flexibilă și reutilizabilă, care oferă toate funcționalitățile de bază necesare, chiar din cutie, pentru a dezvolta o aplicație joc, reducând în același timp costurile , complexități și timpul spre piață - toți factorii critici în industria jocurilor video extrem de competitive. Începând cu anul 2001, Gamebryo, JMonkeyEngine și RenderWare au fost programe de middleware atât de utilizate pe scară largă. Ca și alte tipuri de middleware, motoarele de jocuri oferă de obicei o abstractizarea platformei, permițând ca același joc să fie difuzat pe diverse platforme, inclusiv console de jocuri
și computere personale, cu puține schimbări, dacă este cazul, în codul sursă al jocului. Adesea, motoarele de jocuri sunt proiectate cu o arhitectură bazată pe componente care permite înlocuirea sau extinderea sistemelor specifice ale motorului cu componente de middleware mai specializate (și adesea mai scumpe). Unele motoare grafice sunt concepute ca o serie de componente middleware de joc conectate slab, care pot fi combinate selectiv pentru a crea un motor personalizat, în loc de abordarea mai comună a extinderii sau personalizării unui produs integrat flexibil. Cu toate acestea, este atinsă extensibilitatea, rămâne o prioritate ridicată pentru motoarele de jocuri datorită gamei largi de utilizări pentru care sunt aplicate. În ciuda specificității numelui, motoarele grafice sunt adesea folosite pentru alte tipuri de aplicații interactive cu nevoi grafice în timp real, cum ar fi demo-uri de marketing, vizualizări arhitecturale, simulări de instruire și medii de modelare. Unele motoare grafice furnizează doar capabilități de randare 3D în timp real, în loc de gama largă de funcționalități necesare jocurilor. Aceste motoare se bazează pe dezvoltatorul jocului pentru a implementa restul acestei funcționalități sau pentru a-l asambla de la alte componente middleware de joc. Aceste tipuri de motoare sunt, în general, denumite "motor de grafică", "motor de randare" sau "motor 3D" în locul celui mai cuprinzător termen "motor de joc". Această terminologie este folosită inconsecvent, deoarece multe motoare de jocuri 3D cu funcții complete sunt denumite simplu "motoare 3D". Câteva exemple de motoare grafice sunt: Crystal Space, Genesis3D, Irrlicht, OGRE, RealmForge, Truevision3D și Vision Engine. Motoarele moderne de jocuri sau grafice oferă, în general, un grafic de scenă, reprezentând o reprezentare orientată pe obiecte a lumii jocurilor 3D, care simplifică adesea designul jocului și poate fi folosit pentru redarea mai eficientă a marilor lumi virtuale. Odată cu avansarea tehnologiei, componentele unui motor pot deveni depășite sau insuficiente pentru cerințele unui proiect dat. Deoarece complexitatea programării unui motor complet nou poate duce la întârzieri nedorite (sau necesită reluarea complet a proiectului), o echipă de dezvoltare poate alege să actualizeze motorul existent cu funcții sau componente noi.
Componente Un astfel de cadru este compus dintr-o multitudine de componente foarte diferite.
Programul principal de joc Logica reală a jocului trebuie implementată de niște algoritmi. Este diferit de orice randare, sunet sau de intrare.
Motorul de Randare Motorul de randare generează grafică 3D animată prin oricare din mai multele metode (rasterizare, trasare cu raze etc.). În loc să fie programate și compilate pentru a fi executate direct pe CPU sau GPU, motoarele de randare cel mai adesea sunt construite pe una sau mai multe interfețe de programare a aplicațiilor (API), cum ar fi Direct3D, OpenGL sau Vulkan, care oferă o unitate de procesare grafica(GPU). Bibliotecile de nivel inferior, cum ar fi DirectX, Layer Simple DirectMedia (SDL) și OpenGL, sunt, de asemenea, utilizate în mod obișnuit în jocuri, deoarece furnizează acces independent de hardware la alte componente ale computerului, cum ar fi dispozitivele de intrare (mouse, tastatură și joystick) și plăci de sunet. Înainte de grafica 3D accelerată cu hardware, s-au folosit programe de redare software. Redarea de programe este încă utilizată în unele instrumente de modelare sau în imagini redate încă atunci când precizia vizuală este evaluată în funcție de performanța în timp real (cadre pe secundă) sau atunci când hardware-ul computerului nu satisface nevoi cum ar fi suportul pentru shader. Odată cu apariția procesării physics accelerate a hardware, diferite API-uri de physiscs, cum ar fi PAL și extensiile pshysics ale COLLADA, au devenit disponibile pentru a furniza o abstractizare software a unității de procesare fizică a diferiților furnizori de middleware și a platformelor de console.
Motoarele de jocuri pot fi scrise în orice limbaj de programare, cum ar fi C ++, C sau Java, deși fiecare limbă este diferită din punct de vedere structural și poate oferi diferite nivele de acces la anumite funcții.
Motor audio Motorul audio este componenta care constă în algoritmi legați de încărcarea, modificarea și ieșirea sunetului prin intermediul sistemului de difuzoare al clientului. Cel puțin trebuie să poată încărca, decomprima și reda fișierele audio. Motoarele audio avansate pot calcula și produce lucruri cum ar fi efectele Doppler, ecouri, ajustări pitch / amplitudine, oscilații etc. Pot efectua calcule pe CPU sau pe ASIC dedicat. Abilitățile API, cum ar fi OpenAL, SDL audio, XAudio 2, Web Audio, etc. sunt disponibile.
Motorul de fizica Definitii: 1. Un motor de fizică este un program de calculator care oferă o simulare aproximativă a anumitor sisteme fizice, cum ar fi dinamica rigidă a corpului (inclusiv detecția coliziunilor), dinamica corpului moale și dinamica fluidelor, de utilizare în domeniile graficii computerizate, jocurilor video și filmului . Principalele lor utilizări sunt în jocurile video (de obicei ca middleware), caz în care simulările sunt în timp real. Termenul este folosit uneori în general pentru a descrie orice sistem software pentru simularea fenomenelor fizice, cum ar fi simularea științifică de înaltă performanță. 2. Motorul fizicii este responsabil pentru emularea legilor fizicii în mod realist în cadrul aplicației, mai exact, acesta oferă un set de funcții pentru simularea forțelor fizice și a coliziunilor, care acționează asupra diferitelor obiecte din joc la momentul executării.
Inteligenta Artificiala AI este, de obicei, externalizată din programul principal de joc într-un modul special care urmează să fie proiectat și scris de ingineri software cu cunoștințe de specialitate. Majoritatea jocurilor vor implementa sisteme de AI foarte diferite și, prin urmare, AI este considerată a fi specifică jocului special pentru care este creat. Multe motoare de jocuri moderne vin ambalate cu algoritmi de căutare, cum ar fi A-star și subrutine pentru geometria nivelului de coacere într-un Navmesh care poate ajuta la accelerarea procesului de scripting AI comportament.
Istorie Înainte de motoarele grafice, jocurile erau în general scrise ca entități singulare: de exemplu, un joc pentru Atari 2600 a trebuit să fie proiectat de la cap la coada pentru a utiliza în mod optim hardware-ul afișat - această rutină de afișare de bază este numită în prezent kernel de retro dezvoltatori. Alte platforme au avut mai mult spațiu liber, dar chiar și atunci când ecranul nu era o preocupare, constrângerile de memorie, în general, au sabotat încercările de a crea un design greu de date de care un motor are nevoie. Chiar și pe platformele mai accesibile, foarte puține ar putea fi refolosite între jocuri. Progresul rapid al hardware-ului arcade - care era apogeul, lider a pieței în acel moment - însemna că cea mai mare parte a codului ar trebui să fie aruncată ulterior oricum, deoarece generațiile ulterioare de jocuri ar folosi modele de joc complet diferite care au profitat de extra resurse. Astfel, cele mai multe modele de joc de prin anii 1980 au fost proiectate printr-un set de reguli codificate cu un număr mic de nivele și date grafice. De la epoca de aur a jocurilor video arcade, a devenit obișnuită pentru companiile de jocuri video să dezvolte motoare de jocuri interne pentru a fi utilizate cu software-ul de prima parte. În timp ce motoarele grafice de la terțe părți nu erau obișnuite până la apariția graficelor 3D pe computer în anii 1990, au existat mai multe sisteme de creare a jocurilor 2D produse în anii 1980 pentru dezvoltarea jocurilor video independente. Acestea includ setul de construcții de pinball (1983), kitul de construcție a jocurilor de război ASCII (1983), construcția Thunder Force (1984), setul de aventuri construite (1984), GameMaker (1985), Wargame Construction Set (1986) (1987), Kitul de construcție a jocurilor arcade (1988) și cele mai cunoscute motoare RPG Maker
de la ASCII începând din 1998. Click & Play (1994) este o altă ofertă moștenită care este încă disponibilă. Termenul "motor grafic" a apărut la mijlocul anilor 1990, în special în legătură cu jocuri 3D, cum ar fi shooter-urile de prima persoană (FPS). De asemenea, popularitatea jocurilor Id Doom și Quake de la Id Software a fost că, în loc să lucreze de la zero, alți dezvoltatori au licențiat porțiunile de bază ale software-ului și și-au conceput grafice, personaje, arme și niveluri proprii "conținutul jocului" sau "jocul". Separarea regulilor specifice jocului și a datelor de la concepte de bază cum ar fi detecția coliziunilor și entitatea de joc a însemnat că echipele ar putea crește și se specializează. Mai târziu, jocuri precum Quake III Arena și Software-ul Epic Games 1998 Unreal au fost concepute ținând seama de această abordare, cu motorul și conținutul dezvoltat separat. Practica de licențiere a unei astfel de tehnologii s-a dovedit a fi un flux de venituri auxiliare util pentru unii dezvoltatori de jocuri, deoarece o licență pentru un motor de joc comercial high-end poate varia de la 10.000 dolari la milioane de dolari, iar numărul de licențieri poate ajunge la mai multe zeci companii, așa cum se vede cu motorul Unreal. Cel puțin, motoarele reutilizabile fac mai rapidă și ușoară dezvoltarea sequelurilor jocului, ceea ce reprezintă un avantaj valoros în industria jocurilor video competitive. În timp ce a existat o rivalitate puternică între Epic și id în jurul anului 2000, de atunci, motorul Epic Unreal a fost mult mai popular decât Tech Tech 4 și succesorul său id Tech 5. Motoarele grafice moderne sunt unele dintre cele mai complexe aplicații scrise, adesea dotate cu zeci de sisteme bine reglate, care interacționează pentru a asigura o experiență precisă a utilizatorului. Evoluția continuă a motoarelor grafice a creat o separare puternică între randare, scripting, opera de artă și design de nivel. Acum este obișnuită, de exemplu, pentru ca o echipă tipică de dezvoltare a jocului să aibă de mai multe ori mai mulți artiști decât actualii programatori. Jocurile de tip shooter pentru prima persoană rămân utilizatorii predominanți ai motoarelor de jocuri terțe, dar acum sunt, de asemenea, folosite în alte genuri. De exemplu, jocul video de rol Elder Scrolls III: Morrowind și MMORPG Dark Age of Camelot se bazează pe motorul Gamebryo, iar MMORPG Lineage II se bazează pe motorul Unreal. Jocurile motoarelor sunt folosite pentru
jocuri create inițial pentru console de acasă, de asemenea; de exemplu, motorul RenderWare este utilizat în francizele Grand Theft Auto și Burnout. Threading are o importanță mai mare datorită sistemelor moderne multi-core (de exemplu, Cell) și a cerințelor crescute în realism. Firele tipice implică redarea, streaming-ul, audio-ul și fizica. Jocurile de curse au fost în mod obișnuit în fruntea filei cu motorul fizic care rulează întrun fir separat cu mult înainte ca alte subsisteme de bază să fie mutate, parțial datorită faptului că redarea și sarcinile conexe au nevoie de actualizare la numai 30-60 Hz. De exemplu, pe PlayStation 3, fizica a rulat în Need for Speed la 100 Hz față de Forza Motorsport 2 la 360 Hz. Deși termenul a fost folosit pentru prima dată în anii 1990, există câteva sisteme anterioare din anii 1980, care sunt, de asemenea, considerate a fi motoare de jocuri, cum ar fi Sierra's Adventure Game Interpreter (AGI) și sistemele SCI, sistemul SCUMM al lui LucasArts și programul Freescape de la Incentive Software . Spre deosebire de majoritatea motoarelor de jocuri moderne, aceste motoare de joc nu au fost niciodată folosite în niciun produs terț (cu excepția sistemului SCUMM, care a fost licențiat și folosit de Humongous Entertainment). Pe măsură ce tehnologia motorului de joc se maturizează și devine mai ușor de utilizat, aplicarea motoarelor de jocuri a fost extinsă. Acestea sunt folosite acum pentru jocuri serioase: aplicații de vizualizare, instruire, medicală și simulare militară, cu un exemplu de CryEngine. Pentru a facilita această accesibilitate, noile platforme hardware sunt în prezent vizate de motoarele de jocuri, inclusiv telefoanele mobile (de exemplu, telefoanele Android, iPhone) și browserele web (de exemplu WebGL, Shockwave, Flash, WebVision, Silverlight, Unity Web Player, O3D și DHTML pur ). În plus, mai multe motoare de jocuri sunt construite pe limbi de nivel mai înalt, cum ar fi Java și C # / .NET (de exemplu, TorqueX și Visual3D.NET), Python (Panda3D) sau Lua Script (Leadwerks). Deoarece majoritatea jocurilor bogate în 3D sunt acum în mare parte limitate de GPU (limitată de puterea plăcii grafice), potențiala încetinire datorată costurilor de traducere ale limbilor de nivel superior devine neglijabilă, în timp ce câștigurile de productivitate oferite de aceste limbi funcționează pentru motorul de joc dezvoltatorilor. [11] Aceste tendințe recente sunt propulsate de companii precum Microsoft pentru a sprijini dezvoltarea jocurilor Indie. Microsoft
a dezvoltat XNA ca SDK de alegere pentru toate jocurile video lansate pe Xbox și produse similare. Acesta include canalul Xbox Live Indie Games proiectat special pentru dezvoltatorii mai mici, care nu dispun de resursele extinse necesare pentru a castiga jocuri de vanzare pe rafturi retail. Este din ce în ce mai ușor și mai ieftin decât oricând să dezvolți motoare de jocuri pentru platforme care să sprijine cadrele gestionate.
Joc middleware În sensul mai larg al termenului, motoarele de jocuri în sine pot fi descrise ca middleware. În contextul jocurilor video, cu toate acestea, termenul "middleware" este adesea folosit pentru a se referi la subsistemele de funcționalitate ale unui motor grafic. Unele middleware pentru jocuri au un singur lucru, dar o fac mai convingător sau mai eficient decât middleware-ul de uz general. De exemplu, SpeedTree a fost folosit pentru a face arborii și vegetația realistă în jocul video de rol Elder Scrolls IV: Oblivion și Fork Particle au fost folosite pentru a simula și a face în timp real efectele vizuale ale particulelor sau efectele particulelor în Sid Meier's Civilizația V. Pe măsură ce tehnologia motorului de joc se maturizează și devine mai ușor de utilizat, aplicarea motoarelor de jocuri a fost extinsă. Acestea sunt acum folosite pentru jocuri grave: aplicații de vizualizare, instruire, medicală și simulare militară, cu CryEngine fiind un exemplu. Pentru a facilita această accesibilitate, noile platforme hardware sunt în prezent vizate de motoarele de jocuri, inclusiv telefoanele mobile (de exemplu, telefoanele Android, iPhone) și browserele web (de exemplu WebGL, Shockwave, Flash, WebVision, Silverlight, Unity Web Player, O3D și DHTML pur ). Cele patru cele mai utilizate pachete middleware care furnizează subsisteme de funcționalitate includ RAD Bink, Firelight FMOD, Havok și Scaleform GFx. RAD Joc Tools dezvoltă Bink pentru redarea video de bază, împreună cu Miles audio și rendering Granny 3D. Firelight FMOD este o bibliotecă audio și unelte de instrumente robuste. Havok oferă un sistem robust de simulare a fizicii, împreună cu o suită de aplicații de animație și de comportament. Scaleform oferă GFx pentru interfață Flash UI de înaltă performanță și redare video de înaltă
calitate, precum și un add-on Editor de metode de introducere a datelor (IME) pentru suportul de chat asiatic în timpul jocului. Alte instrumente middleware sunt folosite pentru optimizarea performanțelor - de exemplu, "Simplygon" ajută la optimizarea și generarea nivelurilor de ochiuri de detaliu, iar "Umbra" adaugă optimizări de sacrificare a ocluziilor la grafica 3D. Unele middleware conține cod sursă complet, altele oferă doar o referință API pentru o bibliotecă binară compilată. Unele programe middleware pot fi licențiate în orice fel, de obicei pentru o taxă mai mare pentru codul sursă complet.
Motoare “First-Person shooter” Un subset de motoare de joc sunt motoarele de jocuri 3D de tip shooter pentru prima persoană (FPS). În timp ce simulatoarele de zbor și de conducere și jocurile de strategie în timp real (RTS) oferă din ce în ce mai mult realism pe scară largă, shooter-urile de prima persoană se află
în
fruntea
clasamentului
de
grafică
pe
aceste
scale
mai
mici.
Dezvoltarea motoarelor grafice FPS care apar în jocuri poate fi caracterizată printr-o creștere constantă a tehnologiilor, cu unele descoperiri. Încercările de a defini generații distincte conduc la alegeri arbitrare a ceea ce constituie o versiune extrem de modificată a unui "motor vechi"
și
care
este
un
motor
nou
nou.
Clasificarea este complicată deoarece motoarele de jocuri îmbină vechile și noile tehnologii. Caracteristicile care au fost considerate avansate într-un nou joc de un an devin standardul așteptat anul viitor. Jocurile cu o combinație de generații mai în vârstă și caracteristici mai noi sunt normele.
Glosar(Glossary) 1. Consoles=Console 2. Personal computers=Computer personal 3. Rendering=Randare 4. 3D graphics=Grafica 3D 5. Physics engine=Motor fizic 6. Collision detectio=Detectia coliziunii 7. Scripting=Scripting 8. Artificial inteligence=Inteligenta artificiala 9. Memory management=Managerierea memoriei 10. Threading=sectionare 11. Scene graph=Scena grafica 12. Cinematics=Cinematica 13. Game development=Dezvoltarea jocului 14. Porting=Portare 15. Source code=Cod sursa 16. Rendering engine=Motor de randare 17. Redering=Randare 18. Ray-tracing=urmarirea razei 19. Rasterization=rasterizarea 20. Shader=shader 21. API(Application Programming Interface)= Interfața de programare a aplicației 22. Doppler effects=Efectul doppler 23. Kernel=Nucleu 24. Rpg maker=producator de joc de rol 25. Level design=design-ul level-ului 26. Agi(Artificial general intelligence)= Inteligenta generală artificială 27. Sci(Service Civil International)=Serviciul civil internațional 28. Gpu(Graphics processing unit)= Unitate de procesare grafică 29. Cpu(Central processing unit)= Unitate centrală de prelucrare 30. Level of detail=nivelul de detalii 31. Real-time strategy=strategie in timp real