Cimitri » Tue Mar 03, 2015 10:49 pm wrote:Daca tot a devenit Unreal 4 free...de ce sa nu faca mutatia pe el? Oare e posibil? Chiar nu ma pricep la treburi de engine/portare dar ma gandesc ca totusi unreal 4 e un nume pe cand Unity a fost mai degraba un "compromis".
I'll try to explain cat de bine pot de ce nu prea merita sa schimbi engine-ul acum, vad ca topicul duce lipsa de explicatii, desi nu duce lipsa de discutii in contradictoriu.
Pe scurt, ar insemna sa rescrie jocul. Sunt multe concepte similare intre Unity si UE4 dar modul in care se intampla prin interior e complet diferit. Imagineaza-ti cum mergi la farmacie si ii ceri farmacistului ceva. All ok. Acum faci acelasi lucru, dar in China. In esenta conceptul e acelasi. Te duci la farmacist, ii zici ce ai si ce iti trebuie, si farmacistul iti da. Dar de data asta trebuie sa ii spui pe limba lui si sa te adaptezi la orice alte reguli exista in China vs Romania, ca altfel nu primesti nimic

This takes time...
Cateva hopuri care ar trebui facute (NU e o lista completa, evident, si dau doar cate un exemplu din o gramada disponibile):
1.
Sunt mai multe aspecte la portarea Unity -> UE4, iar diferentele sunt suficient de mari incat sa faca sa nu prea merite o portare. Nu e o chestiune simpla de tradus cod dintr-un limbaj in altul. Modul in care jocurile ruleaza dupa ce-s scoase din Unity si UE e diferit, iar programatorii trebuie sa tina cont de asta. De exemplu, cu unele exceptii, pe UE4 programatorii trebuie sa se ocupe de gestiunea manuala a memoriei jocului. Asta inseamna ca trebuie sa aiba grija sa faca curatenie dupa ce-si termina treaba, si ca nu incep sa-si faca treaba inainte sa se asigure ca totul e ok. Asta ia timp si atentie, si e sursa de probleme mari. Uite de exemplu o problema cauzata de gestiunea proasta a memoriei:
Sunt sigur ca ai vazut cateva jocuri care sa crashuiasca cu eroarea asta la viata ta

Posibil sa se fi intamplat si cand te jucai tu.
Jocurile facute cu Unity nu au problema asta. In esenta un joc facut cu Unity ruleaza in interiorul altui program care se asigura ca totul e curat si gata disponibil pentru programator, in orice moment. Avantajul e ca te scapi de multe batai de cap si bug-uri, si ca nu ai nevoie de programatori foarte buni (e foarte, foarte usor sa o dai in bara cu C++ daca nu stii ce faci (UE4 foloseste C++ si un fel de limbaj vizual in care desenezi diagrame ca sa descrii comportamentul lucrurilor din nivel, Unity foloseste un ansamblu de 3 limbaje: C#, UnityScript si Boo)). Dezavantajul e ca pentru jocurile pretentioase exista o lovitura asupra performantei pe care e greu sa o eviti daca nu ai ceva experienta si nu lucrezi "in jurul ei".
Note! Unity au inceput sa mearga pe un drum alternativ cu chestia asta, pentru a elimina problemele de performanta. Pe scurt, in loc sa faca jocurile sa ruleze in interiorul acelui program, le fac sa ruleze la fel ca si cele scoase cu UE4. Inca nu este 100% functional pe toate platformele, dar nu mai e mult pana e gata.
2.
Apoi, atat Unity cat si UE4 au niste tool-uri care te ajuta sa modelezi lumea jocului. De exemplu, un concept foarte important e adunarea de chestii comune in niste pachete (imagineaza-ti ca-s ca niste cutii in care bagi chestii) care pot fi folosite mai usor. Vrei sa bagi un orc in nivel? Iei pachetul pentru orc facut mai devreme si il arunci in nivel. Simplu! See this:
E un personaj din Wasteland 2. In interior, ar putea fi de fapt un pachet care contine urmatoarele:
Modelul 3D al personajului
Informatiile despre cum trebuie sa arate
Armura
Arma
Informatiile despre el (nume, nivel etc)
Un script pentru AI-ul lui
multe altele, si unele din chestiile de sus pot contine alte chestii, la fel ca un pachet
Pachetele sunt importante daca vrei sa te descurci cu development-ul fara sa iti scoti parul din cap. Si UE4 are un concept analog, dar e nevoie de o traducere si aici pentru ca pachetele arata altfel si se comporta altfel. Asta ia timp pentru ca fiecare obiect din joc (de la vegetatie la personaje) trebuie tradus.
3.
Unity si UE4 folosesc sisteme de interfata (butoane, ecranul cu personajul si detaliile lui etc) total diferite, deci e nevoie de o traducere si aici. E posibil ca Wasteland 2 sa foloseasca NGUI, un plugin foarte popular pentru Unity care te ajuta sa faci interfete foarte usor. Cu atat mai mult e nevoie de o regandire in UE4.
4.
Tot felul de chestii "minore" care nici nu-ti trec prin cap cand te gandesti la o portare, chiar daca esti programator. Te lovesc insa dup-aia. De exemplu, in spatiul 3D in Unity axa Y pozitiv este considerata "sus", iar in UE4 axa Z pozitiv este considerata "sus". Nu stiu cum si-au rezolvat Wasteland 2 devs geometriile, dar cel mai probabil ar trebui sa lucreze extra in zona asta la portare

Programmers cut corners.
Cine ar petrece atata timp ca sa treaca la un engine diferit in cazul de fata? Merita investitia de timp si bani? Eu zic ca nu. Unity 5 beneficiaza de un wizard care iti face automat upgrade in caz ca gaseste ceva ce a fost scos in noua versiune, iar in caz ca nu se poate, modificarile pe partea programatorului sunt minore. Ieri am facut upgrade la Unity 5 si singurele probleme pe care le-am avut au fost legate de scripturile standard vechi din Unity 4 care foloseau functionalitate scoasa din 5, pe care le-am inlocuit cu cele din Unity 5. Pe partea mea nu a trebuit sa modific nimic.
E posibil ca la proiecte mari sa fie nevoie de ceva munca extra, dar e infim comparativ cu new engine switch, dupa cum probabil deduci

Ca sa iti faci o idee, trecerea mea la Unity 5 a durat 3 minute, iar ca sa-mi mut proiectul pe UE4 ar fi durat estimativ o luna or so.
All clear now?
LE: Am mutat discutia despre cum era level inainte si cum e acum, si cum nu poti sa-ti pasezi parerea pe net. Daca observati ca e vreun post care nu trebuia mutat let me know.