Press "Enter" to skip to content

Third person shooter

Third person shooter

Radu Buciuceanu

Keywords: Game development, Third person, Shooter

Abstract

In prezent, calculatoarele au devenit un lucru comun pentru fiecare dintre noi. Acestea au evoluat foarte mult si au un spectru de utilizare foarte larg. Acestea pot fi folosite atat pentru lucru cat si pentru distractii. Jocurile au fost mereu un domeniu foarte captivant al informaticii. Dezvoltarea acestora necesita un efort destul de mare si o raza mare de cunostinte. Pentru a dezvolta un joc este nevoie de cunoasterea a mai multor domenii ale informaticii. Jocurile si informatica m-au captat foarte mult inca din copilarie. Third person shooter este un joc local, 3D care se include in genul: Survival.

1. Introducere

Jocul presupune o simulare a supraviețuirii unui personaj. Acest personaj este urmărit și atacat de niște monștri. Există mai multe nivele care pot fi selectate de către jucător. Fiecare dintre aceste nivele este unic și are monștri adiționali fată de nivelul precedent. Categoriile din care face parte acest joc sunt: 3D Games, Third person, Shooter, Simulator, Survival.

2. Tehnologii folosite

2.1 Blender

Blender este un IDE destinat modelării 3D. Acesta este open source. Primul release a fost în 1995. Blender este scris în C, C++ și Python. Este unul dintre cele mai des folosite IDE-uri pentru modelare 3D.

2.1.1 Primitive

Majoritatea IDE-urilor de modelare oferă niște modele 3D predefinite, numite primitive. Acestea sunt folosite ca si punct de start pentru a modela un obiect 3D custom.

2.2 Unity

IDE-ul și tehnologia folosită pentru a crea logica jocului a fost Unity 3D. Acesta este un Game Engine care permite dezvoltarea jocurilor pe mai multe platforme cum ar fi: Windows, GNU Linux, Android, Windows Phone, IOS, etc.

2.2.1 GameObject

Orice obiect instanțiat în scena este un GameObject. Această ierarhie este echivalentă cu ierarhia claselor din .Net. Ierarhia este: UnityEngine.GameObject → UnityEngine.Object → System.Object unde:

Other essay:   How has the high school you attended moulded you into the person you are today?

UnityEngine.GameObject – clasă din API-ul de la Unity

UnityEngine.Object – clasă din API-ul de la Unity

System.Object – clasă din .Net

2.2.2 Component

Orice script predefinit (Transform, SphereCollider, BoxCollider, PlaneCollider, AudioSource, etc.) sau orice alt script definit de programator atașat unui GameObject (vezi capitolul GameObject). Componentele se aplica GameObject-urilor cu scopul de a le adăuga logică (comportament). Toate componentele unui GameObject pot fi văzute în interfața Inspector din Unity Editor.

2.2.3 Asset

Orice component neinstanțiat al jocului (animații, scripturi, modele 3D, imagini, texturi, audio, prefab-uri, etc.).

2.2.4 Prefab

Un tip de asset specializat, salvat pentru facilitatea de a crea, modifica mai multe instante ale unui singur obiect în joc.

3. Sisteme dezvoltate

3.1 Crearea modelelor 3D

Crearea modelelor 3D este primul pas în crearea unui joc 3D. Unity nu oferă un mediu de modelare 3D. Din cauza aceasta, este nevoie de un soft ”third-party”. Softul ales a fost Blender. Crearea modelelor 3D în Blender se poate face folosind mai multe tactici. Una ar fi modelarea unui model ”low-poly” după ce modelăm unul ”highpoly” mapat pe acel ”high-poly”. A doua tactică poate fi una de modelare după o schiță (o imagine). A treia tactică este cea de modelare directă (fără nici un fel de model ajutător).

3.2 Texturarea modelelor 3D

Texturarea modelelor 3D reprezintă pasul 2 în crearea unui joc 3D. Aceasta presupune colorarea modelului 3D creat. Această așa numită ”colorare” se efectuează pe baza mapărilor unor texturi pe obiectul nostru. Pentru crearea acestor texturi este nevoie de o metodologie de creare a acestor imagini, o metodologie de desenare a acestora și o metodologie de mapare a acestor imagini pe modelele 3D create.

3.4 Animarea modelelor 3D

Other essay:   Personal privacy in the uk and when it’s justified for a journalist to invade

In crearea unui joc, animarea modelelor 3D este unul dintre cele mai grele și ma costisitoare procesele din punct de vedere al timpului. Pentru a crea o animație, este nevoie de o experiență enormă și de foarte mult timp. Acest proces este atât de greu deoarece el presupune fixarea pozițiilor oaselor pentru fiecare frame. O animație are în mediu 60 de frame-uri. Fiecare dintre aceste 60 de frame-uri conține toate key-frame-urile oaselor. Adică, pentru fiecare dintre aceste 60 de frame-uri, dezvoltatorul trebuie să stabilească pozițiile pentru toate oasele scheletului. Scheletul pentru un model de tip humanoid are aproximativ 60 de oase. Efectuând calculul, pentru o animație de 60 de frame-uri, pentru un model de tip humanoid, dezvoltatorul este nevoit să seteze pozițiile a aproximativ 3600 de oase. Ținând cont de faptul că folosim facilitățile pe care ni le oferă Blender sau un oarecare alt soft de modelare 3D, acest număr de oase se reduce în jumate. Așadar, aproximativ 1800 de oase. De remarcat este faptul că pozițiile acestor oase trebuie aranjate foarte bine pentru a crea o animație lină. Mai mult, pentru multe animații trebuie să ținem cont și de simetria acestora. Un exemplu bun poate fi mersul omului. Piciorul drept face un pas, după care, piciorul stâng face și el un pas simetric.

3.5 Exportul unui model 3D din Blender

După ce creăm modelul 3D, îl texturăm și-l animăm, trebuie să exportăm modelul, împreună cu animațiile acestuia. Exportul reprezintă salvarea unui model 3D într-un format universal ce poate fi folosit de către un GameEngine sau un alt soft.

3.6 Importul unui asset în UnityEditor

Importul unui asset presupune importul unor componente ale jocului într-ul GameEngine. Aceste componente pot fi: fișiere .fbx, texturi, imagini, animații, etc. În cazul de față, GameEngine-ul este Unity. Pentru a importa un asset în UnityEditor, vom folosi interfața Project. Pentru a importa asset-ul, este nevoie de o operație drag & drop a fișierului ce-l dorim importat. Dupa import, este nevoie de configurarea acestuia. In cazul in care obiectul importat este un obiect 3D, este nevoie si de configurarea materialelor pentru acest obiect.

Other essay:   Personal development

3.7 Crearea mediului de joc

După ce importăm modelele 3D necesare și după ce le configurăm pe acestea, putem începe modelarea mediului de joc. Pentru modelarea mediului de joc, avem nevoie de o scenă. Aceasta poate fi creată fie din meniu, fie folosind meniul contextual care poate fi deschis apăsând right click pe folder-ul unde dorim să creăm această scenă.

3.8 Crearea scripturilor

In Unity, toată logica jocului este definită în script-uri. Acesta nu este nimic altceva decât o clasă. Script-urile pot fi create folosind meniul contextual din interfața Project. Orice script trebuie să deriveze din clasa predefinită MonoBehaviour. Această clasă conține o mulțime de metode ajutătoare. De asemenea, API-ul Unity ne oferă accesul la orice componentă a jocului în real-time. Unity ne oferă niște metode callback predefinite pentru scripturi. Aceste callback-uri vor fi apelate automat de către API-ul Unity la run-time. Unity apelează aceste metode folosind reflecția oferită de .Net. Cauza pentru care acesta folosește reflecția este performanța.

4. Concluzii

Dezvoltarea jocurilor este un proces foarte costisitor si complicat. Este nevoie de interactiunea a mai multor domenii ale informaticii (design, programare, modelare 3D, animare, texturare, etc.). Totusi, rezultatul este unul mult mai frumos si mai incurajator decat dezvoltarea unei aplicatii 2D.

5. References

[1] https://unity3d.com/learn

[2] https://docs.blender.org/

Radu Buciuceanu

Facultatea de stiinte “Lucian Blaga”

Departmentul de Informatica

Str. Dr. I. Ratiu, No. 5-7, Sibiu, 550012, România

E-mail: radu.buciuceanu@gmail.com

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

0 Shares
Share via
Copy link

Spelling error report

The following text will be sent to our editors: