Motor de joc

Un motor de joc este o colecție de componente software care efectuează calcule de geometrie și fizică utilizate în jocurile video . Ansamblul formează un simulator în caracteristici de reproducere în timp real, lumi fantastice în care sunt ținute seturile. Scopul unui motor de joc este de a permite unei echipe de dezvoltare să se concentreze mai degrabă pe conținutul și fluxul jocului decât să rezolve problemele computerului.

Motorul 3D creează imagini prin calcule de proiecție , în timp ce motorul 2D construiește imaginea jocului prin stivuirea imaginilor raster . Motorul amestecă sunete și muzică pe tot parcursul jocului. Capabilitățile de scriptare ale motoarelor de joc permit simularea comportamentului personajelor care nu pot fi redate cu programare redusă sau deloc, iar motorul de fizică este folosit pentru a impune reguli fizice, cum ar fi inerția sau gravitația, în ordine. pentru a obține mișcări mai realiste.

Origini

Conceptul de motor de joc (în franceză game engine ) a apărut în anii 1990, referindu-se la software-ul folosit în jocurile de fotografiere la persoana întâi, cum ar fi Doom . Arhitectura de Doom a fost o distincție clară între componentele motorii ale jocului și a resurselor digitale proprii Doom , cum ar fi grafice, sunete, muzică, scene și reguli de conduită care reproduc atmosfera jocului. Motorul componente ar putea fi refolosite, cu minore modificări, în jocurile cu alte arme, alți dușmani și alte reguli de joc, care au permis introducerea pe piață a jocurilor noi mai rapid decât înainte.

Vedere generala

În jocurile video moderne, există seturi majore gestionate uneori de motoare separate, fiecare având legătură cu o funcție specifică de dezvoltare: sistemul (intrare / ieșire, interfață cu utilizatorul, memorie etc.), grafică, sunet, rețea (pentru jocuri multiplayer) , fizică și inteligență artificială . Un motor de joc este un set de motoare specializate necesare pentru a face un joc. De exemplu, Valve Software comercializează motorul Source, care este denumirea comercială a motorului său de joc. Motorul Source este o „soluție de dezvoltare cheie”. împreună diferite motoare (grafică, sunet ...) necesare dezvoltării unui joc. Fizica acestui motor de joc este gestionată de motorul Havok , specializat și dezvoltat de o companie terță parte și care este el însuși utilizat în alte jocuri motoare.

Alegerea unui studio de creare a jocurilor este, prin urmare, limitată, în general, la cumpărarea sau dezvoltarea tuturor sau parțială a motoarelor necesare dezvoltării jocului său. Este totuși important să subliniem că de câțiva ani rolul motoarelor de joc a continuat să crească. crește. Investiția reprezentată de dezvoltarea motoarelor de joc continuă să crească și face dificilă sau chiar imposibilă amortizarea acestora într-o singură producție.

Lista motoarelor de joc

Printre motoarele de joc cele mai utilizate sau observate în ultimii ani, putem cita (lista neexhaustivă): Renderware , diferitele motor Unreal , Unity , Quake engine , motorul Source , CryEngine , Torque Game Engine , RealityEngine , Novodex , Antiryad Gx etc.

Printre motoarele de joc software gratuit , putem menționa:

Numele de familie Principala limbă de comunicare Biblioteca de grafică Biblioteca audio Note
Motorul de joc Blender Piton OpenGL OpenAL construit în jurul lui Blender
cub ? OpenGL ? FPS specializat
Godot GDScript, varianta Python OpenGL și OpenGL ES ) ? Orientat 2D și 3D
DRAGOSTE Lua OpenGL ? Orientat 2D cu extensii 3D.
Luxe sau LuxeEngine Haxe WebGL ?
Armory sau Armory Engine Haxe OpenGL , WebGL și Vulkan ? construit în jurul lui Blender

Cadru

Unele companii sunt acum specializate în dezvoltarea așa-numitelor software- cadru , adică furnizarea de funcții care rămân personalizabile. Utilizarea unor astfel de produse are ca scop evitarea „  reinventării roții pătrate  ” și reutilizarea unei suite software deja dovedite, care include mai multe elemente necesare pentru crearea unui joc. Multe programe de acest tip din domeniul jocurilor video oferă facilități de dezvoltare pentru grafică. , sunetul, fizica și implementarea inteligențelor artificiale. Doi reprezentanți folosiți pe scară largă sunt Gamebryo și RenderWare .

Unele cadre oferă o singură facilitate, de exemplu sinteza copacilor și plantelor, acesta este cazul SpeedTree , această specializare îi permite să genereze imagini mai convingătoare decât motoare mai generale.

Unele cadre vin cu tot codul sursă , altele cu documentația interfeței de programare pentru a permite refolosirea în alte programe.

Caracteristici

Fiecare motor de joc este unic. Cu toate acestea, se găsesc unele caracteristici.

Intrări ieșiri

Această parte se referă la citirea dispozitivelor externe:

De asemenea, este responsabil pentru citirea datelor jocului și pentru scrierea salvării.

Ea va fi însărcinată cu comprimarea / decomprimarea datelor jocului (în special pentru a accelera încărcarea). De asemenea, va fi responsabil pentru posibila lor criptare / decriptare.

Matematică

Vom găsi acolo tot felul de funcții matematice necesare dezvoltării unui joc. Pentru un joc 3D, vom găsi mai ales:

Se poate cita ca exemplu de calcul foarte des efectuat într-un motor de joc: multiplicarea matricilor, inversarea matricilor, produsul scalar sau vector .

Fizic

Modulul de fizică va calcula mișcarea obiectelor, modul în care acestea interacționează între ele, modul în care alunecă pe podea sau pe pereți, modul în care acestea sar, etc. De asemenea, el va calcula deformarea obiectelor moi, a părului, a părului, a hainelor și a altor perdele. Putem distinge trei categorii principale de simulare:

Detectarea coliziunii

Gestionarea coliziunilor este un strat software care face posibilă detectarea când două obiecte se întâlnesc și, astfel, posibilitatea de a defini o acțiune rezultată. Un obiect este apoi o reprezentare geometrică a elementelor jocului (personaje, obstacol, proiectile etc.). Un modul de coliziune este format de obicei dintr-un set de funcții matematice pentru calcularea intersecțiilor prin perechi de primitive geometrice: sferă contra sferă, sferă contra casetă, casetă împotriva triunghi ... Fiecare dintre aceste funcții se va calcula, în funcție de capacitățile modulului , punctul de intersecție, normalul până la punctul de contact, precum și distanța de penetrare a celor două obiecte.

Există două categorii principale de coliziuni:

În funcție de tipul de joc se utilizează una sau alta abordare. Motoarele de jocuri 3D de astăzi folosesc de obicei un amestec dintre aceste două metode. Pentru a optimiza calculele de coliziune pe forme complexe, motoarele de jocuri pot folosi noțiunea de volum închis și, mai general, a ierarhiei volumelor închise. Calculul rapid, dar aproximativ, face posibilă eliminarea stărilor de non-coliziune, altfel se efectuează un calcul exact asupra obiectului. Ierarhia volumelor închise adaugă doar pași suplimentari prin împărțirea unui obiect în subseturi cuprinse într-o formă simplă. Pentru a reduce numărul de calcule de perechi de obiecte, motoarele recurg în general la structurarea spațiului în subseturi de obiecte apropiate.

Grafică 3D

În jocurile tridimensionale, scenele și obiectele din joc (monștri, vehicule, proiectile) sunt înregistrate ca coordonatele tridimensionale ale poligoanelor - adesea triunghiuri. Fiecare serie de poligoane formează contururile diferitelor obiecte din lumea jocului. Motorul 3D efectuează calcule de sinteză a imaginii pentru a obține o proiecție bidimensională a lumii jocului, care proiecție va fi trimisă pe ecran.

În așa-numitul proces de redare (sau rasterizare ) poligonală , motorul 3D calculează proiecția dintr-un punct de vedere dat, începând cu poligoanele cele mai îndepărtate din acest punct de vedere. Textura (culoarea, modelele etc.) a suprafețelor este o imagine matricială distorsionată în funcție de distanță și orientarea poligonului din punct de vedere înainte de a fi aplicată la proiecție.

În așa-numitul proces voxel ( contracția volumului și a pixelilor ), obiectele jocului sunt înregistrate sub forma unei serii de cuburi (voxeli), iar calculul proiecției utilizează procesul de redare poligonală .

În respectiva metodă de turnare a razelor (sau trasarea razelor ), motorul 3D efectuează calculul culorii fiecărui pixel al proiecției (care este o imagine raster ) prin calcularea inversă a traseului luminii pentru fiecare pixel al imagine, în conformitate cu regulile opticii geometrice, cum ar fi transparența , reflexia sau refracția . Acest proces oferă imagini foarte realiste, dar necesită o mare putere de calcul și, în 2011, este încă puțin folosit pentru jocurile video.

Calculele de proiecție pot fi efectuate de către procesorul grafic (prescurtat ca GPU ) în timp ce procesorul central este utilizat pentru alte calcule, cum ar fi motorul de sunet sau scriptarea.

A lui

Motorul de sunet combină software-ul playerului audio cu software-ul de amestecare și un generator de efecte sonore (ecou, ​​compresie, spațializare). Cele trei componente sunt interconectate.

Motorul efectuează calculele sale continue de procesare a sunetului sintetic și a semnalului digital , pe baza eșantioanelor ( eșantionului ) de partituri muzicale digitalizate (adesea format MIDI ) și a tabelei de undă . Unele motoare sonore simulează reverberația , schimbarea de fază și schimbarea timbrală a unui sunet emis de la o sursă îndepărtată și astfel produc iluzii auditive .

Scripting

De limbaje de scripting sunt adesea folosite în jocurile video pentru a seta comportamentul inamicilor și mașini și simulează lor inteligență . Utilizarea unui limbaj de scriptare permite unui proiectant sau unui scenarist, care are puține sau deloc cunoștințe de programare, să „configureze” comportamentul inamicilor și astfel să modifice jocul fără să apeleze la un programator. Din punct de vedere istoric, a apărut nevoia unui sistem de scriptare pentru jocurile de aventură care necesită multă interacțiune. Acest lucru a dus la Utilizarea de creare a scripturilor pentru Maniac Mansion (SCUMM). Creat inițial și, așa cum sugerează și numele său pentru jocul Maniac Mansion (1987), și reutilizat pentru fiecare joc nou cu modificări minime, a fost folosit din nou zece ani mai târziu pentru The Curse of Monkey Island (1997). Celelalte genuri de jocuri au devenit și ele la rândul lor complexe, motoarele lor de joc au încorporat adesea un sistem de scriptare.

Pentru dezvoltarea Jedi Knight: Dark Forces II (1997), motorul jocului a fost adaptat pentru a susține un limbaj de scriptare. Robert Huebner, care a participat la această dezvoltare, explică faptul că a existat un limbaj binar INF înainte de a fi greu de asimilat - o broșură completă a fost destinată acestei utilizări. Limbajul de scriptare implementat, COG, este compilat din mers la lansarea unui joc și apoi executat pe o mașină virtuală (un automat operat pe baterie) pentru a asigura robustețea jocului. Nu au fost raportate consecințe negative, fie asupra dezvoltării, fie asupra jocul în sine, ci mai degrabă o creștere a creativității designerilor. Unele companii și-au dezvoltat propriile limbaje de scriptare, așa cum este descris mai sus. Acesta este și cazul pentru software-ul id cu limbajul QuakeC sau Epic Games cu limbajul UnrealScript . Dar integrarea unui limbaj de scriptare a devenit foarte accesibilă, unele biblioteci software fiind dezvoltate independent în special în acest scop. Acesta este cazul bibliotecii și a limbajului Lua care a fost folosit într-un număr mare de jocuri de genuri foarte diverse.

Inteligență artificială

Reţea

Note și referințe

  1. (în) Jason Gregory și Jeff Lander Game Engine Architecture , AK Peters, Ltd. - 2009, ( ISBN  9781568814131 ) .
  2. Robert Huebner, Adăugarea de limbi pentru motoarele de joc (Gamasutra, 1997).
  3. Lua folosește , limba Lua a fost folosită în jocuri la fel de diverse precum Baldur's Gate (1998), Escape from Monkey Island (2000), Homeworld 2 (2003), World of Warcraft (2004), Far Cry (2005).

Anexe

Articole similare

linkuri externe