Specializarea: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ [301978]

UNIVERSITATEA HYPERION din BUCUREȘTI

FACULTATEA de ȘTIINȚE EXACTE ȘI INGINEREȘTI

Specializarea: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

PROIECT DE DIPLOMĂ

COORDONATOR STIINȚIFIC:

Lect.Univ.Dr.Ing. EUGEN CORNEL

ABSOLVENT: [anonimizat]2019)

UNIVERSITATEA HYPERION din BUCUREȘTI

FACULTATEA de ȘTIINȚE EXACTE ȘI INGINEREȘTI

Specializarea: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

Aplicație web cu componente de grafică interactivă

COORDONATOR STIINȚIFIC:

Lect.Univ.Dr.Ing. EUGEN CORNEL

ABSOLVENT: [anonimizat]2019)

[anonimizat]. Aplicația, este practic un joc destinat tuturor celor care doresc să afle mai multe informații legate de această ….. și modul de creare a unui joc 3D. Practic, aplicația a [anonimizat].

Ordinea dezvoltării jocului este urmatoarea:

Crearea mediului de desfășurare a jocului

Model ce reprezintă jucătorul

Poziția camerei

Adăugarea inamicului

Elemente UI (User Interface) si HUD (Heads-up Display)

[anonimizat].

CUPRINS

Cap.1 – Introducere

1.1 Istoria informaticii

Știința informaticii este studiul proceselor care interacționează cu datele și care pot fi reprezentate ca date sub formă de programe. [anonimizat].

[anonimizat]. [anonimizat]. [anonimizat] a sistemelor complexe. [anonimizat] a [anonimizat].

[anonimizat], [anonimizat]. [anonimizat].

Wilhelm Schickard a proiectat și construit primul calculator mecanic de lucru în 1623. În 1673, Gottfried Leibniz a [anonimizat]. Poate fi considerat primul om de știință în domeniul informaticii care a prezentat, [anonimizat].

În 1820, Thomas de Colmar a lansat industria calculatoarelor mecanice când a [anonimizat] a fost prima mașină de calcul suficient de puternică și suficient de fiabilă pentru a [anonimizat].

Charles Babbage a început proiectarea primului calculator automat mecanic „Difference Engine”, în 1822, care i-a dat în cele din urmă ideea de primul calculator mecanic programabil. El a început să dezvolte această mașină în 1834 și "[anonimizat] a schițat multe dintre caracteristicile esențiale ale calculatorului modern". "Un pas esențial a fost adoptarea unui sistem de carduri perforate derivat din țesătura Jacquard", făcând-o programabilă infinit.

În 1843, în timpul traducerii unui articol francez pe motorul analitic, Ada Lovelace a scris una dintre numeroasele note pe care le-a inclus, un algoritm de calcul al numerelor Bernoulli, considerat a fi primul algoritm publicat vreodată specific adaptat pentru implementarea pe un calculator.

În jurul anului 1885, Herman Hollerith a inventat tabulatorul, care a folosit cărți perforate pentru a procesa informații statistice; eventual compania sa a devenit parte a IBM.

În 1937, la o sută de ani după visul imposibil al lui Babbage, Howard Aiken la convins pe IBM, care făcea tot felul de echipamente de carduri perforate și era, de asemenea, în domeniul calculatoarelor pentru a-și dezvolta calculatorul gigant programabil, ASCC/ Harvard Mark pe motorul analitic al lui Babbage, care însuși folosea cartele și o unitate centrală de calcul. Când mașina a fost terminată, unii l-au salutat ca "visul lui Babbage sa împlinit".

Primul program de informatică din lume, Diploma Cambridge în Informatică, a început la Universitatea din Cambridge Computer Laboratory în 1953. Primul departament de informatică din Statele Unite a fost format la Universitatea Purdue în 1962. Deoarece calculatoarele practice au devenit disponibile, multe aplicații de calcul au devenit arii distincte de studiu în propriile lor drepturi.

Deși mulți credeau inițial că era imposibil ca acele computere să fie într-adevăr un domeniu științific de studiu, la sfârșitul anilor cincizeci, a devenit treptat acceptată în rândul populației academice mai mari. Este acum bine-cunoscutul brand IBM care a făcut parte din revoluția informatică în această perioadă. IBM (scurt pentru International Business Machines) a lansat computerele IBM 704 și mai târziu IBM 709, care au fost utilizate pe scară largă în timpul perioadei de explorare a unor astfel de dispozitive.

1.2 Etimologia termenului "informatică"

Deși inițial a fost propus în 1956, termenul "informatică" apare într-un articol din 1959 din Communications of the ACM, în care, Louis Fein argumentează crearea unei Școli Postuniversitare în Știința Calculatoarelor analogă creării Harvard Business School în 1921, justificând numele argumentând că, asemenea științei managementului, subiectul este aplicat și interdisciplinar în natură, având în același timp caracteristicile unei discipline academice.

Eforturile sale și cele ale altora, cum ar fi analistul numeric George Forsythe, au fost recompensați: universitățile au continuat să creeze astfel de departamente, începând cu Purdue în 1962. În ciuda numelui său, o cantitate semnificativă de informatică nu implică studiul computerelor. Din acest motiv, au fost propuse mai multe nume alternative.

Anumite departamente ale unor universități importante preferă termenul de știință de calcul, pentru a sublinia tocmai această diferență. Cercetătorul danez Peter Naur a sugerat termenul datalogie, pentru a reflecta faptul că disciplina științifică se învârte în jurul datelor și tratării datelor, fără a implica neapărat computerele. Prima instituție științifică care folosește termenul a fost Departamentul de Datalogie al Universității din Copenhaga, fondată în 1969, iar Peter Naur a fost primul profesor în datalogie. Termenul este folosit în principal în țările scandinave. Un termen alternativ, propus și de Naur, este știința datelor; acest lucru este utilizat acum pentru un domeniu multidisciplinar de analiză a datelor, inclusiv statistici și baze de date.

Știința informaticii este considerată de unii ca având o relație mult mai strânsă cu matematica decât multe discipline științifice, iar câțiva observatori spun că calculul este o știință matematică. Informatica timpurie a fost puternic influențată de munca matematicienilor precum Kurt Gödel, Alan Turing, Rózsa Péter și Biserica Alonzo și continuă să existe un schimb util de idei între cele două domenii în domenii precum logica matematică, teoria categoriilor, teoria domeniilor și algebra.

Relația dintre informatică și ingineria software-ului este o problemă controversată, care este în continuare studiată de disputele asupra termenului "Engineering Software" și a modului în care este definită știința calculatoarelor.

Departamentele de informatică cu accent de matematică și cu o orientare numerică iau în considerare alinierea cu știința computațională. Ambele tipuri de departamente au tendința de a depune eforturi pentru a realiza o punte educațională în domeniu

1.3 Istoria ingineriei software

Istoria științei informaticii, a ingineriei software și a World Wide Web este bogată, fascinantă și destul de surprinzătoare. Începe într-un moment în care programele de calculator erau, în esență, doar instrucțiuni pentru manipularea unui dispozitiv fizic și trece prin mai multe puncte de cotitură care au condus, în primul rând, la comercializare și, în final, la consumarea tehnologiei de calcul.

1.3.1 Hardware și primii ingineri de software

Începând cu anii '50 și începutul anilor '60, programatorii nu au interacționat chiar direct cu dispozitivele de calcul. Ei și-au difuzat programele cu mâna tehnicienilor și apoi au luat rezultatele ore mai târziu, după ce programele au fost procesate în lot cu multe altele. Astfel, sarcini precoce au fost în mod obișnuit orientate spre calcul matematic, care necesită o buclă de feedback foarte limitată.

Primul limbaj de programare folosit a fost – Fortranul IBM – care a fost lansat în 1957 pentru calcul matematic și științific. Altul, Cobol, a fost lansat de Departamentul Apărării al SUA în 1962 pentru a fi folosit în aplicații de afaceri.

La începutul anilor '70 si-au facut apariția noi idei cheie în gândirea sistemelor, care le-au permis inginerilor să spargă aceste proiecte gigantice în piesele modulare (și mult mai ușor de gestionat) care comunicau prin interfețe.

O altă schimbare majora a avut loc la începutul anilor 1980, odată cu trecerea de la gândirea datelor ca pe un flux mereu în continuă schimbare și spre ideea persistenței unor "obiecte" discrete care ar putea interacționa și deține stat independent. Mai concret, a permis dezvoltatorilor să creeze și să interacționeze cu obiectele aproape fizice ale interfeței grafice (GUI), cum ar fi meniurile, icoanele și ferestrele – "programare orientată pe obiecte".

Deceniile care au durat până în prezent au fost marcate de creșteri uluitoare ale puterii de calcul (după Legea lui Moore):

Source: "Transistor Count and Moore's Law – 2011" by Wgsimon – Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.

Această nouă putere de calcul nu a fost în întregime benefică pentru starea industriei. Unde înainte, inginerii trebuiau să fie foarte atenți la proiectarea unor programe eficiente care să poată funcționa cu memoria limitată și puterea de procesare limitată a zilei, dependența de puterea brută a condus la câțiva pași înapoi în calitatea codului scris. Acest lucru a determinat pe unii cercetatori să denatureze creșterea software-ului "risipitor".

Source: World Science Festival

Cap.2 Aplicațiilor web

2.1 Din istoria dezvoltării aplicațiilor web

Aplicațiile web sunt importante pentru dezvoltarea internetului. Ele îmbunătățesc calitatea lucrării unui browser și întregul Internet poate funcționa în mod clar. Ce este o aplicație web? Este o aplicație client-software rulată de client într-un browser. Funcția principală a unui browser este să afișeze informațiile primite de la un server și să trimită datele utilizatorului înapoi.

Principalul avantaj al acestei abordări îl constituie faptul că clienții nu depind de sistemul de operare specific utilizatorului; prin urmare, aplicațiile web sunt servicii cross-platform. Datorită acestei caracteristici universale, aplicațiile web au devenit foarte populare în anii 1990 și 2000.

Dezvoltatorii nu au nevoie să pregătească versiuni diferite ale aceleiași aplicații pentru Microsoft Window, Mac OS, Linux etc. O aplicație este creată o singură dată pentru orice platformă și poate funcționa pe orice sistem de operare. Cu toate acestea, diferitele realizări practice ale HTML, CSS, DOM și a altor interfețe în browsere pot provoca probleme în timpul dezvoltării aplicațiilor web și susținerea lor ulterioară. Mai mult, o aplicație web poate funcționa incorect datorită posibilității utilizatorului de a schimba setările browserului așa cum dorește.

Anul 1995 este un an crucial în era internetului. Netscape Communications a prezentat JavaScript, un limbaj de scripting pe partea clientului, care permite programatorilor să îmbunătățească interfața cu elementele dinamice. JavaScript a făcut Internetul mai rapid și mai productiv, deoarece datele nu mai erau trimise la server pentru a genera întreaga pagină web.

În 1996, a fost introdus Macromedia Flash. A fost, de asemenea, o inovație revoluționară care a făcut ca Web-ul să fie "mai luminos" și mai interactiv. Acest player de animație vectorial a permis programatorilor să îmbogățească paginile web cu animație. Această platformă software multimedia funcționează cu animație, diferite tipuri de jocuri browser, grafică vectorială și aplicații Internet și mobile.

A fost un progres solid când Adobe Flash a inclus streamingul audio și video în animația sa. Această platformă face ca utilizatorul să interacționeze cu mașina cu ajutorul unui mouse, a unui microfon și a unei tastaturi. Mai mult, orice interacțiune a programului de pe partea clientului nu mai necesită comunicarea cu serverul.

Din 1996, popularitatea crescândă a diferitelor jocuri interactive pe internet a fost observată datorită tehnologiei revoluționare oferite de Macromedia Flash. Când vă amintiți Internetul înainte de anul 2000, veți fi de acord că majoritatea site-urilor web au utilizat conținut multimedia încorporat în paginile lor. Ați putea vedea anunțuri animate și videoclipuri care au supraîncărcat paginile web cu culori și mișcări inutile. Foarte curând, popularitatea Flash a scăzut.

Paginile web au câștigat aspectul obișnuit. Munca utilizatorului nu mai era întreruptă de anunțurile ciudate și neașteptate și de fluxurile video în timp ce acestea încetaseră activitatea site-ului și consumau traficul suplimentar. Cu toate acestea, există încă site-uri ieftine care utilizează Flash pe paginile lor web. În prezent, Adobe Flash este folosit în principal pentru crearea de diverse jocuri video și aplicații interactive pentru smartphone-uri și tablete.

În 1999, conceptul de aplicație web a apărut în limba Java. Mai târziu, în 2005, Ajax a fost introdus de Jesse James Garrett în articolul său "Ajax: O nouă abordare a aplicațiilor web". Acest complex de tehnici de dezvoltare web a permis programatorului să compună aplicații web asincrone. Principiul muncii sale este foarte simplu și revoluționar în același timp. A făcut posibil ca utilizatorul să lucreze pe Web mai repede și mai bine. Aplicațiile Web pot trimite date către server și îl pot prelua fără a interfera cu lucrul de pe pagina respectivă.

Majoritatea dintre noi folosesc zilnic aplicații web. De fapt, e-mailurile Gmail și Yahoo, Twitter, Facebook și eBay sunt folosite de majoritatea zilnic – și sunt aplicații web. În general confundăm aceste instrumente de aplicații web cu site-uri web.

2.2 Site web vs. aplicație web

Cea mai bună modalitate de a elucida diferența dintre site-uri web și aplicații web este de a gândi în termeni de scopuri, dorim să furnizăm informații sau dorim să obținem informații?

Site-urile web sunt simple, statice, site-uri cu o singură pagină sau site-uri de marketing pentru distribuirea de informații. În general, site-urile web oferă și promovează produse, servicii și organizații prin intermediul articolelor, imaginilor, videoclipurilor și fișierelor. Un site informează lumea despre cine sunteți și despre ce oferiți. De exemplu, puteți să verificați site-ul local al restaurantului italian ca client pentru a verifica "Ziua specială" sau orele de funcționare fără a dezvălui informații despre dvs. înșivă.

Aplicațiile web, pe de altă parte, se concentrează mai puțin pe marketing și mai mult pe funcționalitate pentru îndeplinirea scopului specific al afacerii (trimiterea, stocarea, căutarea și preluarea datelor). Aplicațiile Web sunt software care rulează pe web pentru a oferi un fel de serviciu sau pentru a îmbunătăți eficiența. Aplicațiile web folosesc întotdeauna baze de date și, prin urmare, sunt numite dinamice.

Este nevoie de interacțiunea utilizatorului, deoarece utilizatorul trebuie să furnizeze informații pentru ca aplicația să funcționeze. Marele avantaj al unei aplicații web este că nu are nevoie de dezvoltator pentru a construi un client pentru un anumit tip de computer sau pentru un anumit sistem de operare, deoarece rulează într-un browser web. Utilizatorii pot folosi chiar și Internet Explorer, Chrome sau Firefox, deși unele aplicații web pot necesita un anumit browser Web.

2.3 Fundația tehnică

Site-urile Web și aplicațiile web sunt colecții de cod de programare pentru livrarea de conținut și funcționalitate pe web. Software-ul rulează pe servere web și este accesat prin browsere web pe o varietate de dispozitive. Ambele utilizează aceleași limbi și instrumente de codificare (HTML, JavaScript, CSS și altele) pentru a dezvolta software-ul. Aplicațiile Web utilizează în mod obișnuit o combinație de script-uri de pe server (ASP, PHP sau Python etc.) pentru a face față bazelor de date, stocarea și recuperarea informațiilor și a script-urilor de pe partea clientului (HTML, Javascript, CSS și altele etc.) împreună cu cadre precum Rails, Django etc. pentru a dezvolta și menține aplicația.

2.4 Tipuri de aplicații web

Există trei tipuri diferite de aplicații bazate pe web, în ​​funcție de rolurile realizate și de logica plasată și distribuită de server și browser-ul client. Server Web Application – În acest tip de arhitectură de dezvoltare web, serverul generează conținut HTML și îl trimite clientului ca pagină HTML completă.

JS Generation Widgets (AJAX) – Pagina afișată în browser indică widget-urile, unde datele sunt încărcate prin interogarea AJAX de la server în conținutul paginii. Orice actualizare de pe server se afișează numai pentru partea din pagină solicitată de client.

Aplicații web pe o singură pagină orientate pe servicii – o pagină HTML este descărcată de pe server, care acționează ca un container pentru codul JavaScript pentru a adresa un anumit serviciu web și pentru a prelua numai date comerciale. Datele sunt utilizate de aplicația JavaScript autonomă, care generează conținutul HTML al paginii.

De asemenea, este posibilă implementarea arhitecturii hibride pentru a îndeplini cerințele specifice ale afacerii. Arhitectura acestei colecții de funcții interactive legate logic poate consta dintr-o serie de componente, inclusiv –

Funcționalitatea aplicațiilor de afaceri

Securitate

Browsere, cum ar fi Internet Explorer

Funcția E-Mail

Forumuri sau buletine de știri

Publicitate personalizată

Aplicațiile Web sunt viitorul

Aplicațiile web pot fi personalizate și adaptate în scopuri comerciale, cum ar fi software-ul contabil, sistemele de mementouri, formularele de comandă și urmărirea vânzărilor pentru eficiența economiei de timp. Aplicațiile web pot fi, de asemenea, proiectate pentru a consolida comunicarea internă și externă și pentru a îmbunătăți furnizarea și distribuirea datelor. Aplicațiile web avansate sunt acum disponibile ca portaluri online și eCommerce, care oferă conținut și funcționalitatea căutării, adăugării în coș și tranzacțiilor financiare online. Majoritatea proprietarilor de afaceri înțeleg valoarea site-urilor Web

2.5 Arhitectura aplicațiilor web: definiție, modele, tipuri și altele

Internetul nu se mai referă la pagini web statice și timpi de încărcare mai lungi. De-a lungul timpului, Internetul a făcut o schimbare spre angajarea activă a utilizatorilor, precum și o funcționalitate extinsă prin intermediul aplicațiilor web pline de viziune și puternice.

O aplicație web este la fel ca o aplicație obișnuită pentru calculator, cu excepția faptului că funcționează pe Internet. Pe măsură ce toată lumea se află pe web în aceste zile, majoritatea dezvoltatorilor încearcă să beneficieze de aplicații web și să atragă cât mai mulți utilizatori posibil prin ofertele potrivite.

Înainte de a vă aventura pe un proiect de dezvoltare a aplicațiilor web, este important să alegeți tipul de arhitectură pentru aplicații web, precum și modelul componentelor aplicației web. Realizarea opțiunilor corecte este importantă pentru succesul unei aplicații web.

2.6 Definiția arhitecturii aplicației web

Arhitectura aplicației web descrie interacțiunile dintre aplicații, baze de date și sisteme middleware de pe web. Se asigură că mai multe aplicații funcționează simultan.

De îndată ce utilizatorul apasă butonul "go", după ce a introdus o adresă URL în bara de adrese a unui browser web, acesta solicită respectiva adresă web. Serverul trimite fișiere în browser ca răspuns la cererea făcută. Browserul execută acele fișiere pentru a afișa pagina solicitată.

În cele din urmă, utilizatorul poate interacționa cu site-ul web. Cel mai important lucru pe care trebuie să-l observăm aici este codul analizat de browserul web. O aplicație web funcționează într-un mod similar.

Acest cod ar putea sau nu să aibă instrucțiuni specifice care să-i spună browserului cum să răspundă la diferitele tipuri de intrări de utilizator.

Prin urmare, o arhitectură de aplicații web trebuie să includă toate subcomponentele, precum și schimburile de aplicații externe pentru întreaga aplicație software, în cazul menționat mai sus, care este un site web.

Arhitectura aplicațiilor web este indispensabilă în lumea modernă, deoarece o mare parte din traficul de rețea global, precum și majoritatea aplicațiilor și dispozitivelor, utilizează comunicarea bazată pe web.

O arhitectură de aplicații web trebuie să se ocupe nu numai de eficiență, ci și de fiabilitate, scalabilitate, securitate și robustețe.

2.7 Cum functioneazã?

Cu orice aplicație web tipică, există două coduri diferite (subprograme) care rulează una lângă alta. Acestea sunt:

Cod client – cod => care se află în browser și răspunde la unele intrări de utilizator

Cod Server – Cod => Codul care se află pe server și răspunde la cererile HTTP

Un dezvoltator de web (echipa) care dezvoltă aplicația web decide cu privire la ceea ce va face codul de pe server cu privire la codul din browser. Pentru scrierea codului de pe server se utilizează C #, Java, JavaScript, Python, PHP, Ruby etc.

Orice cod care este capabil să răspundă la cererile HTTP are capacitatea de a rula pe un server. Codul de pe server este responsabil pentru crearea paginii pe care utilizatorul o solicită, precum și pentru stocarea diferitelor tipuri de date, inclusiv a profilurilor utilizatorilor și a datelor introduse de utilizatori. Nu este văzut niciodată de utilizatorul final.

O combinație de CSS, HTML și JavaScript este folosită pentru scrierea codului de pe partea clientului. Acest cod este analizat de browserul web. Spre deosebire de codul de pe server, codul de pe partea clientului poate fi văzut și modificat de utilizator. Reacționează la intrarea utilizatorului.

Codul clientului comunică doar prin intermediul cererilor HTTP și nu poate citi direct fișiere de pe un server.

2.8 Componente pentru aplicații web

Când spunem componente ale aplicațiilor web, putem spune oricare dintre următoarele două:

UI / UX Componente pentru aplicații web – Acestea includ jurnale de activitate, tablouri de bord, notificări, setări, statistici etc. Aceste componente nu au nimic de-a face cu funcționarea unei arhitecturi de aplicații web. În schimb, ele fac parte din planul de aspect al interfeței unei aplicații web.

Componentele structurale – Cele două componente structurale importante ale unei aplicații web sunt partea clientului și a serverului.

Componenta clientului – Componenta client este dezvoltată în CSS, HTML și JS. Întrucât există în browser-ul web al utilizatorului, nu este nevoie de ajustări legate de sistemul de operare sau de dispozitiv. Componenta client este o reprezentare a funcționalității unei aplicații web la care interacționează utilizatorul final.

Server Component – Componenta server poate fi construită folosind una sau o combinație de mai multe limbi de programare și cadre, inclusiv Java, .Net, NodeJS, PHP, Python și Ruby on Rails. Componenta server are cel puțin două părți; logica aplicațiilor și baza de date. Primul este principalul centru de control al aplicației web, în ​​timp ce acesta din urmă este locul în care sunt stocate toate datele persistente.

Modele de componente ale aplicațiilor web

În funcție de numărul total de servere și baze de date utilizate pentru o aplicație web, se decide modelul unei aplicații web. Poate fi oricare dintre următoarele trei:

Un server Web, o bază de date

Acesta este modelul cel mai simplu și cel mai puțin fiabil pentru componentele aplicației web. Un astfel de model utilizează un singur server, precum și o singură bază de date. O aplicație web care se bazează pe un astfel de model va scădea de îndată ce serverul va coborî. Prin urmare, nu este foarte fiabil.

Un server web, un model de componentă de aplicație web pentru baza de date nu este folosit în mod obișnuit pentru aplicații web reale. Este folosită în principal pentru derularea proiectelor de testare, precum și cu scopul de a învăța și de a înțelege fundamentele aplicației web.

Servere multiple pe Web, o bază de date (la o mașină mai degrabă decât serverul Web)

Ideea cu acest tip de model de aplicație web este că serverul web nu stochează date. Când serverul web primește informații de la un client, acesta procesează același lucru și apoi îl scrie în baza de date, care este gestionată în afara serverului. Aceasta este uneori menționată și ca o arhitectură apatridă.

Cel puțin 2 servere web sunt necesare pentru acest model component de aplicație web. Acest lucru este doar pentru a evita eșecul. Chiar și atunci când unul dintre serverele web coboară, celălalt va prelua sarcina.

Toate cererile făcute vor fi redirecționate automat către noul server și aplicația web va continua executarea. Prin urmare, fiabilitatea este mai bună comparativ cu singurul server cu model de bază de date inerent. Cu toate acestea, dacă baza de date se blochează, aplicația web va urma pentru a face același lucru.

Server multiplu Web, baze de date multiple

Este cel mai eficient model de componentă a aplicației web pentru că nici serverele web și nici bazele de date nu au un singur punct de eșec. Există două opțiuni pentru acest tip de model. Fie să stocați date identice în toate bazele de date folosite, fie să le distribuiți în mod egal între ele.

Nu sunt solicitate mai mult de 2 baze de date, de obicei pentru primul caz, în timp ce pentru ultimul caz, unele date ar putea deveni indisponibile în scenariul unui accident de baze de date. Standardizarea DBMS este utilizată, totuși, în ambele scenarii.

Atunci când scara este mare, adică mai mult de 5 servere web sau baze de date sau ambele, este recomandat să instalați balansoare de încărcare.

2.9 Tipuri de arhitectură de aplicații web

O arhitectură de aplicații web este un model de interacțiune între diferitele componente ale aplicațiilor web. Tipul de arhitectură a aplicației web depinde de modul în care logica aplicației este distribuită între părțile clientului și server.

Există trei tipuri principale de arhitectură de aplicații web. Fiecare dintre ele este explicată după cum urmează:

Aplicații cu o singură pagină (SPA) – În loc să încărcați pagini complet noi de pe server de fiecare dată pentru o acțiune a utilizatorilor, aplicațiile web cu o singură pagină permit o interacțiune dinamică prin furnizarea de conținut actualizat la pagina curentă.

AJAX, o formă concisă de JavaScript și XML asincron, este fundația pentru permiterea comunicațiilor paginilor și, prin urmare, transformarea APS într-o realitate. Întrucât aplicațiile de o singură pagină împiedică întreruperile în experiența utilizatorilor, ele seamănă într-un fel cu aplicațiile desktop tradiționale.

SPA-urile sunt concepute astfel încât să solicite cele mai multe elemente de conținut și informații necesare. Acest lucru duce la achiziționarea unei experiențe intuitive și interactive a utilizatorului.

Microservices – Acestea sunt servicii mici și ușoare care execută o singură funcționalitate. Cadrul de arhitectură Microservices are o serie de avantaje care îi permit dezvoltatorilor să sporească nu numai productivitatea, ci și să accelereze întregul proces de implementare.

Componentele care formează o aplicație care utilizează arhitectura Microservices nu sunt direct dependente una de cealaltă. Ca atare, ele nu necesită construirea folosind același limbaj de programare.

Prin urmare, dezvoltatorii care lucrează cu Arhitectura Microservices sunt liberi să aleagă un set de tehnologie de alegere. Aceasta face ca dezvoltarea aplicației să fie mai simplă și mai rapidă.

Serverless Architectures – În acest tip de arhitectură de aplicații web, un dezvoltator de aplicații consultă un furnizor de servicii de infrastructură a cloud-ului terț pentru externalizarea serverului, precum și gestionarea infrastructurii.

Beneficiul acestei abordări este că permite aplicațiilor să execute logica codului fără a se deranja cu sarcinile legate de infrastructură.

Arhitectura fără server este cea mai bună atunci când compania de dezvoltare nu dorește să gestioneze sau să sprijine serverele, precum și hardware-ul pentru care au dezvoltat aplicația web.

Cap.3 – Realitatea virtuala (VR)

3.1 Introducere

Unity este platforma de top in dezvoltarea experientelor realitatii mixte pentru că ofera un canal foarte generos pentru lucrul cu aseturi 3D. Utilizând o abordare practică, bazată pe proiect, această cale de învățare ne informează despre specificul dezvoltării AR și VR folosind Unity 2018 și Unity 3D. Aceasta ne învață să integrăm, sa animăm și să suprapunem obiecte 3D pe cameră, înainte de a trece la implementatea aplicațiilor AR bazate pe senzori.

Învățăm să explorăm diverse concepte prin crearea de aplicații AR utilizând Vuforia atât pentru macOs cât și pentru dispozitivele Android și iOS. Ne învață cum să dezvoltăm aplicațiile VR care pot fi experimentate cu dispozitive, cum ar fi Oculus și Vive. De asemenea putem explora diverse utilități pentru dezvoltarea VR: intrări controlate manual versus control vizual, pânze-tablou UI “world space”, teleportare, animația si retele multiplayer, învățăm motorul de jocuri Unity 3D prin Unity Editor si programarea C#.

Realitatea virtuala (VR) se refera la simularea 3D, realisă și imersivă, a unui mediu. Această simulare este generată cu jutorul software-ului și hardware-ului interactiv și este controlată de vocea, gesturile, privirea sau mișcările corpului utilizatorului. Predecesorele sistemelor VR actuale se numeau stereoscoape și au fost inventate în sec al XIX-lea de către Sir Charles Wheatstone, David Brewster și Oliver Wendell Holmes, care le-au dezvoltat independent (http://bit.ly/stereoscopes). La inceputul secolului al XX-lea, ideile lor au fost extinse de către Sawyer Service Inc. pentru a dezvolta View-Master (http://bit.ly/viewmaster_sawyer).

Nintendo a făcut progrese semnificative în VR prin introducerea consolei de jocuri VR-enabled Virtual Boy în 1995 (http://bit.ly/virtual-boy). Virtual Boy a venit echipat cu un system de control și vizualizare care, ca și stereoscoapele și View-Master, generau o pereche stereo de imagini. Aceste imagini, numite stereopair, creau iluzia de profunzime a imaginii 3D. În 1989, o companie numită VPL Research a mers chiar mai departe și a dezvoltat o cască VR ca parte a unui costum întreg care conținea senzori de măsurare a mișcărilor corpului. Acesta îl scoate pe utilizator și mai mult în simularea VR. Deși aceste dispozitive VR nu au avut succes comercial, ele sunt precursorii căștilor VR moderne.

3.2 Stereoscopia

Stereoscopia oferă două imagini bidimensionale ale aceluiași mediu. Aceste imagini diferă ușor una de cealaltă și sunt prezentate independent pentru ochiul drept și pentru cel stâng. Creierul combină imaginile pentru a da senzația de adâncime/ profunzime într-un plan 2D și pentru a crea scena virtuală 3D. Cel mai simplu mod de a percepe acest efect este să ținem degetul mare de la mana la cativa centimetri de față în dreptul ochilor și să clipim alternativ cu ochiul drept și cu cel stâng. Observăm cum poziția degetului pare a fi diferită pentru ochiul drept față de cel stâng, poziția corectă restabilindu-se atunci când deschidem ambii ochi. Așa funcționează stereoscopiei.

În prezent, observăm o revenire rapidă a VR. În ultimii ani, Facebook a achiziționat o companie numita Oculus pentru a continua să dezvolte tehnologia căștilor VR, HTC a lansat pe piață setul cu cască Vive, Sony a creat PlayStation VR și Google a lansat Cardboard, bazat pe View-Master, pentru a permite utilizatorului să converteasca aproape orice smartphone într-o cască VR. Octombrie 2017 a adus lansarea a numeroase căști noi dedicate pentru Windows Mixed Reality. (Acestea sunt descrise în detaliu în urmatoarea secțiune.)

3.3 Ce este realitatea virtuala?

Astăzi suntem martorii dezvoltării rapide a consumatorului de realitate virtuala, o tehnologie interesantă care promite să transformăm într-un mod fundamental modul în care interacționăm cu informațiile, prietenii noștri și lumea în general.

Ce este realitatea virtuală? În linii mari, VR este simularea generată de calculator a unui mediu 3D, care pare foarte real pentru persoana care o experimentează, utilizând echipamente electronice speciale. Obiectivul este acela de a obține un sentiment puternic de a fi prezent în mediul virtual.

Tehnologia VR a consumatorilor de astăzi implică purtarea unei HMD (ochelari-ecran montați pe cap) pentru a vedea scene 3D stereoscopice. Poți privi în jur prin mișcarea capului și te poți deplasa utilizând comenzi manuale sau senzori de mișcare. Ești prins într-o experiență complet imersivă, este ca și când ai fi într-o altă lume virtuală.

Rift Development Kit 2 (DK2) în 2015:

Realitatea virtuală nu este nouă, a fost aici de zeci de ani, chiar dacă ascunsă în laboratoarele de cercetare academică și în instalațiile industriale și militare de ultimă generație. Ivan Sutherland a inventat primul HMD în 1965 (a se vedea https: // amturing.acm.org / photo / sut he r land_3467412.cfm). În trecut, s-au făcut mai multe încercări eșuate de a aduce pe piață produse de realitate virtuală VR la un nivel accesibil consumatorului obișnuit.

În 2010, Palmer Luckey, fondatorul companiei Oculus VR LLC, a făcut o demonstrație a unui display VR improvizat lui John Carmack, cunoscutul dezvoltator al jocurilor video Doom, Wolfenstein 3D și a jocurilor video Quake.

Împreună, au susținut o campanie Kickstarter de succes și au lansat un kit de dezvoltare numit Oculus Rift Development Kit 1 (DK1) pentru o comunitate entuziastă. Acest lucru a atras atenția investitorilor, precum și lui Mark Zuckerberg, iar în martie 2014, Facebook a cumpărat compania pentru 2 miliarde de dolari.

Fără produs, fără clienți, doar cu o promisiune uriașă, banii și atenția pe care au atras-o au alimentat crearea unei noi categorii de produse de consum. În același timp, alții lucrează și la propriile produse care au fost introduse în curând pe piață, printre care HTC VIVE, Google Daydream, Sony PlayStation VR, Samsung Gear VR, imersivă realitate mixtă a Microsoft și multe altele. Noi inovații și dispozitive care îmbunătățesc experiența VR continuă să apară pe piață.

Actuala generație de software 3D dezvoltare (comercială, gratuită și din sursă deschisă), care a generat o mulțime jocuri, poate fi de asemenea folosită pentru a construi aplicații VR non-game.

Deși VR găsește cei mai mulți entuziaști în comunitatea de jocuri, potențialul aplicațiilor depașește cu mult acest nivel. Orice afacere care utilizează în prezent modele 3D și grafică pe calculator va fi mai eficientă dacă utilizează tehnologia VR. Sensul prezenței imersive oferit de VR poate îmbunătăți astăzi experiențele online comune, care includ ingineria, rețelele sociale, cumpărăturile, marketingul, divertismentul și dezvoltarea afacerilor. În viitorul apropiat, vizionarea site-urilor 3D cu setul cu cască VR poate fi la fel de obișnuită ca și vizitarea site-urilor obișnuite plate de astăzi.

Orice afacere care utilizează în prezent modele 3D și grafică pe calculator va fi mai eficientă dacă utilizează tehnologia VR. Sensul prezenței imersive oferit de VR poate îmbunătăți astăzi experiențele online comune, care includ ingineria, rețelele sociale, cumpărăturile, marketingul, divertismentul și dezvoltarea afacerilor. În viitorul apropiat, vizionarea site-urilor 3D cu o cască VR poate fi la fel de obișnuită precum navigarea pe site-urile obișnuite de astăzi.

3.4 Tipuri de afișare/ display-uri montate pe cap

În prezent, există două categorii de bază ale HMD-urilor pentru realitatea virtuală – desktop VR și VR mobile, deși deosebirile dintre ele se estompeaza din ce in ce mai mult. În cele din urmă, am putea pur și simplu să vorbim despre platforme pe măsură ce facem computerele tradiționale, în ceea ce privește sistemul de operare – Windows, Android sau VR consola.

3.5 Desktop VR

Cu desktop-ul VR (și consola VR), setul cu cască este periferic pentru un computer mai puternic, care procesează grafica mai complexă. Computerul poate fi un PC cu Windows, Mac, Linux sau o consolă de jocuri, deși Windows este de departe cel mai remarcabil PC, iar PS4 este un bestseller în ceea ce privește consola VR.

Adesea, casca este conectat la calculator cu fire, jocul rulează pe PC și HMD este un dispozitiv de afișare periferic cu o intrare de detectare a mișcării. Termenul desktop este nefericit ales deoarece este la fel de probabil să fie așezat fie într-o cameră de zi, fie într-o peșteră.

3.6 VR mobil

VR Mobile își are originea din Google Cardboard (https: //vr google. com/cardboard/), o carcasă simplă cu 2 lentile și un slot pentru telefonul mobil. Ecranul telefonului este utilizat pentru a afișa vederile stereoscopice duble. Cardboard-ul oferă utilizatorului posibilitatea de a face click sau de a tasta pe o latura pentru a face selecții într-un joc. Complexitatea imaginilor este limitată deoarece utilizează procesorul telefonului pentru redarea imaginilor pe ecranul telefonului.

Google Daydream și Samsung GearVR au îmbunătățit platformele, cerând un minim de specificații, inclusiv o putere de procesare mai mare a telefonului mobil. Căștile GearVR includ senzori de mișcare pentru a ajuta dispozitivul telefonului. Aceste dispozitive au introdus, de asemenea, un controler manual cu trei grade de libertate (DOF) care poate fi utilizat ca un pointer cu laser în cadrul experiențelor VR.

Următoarea generație de dispozitive mobile VR include setul cu cască all-in-one, cum ar fi Oculus Go, cu ecrane încorporate și procesoare, eliminând nevoia unui telefon mobil separat. Modelele mai noi pot include senzori de profunzime și procesoare de mapare spațială pentru a urmări locația utilizatorului în spațiul 3D.

Cele mai recente inovații din AR sunt căștile AR care pot fi purtate, cum ar fi HoloLens și Magic Leap ale Microsoft, care prezintă grafica computerului direct în câmpul vizual. Grafica nu este amestecată într-o imagine video. În cazul în care căști VR sunt ca ochelarii cu doze, căștile AR sunt ca ochelarii de soare transparenți care combină razele de lumină din lumea reală cu CGI. O provocare pentru AR este să se asigure de faptului că CGI este perfect aliniat și cartografiat în mod constant pe obiectele din spațiul din lumea reală și să elimine latența în timp ce se deplasează astfel încât ei (CGI și obiectele din spațiul, din lumea reală să rămână aliniate.

AR promite la fel de mult ca VR pentru aplicațiile viitoare, însă este diferită. Deși AR intenționează să îl prindă pe utilizator în mediul actual, realitatea virtuală este pe deplin imersivă. În AR, poți deschide mâna și să vezi acolo o cabană de lemn însă în VR, ești transportat direct în interiorul cabanei și te poți plimba în interiorul acesteia.

De asemenea, începem să vedem dispozitive hibride care combină caracteristicile VR cu cele AR având posibilitatea de a comuta între cele două moduri.

Cap.4 – ARCore

4.1 Realitatea expusă/ amplificata și ARCore

Aplicațiile, realității augmentate sunt unice prin faptul că adnotă sau sporesc realitatea utilizatorului. Acest lucru se realizează, de obicei vizual, prin faptul că aplicația AR acoperă o imagine a lumii reale cu grafică pe calculator. ARCore este conceput în primul rând pentru furnizarea acestui tip de adnotare vizuală pentru utilizator.

Un exemplu de aplicație demo

Imaginea de ecran este chiar mai impresionantă atunci când realizezi faptul că a fost redată în timp real pe un dispozitiv mobil. Nu este rezultatul unor ore minuțioase de folosire a Photoshop-ului sau a altor librării de efecte media. Ceea ce se în imagine este o întreagă suprapunere a unui obiect virtual, leul, în realitatea utilizatorului. Mai impresionantă este calitatea imersiunii. Observați detaliile, cum ar fi luminile și umbrele leului, umbrele de pe jos și modul în care obiectul își menține poziția în realitate, chiar dacă, el nu este cu adevărat acolo. Fără aceste îmbunătățiri vizuale, tot ce s-ar vedea este un leu plutitor suprapus pe ecran. Sunt acele detalii vizuale care oferă imersia. Google a dezvoltat ARCore ca o modalitate de a-l ajuta pe utilizator să integreze acele îmbunătățiri vizuale în construirea aplicațiilor AR.

Google a dezvoltat ARCore pentru Android drept o modalitate de a concura cu ARKit pentru iOS lansat de Apple. Faptul că doi dintre cei mai mari giganți de tehnologie de astăzi se luptă pentru poziția în AR indică împingerea pentru a construi noi și inovatoare aplicații imersive.

ARCore își are originea în Tango, care este / a fost un set de instrumente AR mai avansate care utiliza senzori speciali încorporați în dispozitiv. Pentru a face AR mai accesibil și mai de actualitate, Google a dezvoltat ARCore ca un set de instrumente AR destinat dispozitivelor Android care nu sunt echipate cu senzori speciali.

În vreme ce Tango depinde de senzori speciali, ARCore folosește software pentru a încerca și pentru a realiza aceleași îmbunătățiri de bază. Pentru ARCore, Google a identificat trei domenii de bază pentru a aborda acest set de instrumente și acestea sunt următoarele:

Urmărirea mișcării

Înțelegerea mediului

Estimarea luminii

Urmărirea mișcării

Urmărirea mișcării unui utilizator și în cele din urmă, poziția acestuia în spațiul 2D și 3D este fundamentală pentru orice aplicație AR. ARCore ne permite să urmărim schimbările de poziție prin identificarea și urmărirea punctelor vizuale din imaginea camerei dispozitivului.

Un exemplu despre cum funcționează acest lucru este prezentat în această figură:

În imagine vedem modul în care se urmărește poziția utilizatorului în raport cu punctele caracteristice identificate pe canapeaua reală. Anterior, pentru a urmări cu succes mișcarea (poziția), trebuia să preînregistrăm sau să pre-pregătim punctele noastre de caracteristică. Dacă ați folosit vreodată instrumentele Vuforia AR, veți fi foarte familiarizați cu trenul de a antrena imagini sau marcaje țintă.

Acum, ARCore face toate acestea automat pentru noi, în timp real, fără nicio pregătire. Cu toate acestea, tehnologia de urmărire este foarte nouă și are mai multe limitări.

Înțelegerea mediului

Cu cât o aplicație AR înțelege mai bine realitatea utilizatorului sau mediul înconjurător, cu atât mai reușită este imersiunea. Totuși, urmărirea mișcării este doar primul pas, avem nevoie de o modalitate de a identifica obiectele fizice sau suprafețele din realitatea utilizatorului. ARCore face acest lucru folosind o tehnică numită meshing.

Ceea ce vedem în imaginea de mai sus este o aplicație AR care a identificat o suprafață a lumii reale prin mashing. Planul este identificat de punctele albe, în fundal, se poate vedea cum utilizatorul a plasat deja câteva obiecte virtuale. Înțelegerea și comportamentul de mediu sunt esențiale pentru crearea iluziei realităților amestecate. În cazul în care urmărirea mișcării utilizează caracteristici identificate pentru a urmări poziția utilizatorului, înțelegerea de mediu utilizează interfața pentru a urmări obiectele virtuale în realitatea utilizatorului.

Estimarea luminii

Magicienii lucrează pentru a fi maeștri ai trădării și ai iluziei vizuale. Ei înțeleg că perspectiva și o lumină bună sunt esențiale în prezentarea unei iluzii, iar în dezvoltarea de aplicații AR, acestea nu fac excepșie. Dacă pentro o secundă revenim la scenă cu leul virtual ceea ce am reținut au fost luminile și detaliile din umbrele leului și ale solului. Am observat faptul că leul aruncă o umbră pe pământ, chiar dacă nu este acolo? Acest nivel suplimentar al detaliilor pe lumini este posibil numai prin combinarea urmăririi poziției utilizatorului cu înțelegerea de mediu a poziției obiectului virtual și a modului de a citi nivelele de lumină. Din fericire, ARCore ne oferă o modalitate de a citi sau de a estima lumina într-o scenă, apoi putem folosi aceste informații pentru a lumina sau a umbri obiecte virtuale AR.

4.2 ARCore pe Android

Google a dezvoltat ARCore pentru a fi accesibil din mai multe platforme de dezvoltare (Android [Java], Web [JavaScript], Unreal [C-H-] și Unity [C #]), oferind dezvoltatorilor o flexibilitate și multe opțiuni pentru a construi aplicații pe diverse platforme.

În timp ce fiecare platformă are puncte tari și puncte slabe și toate platformele sunt extensii, în esență, de pe Android SDK, care a fost inițial construit ca Tango, acest lucru înseamnă că, indiferent de alegerea platformei, va trebui să instalam și să fim oarecum familiarizați cu instrumentelor de dezvoltare Android.

Android Studio este un mediu de dezvoltare pentru codarea și implementarea aplicațiilor Android. Ca atare, acesta conține setul de instrumente de bază necesare pentru construirea și implementarea aplicațiilor noastre pe un dispozitiv Android. La urma urmei, ARCore trebuie să fie instalat pe un dispozitiv fizic pentru a fi testat. Android Studio este încorporat în OpenJDK, acest lucru înseamnă că putem omite pașii de instalare a Java, cel puțin pe Windows. Dacă faceți o dezvoltare serioasă a aplicației Android, din nou pe Windows, trebuie să parcurgeți pașii pe cont propriu pentru a instala versiunea completă Java JDK 1.7 și / sau 1.8, mai ales dacă intenționați să lucrați cu versiuni mai vechi de Android.

4.3 ARCore privind unitatea

Următoarea platformă de care ne vom ocupa este Unity. Unity este un motor de căutare cross-platform, care este extrem de ușor de utilizat pentru a construi rapid aplicații grafice și jocuri ARCore pe Unity

Unity a căpătat în ultimi ani o reputație proastă datorită utilizării excesive de jocuri de slabă calitate și nu pentru că Unity putea produce jocuri de calitate bună, pentru că poate, cu siguranță, datorită suprautilizării sale în jocuri de calitate slabă. Cu toate acestea, capacitatea de a crea jocuri rapid devine adesea abuzată de dezvoltatorii care doresc să lanseze jocuri ieftine pentru profit.

4.4 ARCore pe web

Înainte, cele mai multe dezvoltării AR trebuiau să fie facute pe o aplicație originală. Ca excepție, odată cu apariția ARCore, Google a adăugat suport pentru dezvoltarea AR pe web, ceea ce permite utilizatorilor să acceseze aplicațiile AR printr-un browser.

Desigur, aplicațiile web AR nu pot fi niciodată la fel de robuste sau bogate ca o aplicație similară realizată cu Android sau Unity. Cu toate acestea, ARCore își extinde suportul browser pentru a include iOS și Android. Deci, dacă aveți nevoie de o aplicație AR cross-platform, atunci probabil că doriți să vă concentrați pe dezvoltarea web-ului ARCore.

4.5 Instalarea Node.js

Spre deosebire de alte platforme, nu este nevoie să instalați nimic mai mult pe dispozitiv pentru a utiliza o aplicație web AR. Cu toate acestea, avem nevoie de o modalitate de a servi paginile noastre de aplicații web pe un dispozitiv.

De obicei, acest lucru se face cu un server web, cum ar fi IIS, Tomcat, Jetty, Node sau altele. Pentru scopul nostru, avem nevoie doar de un simplu server FITTP pentru a servi conținut HTML static. Din fericire, Nodul oferă un pachet doar pentru rularea unui server HTTP simplu dintr-un dosar. Pentru a obține acest pachet, trebuie mai întâi să instalăm nodulARCore pe net

Node.js este un timp de lucru ușor, fără blocare și bazat pe evenimente JavaScript, construit în partea de sus a runtime-ului JavaScript Chrome. A devenit extrem de popular datorită bibliotecii sale masive de module sau pachete. Instalăm Node.js doar pentru a folosi un pachet Node.js..

4.6 3D si trei.js

Trăim într-o lume 3D. Prin urmare, pentru a ne păcăli convingător utilizatorii să creadă că realitatea lor este amplificată sau modificată, trebuie să lucrăm cu lumea lor în trei dimensiuni. Acum, fiecare dintre platformele cu care lucrăm (web, Android și Unity), toate au motoare 3D pe care le vom folosi. În cazul Unității, este motorul 3D și, fără îndoială, cel mai ușor de folosit cu puțin sau fără programare sau cunoștințe matematice necesare. Android și OpenGL ES sunt o secundă îndepărtată, deoarece vor necesita cunoștințe de matematică 3D. A treia și ultima opțiune este motorul nostru 3D pentru web, care va fi de trei. js bibliotecă. Cele trei.js vor fi cea mai dificilă platformă de lucru cu 3D, ceea ce face ca candidatul nostru perfect să începem. Platforma Unreal, așa cum am menționat mai sus, este o altă opțiune platformă ARCore..

Unreal este similara cu Unity în ceea ce privește faptul că oferă instrumente foarte bune de lucru în 3D, cu toate că aceste instrumente sunt mai tehnice și vor necesita întelegerea matematicii 3D pentru a reusi.

Cap.5 – Unity

5.1 Introducere

Unity este un motor de joc pe mai multe platforme dezvoltat de Unity Technologies, anunțat pentru prima oară în iunie 2005 la Conferința Mondială a dezvoltatorilor Apple Inc., ca motor de joc exclusiv pentru Mac OS X.

Începând cu anul 2018, motorul a fost extins pentru a susține mai mult de 25 de platforme. Motorul poate fi folosit pentru a crea jocuri tridimensionale, bidimensionale, realitate virtuală și realitate augmentată, precum și simulări și alte experiențe. Motorul a fost adoptat de industrii în afara jocurilor video, cum ar fi filmul, automobilele, arhitectura, ingineria și construcția.

Mai multe versiuni majore ale Unity au fost lansate de la lansarea sa. Ultima versiune stabilă, 2019.1.7, a fost lansată în iunie 2019.

Unity lansat în 2005, având ca scop "democratizarea" dezvoltării jocului, făcând-o accesibilă mai multor dezvoltatori. În anul următor, Unity a fost numită "runner-up" în categoria "Cea mai bună utilizare a categoriei Mac OS X" în cadrul Apple Design Awards pentru Apple Inc. Unity a fost lansată inițial pentru Mac OS X, adăugând ulterior suport pentru browserele Microsoft Windows și Web.

Unity 2.0 a fost lansată în 2007, cu aproximativ 50 de caracteristici noi. Versiunea a inclus un motor de teren optimizat pentru medii 3D detaliate, umbre dinamice în timp real, lumini direcționale și spoturi, redare video și alte caracteristici. Versiunea a adăugat, de asemenea, caracteristici prin care dezvoltatorii ar putea colabora mai ușor. Acesta a inclus un strat de rețea pentru dezvoltatori pentru a crea jocuri multiplayer bazate pe User Datagram Protocol, care oferă traducerea adreselor de rețea și sincronizarea de stat și procedurile de la distanță.

Când Apple a lansat App Store în 2008, Unity a adăugat rapid suport pentru iPhone. De mai mulți ani, motorul a fost necontestat pe iPhone și a devenit bine cunoscut cu dezvoltatorii de jocuri iOS.

3.0 a lansat în septembrie 2010 caracteristici care extind caracteristicile grafice Unity ale motorului pentru computerele desktop și consolele de jocuri video. În plus față de suportul pentru Android, Unity 3 a inclus integrarea utilitarului Iluminate Labs Lighthouse Lightmap, redarea retrospectivă, editorul de copaci încorporat, redarea fonturilor native, maparea automată UV și filtrele audio, printre altele.

În 2012, VentureBeat a scris: "Puține companii au contribuit la fel de mult la fluxul de jocuri produse independent ca Unity Technologies. […] Peste 1.3 milioane de dezvoltatori folosesc instrumentele pentru a crea grafică în iOS, Android, consola, PC-uri și jocuri pe bază de web. […] Unity vrea să fie motorul jocurilor multi-platformă.

"Un sondaj din mai 2012, realizat de revista Game Developer, a indicat Unity ca motor de joc de top pentru platforme mobile. În iulie 2014, Unity a câștigat premiul "Cel mai bun motor" la Premiile Excel Industry Excellence Awards din Marea Britanie. În noiembrie 2012, Unity Technologies a livrat Unity 4.0. Această versiune a adăugat suportul DirectX 11 și Adobe Flash, instrumente noi de animație numite Mecanim și accesul la previzualizarea Linux.

Facebook a integrat un kit de dezvoltare software pentru jocuri care utilizează motorul de joc Unity în 2013. Aceste instrumente au permis căutarea campaniilor publicitare de urmărire și legături profunde, în care utilizatorii au fost direct conectați din posturile social media la porțiuni specifice din cadrul jocurilor și imagini simple în joc partajare. În 2016, Facebook a dezvoltat o nouă platformă de jocuri pentru PC cu Unity. Unity a oferit suport pentru platformele de jocuri Facebook, iar dezvoltatorii Unity ar putea să exporte mai repede și să publice jocuri pe Facebook.

Verge a spus despre versiunea Unity 5 a anului 2015:

"Unity a început cu scopul de a face dezvoltarea jocului universal accesibilă. […] Unity 5 este un pas mult așteptat spre acest viitor". Cu Unity 5, motorul și-a îmbunătățit iluminarea și sunetul. Prin intermediul WebGL, dezvoltatorii Unity ar putea adăuga jocurile lor la browserele Web compatibile, fără plug-inuri necesare jucătorilor. Unity 5.0 a oferit o iluminare globală în timp real, previzualizări de cartografiere ușoară, Unity Cloud, un nou sistem audio și motorul de fizică Nvidia PhysX3.3.

Cea de-a cincea generație a motorului Unity a introdus de asemenea Cinematic Image Effects pentru a ajuta jocurile Unity să pară mai puțin generice. Unity 5.6 a adăugat noi efecte de iluminare și particule, a actualizat performanța generală a motorului și a adăugat suport nativ pentru Nintendo Switch, Facebook Gameroom, Google Daydream VR și graficul Vulkan API. Acesta a introdus un player video 4K capabil să ruleze videoclipuri de 360 ​​de grade pentru realitatea virtuală. Cu toate acestea, unii jucători au criticat accesibilitatea Unity din cauza volumului mare de jocuri produse rapid, publicate pe platforma de distribuție Steam de către dezvoltatori neexperimentați. CEO-ul John Riccitiello a declarat într-un interviu că consideră că acest lucru este un efect secundar al succesului Unității în democratizarea dezvoltării jocului:

"Dacă aș fi avut cale, aș vrea să văd 50 de milioane de oameni care folosesc Unity – deși nu cred vom ajunge acolo în curând, aș vrea să văd elevii de liceu și colegii care le folosesc, oameni din afara industriei de bază, cred că este trist faptul că majoritatea oamenilor sunt consumatori de tehnologie și nu creatori. locul unde oamenii stiu sa creeze, nu doar sa consume, si asta incercam sa promovam ".

În decembrie 2016, Unity Technologies a anunțat că va schimba sistemul de numerotare a versiunilor pentru Unity de la identificatori bazați pe secvență până la anul de lansare pentru a alinia versiunile cu cadența mai frecventă de lansare; Unity 5.6 a fost, prin urmare, urmată de Unity 2017.

Unity 2017 instrumente au prezentat un motor de redare grafice în timp real, clasificarea culoare și construirea de lumi, analiza operațiunilor live și raportarea performanțelor. Unity 2017.2 a subliniat planurile Unity Technologies dincolo de jocurile video. Acestea au inclus noi instrumente, cum ar fi Timeline, care le-au permis dezvoltatorilor să deseneze animații în jocuri și Cinemachine, un sistem inteligent de camere în cadrul jocurilor. Unity 2017.2 a integrat, de asemenea, uneltele 3DS Max și Maya de la Autodesk în motorul Unity pentru un proces de iterație îmbunătățit în timpul parcurgerii jocului.

Unity 2018 a prezentat Conducta Render Scriptable pentru dezvoltatori pentru a crea grafică de ultimă generație. Acesta a inclus Conducta de redare de înaltă definiție pentru console și PC-uri și Conducta de redare ușoară pentru realitate mobilă, realitate virtuală, realitate augmentată și realitate mixtă. Unity 2018 include, de asemenea, unelte de învățare automată, cum ar fi Imitation Learning, prin care jocurile învață din obiceiurile reale de jucător, suport pentru Magic Leap și șabloane pentru noii dezvoltatori.

5.2 Înțelegerea obiectelor și a componentelor jocului

În Unity, fiecare element dintr-o scenă, inclusiv iluminare, teren și caractere, este definit ca un obiect de joc. Un obiect de joc nu are proprietăți particulare și nu îndeplinește nicio funcție specifică până când nu îl adăugați cu o componentă. Componentele definesc proprietățile vizuale și funcționale pentru obiectele de joc. Fiecare obiect de joc are o componentă de transformare implicită, care determină poziția și dimensiunile obiectului de joc din scenă.

Configurarea ID-ului dvs. de unitate și conectarea Când rulați Unity Editor, se deschide caseta de dialog Sign In Your Unity ID. Înainte de a putea utiliza unity Editor, trebuie să creați un ID de unitate. Pentru a face acest lucru, faceți clic pe linkul Creați unul din partea de sus a casetei de dialog Sign In Your Unity ID. (Alternativ, utilizați acest link: http://bit.ly/unity_id.) Apoi, în caseta de dialog care apare, furnizați informațiile solicitate pentru a crea un ID de unitate. Aceasta include numele dvs., o adresă de e-mail validă și numele de utilizator și parola pe care doriți să le utilizați. De asemenea, trebuie să fiți de acord cu termenii de utilizare. (Pentru instrucțiuni pas cu pas, inclusiv capturi de ecran, consultați secțiunea http://bit.ly/unity_activation.)

După ce creați Unity ID, alegem o licență.

Unity oferă trei niveluri de licență:

Personal Unity – oferă această licență gratuit, cu condiția ca "compania dvs. să nu facă în prezent venituri brute anuale mai mari de 100.000 de dolari sau să nu fi ridicat fonduri peste limită". Această versiune conține toate modulele de bază. Cu toate acestea, nu puteți modifica ecranul de pornire pe care îl vede utilizatorul când se lansează aplicația. (Această licență a fost utilizată la scrierea acestei cărți.)

Plus – această licență costă 35 USD pe lună. Puteți utiliza această licență dacă compania dvs. câștigă "până la 200.000 de dolari în veniturile brute anuale". Pe lângă faptul că vă oferă acces la toate modulele de bază, această versiune oferă, de asemenea, mai multe pachete, care îmbunătățesc funcționalitatea Unity de bază și vă permit să modificați ecranul de pornire.

Pro – această licență costă 120 USD pe lună, dar permite o "venit nelimitat sau capacitate de strângere de fonduri". Această versiune extinde capacitățile versiunii Plus prin includerea de servicii suplimentare, cum ar fi analizele și vizualizările, precum și suportul premium. După ce vă creați unitatea de identitate și alegeți o licență, utilizați unitatea de identitate pentru a vă conecta la unitate.Veți vedea un ecran de întâmpinare ca cel din Figura 9-3. Acest ecran are două file:

Proiect – faceți clic pe această filă pentru a crea un nou proiect (făcând clic pe link-ul Nou în colțul din dreapta sus al ecranului) sau deschizând unul existent (făcând clic pe linkul Deschidere de lângă linkul Nou și selectând proiectul pe care doriți să-l creați deschis).

Learn – faceți clic pe această filă pentru a accesa linkurile către tutoriale, proiecte de instruire și resurse care vă pot ajuta să începeți să dezvoltați aplicații cu Unity.

5.3 Crearea unui nou proiect

Pentru a crea un nou proiect, urmați acești pași:

1. Faceți clic pe link-ul Nou în fila Proiecte.

2. Introduceți un nume pentru proiect în caseta Nume proiect. În acest caz, tastați UnityBasics.

3. Selectați butonul opțiune 3D.

4. Introduceți o locație pentru codul sursă al proiectului în caseta Locație.

5. Faceți clic pe butonul Creare proiect. După un moment, Editorul unității va fi deschis. (Vezi Figura 9-4.) Principalele componente ale editorului Unity sunt următoarele:

ș Toolbar

ș Hierarchy window

ș Scene view

ș Inspector window

ș Project window

Fereastra prezinta de asemenea o bara de meniu, aflata deasupra toolbar. Acest component este auto-explicativ si nu este prezentat cu mai multe detalii

Figura 3

Putem modifica configurația ecranului Unity editor pentru a-l adapta nevoilor noastre prin dragarea ferestrelor Hierarchy, Inspector și Project.

Bara Toolbar

Toolbar contine butoane care ne oferă acces rapid la cele mai importante facilități ale Unity Editor, respectiv:

ș Drag, Move, Rotate, Scale, si RectTransform – folosim aceste butoane pentru a poziționa obiecte în decor.

ș Gizmo toggles, aceste butoane, numite Center și Local în Figura 3, ne permite să comutăm poziția manetei gismo. Le vom folosi pentru a defini centrul unei transformări

ș Play, Pause și Step, folosim aceste butoane pentru a controla execuția aplicației noastre în modul play al editorului. Folosim acest mod pentru a previzualiza aplicația în editorul Unity.

ș Collab, cînd apăsăm acest buton, se deschide o fereastra pop-up, pe care o folosim pentru a controla Unity Collaboration. Unity Collaboration este un service cloud care ne permite să depunem proiectul în Cloud așa încât membrii echipei să poată observa rapid modificarile aduse și să-și sincronizeze munca cu a noastră.

ș Cloud, când apasam acest buton, se deschide o fereastră pop-up, unde putem configura servicii Unity precum Unity Ads, Unity Analytics, Unity Cloud Build și altele.

ș Account, apăsând acest buton, deschidem un meniu care ne ofera accesul la instrumente cu care să administrăm contul și licența.

ș Layers, apăsarea acestui buton deschide un meniu care conține stratele ce vor aparea pe Scene view

ș Layout, acest buton – numit Default in Figura 3 când îl acționăm deschidem un meniu cu opțiuni layout predefinite. Utilizăm această lista pentru a rearanja rapid ferestrele editorului Unity. Pentru a reface aranjamentul, selectăm optiunea Default.

Fereastra Hierarchy

Fereastra Hierarchy (uneori numită simplu Hierarchy) prezintă o listă a tuturor obiectelor din proiectul curent. Hierarchy este ca Solution Explorer din Visual Studio însă prezintă o lista a obiectelor care compun scenele, în locul fișierelor sursă care compun proiectele. Astfel, folosim fereastra Hierarchy cam în același fel în care utilizăm Solution Explorer.

În mod implicit, fereastra Hierarchy conține numai doua obiecte: o camera obiect principală și un obiect de directionare a luminii. Pentru a adăuga noi obiecte, folosim meniul ferestrei Hierarchy. Așa cum se prezintă în Figura 4, acest meniu conține o listă de obiecte încorporate, pe care le putem folosi pentru a extinde decorul prestabilit.

Figura 5.4

Scene View

Scene view este un component interactiv în care plasăm ăi poziționăm toate obiectele care compun aplicația. Urmăm pașii:

Adaugăm obiecte folosind fereastra Hierarchy.

Selectam obiectul folosind fereastra Hierarchy sau prin Scene view.

Poziționăm și transformăm obiectul folosind butoanele toolbar sau cu fereastra Inspector

Dacă comparăm succesiunea de operații Unity Edotor cu cea a Visual Studio, Scene view este ca un proiectant vizual care ne permite să folosim abordarea drag-and-drop pentru a defini stratul vizual al aplicaței.

Implicit, Scene view conține trei taburi. (În fapt, ele sunt ferestre separate pe care le putem mișca liber, însă eu voi face referire la ele ca fiind taburi aici.)

Scene, acest tab afișează modul scene preview, care conține un Scene gismo (în coltul dreapta sus) și o bară de control care va ajuta să vizualizați scena.

Game View, folosim acest tab pentru a vizualiza și test aplicația finală – de exemplu, dacă scripturile funcționează și dacă obiectele controlate se comportă conform așteptărilor.

Asset Store, acest buton deschide depozitul de articole. Aici se descarcă diverse articole (gratis sau achiziționate) pentru a putea începe construirea de medii consistente pentru aplicațiile Windows Mixed Reality. Scene Gizmo

Dupa cum se observă în Figura 5.6, scena gismo arată ca un cub cenușiu cu șase brațe conice care pornesc din centrul fiecarei laturi a cubului. Folosim scena gismo pentru a modifica unghiul de vizualizare și modul de proiecție, pentru a schimba unghiul de vizualizare, apasam pe unul din bratele conice. Sau, facem click dreapta pe scena gismo și alegem unghiul de vizualizare dorit din meniul care apare. (vezi figura 5.7) – pentru a reveni la unghiul inițial, facem click dreapta pe scena gismo și selectam Free. Pentru a schimba perspectiva, facem click dreapta pe scena gismo și dezactivam opțiunea Perspective pentru a activa modul Orthographic, cunoscut și ca Isometric, din meniul context. Putem să mai comutam modurile Perspective apasând pe Persp sau Iso de sub scena gismo.

Scena gizmo, fig.5.6

Meniul context al Scenei gismo – fig.5.7.

În afara de utilizarea scenei gismo pentru modificarea unghiului perspectivei, putem folosi mous-ul sau touchpad-ul. Pentru aceasta, apasam și mentinem tasta Alt în timp ce apasam și tragem cursorul. Putem utiliza și mous-ul sau touchpad-ul pentru a modifica zoom-ul prin utilizarea funcției scroll. Pentru a ne mișca pe ecran, putem folosi săgețile de pe tastatură. Sau, apasam butonul Drag din toolbar, are desenat pe el o mana sau apasam tasta Q de pe tastatura pentru a utiliza instrumentul Drag.

Bara de control

Bara de control, prezentata in Figura 5.8, include câteva setări pentru controlul vizualizării scenei.

Bara de control cu setarile Draw Mode – Fig.5.8

Bara de control include accesul la urmatoarele setari:

ș Draw Mode

ș View, lighting, and audio

ș Effects

ș Gizmos

Setarile Draw Mode

Setarile Draw Mode sunt împărțite pe câteva grupe. Cele mai importante pentru scopurile noastre sunt Shading Mode, Miscellaneous si Global Illumination.

Grupul Shading Mode are urmatoarele opțiuni

Shaded Clic pe aceasta optiune pentru a vizualiza suprafețele și texturile obiectului selectat.

Wireframe, apăsăm pe acest buton pentru a vizualiza o wireframe care redă obiectul selectat.

Shaded Wireframe, apăsăm pe această opțiune pentru a vizualiza suprafețele și texturile și o wireframe a obiectului selectat.

Fig. 5.9

O comparație a modurilor shading în redarea unei sfere: Umbrită (stanga), wireframe (mijloc) și wireframe umbrită (dreapta).

Grupul Miscellaneous are urmatoarele opțiuni (vezi fig. 5.10):

Shadow Cascades, selectam această opțiune pentru a afișa lumina direcțională în cascade de umbră.

Render Paths, selectam această opțiune pentru a arăta calea de redare a codurilor de culoare. Albastru înseamnă umbrirea prestabilită, verdele este lumina, iar galbenul înseamnă continuarea redării.

Alpha Channel, alegem această opțiune pentru a reda opacitatea (alfa). Obiectele stralucitoare au opacitate redusă.

Overdraw, alegem această opțiune pentru a reda înfășurările transparente ale obiectelor. Intensitatea fiecarui punct din scenă redata sporește cu numărul de obiecte suprapuse.

Mipmaps, alegem această opțiune pentru a desemna marimea texturii pe coduri de culoare. Albastru arată că textura ar putea fi mai largă, în verme ce roșu denotă ca dimensiunea texturii este prea mare.

Sprite Mask, alegem această opțiune pentru a afișa măștile-fantomă.

Fig. 5.10 – o comparație a modurilor de desenare selectate din grupul Miscellaneous: Shadow Cascades (stânga), Alpha Channel (mijloc), Mipmaps (dreapta).

Grupul Global Illumination ofera câteva optiuni care va ajuta sa vizualizati iluminarea globala a scenei, incluzand UV Systems, Albedo, stralucirea si Directionarea.

Optiunile View, lighting, si audio

Langa optiunea Draw Mode de control, veti vedea trei butoane:

2D/3D Acest buton comuta intre vizualizarea 2D si 3D a scenei. • Lighting Utilizati acest buton pentru a activa/dezactiva luminarea scenei.

Audio Utilizati acest buton pentru a activa/dezactiva efectele audio.

Setarile Effects Apasati butonul Effects pentru a activa/dezactiva urmatoarele optiuni:

Skybox Apasarea pe acest buton activeaza/dezactiveaza redarea texturii skybox.

Fog Utilizati aceasta optiune pentru a activa/dezactiva efectul de ceata.

Flares Aceasta optiune activeaza/dezactiveaza afisarea semnalelor luminoase.

Animated Materials Alegeti aceasta optiune pentru a activa/dezactiva animarea materialelor.

Image Effects Aceasta optiune va permite sa activati/dezactivati toate efectele deodata. This option lets you enable or disable all effects at once.

Meniul gismos Meniul gismos, prezentat in Figura 9-14, contine multe optiuni aditionale pentru controlul redarii obiectelor in decor.

Fereastra Inspector Fereastra Inspector (numita uneori simplu Inspector) prezinta o lista de proprietati configurabile ale obiectului selectat in fereastra Hierarchy sau Scene view. Ca exemplu, Figura 9-12 prezinta fereastra Inspector care afiseaza proprietatile camerei obiect principale.

Fig. 5.12 Fereastra Inspector pentru camera obiect principala.

Fereastra Inspector imparte proprietatile in cateva grupuri. Diferitele tipuri de obiecte au grupuri diferite de proprietati. Oricum, anumite grupuri se aplica multor obiecte, cum ar fi urmatoarele:

Identity Acest grup, localizat in partea de sus a ferestrei inspector, include o caseta cu numele obiectului, o lista Object Tag drop-down; o lista Layer drop-down, pe care le puteti folosi pentru a asocia obiectul cu un anumit strat al scenei; si un Static checkbox, pe care il puteti folosi pentru a informa motorul Unity ca obiectul nu se va muta in timpul executiei aplicatiei (astfel dand posibilitate Unity sa optimizeze simularea fizica pentru a imbunatati preformanta aplicatiei).

Transform Acest grup este localizat in dreapta sub grupul identitate. Folositi aceste casete ale grupului pentru a defini pozitia obiectului in scena, precum si unghiul de rotatie si scara pe fiecare directie. Modificarea proprietatilor Transform din Inspector este o cale convenabila de a pozitiona si redimensiona obiectele in scena.

Component Folositi acest grup, localizat in partea de jos a ferestrei inspector, pentru a asocia componentele cu obiectul jocului.

Fereastra Project
Implicit, fereastra Project contine doua taburi:

Consola Acest tab afiseaza atentionari, erori, si alte mesaje generate de Unity. De obicei utilizati acest tab pentru devirusare si constructie (pentru a detecta eventualele erori). Tabul Unity Console este asemanator cu fereastra Debug din Visual Studio.

Project Folositi acest tab pentru a afisa si administra proprietatile din proiectul curent. Acest tab are un careu in stanga care prezinta o lista ierarhica a tuturor proprietatilor si fisierele cu acestea. Selectand un fisier din careu, continutul lui este afisat in dreapta. (Vezi Figura 9-13.) Tabul Project se foloseste pentru a cauta proprietati si a la adauga in scena.

FIGURE 9-13 Tabul Project afiseaza proprietatile proiectului.

Taburile Console si Project pot fi de asemenea afisate ca ferestre separate si plasate acolo unde doriti. Aici le descriu impreuna pentru ca ele sunt combinate intr-o singura fereastra in configuratia prestabilita a Unity Editor.

Crearea scenelor

Acum ca am incheiat explorarea interfetei editorului Unity, sunteti gata sa invatati cum puteti modifica o scena implicita creata de Unity Editor. In aceasta sectiune vom incepe prin a reface obiecte simple 3D din materiale prestabilite. Apoi vom invata cum sa folosim obiecte mai avansate, precum terenul, copacii si papusi de carpa. Dupa aceasta, vom afla cum se creeaza si se editeaza materialele, cum se folosesc prefabricatele si cum se creeaza o zona cu vant. Acestea ne vor oferi o perspectiva cuprinzatoare asupra modului in care se poate extinde o scena implicita.

Lucrul cu obiecte 3D Exista multe cai de a adauga un obiect 3D intr-o scena:

Facand clic dreapta in fereastra Hierarchy window, alegand un obiect 3D din maniul care apare si selectand tipul de obiect pe care vreti sa il creati din lista care apare (referire la Figura 9-5)

Apasand butonul Create din coltul stanga sus al ferestrei Hierarchy, alegand un obiect 3D din meniul care apare si selectand tipul de obiect pe care vreti sa il creati din meniul care apare

Deschizand maniul GameObject din bara de meniuri, algand obiectul 3D si selectand tipul de obiect pe care vreti sa il creati. Puteti crea sase tipuri de obiecte simple 3D – cub, sfera, capsula, cilindru, plan si cuadrant, precum si cateva obiecte 3D complexe, incluzand terenul, copacul, papusa de carpe, zona de vant si text 3D.

Explorarea obiectelor 3D primitive Figurile 9-14 si 9-15 prezinta exemple de obiecte 3D primitive adaugate unei scene.

FIGURA 9-14 Obiecte 3D primitive: sfera (stanga), capsula (mijloc), si cilindrul (dreapta).

FIGURA 9-15 Obiecte 3D primitive: plan (stanga) si cuadrant (dreapta).

FIFIGURA 9-16 Un cub adaugat unei scene.

Pozitionarea unui obiect 3D primitiv implicit; acest obiect nou va fi pozitionat in originea sistemului de coordonate asociat unei scene (Cand se modifica zona scenei, noi obiecte vor fi plasate aproximativ in centrul regiunii afisate in mod curent din scena.) Sistemul de coordonate utilizeaza trei vectori componenti (X, Y, Z) pentru a reprezent in mod unic pozitia obiectului in scena. Pentru a verifica pozitia curenta a obiectului in scena, selectati obiectul (in acest caz cubul) si comutati pe inspector. Setarile Position din grupul Transform vor indica pozitia: 0, 0, 0. Daca modificati aceste valori, cubul va fi repozitionat in consecinta.

Puteti misca obiectul si prin utilizarea manetei Move gizmo. O maneta gismo este un instrument vizual care va ajuta sa transformati un obiect. Puteti vedea maneta Move gizmo a cubului in Figura 9-16. Ea prezinta trei sageti de coordonate cu coduri de culori: rosu pentru axa X, verde pentru axa Y si albastru pentru axa Z. Pentru a utiliza maneta Move gizmo, drag and drop sageata care corespunde axei dorite. Acest lucru este util cand doriti sa ajustati pozitia unui obiect de-a lungul unei singure axe. In timpul acestui proces, editorul Unityse asigura ca translatia obiectului nu reflecta miscari involuntare a mouse-ului sau a touchpad-ului.

Rotirea unui obiect 3D primitiv Exista doua moduri de a roti un obiect 3D primitiv:

 Prin modificarea proprietatilor Rotation din grupul Transform din Inspector

 apasand butonul Rotate din toolbar (evidentiat in Figura 9-17)

FIGURA 9-17 Butoanele toolbar folosite pentru a accesa sculele de manipulare a obiectelor din editorul Unity. Este selectat butonul Rotate tool.

Cand apasam butonul Rotate, un Rotate gismo cu cateva sfere inconjoara obiectul selectat. (Vezi Figura 9-18.) Precum sagetile din Move gismo, sferele active au coduri de culoare: sfera rosie corespunde axei X, sfera verde axei Y si sfera albastra axei Z. Apasati pur si simplu pe sfera reprezentand axa in jurul careia doriti sa rotiti obiectul si dragati cursorul.

FIGURA 9-18 Rotirea unui obiect.

Cand rotiti un obiect, proprietatile Rotate din grupul Transform al Inspector afiseaza unghiurile de rotatie.

Scalarea unui obiect 3D primitiv Scalarea unui obiect este foarte asemanatoare. Puteti utiliza fie proprietatile Scale din grupul Transform al Inspector, sau puteti apasa butonul scale din toolbar (localizat in dreapta butonului Rotate: vedeti Figura 9-15). Aceasta activeaza comutatorul Scale gismo. (Vezi Figura 9-19.) Fiecare axa de scalare este reprezentata printr-o linie cu un cub cu cod de culoare la un capat. Click and drag un cub pentru a scala obiectul de=a lungul directiei corespunzatoare. (Din nou, rosu corespunde axei X, verde axei Y si albastru axei Z.) Din nou, toate schimbarile vor fi automat reflectate in proprietatile Scale din grupul Transform al Inspector.

FIGURA 9-19 Scalarea unui obiect.

Utilizarea sculei RectTransform instrumentul RectTransform combina sculele Move, Rotate, si Scale intr-un singur gismo. Pentru a o accesa, apasati butonul RectTransform din toolbar (butonul cel mai din dreapta prezentat in Figura 9-17). Asa cum se vede in Figura 9-20, un dreptunghi cu pete marunte albastre in fiecare colt si o icoana mica in forma de cerc plin in centru vor inconjura obiectul selectat. actionati un unul din urmatoarele moduri:

 Pentru a misca un obiect, clic oriunde in interiorul dreptunghiului si drag in directia dorita.

 Pentru a roti un obiect, faceti clic dincolo de colt. Apoi, cand icoana cursorului se schimba, click and drag icoana in directia dorita.

 Pentru a scala un obiect, pozitionati cursorul intr-un colt al dreptunghiului (pentru a scala pe doua directii simultan) sau pe o latura (pentru a scala pe o singura directie). Apoi, cand se schimba icoana cursorului, click and drag spre afara sau inauntru.

FIGURA 9-20 Transformarea unui obiect cu instrumentul RectTransform.

Din nou, toate modificarile facute astfel vor fi reflectata in grupul Transform din Inspector.

Utilizarea obiectelor 3D primitive pentru a crea elemente pentru scena In mod obisnuit, nu se folosesc obiecte 3D primitive ca atare. Ci le transformam si aplicam materiale pe ele pentru a crea obiecte de tip real. De exemplu:

 Cuburi, Utilizati-le pentru a construi ziduri, trepte, cladiri si asa mai departe.

 Sfere,Folositi-le pentru a crea mingi, planete si altele asemanatoare.

 Capsule, Acestea pot fi utilizate pentru a inlocui cuburile cu muchii ascutite la construirea de cladiri etc. • Cylindri Acestia se potrivesc bine la crearea de posturi si tije.

 Plane, Le puteti utiliza pentru a crea suprafete plane.

• Cuadranti, Acestia sunt buni la afisarea de imagini si la crearea de interfete simple utilizator in scena. Un cuadrant este ca un plan, insa suprafata sa este orientata in planul XY. Aceasta inseamna ca trebuie sa schimbi unghiul de vizualizare pentru a vedea suprafata lui. (Referinta la Figura 9-15 si comparati gismosurile Scene din fiecare imagine.)

Crearea de obiecte (parenting)

Puteti combina obiecte 3D primitive pentru a crea modele 3D complexe. Cand se lucreaza cu asemenea elemente, se foloseste adesea parenting-ul. Parenting-ul unui obiect descria locatia sa in ierarhia scenei. Elementul de top este parintele, iar obiectele de sub el sunt definite drept copiii sai sau descendentii. In general, aceasta ierarhie contine mai multe nivele. In scena implicita pe care ati creat-o mai devreme, scena fara titlu era parintele a doua obiecte: camera principala si lumina directionala. (Referinta la Figura 9-5.) Parenting-ul obiectelor este de asemenea foarte util cand dorim sa manipulam mai multe obiecte deodata. De exemplu, puteti muta, roti sau scala un grup de obiecte simultan, in loc sa ajustati proprietatile fiecarui obiect in mod independent. Pentru a face un obiect (sa il numim obiectul A) sa fie descendentul unui alt obiect (obiectul B), trebuie sa utilizati fereastra Hierarchy. Faceti clic pe obiectul A si dragati-l catre obiectul B. Cand eliberati butonul mausului, obiectul B va deveni perintele obiectului A. De acum inainte, orice transformare aduceti parintelui se va aplica si descendentilor sai. Sa vedem cum functioneaza aceasta in practica. Urmati acesti pasi:

1. Indepartati obiectul cub de pe scena facand clic dreapta pe el in Hierarchy si alegand Delete din meniul care apare.

2. Adaugati un cub nou, un cilindru, o sfera. asigurati-va ca toate sunt pozitionate in origine (0, 0, 0). 3. faceti clic pe cub pentru a-l selecta. apoi, in proprietatile Scale din grupul Transform al Inspector, modificati setarea X la 1,5, setarea Y la 0,1 si setarea Z la 1,5.

3. Faceti clic pe sfera pentru a o selecta. Apoi, in proprietatile Position din grupul Transform al Inspector, modificati setarea Y la 1.

4. Lasati cilindrul netransformat. Apoi, in Hierarchy, dragati cilindrul si sfera obiecte spre cub.

5. Faceti clic dreapta in Hierarchy, alegeti Save Scene As, si setati numele scenei in MyScene. Scena salvata ar trebui sa arate ca in Figura 9-21.

FIGURA 9-21 Un obiect creat dintr-un cub, un cilindru si o sfera

Cu aceasta scena, oricand selectati cubul, toti descendentii sai vor deveni activi. Deci puteti sa-i transformati impreuna folosind Scene view si toolbar sau modificand manual prioprietatile grupului Transform din Inspector. Pentru a transformqa independent un obiect descendent, il selectati in Hierarchy. Orice modificari ii aduceti, ele nu se vor aplica parintelui sau oricarui alt obiect de pe acelasi nivel ierarhic.

Aplicarea Terrain

Puteti utiliza topografia – sau mai precis motorul topografic – pentru a dezvolta peisaje intr-o scena. Adaugati terenul in acelasi mod in care adaugati obiecte 3D primitive: prin meniul context al ferestrei Hierarchy sau submeniul 3D Object din meniul GameObject. Dupa ce adaugati terenul unei scene, puteti folosi pensulele care apar in Inspector pentru a desena elementele peisajului. (Vezi Figura 9-22.) Iata cum:

1. Terenul ocupa mult spatiu intr-o scena, asa ca incepeti prin a reduce zoom-ul.

2. In Inspector, alegeti pensula pe care doriti sa o folositi si ajustati setaqrile ei dupa voie.

3. In Scene view, dragati cursorul in lungul celor trei dimensiuni pentru a crea sau mai precis pentru a desena peisajul.

FIGURA 9-22 Crearea terenului.

Puteti defini rapid intregul peisaj pentru aplicatia dvs. Observati, totusi, ca folositi terenul doar pentru a construi realitatea virtuala (RV). In realitatea amplificata (AR) terenul, sau peisajul, este compus din obiecte reale (copaci, munti, lacuri etc.) deci nu este necesar sa faceti un teren virtual.

Adaugarea copacilor

Copacii se adauga unei scene asa cum se adauga orice alt obiect 3D. Cand faceti asta, copacul se va deschide in Tree Editor. La inceput, copacul va avea o singura ramura (Vezi Figura 9-23.)

FIGURA 9-23 Crearea unui copac.

Pentru a crea ramuri noi si frunze, editati ierarhia copacului utilizand grupul Tree din Inspector. (Referire la Figura 9-23.) Asa cum este aratat in Figura 9-24, ierarhia copacului din grupul Tree contine doua elemente implicite: un nod Tree Root (icoana de jos) si un Branch Group (icoana de sus). Grupul Tree mai contine patru butoane in coltul dreapta jos. De la stanga la dreapta acestea sunt butonul Add Leaf Group, butonul Add Branch Group, butonul Copy si butonul Delete.

FIGURE 9-24 Ierarhia unui copac presetat.

Pentru a adauga o noua ramura copacului, urmati acesti pasi:

1. Click pe nodul grupului Branch.

2. Click pe butonul grupului Add Branch. Noua ramura este creata.

3. Pentru a modifica ramura spre a o face sa arate mai realist, incercati cu parametrii Distribution, Geometry si Shape din Inspector. (Vezi Figura 9-25).

4. Adaugati mai multe ramuri, dupa voie.

FIGURA 9-25 Modificarea ramurii copacului.

Pentru a adauga frunze copacului, aveti urmatorii pasi:

1. Click pe ramura pe care vreti sa adaugati frunze. (In acest exemplu, eu am ales ramura de sus.)

2. Click pe butonul Add Leaf Group. (Referinta la Figura 9-24.)

3. La inceput, frunzele vor aparea ca niste plane rectangulare. (Vezi Figura 9-26.) Ca sa arate ca niste frunze adevarate, va trebui sa le aplicati un material. (Veti invata cum se adauga materiale la frunze ceva mai tarziu in acest capitol.) Pentru acun, in Inspector, mariti valoarea parametrului Frequency din grupul Distribution pentru a adauga mai multe frunze.

4. Incercati acum si cu celelalte proprietati ale frunzelor

FIGURA 9-26 Copac generat in Tree Editor.

Adaugarea 3D Text

Obiectul 3D text afiseaza siruri de litere, numere sau simboluri. Acestea pot aparea pe un singur rand sau pe mai multe. Dupa ce ati adaugat un obiect 3D text unei scene – lucru pe care il faceti asa cum adaugati orice lat tip de obiect – puteti sa-i schimbati aspectul modificand parametrii din Inspector. Optiunile includ urmatoarele:

• Text Aici introduceti textul care urmeaza sa fie afisat in obiectul 3D text. Odata selectat caseta Rich Text, motorul de redareva formata sirul dvs. pe baza urmatoarelor taguri:

• <b>.. .</b> Aceste taguri introduc caractere ingrosate in obiectul 3D text. De exemplu, sirul <b>Mixed Reality</b> are drept rezultat un obiect 3D text cu textul Mixed Reality scris cu caractere ingrosate.

• • <i>. . .</i> Aceste taguri introduc caractere italice. De exemplu, sirul <i>Hello, World !</ i> va aparea drept Hello, World! cu fonturi italice.

• <size=x>.. . </size> Aceste taguri seteaza marimea fontului la x pixeli. De exemplu, sirul <si ze=t15>Big Text </size> rezulta intr-un obiect 3D text cu textul Big Text setat la 45 de pixeli.

• <color=ftrrggbbaa>. . . </color> sau <color=color name>. </color> Aceste taguri seteaza culoarea fontului la codul hexazecimal sau la numele culorii dorite. De exemplu, sirurile <color=liff0000ff>Red</color> si <color=red>Red</color> produc amandoua acelasi rezultat: un obiect 3D text continand cuvantul Red scris cu rosu.

• OffsetZ Acest parametru indica distanta de la originea axei Z la care urmeaza sa apara textul.

• Character Size Acest parametru seteaza marimea fiecarui caracter.

• Line Spacing acest parametru seteaza spatiul dintre fiecare rand.

• Anchor acest parametru marcheaza punctul de inceput al transformarii. Daca modificati valoarea acestuia, proprietatile transform (pozitie, rotatie si scalare) vor incepe de la acest punct.

• Alignment Acest parametru seteaza alinierea textului.

• Tab Size Acest parametru seteaza marimea indentului din obiectul 3D text. (pentru a crea un indent, tastati \t.)

• Font, Font Size, Font Style si Color Acesti parametrispecifica fontul dimensiunea fontului,stilul si culoarea. Puteti sa folositi acesti parametri in locul tagurilor pentru a modifica aspectul textului.

Adaugarea unei marionete

O marioneta este un instrument care implementeaza automat fizica necesara pentru a face ca un personaj sa se miste si sa interactioneze ci obiectele dintr-o scena in mod realist. Inainte de a putea crea o marioneta, trebuie sa asamblati diferitele elemente care ii vor alcatiu corpul, inclusiv picioarele, coapsele, pelvisul, bratele, coatele mainile si sira spinarii. Puteti modela aceste obiecte intr-un soft 3D pentru a include pielea. Acest proces consuma timp, totusi. Pentru a grabi lucrurile, acest capitol foloseste personajul Ethan, inclus in pachetul de personaje Unity standard. Pentru a importa pachetul de personaje si a extrage de acolo pe Ethan, urmati acesti pasi:

1. Deschideti meniul Assets menu, alegeti Import Package, si selectati Characters. Se deschide fereastra Import Unity Package, continand o lista de personaje incluse.

2. Click butonul All pentru a selecta toate pozitiile.

3. Click pe butonul Import.

4. Cand operatia de import este incheiata, apare fereastra Project. Deschideti fisierul Assets/Standard Assets/Characters/ThirdPersonCharacter/Models, asa cum se poate vedea in Figura 9-28. (Sau, tastati Ethan in caseta de cautare.) Apoi click and drag pe Ethan in Scene view. (Click OK in orice casuta de dialog care apare.)

FIGURA 9-28 Fereastra Project prezentand modelul Ethan.

Urmatorul pas este sa adaugati un plan si alte cateva obiecte in scena, inclusiv pe Ethan, un copac si ceva 3D text. Mai intai, asigurati-va ca sculele sunt in modul Global—adica, cu comutatorul gismo setat la Center si Local. Dupa ce adaugati obiectele, setati parametrii Position si Rotation in grupul Transform al Inspector.

Utilizarea Materialelor

Pana acum, ati creat cateva obiecte 3D. Totusi, toate aceste obiecte – cu exceptia obiectului 3D text – au aceeasi culoare. Aceasta pentru ca toate au folosit acelasi material presetat. Puteti aplica un material diferit unui obiect pentru a schimba modul de redare a suprafetelor acestuia.

Sa cercetam acum materialele si sa cream cateva pentru a le aplica frunzelor de pe copacul obiect pe care l-am asamblat ceva mai devreme in acest capitol. Pentru inceput, trebuie sa importam texturile potrivite acestor materiale in Unity. In acest exemplu veti utiliza texturile din pachetul environment din elementele Unity standard.

Pentru a importa acest pachet, deschideti meniul Assets, alegeti import Package, si selectati Environment. Apoi importati toate elementele pachetului. Pasul urmator este sa cream materialele:

1. Creati un folder nou pentru materialele pe care le veti crea. Pentru aceasta, deschideti fereastra Project si faceti clic dreapta pe fisierul Assets. Apoi, in meniul care apare, alegeti optiunea Create si selectati Folder.

2. Denumiti noul folder Custom Materials.

3. Clic pe fisierul Custom Materials pentru a-l selecta.

4. Deschideti meniul Assets, alegeti Create, si selectati Material. Astfel adaugati un material nou in fisierul Custom Materials.

5. Denumiti noul material LeavesMaterial.

6. In Inspector pentru materialul LeavesMaterial, deschideti Shader drop-down list, si alegeti Nature/Tree Creator Leaves Fast.

7. In Inspector, apasati butonul Select pe spatiul textura (evidentiat cu albastru) pentru a deschide fereastra Select Texture. (Vezi Figura 9-33.)

FIGURA 9-33 Crearea materialului pentru frunze utilizand Inspector pentru material (stanga) si optiunile Select Texture (dreapta).

8. In fereastra Select Texture, selectati textura frunzelor pe care o doriti. (Eu am ales Broadleaf Mobile_Atlas.)

9. Drag and drop materialul LeavesMaterial pe copacul din scena.

10. Optional, ajustati numarul frunzelor dupa preferinta.

Pentru a face copacul sa arate chiar si mai realist, puteti crea un material pentru coaja lui. Urmati acesti pasi:

1. Selectati fisierul Assets/Custom Materials din fereastra Project.

2. Deschideti meniul Assets, alegeti Create si selectati Material pentru a crea noul material.

3. enumiti noul material BarkMaterial.

4. In Inspector, modificati setarea Shader in Nature/Tree Creator Bark.

5. Selectati o textura de baza pentru material. (Eu am ales ConiferBark.)

6. Drag and drop materialul BarkMaterial pe ramurile copacului din Scene view. Figura 9-34 prezinta versiunea finala a copacului meu.

Scena incepe sa arate destul de bine. Haideti sa o facem si mai frumoasa aplicand materiale si pe alte obiecte, dupa cum urmeaza:

1. Modificati planul obiect ca sa arate ca pamantul. Pentru aceasta, creat un material nou numit Groundmaterial, schimbati setarea Shader in Unlit/Texture, setati textura la GrassRockyAlbedo, si aplicati-o pe plan.

2. Adaugati un material nou pentru obiectul custom (facut dintr-un cilindru, un cub si o sfera) si numiti-l ObstacleMaterial. Modificati setarea Shader in Unlit/Texture, setati textura la MudRockyAlbedoSpecular, si aplicati-o la toata elementele care alcatuiesc obiectul custom.

3. Modificati materialul deja aplicat lui Ethan pentru a-i schimba culoarea. Pentru aceasta, deschideti fereastra Project si tastati EthanWhite in caseta de cautare. Unity filtreaza lista de aseturi pentru a afisa numai unul. Clic pe acest element, comutati pe Inspector, clic casuta de culoare la setarea Albedo si alegeti orice culoare doriti din paleta care apare. Eu l-am facut pe Ethan azuriu. (Vezi Figura 9-35.)

Cap.6– Studiu de caz

6.1 Introducere

Tema proiectului este crearea unui joc 3D, cu ajutorul unui motor grafic. Jocul video este o activitate recreațională care implică unul sau mai mulți jucători, definit printr-un scop pe care jucătorii încearcă să îl atingă și un set de reguli ce determină acțiunile posibile ale jucătorilor. Încă de la apariția jocurilor arcade, la începutul anilor `70, piața jocurilor video este într-o continuă creștere, fiind estimată la sute de miliarde dolari.

Jocul creat de mine este un joc de tip shooter, controlat de un singur jucător,ce are ca scop supraviețuirea și distrugerea valurilor de inamici, pentru obținerea unui punctaj cât mai mare.

Ordinea dezvoltării jocului este:

Crearea mediului de desfășurare a jocului

Model ce reprezintă jucătorul

Poziția camerei

Adăugarea inamicului

Elemente UI (User Interface) si HUD (Heads-up Display)

Viața jucătorului

Rănirea inamicilor

Sistem de recompensare

Respawn-ul inamicilor

Sfârsitul jocului

Software

Unity este un motor grafic creat de Unity Technologies și folosit pentru dezvoltarea jocurilor video pe calculator, console,telefoane, mobile și website-uri. Bazat pe portabilitate, motorul se axează pe următoarele interfețe de programare ale aplicațiilor: Direct3D pentru Windows și Xbox 360, OpenGL pentru Mac, Windows și Linux și OpenGL ES pentru Android și iOS.

Unity permite specificații pentru compresia texturii și setările rezoluției pentru fiecare platformă pe care jocul o suportă. Scriptarea pentru acest motor grafic se face în Mono, implementarea open-source a lui .NET Framework. Programatorii pot folosi UnityScript (un limbaj custom, numit JavaScript de software), C#, sau Boo (are sintaxa inspirată din limbajul Python).

6.2 Crearea mediului de desfășurare a jocului – File> New Scene

O scenă este formată din obiectele jocului. Ele sunt folosite pentru crearea unui meniu, nivele individuale ale jocului și altele. În fiecare scenă, putem plasa mediul jocului, obstacole și decorațiuni, în principiu construim jocul pe bucăti.

Obiecte (GameObject)

Obiectele au nevoie de proprietăți speciale înainte să reprezinte un caracter, un mediu sau un efect special. Obiectele sunt alcătuite din multe piese numite componente. În funcție de obiectul pe care dorim să îl creem, putem adăuga diferite combinații de componente. Crearea unui obiect nou se face prin combinația de taste Shift-Control-N pe sistemul de operare Windows.

Adăugarea componentelor

Componentele obiectului se pot adăuga din meniul Components.

Valorile sau proprietățile componentelor pot fi modificate din editor sau prin scripturi.

Scriptare

Scriptarea este un ingredient esențial și bază în toate jocurile. Chiar și cele mai simple jocuri au nevoie de scripturi pentru a putea răspunde la acțiunile date de jucător. Dincolo de asta, scripturile pot fi folosite pentru a crea efecte grafice, pentru a controla comportamentul fizic al obiectelor sau pentru implementarea unei inteligențe artificiale pentru caracterele din joc.

Există 2 limbaje de programare suportate de Unity:

C#(C-sharp), limbaj similar cu Java sau C++

UniyScript, limbaj creat special pentru Unity și modelat după JavaScript

Scripturile pot fi create direct din Unity prin selecția Assets > Create > C# Script (or JavaScript) din meniu.

La deschiderea scripturilor,Unity folosește automat MonoDevelop.

Script Unity:

Script C#:

Aplicațiile în Unity pot fi create specific pentru anumite platforme cum ar fi iOS, Android, Windows, Web Player, WebGL și altele.

6.3 – Realizarea Aplicației

6.3.1 Crearea mediului de desfășurare a jocului

Crearea unei scene:

Construirea mediului în care se desfășoară jocul:

Toate elementele mediului sunt reprezentate prin obiectul Environment. Acesta se adaugă în scenă prin adăugarea acestuia în ierarhie.

Luminarea mediului se face prin obiectul Lights.

Pentru că obiectele mediului nu sunt la același nivel,adăugăm un obiect nou care să reprezinte podeaua:

GameObject > 3D Object > Quad și îl redenumim Floor.

Pentru al face invizibil, ștergem componenta Mesh Renderer a obiectului.

Podeaua este element de referință pentru cameră.

De aceea trebuie să setăm obiectul ce reprezintă podeaua,pe layerul Floor.

Adaugăm o muzica pe fundalul jocului,prin crearea unui nou obiect: GameObject > Create Empty și îl redenumim BackgroudMusic.

Adaugăm o componentă audio obiectului: Add Component > Audio > Audio Source

Adăugam fișierul Backgroud Music din resurse si bifăm opțiunea Loop pentru a derula sunetul pe tot parcursul jocului.

6.3.2.Model ce reprezintă jucătorul

Adăugăm în scenă obiectul ce reprezintă avatarul jucătorului :

Creăm o animație pentru model:

Create > Animation Controller și o numim PlayerAC

Creăm stările în care se poate afla playerul,tranzițiile dintre ele și condițiile ca acestea să se petreacă:

Adăugăm modelului câteva componente:

Add Component > Physics > Rigidbody ,pentru a adaugă proprietăți fizice obiectului;

Add Component > Physics > Capsule Collider,pentru ca obiectul să se lovească de elementele mediului;

Add Component > Audio > Audio Source,când playerul pierde viață,să ruleze un fișier audio;

Add Component > New Script;

Crearea scriptului pentru mișcarea jucătorului:

Adăugarea variabilelor:

Funcție pentru inițializare:

Funcție pentru actualizarea elementelor fizice și apelarea funcțiilor ce urmează:

Funcție pentru mișcare:

Funcție de rotire a caracterului în funcție de cameră:

Funcție de animare:

6.3.3 Poziția camerei

Momentan,poziția camerei în scenă nu este setată.

Pentru a îi da jocului o vedere izometrică trebuie să mutăm poziția camerei:

Selectăm Main Camera în ierarhie,mutăm poziția (Transform Position) la coordonatele (1,15,-22),rotația (Transform Rotation) la coordonatele (30,0,0), proiectarea (Projection) pe Orthographic,mărimea (Size) 4.5.

Pentru a putea urmării playerul,camera trebuie să aibă un script.

Create > C# Script se adaugă peste Main Camera în ierarhie.

Se selectează playerul drept ținta pentru camera:

6.3.4. Adăugarea inamicului

Se adaugă în ierarhie obiectul ce reprezintă un inamic,din lista de resurse.

Se adaugă acestui model un obiect numit HitParticles,ce rulează o mica animație țn jurul inamicului atunci când este impușcat.

Pentru ca jocul să iși dea seama că inamicul poate fi rănit,setăm layerul obiectului pe Shootable.

Adăugăm obiectului Zombunny componentele:

Add Component > Physics > RigidBody,pentru a adăuga propriețăti fizice obiectului;

Add Component > Physics > Capsule Collider,pentru ca obiectul să se loveasca de elementele mediului;

Add Component > Physics > Sphere Collider,pentru ca inamicul să știe unde este playerul;

Add Component > Audio > Audio Source,pentru a scoate un sunet când este rănit;

Add Component > Navigation > Nav Mesh Agent,pentru ca inamicul să urmarească playerul;

Pentru ca modele să cunoască pe unde se pot mișca în mediul jocului:

Window > Navigation, Bake

Creăm o animație pentru modelul inamic:

Create > Animator Controller, numită EnemyAC;

Creăm stările în care se poate afla inamicul, tranzițiile dintre ele și condițiile ca acestea să se petreacă:

Pentru ca inamicul să se poată mișca,adăugăm un script obiectului:

6.3.5. Elemente UI (User Interface) și HUD (Heads-up Display)

Pentru a adăuga elemente pe ecran vom crea un obiect nou (HUDCanvas):

GameObject > UI > Canvas,crează o formă rectangulară 2D

Creăm un obiect copil al obiectului HUDCanvas pentru a arăta pe ecran viața playerului pe parcursul jocului.

HUDCanvas > Create Empty, numit HealthUI

Selectăm unde vrem să se afle bara de viața pe ecran (am ales în stânga jos):

Creăm un obiect copil pentru obiectul HealthUI,pentru a adăuga imagini:

HealthUI > UI > Image,denumit Heart;

Selectăm imaginea sursă din resurse.

Creăm un obiect copil pentru obiectul HealthUI,pentru a adăuga un slider ce corespunde barei de viață:

HealthUI > UI > Slider,numit HealthSlider;

Atribuim barei de viață valoarea 100 din componenta Slider a obiectului.

Creăm un obiect copil pentru obiectul HealthUI,pentru a adăuga o nouă imagine:

HealthUI > UI > Image,numit DamageImage;

Acesta are scopul de a colora imaginea pentru o perioadă scurtă de timp atunci când playerul este rănit.

6.3.6.Viața jucătorului

Adăugăm obiectului ce reprezintă caracterul jucătorului scriptul ce controlează bara de viață.Scriptul modifică valorile atribuite barei de viață,arată imaginea DamageImage de fiecare dată când jucătorul este rănit iar când bara de viață se golește,rulează o animație corespunzătoare morții jucătorului.

Adăugăm obiectului ce reprezintă inamicul,scriptul ce permite inamicilor să atace și să scadă bara de viață.

6.3.7.Rănirea inamicilor

Adaugăm obiectului ce reprezintă inamicul un script ce controlează viața și rulează o animație când viața ajunge la 0.

Pentru adăugarea unor efecte atunci când jucatorul folosește arma:

În obiectul GunParticles,fiu al obiectului Player,adăugăm componentele:

Componenta ce simulează particulele;

Add Component > Effects > Line Renderer,ce simulează traiectoria glontului;

Add Component > Rendering > Light,ce simulează flashul făcut de armă;

Add Component > Audio > Audio Source,sunetul făcut de armă;

Componenta Script în care sunt declarate variabilele pentru:distanța până unde se trage,timpul dintre gloanțe și damage

6.3.8.Sistem de recompensare

Creăm un obiect copil pentru obiectul HUDCanvas,pentru a adăuga text:

HUDCanvas > UI > Text,numit ScoreText pentru afișarea scorului;

Adăugam o componentă Script,care inițializează scorul cu 0 și îl mărește cu o valoare atribuită inamicilor.

6.3.9.Respawn-ul inamicilor

Pentru apariția continuă a inamicilor,creăm un nou obiect.

GameObject > Create Empty,numit EnemyManager;

Adăugăm o componentă Script,ce controlează spawn-ul inamicilor.

Pentru specificarea locului de spawn al inamicilor,creăm noi obiecte în ierarhie.

Fiecare inamic are o perioadă proprie de respawn și un punct propriu de respawn. Pentru a specifica asta,adăugam în obiectul EnemyManager câte o componentă Script pentru fiecare inamic.

6.3.10. Starea finală

Starea finală a jocului este dată de moartea caracterului.Când se intamplă asta, vrem ca jocul să se oprească,imaginea jocului să dispară și un nou ecran cu scorul să apară.

Pentru asta avem nevoie de alte obiecte fiu ale obiectului HUDCanvas:

HUDCanvas > UI > Image,numit ScreenFader ce cuprinde toată imaginea scenei și este de culoare albastră;

HUDCanvas > UI > Text,numit GameOverText

Pentru ca toate acele acțiuni să se petreacă la sfarsitul jocului,avem nevoie de o animație. Window > Animation > Add Curve;

Adăugăm componentele pe care vrem să le animăm;

Pentru ca animația să pornească dupa ce caracterul jucătorului a murit și nu înainte,creăm o nouă stare și o condiție de tranziție.

Adaugăm componenta Script obiectului HUDCanvas.Scriptul GameOverManager pornește animația dacă viața jucătorului este 0 și restartează nivelul după un timp dat.

Salvăm scena și rulăm proiectul.

6.4 Concluzii

Unity este o platformă flexibilă și puternică în dezvoltarea jocurilor 2D și 3D. Aplicația este un punct bun de pornire pentru realizarea unui joc mai complex din punct de vedere al acțiunilor, grad de dificultate și al nivele.

Avantajele folosirii Unity :

Platforma poate fi descarcată și utilizată gratis

Poate fi utilizată de începători

Unity pune la dispoziție pachete de resurse

Crează aplicații portabile pe o multime de platforme

Dezavantaje folosirii Unity:

Nu există template-uri, fiecare proiect trebuie început de la 0 dacă nu ai resursele necesare

Din punct de vedere grafic, Unity este mai slab decât UDK (Unreal Development Kit).

BIBLIOGRAFIE

http://docs.unity3d.com/Manual/index.html

https://unity3d.com/learn/tutorials/modules

Lynn M. Bremner, Anthony F. Iasi, Al Servati „Intranet” Editura ALL București 1997.

Matt Strazniskas „Photoshop 5” Editura ALL București 1999.

Kris Jamsa “Programarea în Web”

Macromedia Dremweaver

Microsoft Frontpage

Similar Posts