რეტრო თამაშების დეველოპერებისთვის ერთ-ერთი ყველაზე საინტერესო გამოწვევა Ultima-ს სტილის „ზედა ხედის“ (overhead camera view) რეალიზებაა. ეს არ არის უბრალოდ პერსონაჟის მოძრაობა ეკრანზე, არამედ მთლიანი რუკის ვირტუალური ფანჯარა, რომელიც მოთამაშეს სამყაროს ნაწილს აჩვენებს.
Commodore 64-ის BASIC-ზე მუშაობისას, დეველოპერები ხშირად აწყდებიან შესრულების პრობლემებს. თავდაპირველი მცდელობა, უბრალოდ გადავიტანოთ რუკის ნაწილი ეკრანზე, ხშირად „სლაიდშოუს“ ეფექტს იძლევა, რაც თამაშის დინამიკას კლავს.
ოპტიმიზაციის ძირითადი მეთოდები
C64-ის 6510 პროცესორისთვის ნებისმიერი მათემატიკური ოპერაცია, განსაკუთრებით გამრავლება, ძვირადღირებული და ნელია. ამიტომ, ყველაზე ეფექტური მეთოდი „Lookup Tables“ (LUT) გამოყენებაა. ნაცვლად იმისა, რომ ყოველ კადრზე გამოვთვალოთ კოორდინატები, წინასწარ ვქმნით ცხრილს, სადაც უკვე დათვლილი მნიშვნელობებია შენახული.
- მათემატიკის შემცირება: გამრავლების ოპერაციების წინასწარ დათვლილი ცხრილებით ჩანაცვლება 3-5-ჯერ აჩქარებს პროცესს.
- ერთგანზომილებიანი მასივები: 2D მასივების ნაცვლად 1D მასივების გამოყენება ამცირებს მეხსიერების მისამართებზე წვდომის დროს.
- ციკლების განშლა (Loop Unrolling): FOR/NEXT ციკლების შემცირება და მათი ხელით ჩანაცვლება პირდაპირი ბრძანებებით მნიშვნელოვნად ამცირებს პროცესორის დატვირთვას.
მიუხედავად იმისა, რომ ეს მეთოდები ზრდის პროგრამის საწყის ჩატვირთვის დროს, თამაშის მიმდინარეობისას მიღებული სისწრაფე ამ კომპრომისს სრულად ამართლებს. საბოლოო ჯამში, ოპტიმიზაცია არ არის მხოლოდ კოდის დაწერა, ეს არის თამაშის „ცხელი ბილიკების“ (hot paths) პოვნა და მათი მაქსიმალური დახვეწა.
მომავალი ნაბიჯები და რჩევები
თუ კოდი კვლავ ნელია, შემდეგი ლოგიკური ნაბიჯი POKE ბრძანებების ჩანაცვლებაა უფრო სწრაფი PRINT მეთოდებით ან ასემბლერის რუტინების გამოყენება, რომლებიც მეხსიერების კოპირებას წამიერად ახორციელებენ. ასევე, მეთა-ტაილების (meta-tiles) გამოყენება რუკის გენერაციას აჩქარებს, რადგან სისტემას ნაკლები ელემენტის დამუშავება უწევს.
მთავარი გაკვეთილი რეტრო დეველოპერებისთვის მარტივია: ნუ დაიწყებთ ოპტიმიზაციას, სანამ არ გაზომავთ, სად არის რეალური შეფერხება. გაზომეთ, დათვალეთ და მხოლოდ შემდეგ დახვეწეთ თქვენი კოდი.





დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.