Saturday, November 9, 2013

ორმხრივი მოძრაობის უპირატესობები

ავტომანქანა რომ გამოვიდა ასპარეზზე და გაექანა და ვიღაც ლორდის ცხენს ხია, რის შედეგადაც მსოფლიოში პირველი ავტოავარია დაფიქსირდა, ჭკვიანი ხალხი დაჯდა და მოიფიქრეს ავტომობილით მოძრაობის წესები. მერე ჩვენ, ქართველები, ისე რომ არც დავმჯდარვართ, მივედით დასკვნამდე, რომ წესები იმის გამო არსებობს, რომ ისინი დაირღვეს. მერე მოვიდა მიშა და სთქვა - იქნას პატრული. და იქმნა პატრული. შეხედა მიშამ და ნახა, რომ კარგი იყო. მეორე დღეს სთქვა: იქმნას ავტოსტრადა გორი-თბილისი. და ასრულდა. ნახეს ეს ავტოსტრადა ინვესტორებმა, განიხარეს ფრიად და აავსეს იგი სხვადასხვა ტრაილერებით და მანქანებით. მერე მოვიდა ჩამკითხველი კაცი, რომელმაც სთქვა, დაე განახლდეს მცხეთა-საგურამოს მონაკვეთიო. შედეგად მივიღეთ სიტუაცია, როდესაც ორზოლიან ცალმხრივი მოძრაობის მონაკვეთზე ერთი ზოლი თბილისისკენ მიდის, მეორე - გორისკენ.


აი, სქემაზე როგორცაა, ზემოთ თბილისესკენაა და მარჯვნიდან უნდა გადახვიდე მარცხენა ხაზში და ბორდიულის მხარეს უნდა გაყვე ადამიანი. შეზღუდვაა თან ბევრგან, რომ გასწრება არ შეიძლება და სიჩქარე 50 ზე მეტი არ გინდათ, შარიაო. მარა რად გინდა, დადიან ზოგიერთი იმდენად ამბიციურები, რომ ამ ორმხრივ მოძრაობაში, რომელიც ჰა და ჰა 2-3 კილომეტრი გრძელდება, გადადიან საწინააღმდეგო ხაზში (რომელიც მისთვის კი დაღმართია, მარა თბილისიდან ვინც მოდის, იმისთვის აღმართია) და ცდილობენ ერთ მანქანას მაინც გაუსწრონ. ვთქვათ გაუსწრო იმ ერთ მანქანას, ხომ ძალიან წინ წავიდა, ბებია უცხონდა, მარა კაი, ჯანდაბას, ვთქვათ გაუსწრო. ეხლა ხომ უნდა დაბრუნდეს ზოლში, თორემ შემხვედრი დაეჯახება. ხოდა აქაა ყველაზე მურტალი მომენტი: იმის გამო, რომ ეს ზოლში უნდა ჩააყენონ, ვისაც გაუსწრო, ის სიჩქარეს ანელებს, შესაბამისად მის მაგალითს ბაძავენ უკან მომავალებიც და შედეგად ვიღებთ ერთი სირის გამო გაჩერებულ მთელ კოლონას.


 თან ჩვენს ერს ხომ აქვს გენეტიკური მოთხოვნილება, პირველი წავიდეს ყველგან, გარდა სადაც საჭიროა (ნუ, დვანზე მაქვს ძირითადად გართულება). ხოდა აი ზედა სურათზე შევეცადე გადამეღო მარა მთლად კარგი არ გამოვიდა, ამიტომ ავხსნი. თბილისიდან მივდივარ გორისკენ. მივდივარ ასფალტზე, ჩემს მარჯვნივ არის ხრეშიანი ბორდიული და უფრო მარჯვნივ - კლდე ადის. ხოდა მარშუტკას მივდევ როგორც ხედავთ. ამ დროს გამოვარდა მერსედესი, გავარდა ბორდიულზე და აღმოჩნდა,რომ ხიდია იქ და ვერ წავა მეტს. რა მივიღეთ? მერსედესი გაჩერდა და ცდილობს ჩაეკვეხოს სადმე. ამის გამო როგორც ზემოთ ავღნიშნე, კოლონა ფერხდება. თან მარტო ეს ერთი მერსედესი კი არაა, მისნაირი კიდე 20 მანქანაა ბორდიულზე და ყველას ჩაკვეხება უნდა. ეგ კი არა და რომელიღაც კუანა მანქანა, ოპელ კორსას ბიძაშვილი, იმ კლდეზე ავარდა, ტოჟე მნე პრინც პერსიი, უკან ჩამოვარდა და ახლა უკვე ორნი ეჩხირებიან კოლონაში.


 
არადა ხომ შეიძლება ელემენტარული ურთიერთპატივისცემით მთელმა კოლონამ უწყვეტად იმოძრაოს? იმ 3 კილომეტრს ხომ მოუნდები გაწელე-გამოწელე 5 წუთი? რომ იჩხირები სადღაც, ძალიან წინ წახვალ და რამეს მოიგებ? მთელი ნახევარი საათი ვჯახირობდი სულ პირველი სიჩქარით: წადი 1 მეტრი, გაჩერდი, წადი, გაჩერდი. ხანდახან მგონია, რომ ის 200 წელიც არ გვიშველის. ასეთი მძღოლების შემყურე სხვებიც ხომ მასე იზავენ და ასეთები გაიზრდებიან? ეს პატრულიც დადიოდა დაქლიავებული, რისთვის ვუხდით ფულს ამის დედა ავატირე, დაიარე და ბორდიულზე ვინც დადის დააჯარიმე ნახრენ. ერთს დააჯარიმებ, ათს, ასს და მიხვდება ბოლო ბოლო ხალხი, რომ პატრულის დედა კი აატირა, მარა ნორმალურად მაინც უნდა იაროს.
 
 

Wednesday, November 6, 2013

როგორ იწრთობოდა.. ანუ ითარგმნებოდა თამაში.

პოსტი იწერება AcidLabz ის გამოცდილების გაზიარების ფარგლებში.

თამაშის თარგმნისას სულ პირველი, რაც ყველაზე მეტად გჭირდებათ, ნებისყოფაა. ნებისყოფა თუ გეყოფათ, ყველაფერი გამოვა. თქვენ რა თქმა უნდა ვერასოდეს წარმოიდგენთ, რომ "Marry Farm" - სადაც თითქმის არაფერი ნაწერი გამოდის, დაახლოებით 200 სტრიქონი მაინც იქნება ბანალურად სათარმგნი და შრიფტის პრობლემები ხომ ცალკე თემაა. თუმცა მოდი მივყვეთ თანამიმდევრულად და ჩავთვალოთ, რომ ნებისყოფა გვაქვს უზარმაზარი.


ბევრჯერ გაიგებდით, რომ თამაშისთვის უნივერსალური სათარგმნი საშუალება არ არსებობს. ყველა თამაშს საკუთარი მიდგომა უნდა. თუმცა მე მაქვს ერთი გამოცდილი ხერხი, რომელიც ყოვლთვის მუშაობს - რუსიფიკატორი. მაგალითისთვის Stalker-ის თარგმნის პროცესს მოვიყვან. ორიგინალი თამაში ინგლისურად მქონდა. შემდეგ ვნახე რუსიფიკატორი. რუსიფიკატორში მოცემულია ხოლმე ის ფაილები, რომლებიც უნდა შეიცვალოს, რომ ტექსტები გარუსულდეს. თუმცა აქ ერთი უხერხულობა რჩება კიდე: ინგლისური და რუსული ენა შედის ANSII კოდირებაში (მემგონი ასე ქვია) და სულ არ ჭირდება შრიფტები, ისედაც ყველა კომპშია. ქართული კი უნიკოდში შედის და პირდაპირ ჩანაცვლება რუსული ტექსტის ქართულით არ გამოდის.


გავაგრძელოთ სტალკერზე საუბარი, რამეთუ ეს პროექტი ჩემი ცხოვრების ნაწილი გახდა. შრიფტების ორი ვარიანტი არსებობს - 1. სისტემური და 2. დახატული. სისტემური შრიფტები კომპს მოყვება ან თამაში აყენებს თვითონ. თამაშის რომელიღაც ფაილში იქნება მითითება, რომ ეს პროგრამა იყენებს ამა და ამ შრიფტსო. აი მაგალითად Half-Life 2 -ზე რომ ვმუშაობდი, სწორედ ასეთი შემთხვევა იყო. გაგიჩნდებათ შეკითხვა: საიდან გაიგე რომელ ფაილში ეწერა შრიფტებზე ინფორმაციაო. ჰოდა აი სწორედ აქაა საჭირო ნებისყოფა: უნდა გუგლოთ, ინტუიცია გამოიყენოთ, შეამოწმოთ თამაშის ფაილები და შეიძლება გაგიმართლოთ. ახლა ზუსტად არ მახსოვს, მაგრამ დაახლოებით ასეთი ჩანაწერი ქონდა ჰალფ ლაიფს ერთ ერთ ტექსტურ ფაილში: Font1 = HalfLife, Font2 = Arial - და აი აქ მივხვდი, რომ მივაგენი. :)


როგორც წესი თამაშში გვხვდება ხოლმე მეორე ვარიანტი, დახატული შრიფტები. არ ვიცი რატომ, ალბათ უფრო ნაკლები სიჩქარე ჭირდება მათ გამოტანას. მოკლედ, DDS ფაილია ან PNG - მასთან ერთად აუცილებლად იქნება მეორე ფაილიც, სადაც მითითებული იქნება თითოეული ასოს კოორდინატი. სტალკერის შემთხვევაში იყო შრიფტების აუარება კომბინაცია ეკრანის კონკრეტული ზომებისათვის. მე გავაკეთე 1024 წერტილზე სამუშაო შრიფტები და სადღაც 1 თვე დამჭირდა ბოლოში გასასვლელად. გადაბმულად რომ მემუშავა, 2 დღეში მოვრჩებოდი, მაგრამ ენთუზიაზმზე სამუშაოდ ეს კარგი დროა. მოკლედ, ამ DDS ფაილს მოყვა მეორე ტექსტური ფაილი, სადაც ეწერა ასოს კოდი ANSII კოდირებაში (მაგალითად Space არის 32 სიმბოლო), მისი საწყისი კოორდინატები (X და Y), ასევე მისი საბოლოო კოორდინატები. ძალიან კარგი პროგრამაა Paint ამ შემთხვევაში. აი ნახეთ, კურსორი რომ დაგყავთ ეკრანზე, დაბლა მარცხენა კუთხეში ეწერება მისი კოორდინატები. იღებთ ამ შრიფტების სურათს (ზედა სურათზე როგორიცაა), აგდებთ ფოტოშოპში, გადაახატავთ ქართულ ასოებს, ინახავთ იგივე პარამეტრებით (სხვათა შორის DDS-ს დაჭირდა გამჭვირვალობის მითითება, რადგან ეს დირექტიქსის ფორმატია), მერე ავსებთ იმ კოორდინატების ფაილს და ეგაა!


შეიძლება მეორე ვარიანტიც, რომელიც საერთოდ არაა რეკომენდირებული, მაგრამ გასართობად წავა: ვიღებთ მარტო შრიფტების სურათს და ვცდილობთ "ჩავტენოთ" ქართული ასოები. ეს ცუდია იმის გამო, რომ მაგალითად ლათინური "l" მეტისმეტად ვიწროა ქართული "ლ"-ს ჩასატევად. ასევე რთულია განიერი "m"-ს ადგილას ვიწრო "მ" ჩაეტიოს. საერთო ჯამში თამაში გაქართულდება, მაგრამ აჩხა-ბაჩხა გამოვა ასოები და მოგეშლება ნერვები კაცს.


შრიფტებს რომ მიხედავ ასე თუ ისე, წინ გაცილებით დიდი სამუშაოა დარჩენილი - ტექსტის თარგმნა. სტალკერს 3000 - 3500 სტრიქონი აქვს სათარგმნი. ეს ბევრი არაა, თუ Half-Life 2 ის 5000-მდე სტრიქონს გავიხსენებთ. ყველაზე ადვილი მეჩვენება Plants vs Zombies თარგმანი - მოკლე ფრაზები იყო და სახალისო. მანდ უფრო პრობლემა მცენარეების სახელებზე იყო. მაგალითად Sun Mushroom - სოკომზისა - კარგად ჟღერს. ისევე როგორც Tall Nut - მაღალი კაკლის ნაცვლად გრძელკაკალა. ანუ თარგმანში მთავარია არა პირდაპირი თარგმანი, არამედ სულის შენარჩუნება. პირდაპირი თარგმანის დროს ძალიან მეცნიერული და მშრალი გამოდის ხოლმე ტექსტები. ჩემს პრაქტიკაში მასეა ყოველთვის. აი Assasin's Creed 2 ს რომ ვთარგმნიდი, ხომ ჩავათავებდი ტექსტს, მერე წავითამაშებდი რომ გამეგო, რამდენად ჯდება კონტექსტში ეს ჩემი თარგმანი. Max Payne 2 ზე არ გავაკეთეთ ასე, ხოდა რა გამოვიდა? მაქსი გამოვიდა ლიფტიდან, ლეიტენანტი მიუბრუნდა და ეუბნება: "შენ ეს შეძელი!" - "You did it!" - არადა სინამდვილეში "ეს შენ ჩაიდინე!" უნდა ყოფილიყო.


ასეთი შეცდომების გასასწორებლად საჭიროა ბეტა ტესტინგი. ფორუმ.გე -ზე თამაშების განყოფილებაში ძალიან ჯიგარი ხალხია, ტესტირებაზე უარს არ ამბობენ ხოლმე. მთავარია კარგი თამაში და კარგი ნათარგმნი იყოს. ხოდა თუ არ გამოვა ეს ამბავი, მაშინ თქვენ თვითონ უნდა დატესტოთ - გადაითამაშეთ და ტექსტებს მიაქციეთ ყურადღება. პრინციპში სულ ესაა, მთელი ფილოსოფია. შეიძლება ერთიანი საინსტალაციო გაკეთდეს, როგორც მე გავაკეთე სტალკერისთვის პაჩის სახით. სხვათა შორის აი ეს ლინკი ნახეთ, ამაზე მხიარული ფერმაა და 2009 წლის აქაჩული კია, მარა ლინკი მაინც მუშაობს. კარგი სამუშაო რამეა, გამოდგება დასაწყისისთვის.