Анализ ассемблерного кода в компьютерной игре - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

Анализ ассемблерного кода в компьютерной игре

Багмут А.О. 1, Абрамова О.Ф. 1
1Волжский политехнический институт (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Наверняка, читающие эту статью задумались о создании игр на Assembler. Однако это далеко не самый хороший вариант. Есть всего несколько плюсов и достаточно минусов. Поэтому в наше время игры на чистом ассемблере создаются достаточно редко.

Плюсы и минусы использования ассемблера в создании игр

К основным плюсам естественно относится малый объём ресурсов, при создании кода на ассемблере. К минусам же, малый объём библиотек, их малая совместимость между собой. Значительная затрата времени на создание отдельных функций. Так же частичная непереносимость на другие платформы. На Ассемблере практически невозможно создать сложную игру.

Что вообще нужно что бы создать игру? Для начала идея, что вы собираетесь реализовать в игре. Без идеи нельзя начать создавать игру, потому что нечего будет создавать, 2д или 3д, жанр и т.п. Если вы создаёте сюжетную игру, то придумайте сюжет. Запишите его. Или это может быть головоломка, тогда подход уже совсем другой подход. Дальше нужен план. Как вы будете создавать игру. Нужно начертить схему, которую вы и будете реализовывать на языке программирования. И, естественно, на чём мы будем создавать игру. Это может быть уже созданное решение, т.е. игровой движок. В некоторых из них реализована система программирования блок схемами, очень лёгкая и понятная…

Однако они требуют больше ресурсов чем обычный код на C++, C# и т.д. И соответственно ещё больше чем на ассемблере.

Компоненты, которые нужно реализовать в игре

Заставка

Заставка нужна что бы показать кто автор или компания, создавшая игру, так же название и, самое главное- меню. Начать игру, настройки, выход. Всё это реализуется в меню.

Игровое поле

Игровое поле является миром игры, который сложнее всего реализовать. Здесь осуществляются все взаимодействия с объектом

Рассмотрим реализацию игрового поля на примере игры крестики-нолики:

lblShowVariant:

mov ax,0x0001 ; clear screen, set graphic mode 40x25, color

int 10h

mov ax, [data_pos]

mov bx, [TEXT_BLOCK_SIZE]

mul bx

mov bp, text_data

add bp,ax ; offset на текст

mov cx,[TEXT_BLOCK_SIZE]

mov ax,1300h

mov bx,0eh ; color

mov dx,0500h ; 5 строка 0 позиция для вывода

int 10h

Наш мир- это просто небольшое поле 3 на 3

Геймплей

Геймплей описывает, как игрок взаимодействует с игровым миром, как игровой мир реагирует на действия игрока и как определяется набор действий, который предлагает игроку игра. К примеру, какое-то действие, при нажатии на клавишу является геймплеем:

lReadKey:

xor ax,ax

int16h ; BIOS read key

xor ah,ah

sub al,'1' ; в al число запишем, а не символ

cmp ax,8

ja lReadKey

shl ax,1 ; ax=ax*2

mov bx, data_addres

add bx,ax ; bx = data_addres[key]

mov ax, [data_pos]

mov cx, [CASE_BLOCK_SIZE]

mul cx ; cx = [data_pos]

add bx,ax ; bx = data_addres[data_pos][key]

mov ax,[bx]

mov [data_pos],ax ; переходнановыйключ.

jmp lblShowVariant

Звук

В играх одним из важнейших аспектах является звуковое сопровождение. Оно может раскрыть ситуацию, если это битва, то фоновая музыка помогает сосредоточится на битвах. Звук является неотъемлемой частью игр, где главный элемент это страх. Без звука игра потеряет краски.

Заключение

Таким образом мы рассмотрели алгоритм реализации игры на языке Ассемблера. Конечно, Ассемблер намного неудобнее высокоуровневых языков программирования, да и ресурсов у компьютеров стало достаточно, из за чего Ассемблер сильно теряет позиции, однако нельзя не учитывать тот факт, что на заре программирования он сыграл ключевую роль в создании игр.

Библиографический список:

1.Что нужно для создания игры [Электронный ресурс] https://www.kakprosto.ru/kak-94870-chto-nuzhno-dlya-sozdaniya-igry свободный (Дата обращения 19.12.2020г.)

2.Абрамова О.Ф. К вопросу о визуальном моделировании с использованием BOUML [Электронный ресурс] https://novainfo.ru/article/5873 свободный (Дата обращения 19.12.2020г.)

3. Лукин Д.Р. Использование вставок на Assembler в разработке компьютерных игр [Электронный ресурс] https://scienceforum.ru/2019/article/2018010585 свободный (Дата обращения 19.12.2020г.)

4. Компьютерная игра Материал из Википедии — свободной энциклопедии[Электронный ресурс]

https://www.wikiwand.com/ru/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0#/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%B8%D0%B3%D1%80%D1%8B свободный (Дата обращения 19.12.2020г.)

5. archive Программирование игр на ассемблере (Часть 1) — Архив WASM.RU[Электронный ресурс] https://wasm.in/blogs/programmirovanie-igr-na-assemblere-chast-1.210/ свободный (Дата обращения 19.12.2020г.)

6. godAlex Игра в 30 команд Ассемблера [Электронный ресурс] https://habr.com/ru/post/207964/ свободный (Дата обращения 19.12.2020г.)

Просмотров работы: 11