Секреты программирования игр


         

Использование ассемблера


Использование ассемблера только иногда является последним средством увеличения быстродействия некоторой части программы до приемлемого уровня. В Warlock я написал около 100 ассемблерных строк для оптимизации только наиболее критичных по времени выполнения кусков игры. Они, конечно, относились к визуализации графики. Существует определенная норма среди программистов игр для ПК: в основном игра пишется на Си, а затем некоторые функции, практически только относящиеся к графике, переписываются па ассемблере. (Если вы вдруг обнаружили, что, применяя ассемблер для реализации искусственного интеллекта или игровой логики, с вашей программой происходит что-то неладное, стоит хорошенько подумать, не вернуться ли к Си.) Я почти уверен, что лучшие мировые программисты могли бы сделать вашу и мою программы на Си значительно быстрее и без использования ассемблера. Запомните это, и когда найдете ассемблер пригодным не только для функций, связанных с графикой и низкоуровневым программированием, признайте, что надо сделать шаг назад (и шаг вперед, словно мы танцуем ча-ча-ча!) и начать сначала. Так или иначе, на ассемблере я переписал только две функции, которые перемещают содержимое дублирующего буфера в видеопамять и рисуют небо и землю (Листинг 19.5). Если уж на то пошло, их ассемблерный вариант занимает всего 5-10 строк.

Листинг 19.4. Функция, переносящая содержимое дублирующего бу-фера в видеопамять (DRAWG.ASM).

; Функция просто копирует дублирующий буфер в видеопамять

;Она использует 32-битовые операции и регистры

;для увеличения быстродействия

;/////////////////////

.MODEL MEDIUM,С               ; используем medium модель

                                          ; и соглашения языка Си

.CODE                                     ;начало кодового сегмента

            EXTRN double_buffer:DWORD     ; указатель на дублирующий буфер

            PUBLIC Draw_Ground_32         ; делаем функцию общедоступной

Draw_Ground_32 PROC FAR С                 ; функция поддерживает-соглашения




Содержание  Назад  Вперед