Tank Masters - շարժական հանելուկ խաղ տանկերի մասին

Պատմությունն այն մասին, թե ինչպես Berserk Online-ի ստեղծողները որոշեցին անցնել տանկերին և ինչ ստացվեց դրանից:

Ինչպես գիտեք, ցանկացած ինքնահարգանք խաղային ընկերությունպետք է խաղ տանկերի մասին: Մենք բացառություն չենք՝ Baytex:

Մի խաղ տանկի վարպետներ«Ալքիմիա» հին դասական DOS խաղի թեմայի տարբերակ է, սակայն օգտագործում է տանկի շինարարության զարգացման պատմության դրվածքը: Խաղը շատ պարզ է, կանոնները՝ տարրական, ուստի խաղի մեջ առաջնային նշանակություն ունեն տարրերի ցանկն ու «բաղադրատոմսերը», մտածված խաղախաղը, ինչպես նաև գրաֆիկան ու ձայնը։

գաղափար

Ընդհանուր գաղափարը շատ արագ ձևավորվեց, բայց նախաարտադրական փուլում մանրամասները բազմիցս փոխվեցին։ Սկզբում նախատեսվում էր մեկ մեծ ճյուղ, որում խառնված են բոլոր խոշոր տանկային ազգերը։ Այս գաղափարն արագորեն լքվեց՝ գիտակցելով ինտերֆեյսում հսկայական թվով էլեմենտներ ցուցադրելու անհրաժեշտությունը, և որոշվեց մեկ այլ տարբերակի վրա՝ մեկ ազգ = մեկ արշավ խաղի մեջ: Արդյունքում, ինտերֆեյսի բազմաթիվ էսքիզներ «թափ անելով», ստացանք գնահատական ​​ինտերֆեյսի հարմարության առումով՝ առավելագույնը 10 տարրից բաղկացած 12 խումբ։

Հիմնական խաղի էկրանի ընտրանքներ.

Հետո հաջորդեց տարրերի ընտրությունը, որոնց վիճակված էր մտնել խաղի մեջ։

Քանի որ Baytex-ը ռուսական խաղային ընկերություն է, որոշվեց սկսել ԽՍՀՄ տանկերի կառուցման դպրոցից՝ որպես ամենամոտ և ծանոթ դպրոց: Հիմնական խմբերի, այդ թվում՝ տանկերի ընտրությունը դժվար չէր։ Սա անմիջապես ներառում էր շատերին ծանոթ մեքենաներ առցանց խաղՏանկերի աշխարհ. Սկսած լեգենդար «երեսունչորսից» և ԻՍ-ներից և վերջացրած A-20, A-44 և KV-13 նախատիպերով, որոնք չեն մտել սերիա: Այնուհետև ավելացվել են տանկերի ոչ պակաս ակնհայտ «պահեստամասեր»՝ շասսիի տարբեր տարրեր, շարժիչի խցիկ, հրացաններ և այլն։




Պատմական բազմազանությունը մեծացնելու համար ավելացվել են ականավոր դիզայներներ և հայտնի իրադարձություններ, որոնք այս կամ այն ​​կերպ կապված են տանկերի կառուցման հետ.


Սկսել

Ամենադժվարն ու հետաքրքիրն, իհարկե, արձագանքներ կազմելու գործընթացն էր։ Արդեն ծրագրված տարրերից մի քանիսը պետք է հեռացվեին՝ փոխարինելով մյուսները՝ ավելի տրամաբանական կապեր ստեղծելու համար: Դա առանց թվացյալ տարօրինակ, բայց միանգամայն տրամաբանական արձագանքների չէր։

Ռեակցիաների ցուցակ ստեղծելիս մենք չմոռացանք նաև խաղի կախվածության, խաղացողի ներգրավվածության և ակնարկներ օգտագործելու մոտիվացիայի մասին: Խաղի սկզբում հասանելի ռեակցիաների թիվը անընդհատ աճում է, ուստի խաղացողին պետք է հավաքի միայն առաջին 10-15 տարրերը, որպեսզի տարվի գործընթացով: Դա շարունակվում է մինչև առաջին տանկի ստեղծումը, որը, ըստ World of Tanks-ի կանոնների, MS-1-ն է։ Այնուհետեւ հնարավոր ռեակցիաների թիվը աստիճանաբար կրճատվում է, որպեսզի նորի հայտնաբերումից հետո հիմնական տարրնորից բարձրանալ և խաղացողին պարգևատրել խաղի մեջ արագ առաջադիմելու ունակությամբ՝ իրենց ջանքերի համար: Երբ քիչ անհայտ տարրեր են մնում, շատ դժվար է դառնում վավեր համակցություններ գտնելը:

Տարրերի ցանկն ի սկզբանե կազմվել է տուփի մեջ գտնվող թղթի վրա, որը շատ անհարմար էր փոխել ու ստուգել։ Հետևաբար, հավաքածուների և ռեակցիաների տեսողական խմբագրման գործիքը ներդրվեց գրեթե անմիջապես:

Քանի որ մենք վերցրեցինք այնպիսի մեծ կոմբայն, ինչպիսին Grails-ն է պարզ առաջադրանքի համար, հեշտ է կռահել, որ շրջանակի հնարավորությունները օգտագործվել են բազմաթիվ առումներով: Խաղի դիզայների հարմարության համար դուք կարող եք խմբագրել տարրեր AJAX-ի միջոցով.

Մենք սկսեցինք պայքարել հետին պլանում ապագա սխալների դեմ՝ վավերացման մեխանիզմների օգնությամբ: Նաև ապագայում խնդիրներից խուսափելու համար գրվել են զտիչներ, որոնք օգնում են գտնել հնարավոր սխալներ(կոտրված նկարներ, մոռացված նկարագրություններ); կամ զտիչ, որը ցուցադրում է տարրեր, որոնք չեն պատկանում որևէ խմբի:

Պարզվեց, որ օգտակար է գրել սցենարներ՝ փնտրելու տարրեր, որոնք, սկզբունքորեն, հնարավոր չէ ձեռք բերել: Նման տարրերի առկայությունը շատ մեծ սխալ է։ Սկզբնական տարրերը (որոնք նույնպես հնարավոր չէ ձեռք բերել ուրիշներից) նշվել են «հիմնական»:

Բջջային հավելված

Հավելվածը ներդրված է C#-ում Unity3D-ի միջոցով: Չնայած 3D վերջածանցի առկայությանը, Unity-ն բավականին հարմար է 2D խաղեր մշակելու համար։ Ամենակարևորը, եթե ինչ-որ գործառույթ բացակայում է բուն Unity շրջանակում, ապա կարող եք գտնել plugin-ը Unity Asset Store-ում: Պլագիններից շատերը անվճար են:

Խաղի ճարտարապետության ընտրությունը մեկն է հիմնական որոշումներ, որն ընդունվում է մինչև մշակման մեկնարկը։ Մենք ուսումնասիրեցինք նմանատիպ թեմաներով բազմաթիվ խաղեր և որոշեցինք, որ տարբեր տեսարաններում տարբեր էկրաններ ստեղծելու տարբերակը մեզ չի համապատասխանում։ Սա թույլ չի տա հասնել էկրանների միջև անցման անհրաժեշտ սահունությանը և մեծապես կբարդացնի անցումների ավելացումը, երբ դրանք փոխվեն:

Տեսարանների նման մի բան իրականացրել ենք, բայց մեր միջոցներով։ Մենք ունենք էկրանի կառավարիչ, որն ունի իր պետական ​​մեքենան, որը կարող է անցնել էկրանների միջև: Յուրաքանչյուր էկրան իրականացնում է ինտերֆեյս Hide, Show մեթոդներով և ունի մի քանի իրադարձություն՝ OnShow, OnHide: Սա մեզ հնարավորություն տվեց օգտագործել Mecanim-ը էկրանի անցումային անիմացիաներ ստեղծելու համար և հեշտացրեց դրանց հետ աշխատելը:

Զարգացման սկզբում մենք բախվեցինք բարդ ընտրության՝ օգտագործել հայտնի գրադարաններ, որոնք պարզեցնում են 2D զարգացումը (օրինակ՝ ngui), կամ օգտվել հնարավորությունից և փորձել իրականացնել ամեն ինչ՝ օգտագործելով նոր հայտնված Unity UI համակարգը: Մենք ընտրեցինք վերջինը և գրեթե չզղջանք, թեև վերջնական արդյունքը սփրայթի խառնուրդ էր (օգտագործվում է խաղախաղ) և կտավ (օգտագործվում է մենյուում, վերնագրում, գործիքի հուշումներում):

Դիմումը չափազանց պարզ է. Ընդհանուր առմամբ կա 7 խաղի էկրան, որոնք համապատասխանում են 7 կարգավորիչների՝ MonoBehaviour: Մի կողմից, նրանք բաժանորդագրվում են անտեսանելի առարկաներից իրադարձություններին, օրինակ, խաղերի խանութի իրադարձություններին: Մյուս կողմից, անհրաժեշտության դեպքում, նրանք ստեղծում են թռուցիկ պատուհաններ և երկխոսություններ, վերահսկում են ձայները և երաժշտությունը:

Մի փոքր օգտագործվող գրադարանների մասին։ Մենք ընտրեցինք պլագիններ՝ հիմնվելով հետևյալ բնութագրերի վրա.

● plugin-ը զարգանում է, կա համայնք. Միասնությունը կանգ չի առնում, ես չեմ ուզում բախվել անհամատեղելիության խնդրին հին տարբերակ plugin նոր Unity-ով և ծրագրավորողների ցանկության բացակայությունը թարմացնելու plugin-ը.

● plugin-ն անվճար է, կամ կա «անվճար» (shareware) տարբերակ՝ փորձարկման համար.

● բաց կոդով - ոչ պարտադիր պայմանբայց շատ ցանկալի: Երբեմն ձեզ անհրաժեշտ է շտապ շտկել որոշ հայտնաբերված սխալներ, և մեկ շաբաթ սպասելով ծրագրավորողների փոփոխություններին, միշտ չէ, որ հնարավորություն է:

Տվյալները պահելու համար մենք օգտագործում ենք JSON, որը հեշտ է դիտել ձեր աչքերով և հեշտ է արտահանել ռեակցիայի խմբագրիչից: Unity-ի ներսում JSON-ի հետ աշխատելու համար մեր ընտրությունը ընկավ JSONObject-ի վրա. այն ունի այն ամենը, ինչ ձեզ հարկավոր է և ունի բավականին բարձր արագություն, այն ավտոմատ կերպով մշակում է 2-3 հազար տարրերից բաղկացած ռեակցիաների պատմություն ունեցող ցուցակը մեկ վայրկյանից պակաս ժամանակում:

Android-ի ընկղմվող ռեժիմ- սա շատ փոքր, բայց շատ կարևոր պլագին է, որը մեծացնում է խաղացողի ընկղմումը խաղի մեջ. համապատասխանաբար ավելանում է նաեւ խաղում անցկացրած ժամանակը։ Սա Android-ի համար անհրաժեշտ փլագին է, ուստի ես ստիպված էի մի փոքր փորփրել աղբյուրները, ավելացնել «#if UNITY_ANDROID». առանց դրանց plugin-ը խանգարում էր iOS-ի համար նախագծի կառուցմանը: Ընկղմվող ռեժիմը մի ռեժիմ է, որում ձեր ծրագիրը ցուցադրվում է օգտատիրոջը ամբողջ էկրանով, մինչդեռ համակարգային գծեր չեն երևում, ներառյալ նավիգացիոն գոտին:

Ֆեյսբուքկարող է օգտագործվել որպես մեկ կանգառի լուծում: Խաղացողին Facebook-ի հաշվին կապելը թույլ է տալիս հրապարակել ձեռքբերումները Graph API-ի միջոցով: Բացի այդ, սոցիալական լրատվամիջոցկարող է օգտագործվել խաղացողի հետ շփվելու համար: Այն դեպքում, երբ նվագարկիչն ունի մի քանի սարքեր (օրինակ՝ Windows նոութբուք, Android պլանշետ և iOS հեռախոս), ամենահարմարն է լիազորել սոցիալական ցանցերի միջոցով։ FB թիմը շատ ավելի հեշտացրել է ծրագրավորողների կյանքը՝ թողարկելով Unity-ի համար հավելված: Թույլտվություն/համօգտագործում – ամեն ինչ աշխատում է առանց ներդնելու:

DOTween- հավելվածի ներսում գտնվող բոլոր անիմացիաները կատարվում են օգտագործելով ստանդարտ միջոցներ Unity, Mecanim և երբեմն ժառանգական անիմացիաներ, բայց պարզվեց, որ ավելի հեշտ է տարրերի շարժումը պարուրաձև դարձնել երրորդ կողմի պլագինների հետ ռեակցիաների ժամանակ, դրա համար շարժումը սկսելուց առաջ ստեղծվում են մի քանի կետեր, որոնց համաձայն DOTween-ը կառուցում է օբյեկտի շարժման ուղին.

Սումլա- «ցուցափեղկ», որը թույլ է տալիս ծրագիրը միացնել միանգամից մի քանի «շուկաների»՝ Google-ի Խաղալ շուկա, iTunes App Store, Amazon Appstore, Windows հեռախոսխանութ. Մեր կարծիքով, սա միակ փլագինն է, որը միավորում է նման քանակությամբ խանութների աջակցությունը, ունի լավ համայնք, արագ զարգանում է և նույնիսկ անվճար։

Գրադարանն օգտագործվել է հավելվածը թարգմանելու համար խելացի տեղայնացում. Կան աղբյուրներ github-ում, շատ դրական արձագանքներըակտիվների խանութում: Կա արտահանում/ներմուծում դեպի csv, այն աշխատում է գրեթե առանց մեկնաբանության։ Սկզբում տարրերի թարգմանությունն իրականացվում էր տարրերի խմբագրիչում, բայց հետո այն միացված էր հապճեպգրավոր արտահանում XML-ին, հասկանալի SmartLocaliztion-ի համար:

Response.addHeader("Content-Type", "text/xml; charset=utf-8") def xml = new MarkupBuilder(response.writer) xml.root() ( (def o: օբյեկտների համար) (տվյալներ([" name": o.key, "xml:space": "պահպանել"]) ( value(o.value) ) ) answer.writer.flush()
Հաջորդիվ թարգմանությունները ներմուծվել են Unity միջավայր և տեղում խմբագրվել։ Սրա շնորհիվ հնարավոր եղավ տեսնել, թե արդյոք թարգմանված տեքստը ինչ-որ տեղ սահմաններից դուրս է, և ի վերջո ինչ տեսք կունենա ամեն ինչ։

Արվեստի ոճ

Այն բանից հետո, երբ հայտնի դարձավ խաղի տարրերի ցանկը, մեր երկու նկարիչներ սկսեցին աշխատել գրաֆիկական դիզայնի վրա:

Առաջին քայլը խաղային պատուհանների մի քանի էսքիզներ նկարելն էր՝ որոշելու համար տեսքըխաղեր. Արդյունքում, բաց մոխրագույն երանգները և խակին դարձան խաղի ձևավորման հիմնական գույները, այնպես որ փոքր տեքստը հեշտ է կարդալ, բաց ֆոնի վրա նկարազարդումները հստակ տեսանելի են, իսկ կանաչի երանգները խաղացողին ստիպում են կապվել տանկի թեմայի հետ: .

Ընտրելով համապատասխան վիզուալ ոճ՝ մենք սկսեցինք նկարել ինտերֆեյսի մնացած պատուհանները և զուգահեռաբար աշխատել առարկաների նկարազարդումների վրա։ Որոշվեց տանկեր և այլ առարկաներ պատկերել կոմիքսների ոճով, որպեսզի համապատասխանեն խաղի պարզ մեխանիզմին և ընդհանուր տրամադրությանը: Համար տոնային անցումներգրադիենտների փոխարեն կիրառվել են հարվածներ (այս տեխնիկան փոխառել ենք հին տեխնիկական գրականության նկարազարդումներից): Հեռախոսի էկրանին բաքի մանր մանրամասները տեսանելի դարձնելու համար նկարազարդումների մեջ մի փոքր մեծացրել ենք դրանք, ընտրված ոճը սրան չէր հակասում։







Այն պատրաստ լինելուն պես գրաֆիկական բովանդակությունը փոխանցվեց ծրագրավորողներին և հրաշքով հայտնվեց խաղի մեջ։ Օրեցօր խաղի տարրերի թիվն աճում էր։ Հետագայում յուրաքանչյուր տանկ ստացավ քողարկում, որը դիվերսիֆիկացրեց խաղի գրաֆիկան:

Խաղի ամբողջ անիմացիան ստեղծված է Unity-ի վրա, որը հարմար է ինչպես ծրագրավորողներին, այնպես էլ նկարիչներին: Նկարիչներին դուր է եկել ժամանակացույցի պատուհանի հետ աշխատելու հարմարավետությունը, որը նման է Adobe AfterEffects կամ Photoshop CS6 պատուհանին, ծրագրավորողներին՝ առանց Unity անիմացիան ներմուծելու ուղիներ փնտրելու:

ձայնային դերասանություն

Զարգացման սկզբում մենք վերցրեցինք ձայնային դերասանական և երաժշտությունը մեր մյուս նախագծից: Վերջնական տարբերակը պատվիրել ենք ֆրիլանսերից։ Երբ նա ներկայացրեց ձայնային դերասանական առաջին տարբերակները, պարզվեց, որ հնչյունները տարբերվում են տեւողությամբ։ Եվ ամենավատն այն էր, որ դրանց տեւողությունը տարբերվում էր մեր օգտագործած հնչյուններից եւ, համապատասխանաբար, չէր համապատասխանում անիմացիային։ Այս փուլում մենք ֆրիլանսերին տվեցինք հավելված՝ տրամադրված ձայների հավաքածուով։ Այնուհետև բոլոր հնչյունները նորմալացվեցին տևողության և ծավալի համար, և առաջարկվեցին ձայնային դերասանական մի քանի նոր գաղափարներ:

#1 պատրաստակամություն և ազատում

Արդյունքում այս բոլոր մասերը միացնելով մենք ստացանք մեր խաղը։ Ավելին, հավաքված հավելվածը փորձարկվեց կրակի և ջրի միջով անցնելու համար: Թեստավորումն անցկացվել է ավելի քան 30 տարբեր սարքերի վրա։ Արդյունքում, մենք ստիպված եղանք սեղմել որոշ նկարներ, քանի որ, այնուամենայնիվ, միայն նկարիչը կարող էր նկատել տարբերությունը աչքով. սա մեզ խնայեց մոտ 40 ՄԲ RAM: Այնուհետև մենք միավորեցինք տարրերի նկարները սփրայթ թերթերի հետ, ինչը նվազեցրեց խաղարկությունների թիվը ~430-ից մինչև ~80: Ավելացվեց տեսարանից դուրս օբյեկտների հեռացում, թեև դրանք տեսանելի չէին, նրանցից յուրաքանչյուրը ավելացրեց լրացուցիչ ոչ-ոքի կանչ: Հենց հիմա խաղը լավ է զգում iPhone 4-ում և աշխատում է Android-ով 512 ՄԲ օպերատիվ հիշողությամբ:

Այժմ, երբ զգոն և բծախնդիր փորձարկողները գոհ են ամեն ինչից, մնում է հավելվածը ներբեռնել տարբեր առևտրային հարթակներ և սպասել գործարկման հուզիչ պահին:

Փորձեք ընկղմվել քսաներորդ դարի առաջին կեսի հրաշալի դարաշրջանում, երբ հսկայական հրեշներտանկերը վերածվել են իսկական պատերազմի հերոսների.

Օգտատիրոջ մեկնաբանությունները

Անդրուչայի ալիք
13.01.2018 — 10:57

Չեք հավատա, բայց ես 14 տարեկան եմ)))

Ամեն ինչ տանկերի մասին
14.01.2018 — 18:50

Վալերդոս Դրեյ
17.01.2018 — 17:31

բացել երկու մտո

minecraft clashroyal
19.01.2018 — 18:50

Q1+Q2=ձմեռային պատերազմ

Խաղերի ալիք
21.01.2018 — 11:14

միացնել bt 2 և bt 5

ԿԱՏՈՒ ՄԱՐԿՈՒՍ ԿՈՏՈՖԵՅԸ ԳՅՈՒՂՈՒՄ
24.01.2018 — 09:14

Խաղերի ալիք
23.01.2018 — 12:42

միացնել bt 2 և bt 5

Բորիս Լյախով
26.01.2018 — 04:42

Bt5 + bt 7 \u003d վազ դիմակվայի համար

nadka kisya ալիք ալա գուբչակ
27.01.2018 — 08:27

Վասյա Սուխումսկի
28.01.2018 — 16:10

փոխաբերական իմաստով

Անդրուչայի ալիք
30.01.2018 — 10:53

Մաքս Բիլինովիչ
31.01.2018 — 23:15

Մարսելի առվակ
03.02.2018 — 00:19

ասա ոնց անցնեմ ԽՍՀՄ

alvamar.ru

Tank Masters recipes ussr - Բոլոր բաղադրատոմսերը

Օգտատիրոջ մեկնաբանությունները

Անդրուչայի ալիք
28.09.2018 — 07:11

Չեք հավատա, բայց ես 14 տարեկան եմ)))

Ամեն ինչ տանկերի մասին
29.09.2018 — 20:03

Քանի տարեկան եք, խնդրում եմ, ասեք ինձ 8.5

Վալերդոս Դրեյ
01.10.2018 — 16:33

բացել երկու մտո

minecraft clashroyal
04.10.2018 — 15:42

Q1+Q2=ձմեռային պատերազմ

Խաղերի ալիք
05.10.2018 — 16:07

միացնել bt 2 և bt 5

ԿԱՏՈՒ ՄԱՐԿՈՒՍ ԿՈՏՈՖԵՅԸ ԳՅՈՒՂՈՒՄ
07.10.2018 — 10:44

Խաղերի ալիքը քարտեզագրելու է ATP Aya-ն երկար մտածելով

Խաղերի ալիք
07.10.2018 — 21:32

միացնել bt 2 և bt 5

Բորիս Լյախով
10.10.2018 — 20:27

Bt5 + bt 7 \u003d վազ դիմակվայի համար

nadka kisya ալիք ալա գուբչակ
13.10.2018 — 10:55

Բորիս Լյախովը սովորում է գրել, հետո գրել

Վասյա Սուխումսկի
12.10.2018 — 01:38

փոխաբերական իմաստով

Անդրուչայի ալիք
13.10.2018 — 23:00

Լյուդմիլա Բիլինովիչ
15.10.2018 — 12:33

իսկ ես արդեն Գերմանիայում եմ, ու ավարտել եմ ԽՍՀՄ-ը

Մարսելի առվակ
18.10.2018 — 06:14

ասա ոնց անցնեմ ԽՍՀՄ

alena-souveniry.ru

Tank Masters - ալքիմիա տանկերով

Մինչ օրս տանկերը դարձել են խաղային արդյունաբերության իսկապես կարևոր մաս: Նրանց օգնությամբ դուք կարող եք մասնակից դառնալ մեծ մարտերի, որոնք արդեն նվաճել են միլիոնավոր մարդկանց սրտերը ամբողջ աշխարհում: Հարկ է նշել նաև, որ ներս վերջին ժամանակներըվրա շարժական սարքերԱյս տեսակի ավելի ու ավելի օրիգինալ մշակումներ են հայտնվում, որոնք միանշանակ ուշադրության են արժանի։

Այս դեպքում խոսքը ոչ թե Timelines: Assault on America-ի նման խաղի մասին է, որտեղ պետք է մասնակցել դաժան մարտերի, այլ բոլորովին այլ խաղային աշխարհների:

Խաղի գործընթացի առանձնահատկությունները

Մի խաղ տանկի վարպետներԱյն վերջերս է թողարկվել, բայց արդեն հասցրել է զգալի թվով երկրպագուներ ձեռք բերել։ Այս մշակման մեջ մեզ առաջարկվում են ժամանակակից և դասական տանկերի որոշ մանրամասներ: Նրանց օգնությամբ հնարավոր է դառնում հավաքել բացարձակապես անհավանական սարքավորումներ, որոնց հնարավորությունները կախված են միայն խաղում մեր մարտավարությունից։ Խաղն ունի հիանալի գրաֆիկա, ինչպես նաև հսկայական թվով հնարավորություններ, որոնք չկան որևէ այլ ալքիմիական խաղում:

Խաղի ընթացքի տեսանյութ

Ներբեռնեք Google Play-ից | Ներբեռնեք կայքից

samsung-galaxy.mobi



  • Բջջային հավելվածների մշակում
  • Պատմությունն այն մասին, թե ինչպես Berserk Online-ի ստեղծողները որոշեցին անցնել տանկերին և ինչ ստացվեց դրանից:

    Ինչպես գիտեք, ցանկացած իրեն հարգող խաղային ընկերություն պետք է խաղ անի տանկերի մասին: Մենք բացառություն չենք՝ Baytex:

    Tank Masters-ը հին դասական DOS խաղի «Ալքիմիա» տարբերակն է, բայց օգտագործում է տանկի շինարարության զարգացման պատմության պարամետրը: Խաղը շատ պարզ է, կանոնները՝ տարրական, ուստի խաղի մեջ առաջնային նշանակություն ունեն տարրերի ցանկն ու «բաղադրատոմսերը», մտածված խաղախաղը, ինչպես նաև գրաֆիկան ու ձայնը։

    գաղափար

    Ընդհանուր գաղափարը շատ արագ ձևավորվեց, բայց նախաարտադրական փուլում մանրամասները բազմիցս փոխվեցին։ Սկզբում նախատեսվում էր մեկ մեծ ճյուղ, որում խառնված են բոլոր խոշոր տանկային ազգերը։ Այս գաղափարն արագորեն լքվեց՝ գիտակցելով ինտերֆեյսում հսկայական թվով էլեմենտներ ցուցադրելու անհրաժեշտությունը, և որոշվեց մեկ այլ տարբերակի վրա՝ մեկ ազգ = մեկ արշավ խաղի մեջ: Արդյունքում, ինտերֆեյսի բազմաթիվ էսքիզներ «թափ անելով», ստացանք գնահատական ​​ինտերֆեյսի հարմարության առումով՝ առավելագույնը 10 տարրից բաղկացած 12 խումբ։

    Հիմնական խաղի էկրանի ընտրանքներ.

    Հետո հաջորդեց տարրերի ընտրությունը, որոնց վիճակված էր մտնել խաղի մեջ։

    Քանի որ Baytex-ը ռուսական խաղային ընկերություն է, որոշվեց սկսել ԽՍՀՄ տանկերի կառուցման դպրոցից՝ որպես ամենամոտ և ծանոթ դպրոց: Հիմնական խմբերի, այդ թվում՝ տանկերի ընտրությունը դժվար չէր։ Սա անմիջապես ներառում էր առցանց շատերին ծանոթ մեքենաներ խաղային աշխարհտանկերի. Սկսած լեգենդար «երեսունչորսից» և ԻՍ-ներից և վերջացրած A-20, A-44 և KV-13 նախատիպերով, որոնք չեն մտել սերիա: Այնուհետև ավելացվել են տանկերի ոչ պակաս ակնհայտ «պահեստամասեր»՝ շասսիի տարբեր տարրեր, շարժիչի խցիկ, հրացաններ և այլն։




    Պատմական բազմազանությունը մեծացնելու համար ավելացվել են ականավոր դիզայներներ և հայտնի իրադարձություններ, որոնք այս կամ այն ​​կերպ կապված են տանկերի կառուցման հետ.


    Սկսել

    Ամենադժվարն ու հետաքրքիրն, իհարկե, արձագանքներ կազմելու գործընթացն էր։ Արդեն ծրագրված տարրերից մի քանիսը պետք է հեռացվեին՝ փոխարինելով մյուսները՝ ավելի տրամաբանական կապեր ստեղծելու համար: Դա առանց թվացյալ տարօրինակ, բայց միանգամայն տրամաբանական արձագանքների չէր։

    Ռեակցիաների ցուցակ ստեղծելիս մենք չմոռացանք նաև խաղի կախվածության, խաղացողի ներգրավվածության և ակնարկներ օգտագործելու մոտիվացիայի մասին: Խաղի սկզբում հասանելի ռեակցիաների թիվը անընդհատ աճում է, ուստի խաղացողին պետք է հավաքի միայն առաջին 10-15 տարրերը, որպեսզի տարվի գործընթացով: Դա շարունակվում է մինչև առաջին տանկի ստեղծումը, որը, ըստ World of Tanks-ի կանոնների, MS-1-ն է։ Այնուհետև հնարավոր ռեակցիաների թիվը աստիճանաբար կրճատվում է, որպեսզի նորից ավելանա նոր հիմնական տարրի հայտնաբերումից հետո և խաղացողին պարգևատրի իր ջանքերի համար խաղի մեջ արագ առաջադիմելու հնարավորությամբ: Երբ քիչ անհայտ տարրեր են մնում, շատ դժվար է դառնում վավեր համակցություններ գտնելը:

    Տարրերի ցանկն ի սկզբանե կազմվել է տուփի մեջ գտնվող թղթի վրա, որը շատ անհարմար էր փոխել ու ստուգել։ Հետևաբար, հավաքածուների և ռեակցիաների տեսողական խմբագրման գործիքը ներդրվեց գրեթե անմիջապես:

    Քանի որ մենք վերցրեցինք այնպիսի մեծ կոմբայն, ինչպիսին Grails-ն է պարզ առաջադրանքի համար, հեշտ է կռահել, որ շրջանակի հնարավորությունները օգտագործվել են բազմաթիվ առումներով: Խաղի դիզայների հարմարության համար դուք կարող եք խմբագրել տարրեր AJAX-ի միջոցով.

    Մենք սկսեցինք պայքարել հետին պլանում ապագա սխալների դեմ՝ վավերացման մեխանիզմների օգնությամբ: Նաև ապագայում խնդիրներից խուսափելու համար գրվել են զտիչներ, որոնք օգնում են գտնել հնարավոր սխալները (կոտրված նկարներ, մոռացված նկարագրություններ); կամ զտիչ, որը ցուցադրում է տարրեր, որոնք չեն պատկանում որևէ խմբի:

    Պարզվեց, որ օգտակար է գրել սցենարներ՝ փնտրելու տարրեր, որոնք, սկզբունքորեն, հնարավոր չէ ձեռք բերել: Նման տարրերի առկայությունը շատ մեծ սխալ է։ Սկզբնական տարրերը (որոնք նույնպես հնարավոր չէ ձեռք բերել ուրիշներից) նշվել են «հիմնական»:

    Բջջային հավելված

    Հավելվածը ներդրված է C#-ում Unity3D-ի միջոցով: Չնայած 3D վերջածանցի առկայությանը, Unity-ն բավականին հարմար է 2D խաղեր մշակելու համար։ Ամենակարևորը, եթե ինչ-որ գործառույթ բացակայում է բուն Unity շրջանակում, ապա կարող եք գտնել plugin-ը Unity Asset Store-ում: Պլագիններից շատերը անվճար են:

    Խաղի ճարտարապետության ընտրությունը ամենակարևոր որոշումներից մեկն է, որը կայացվում է նախքան մշակումը սկսելը: Մենք ուսումնասիրեցինք նմանատիպ թեմաներով բազմաթիվ խաղեր և որոշեցինք, որ տարբեր տեսարաններում տարբեր էկրաններ ստեղծելու տարբերակը մեզ չի համապատասխանում։ Սա թույլ չի տա հասնել էկրանների միջև անցման անհրաժեշտ սահունությանը և մեծապես կբարդացնի անցումների ավելացումը, երբ դրանք փոխվեն:

    Տեսարանների նման մի բան իրականացրել ենք, բայց մեր միջոցներով։ Մենք ունենք էկրանի կառավարիչ, որն ունի իր պետական ​​մեքենան, որը կարող է անցնել էկրանների միջև: Յուրաքանչյուր էկրան իրականացնում է ինտերֆեյս Hide, Show մեթոդներով և ունի մի քանի իրադարձություն՝ OnShow, OnHide: Սա մեզ հնարավորություն տվեց օգտագործել Mecanim-ը էկրանի անցումային անիմացիաներ ստեղծելու համար և հեշտացրեց դրանց հետ աշխատելը:

    Զարգացման սկզբում մենք բախվեցինք բարդ ընտրության՝ օգտագործել հայտնի գրադարաններ, որոնք պարզեցնում են 2D զարգացումը (օրինակ՝ ngui), կամ օգտվել հնարավորությունից և փորձել իրականացնել ամեն ինչ՝ օգտագործելով նոր հայտնված Unity UI համակարգը: Մենք ընտրեցինք վերջինը և գրեթե չզղջանք դրա համար, թեև վերջում պարզվեց, որ խաղը սփրայթի (օգտագործվում է հենց խաղի մեջ) և կտավի (օգտագործվում է մենյուում, վերնագրում, գործիքի հուշումներում) խառնուրդ է։

    Դիմումը չափազանց պարզ է. Ընդհանուր առմամբ կա 7 խաղի էկրան, որոնք համապատասխանում են 7 կարգավորիչների՝ MonoBehaviour: Մի կողմից, նրանք բաժանորդագրվում են անտեսանելի առարկաներից իրադարձություններին, օրինակ, խաղերի խանութի իրադարձություններին: Մյուս կողմից, անհրաժեշտության դեպքում, նրանք ստեղծում են թռուցիկ պատուհաններ և երկխոսություններ, վերահսկում են ձայները և երաժշտությունը:

    Մի փոքր օգտագործվող գրադարանների մասին։ Մենք ընտրեցինք պլագիններ՝ հիմնվելով հետևյալ բնութագրերի վրա.

    ● plugin-ը զարգանում է, կա համայնք. Unity-ը կանգ չի առնում, ես չեմ ցանկանում առերեսվել փլագինի հին տարբերակի անհամատեղելիության խնդրին նոր Unity-ի հետ և մշակողների ցանկության բացակայությանը՝ փլագինը թարմացնելու համար։ ;

    ● plugin-ն անվճար է, կամ կա «անվճար» (shareware) տարբերակ՝ փորձարկման համար.

    ● բաց կոդով կոդը՝ ոչ թե նախապայման, այլ շատ ցանկալի: Երբեմն ձեզ անհրաժեշտ է շտապ շտկել որոշ հայտնաբերված սխալներ, և մեկ շաբաթ սպասելով ծրագրավորողների փոփոխություններին, միշտ չէ, որ հնարավորություն է:

    Տվյալները պահելու համար մենք օգտագործում ենք JSON, որը հեշտ է դիտել ձեր աչքերով և հեշտ է արտահանել ռեակցիայի խմբագրիչից: Unity-ի ներսում JSON-ի հետ աշխատելու համար մեր ընտրությունը ընկավ JSONObject-ի վրա. այն ունի այն ամենը, ինչ ձեզ հարկավոր է և ունի բավականին բարձր արագություն, այն ավտոմատ կերպով մշակում է 2-3 հազար տարրերից բաղկացած ռեակցիաների պատմություն ունեցող ցուցակը մեկ վայրկյանից պակաս ժամանակում:

    Android-ի ընկղմվող ռեժիմ- սա շատ փոքր, բայց շատ կարևոր պլագին է, որը մեծացնում է խաղացողի ընկղմումը խաղի մեջ. համապատասխանաբար ավելանում է նաեւ խաղում անցկացրած ժամանակը։ Սա Android-ի համար անհրաժեշտ փլագին է, ուստի ես ստիպված էի մի փոքր փորփրել աղբյուրները, ավելացնել «#if UNITY_ANDROID». առանց դրանց plugin-ը խանգարում էր iOS-ի համար նախագծի կառուցմանը: Ընկղմվող ռեժիմը մի ռեժիմ է, որում ձեր ծրագիրը ցուցադրվում է օգտատիրոջը ամբողջ էկրանով, մինչդեռ համակարգային գծեր չեն երևում, ներառյալ նավիգացիոն գոտին:

    Ֆեյսբուքկարող է օգտագործվել որպես մեկ կանգառի լուծում: Խաղացողին Facebook-ի հաշվին կապելը թույլ է տալիս հրապարակել ձեռքբերումները Graph API-ի միջոցով: Բացի այդ, սոցիալական ցանցերը կարող են օգտագործվել նվագարկչի հետ կապ հաստատելու համար: Այն դեպքում, երբ նվագարկիչն ունի մի քանի սարքեր (օրինակ՝ Windows նոութբուք, Android պլանշետ և iOS հեռախոս), առավել հարմար է լիազորել սոցիալական ցանցերի միջոցով։ FB թիմը շատ ավելի հեշտացրել է ծրագրավորողների կյանքը՝ թողարկելով Unity-ի համար հավելված: Թույլտվություն/համօգտագործում – ամեն ինչ աշխատում է առանց ներդնելու:

    DOTween– հավելվածի ներսում բոլոր անիմացիաները պատրաստված են Unity-ի, Mecanim-ի և երբեմն-երբեմն ժառանգական անիմացիաների ստանդարտ գործիքների միջոցով, բայց պարզվեց, որ ավելի հեշտ է ստիպել տարրերը պարուրաձև շարժվել երրորդ կողմի պլագինների հետ ռեակցիաներ կատարելիս, դրա համար ստեղծվում են մի քանի կետեր: շարժման մեկնարկից առաջ, ըստ որի DOTween-ը ճանապարհ է կառուցում օբյեկտի շարժման համար։

    Սումլա- «ցուցափեղկ», որը թույլ է տալիս ծրագիրը միացնել միանգամից մի քանի «շուկաների»՝ Google Play Market, iTunes App Store, Amazon Appstore, Windows Phone Store: Մեր կարծիքով, սա միակ փլագինն է, որը միավորում է նման քանակությամբ խանութների աջակցությունը, ունի լավ համայնք, արագ զարգանում է և նույնիսկ անվճար։

    Գրադարանն օգտագործվել է հավելվածը թարգմանելու համար խելացի տեղայնացում. Կան աղբյուրներ github-ում, շատ դրական ակնարկներ ակտիվների խանութում: Կա արտահանում/ներմուծում դեպի csv, այն աշխատում է գրեթե առանց մեկնաբանության։ Սկզբում տարրերի թարգմանությունը կատարվում էր տարրերի խմբագրիչում, բայց հետո գրվեց արտահանում՝ շտապելով հասկանալ SmartLocaliztion XML-ը։

    Response.addHeader("Content-Type", "text/xml; charset=utf-8") def xml = new MarkupBuilder(response.writer) xml.root() ( (def o: օբյեկտների համար) (տվյալներ([" name": o.key, "xml:space": "պահպանել"]) ( value(o.value) ) ) answer.writer.flush()
    Հաջորդիվ թարգմանությունները ներմուծվել են Unity միջավայր և տեղում խմբագրվել։ Սրա շնորհիվ հնարավոր եղավ տեսնել, թե արդյոք թարգմանված տեքստը ինչ-որ տեղ սահմաններից դուրս է, և ի վերջո ինչ տեսք կունենա ամեն ինչ։

    Արվեստի ոճ

    Այն բանից հետո, երբ հայտնի դարձավ խաղի տարրերի ցանկը, մեր երկու նկարիչներ սկսեցին աշխատել գրաֆիկական դիզայնի վրա:

    Նախ, խաղի տեսքը որոշելու համար գծվել են խաղի պատուհանների մի քանի էսքիզներ։ Արդյունքում, բաց մոխրագույն երանգները և խակին դարձան խաղի ձևավորման հիմնական գույները, այնպես որ փոքր տեքստը հեշտ է կարդալ, բաց ֆոնի վրա նկարազարդումները հստակ տեսանելի են, իսկ կանաչի երանգները խաղացողին ստիպում են կապվել տանկի թեմայի հետ: .

    Ընտրելով համապատասխան վիզուալ ոճ՝ մենք սկսեցինք նկարել ինտերֆեյսի մնացած պատուհանները և զուգահեռաբար աշխատել առարկաների նկարազարդումների վրա։ Որոշվեց տանկեր և այլ առարկաներ պատկերել կոմիքսների ոճով, որպեսզի համապատասխանեն խաղի պարզ մեխանիզմին և ընդհանուր տրամադրությանը: Տոնային անցումների համար գրադիենտների փոխարեն կիրառվել են հարվածներ (այս տեխնիկան փոխառել ենք հին տեխնիկական գրականության նկարազարդումներից): Հեռախոսի էկրանին բաքի մանր մանրամասները տեսանելի դարձնելու համար նկարազարդումների մեջ մի փոքր մեծացրել ենք դրանք, ընտրված ոճը սրան չէր հակասում։







    Այն պատրաստ լինելուն պես գրաֆիկական բովանդակությունը փոխանցվեց ծրագրավորողներին և հրաշքով հայտնվեց խաղի մեջ։ Օրեցօր խաղի տարրերի թիվն աճում էր։ Հետագայում յուրաքանչյուր տանկ ստացավ քողարկում, որը դիվերսիֆիկացրեց խաղի գրաֆիկան:

    Խաղի ամբողջ անիմացիան ստեղծված է Unity-ի վրա, որը հարմար է ինչպես ծրագրավորողներին, այնպես էլ նկարիչներին: Նկարիչներին դուր է եկել ժամանակացույցի պատուհանի հետ աշխատելու հարմարավետությունը, որը նման է Adobe AfterEffects կամ Photoshop CS6 պատուհանին, ծրագրավորողներին՝ առանց Unity անիմացիան ներմուծելու ուղիներ փնտրելու:

    ձայնային դերասանություն

    Զարգացման սկզբում մենք վերցրեցինք ձայնային դերասանական և երաժշտությունը մեր մյուս նախագծից: Վերջնական տարբերակը պատվիրել ենք ֆրիլանսերից։ Երբ նա ներկայացրեց ձայնային դերասանական առաջին տարբերակները, պարզվեց, որ հնչյունները տարբերվում են տեւողությամբ։ Եվ ամենավատն այն էր, որ դրանց տեւողությունը տարբերվում էր մեր օգտագործած հնչյուններից եւ, համապատասխանաբար, չէր համապատասխանում անիմացիային։ Այս փուլում մենք ֆրիլանսերին տվեցինք հավելված՝ տրամադրված ձայների հավաքածուով։ Այնուհետև բոլոր հնչյունները նորմալացվեցին տևողության և ծավալի համար, և առաջարկվեցին ձայնային դերասանական մի քանի նոր գաղափարներ:

    #1 պատրաստակամություն և ազատում

    Արդյունքում այս բոլոր մասերը միացնելով մենք ստացանք մեր խաղը։ Ավելին, հավաքված հավելվածը փորձարկվեց կրակի և ջրի միջով անցնելու համար: Թեստավորումն անցկացվել է ավելի քան 30 տարբեր սարքերի վրա։ Արդյունքում, մենք ստիպված եղանք սեղմել որոշ նկարներ, քանի որ, այնուամենայնիվ, միայն նկարիչը կարող էր նկատել տարբերությունը աչքով. սա մեզ խնայեց մոտ 40 ՄԲ RAM: Այնուհետև մենք միավորեցինք տարրերի նկարները սփրայթ թերթերի հետ, ինչը նվազեցրեց խաղարկությունների թիվը ~430-ից մինչև ~80: Ավելացվեց տեսարանից դուրս օբյեկտների հեռացում, թեև դրանք տեսանելի չէին, նրանցից յուրաքանչյուրը ավելացրեց լրացուցիչ ոչ-ոքի կանչ: Հենց հիմա խաղը լավ է զգում iPhone 4-ում և աշխատում է Android-ով 512 ՄԲ օպերատիվ հիշողությամբ:

    Այժմ, երբ զգոն և բծախնդիր փորձարկողները գոհ են ամեն ինչից, մնում է հավելվածը ներբեռնել տարբեր առևտրային հարթակներ և սպասել գործարկման հուզիչ պահին:

    Փորձեք ընկղմվել 20-րդ դարի առաջին կեսի հրաշալի դարաշրջանում, երբ տանկերը հսկայական հրեշներից վերածվեցին իրական պատերազմի հերոսների:

    Հարցեր ունե՞ք

    Հաղորդել տպագրական սխալի մասին

    Տեքստը, որը պետք է ուղարկվի մեր խմբագիրներին.