Proiectăm Ancient Online: Remastered ca o singură lume în care se vor întâlni jucătorii de pe Windows, Linux, macOS, Android și iOS. Pe hârtie sună simplu: un joc, cinci platforme. În practică, a duce pe telefoane și pe controllere un MMORPG clasic, gândit să fie jucat cu clicuri de mouse, înseamnă un șir de decizii grele. În această parte a devlogului împărtășim aceste decizii și motivele din spatele lor.
Jocul este în dezvoltare. Versiunea de dezvoltare este testată în prezent pe dispozitive Windows și Android; macOS, Linux și iOS sunt celelalte platforme pe care le vizăm.
Regula 1: o singură lume, un singur set de reguli
Pentru jucătorii de pe mobil nu există un server separat și nici un echilibru „simplificat”. Fiindcă toate regulile jocului rulează pe server, joci în aceeași lume, după aceleași reguli, indiferent de pe ce dispozitiv te conectezi. Contul, personajul, inventarul și breasla ta nu depind de dispozitiv. Partea de server am prezentat-o în prima parte a devlogului.
Pentru client, această regulă înseamnă că platforme diferite pot oferi comenzi diferite, dar nu pot oferi capacități diferite.
Ecrane tactile: regândire în loc de micșorare
Să micșorezi interfața clasică de MMORPG așa cum e și s-o pui pe telefon nu funcționează; butoanele ajung prea mici pentru deget, iar ecranul, prea aglomerat. Așa că am proiectat pentru mobil un strat de interfață separat:
- Un joystick flotant: Oriunde îți pui degetul în jumătatea stângă a ecranului, joystickul vine acolo; jucătorul nu trebuie să nimerească un anumit punct de pe ecran.
- Un buton de atac pe care îl ții apăsat, cu un arc de abilități în jurul lui.
- Atinge ca să țintești: Echivalentul tactil al obișnuinței de pe PC de a „da clic pe monstru”.
Există și ceva ce nu am făcut, în mod deliberat: deplasarea prin atingere. De mișcare se ocupă joystickul. Cu două sisteme de mișcare, fiecare atingere care ratează ținta s-ar transforma într-o alergare nedorită, iar în mijlocul unei lupte asta e inacceptabil.
Încă o decizie măruntă, dar importantă: pe telefon se văd doar câteva sloturi odată, așa că trecerea de la o pagină de abilități la alta se întâmplă mult mai des decât pe desktop. Am făcut sloturile de poțiuni independente de pagini; când schimbi pagina, poțiunile rămân la locul lor. Pentru asta n-a fost de ajuns să mutăm o celulă în interfață: a trebuit să separăm complet de logica paginilor codul care folosește sloturile de poțiuni.
Camera și multi-touch
Pe telefon, camera se rotește când tragi cu degetul pe o zonă liberă. Părea tentant să facem asta așezând peste interfață o „zonă de cameră” pe tot ecranul, dar un asemenea strat ar înghiți atingerile destinate tuturor butoanelor de sub el. Tratând tragerea camerei în player controller, și nu în stratul de interfață, am evitat conflictele dintre butoane și cameră. Deosebim, de asemenea, selectarea țintei de tragerea camerei printr-un mic prag de mișcare: până la depășirea pragului camera nu se clintește, iar odată depășit, camera începe să se rotească fără un salt brusc.
Controllere: și meniurile trebuie parcurse
Am proiectat suportul pentru controller pentru întreaga interfață, nu doar pentru luptă. Ca inventarul și meniurile să poată fi parcurse cu un controller, am adăugat navigarea prin focus cu D-padul. Și aici a existat o capcană: D-padul și butoanele de confirmare/înapoi sunt necesare atât pentru navigarea prin meniuri, cât și pentru folosirea sloturilor rapide. Soluția: cât timp e deschisă o fereastră, aceste butoane navighează prin meniu, iar când se închide, revin la sloturile rapide. O alunecare pe nesimțite în „modul meniu” în mijlocul unei lupte ar fi cel mai grav bug pe care l-ar putea avea acest sistem.
Jocul ține minte ce dispozitiv de input ai folosit ultima dată: când treci pe controller, butoanele tactile se retrag de pe ecran.
Și setările urmează platforma
Fereastra de setări își ia forma după dispozitiv: filele de mouse și tastatură apar doar pe PC, iar fila tactilă apare doar pe telefoane. Opțiunile grafice disponibile doar pe desktop, precum Lumen, DLSS și FSR, lasă locul pe mobil opțiunilor de rezoluție și anti-aliasing. Pe fiecare dispozitiv arătăm doar setările care chiar fac ceva acolo.
30 limbi și o interfață măsurată pentru fiecare limbă
Jocul și site-urile noastre vizează 30 limbi. Dificultatea ascunsă a unei interfețe multilingve este lungimea textului: aceeași etichetă de buton poate fi scurtă într-o limbă și de două ori mai lungă în alta. Lățimea filelor din fereastra de setări o calculăm din lățimea reală a fiecărei etichete în limba respectivă, în loc să le dăm părți egale; când se schimbă limba, aranjamentul este recalculat. În selectorul de limbă, fiecare limbă este scrisă cu propriul ei nume.
Traducerea chatului pe propriile noastre servere
Pentru ca jucătorii din țări diferite să se poată înțelege în aceeași lume, mesajele din chat sunt traduse în limba cititorului. Am avut două principii când am construit acest sistem:
- Mesajele nu părăsesc serverele noastre. Traducerea se face pe propriile noastre servere, de către un model local care funcționează doar pe CPU; nu se folosește niciun API extern de traducere.
- Păstrarea limbajului jocului. Chatul de MMORPG e plin de abrevieri, termeni de joc și emoji. Folosim un glosar specific jocului și protejăm separat emoji-urile, ca să nu se piardă la traducere.
Ce urmează
Munca la performanța pe mobil și la celelalte platforme pe care le vizăm continuă. Pentru lista completă a comenzilor, din perspectiva jucătorului, aruncă o privire la ghidul multiplatformă pentru PC și mobil de pe site-ul jocului. Ca să cunoști studioul nostru, citește Cine este Astronaut Entertainment?.


