No dienām līdz stundām: spēles skina klonēšana Unity, pārrakstot GUID
2016
MadSword mēs izdevējam laidām klajā vienu match-3 dzinēju ar desmitiem skinu: pīķa brīdī — divpadsmit atjauninājumus un divus jaunus skinus nedēļā.

Divi viena match-3 dzinēja skini: Clash of Diamonds (augšā) un Curse of the Pharaoh (apakšā).
Skins — tie ir pāris simti asetu: spraiti, materiāli, prefabi, ainas. Unity sasaista asetus pēc GUID, kas glabājas katra aseta .meta failā, tāpēc vienkārša skina mapes kopija joprojām visur norādīja uz veco skinu. Komanda saites pārvilka ar rokām. Tas aizņēma dienas, un tik un tā visu laiku kaut kas lūza: kaut kur aizmirsa nomainīt, pārslēdzās uz jauno skinu — bet skina nav vispār, attēli nav tie vai nav tur.
Pārsteidzošākais bija tas, ka neviens to neuzskatīja par problēmu. Cilvēki tik ilgi bija strādājuši šādi, ka vairākas dienas ņemšanās šķita normāls darbs.
Risinājumam Unity API vispār nebija vajadzīgs. Strādājam tieši ar failiem:
- Nokopējam skina mapi.
- Nolasām visus
.metafailus kopijā un katram asetam piešķiram jaunu GUID, saglabājot atbilstību vecais → jaunais. - Ejam cauri visiem kopijas failiem — ainām, prefabiem, materiāliem — un katru veco GUID aizstājam ar jauno.
Tā mūsu kopējā dzinējā Engine radās Smart Duplicate: labais klikšķis uz skina mapes, Ctrl+Alt+D. Vispirms tas pārslēdza projektu uz teksta serializāciju, lai jebkuru ainu un prefabu varētu labot kā parastu tekstu, un tad pārrakstīja GUID piecpadsmit Unity failu veidos — ainās, prefabos, materiālos, animācijās, kontrolleros, fontos un citos.
Tagad visas iekšējās saites veda uz jaunā skina iekšieni. Algoritmu izdomāju es un soli pa solim to izskaidroju programmētājam; skriptu viņš uzrakstīja vienā dienā.
Pēc tam jauns skins nozīmēja pāris stundas, lai saliktu jaunos attēlus. Testēšana kļuva vienkāršāka, lūza mazāk, un komanda sāka izlaist versijas ātrāk.
Mācība: meklējiet darbu, ko komanda vairs nepamana. Visdārgākie manuālie soļi bieži ir tie, ar kuriem visi ir samierinājušies kā ar „tā nu tas tiek darīts”.