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

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

Использование вставок на Assembler в разработке компьютерных игр

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

Введение

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

Проектирование

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

Структура игры

Структура игры не зависит не от жанра игры и от языка программирования, поэтому кратко: проанализировав игру, можно понять, что она идёт циклично, начиная от высвечивания надписи «нажмите любую клавишу» и заканчивая надписью «Game over». После появления второй, вы снова увидите первую через некоторое время, таким образом главные части таковы:

Заставка

Игровая местность

Взаимодействие с играющими

Оценка и обработка игровых ситуаций

Звуковое сопровождение игры.

Заставка

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

Игровая местность

Игровая местность, место где проходит основное действие игры, самая важная и трудоёмкая часть игры. Для того что бы в игру было интересно играть, статичное поле должно стать “живым”, то есть оно должно двигаться, изменяться. Для этого можно воспользоваться циклами, например каждый раз выводить изображения на небольшое отклонение от изначальных координат, что создаст эффект волны. Рассмотрим пример реализации данного метода с помощью ассемблера.

ORG 60000

XOR A ;инициализация переменных:

LD (HEAD),A ; начальной позиции «волны»

CALL 3742

LD (AD_LIN),HL ; и адреса строки экрана

WAVE LD HL,HEAD

LD A,(HL)

INC (HL) ;увеличивать или уменьшать можно не

; только содержимое регистров или

; регистровых пар, но и значение в

; ячейке памяти, адресованной парой HL

CP 35 ;ушла ли «волна» за пределы экрана?

RET Z

CALL UP ;первыйсимволвверх

DEC A

CALL DOWN ;второй - вниз

DEC A

CALL DOWN ;третийтожевниз

DEC A

CALL UP ;последний - вверх

LD BC,5

CALL 7997 ;небольшая задержка (PAUSE 5)

JR WAVE

HEAD DEFB 0 ;позиция «головы» синусоиды

AD_LIN DEFW 0 ;адрес экрана начала строки

UP .........

DOWN .........

Анимированная область в играх — это трудоёмкий и долгий процесс, но довольно эффектный, без неё не обойдётся ни одна игра, разве что текстовые «квесты», хотя и там, требуется выводить постоянно разный текст на экран, заменяя старый.

Взаимодействие с играющими

Главная цель игр - это развлечение, поэтому в играх должно быть продуманное взаимодействие с пользователями. Взаимодействие зависит от жанра игры, всё может быть простенько, как , например, выбор верного ответа из предложенных, или очень сложно, например, управление целым войском людей. От того насколько будет проработана эта часть, зависит количество времени, которое пользователь проведет в игре. Реализовать управление можно с помощью ассемблера. Это даст большую скорость отклика двигающегося объекта. Вот небольшая демонстрация ходьбы человека, она реализована так, что каждая часть нашего человека двигается вперёд на определенную координату и тем самым человек передвигается. Пользователь вводит длину шага.

Оценка и обработка игровых ситуаций

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

Звуковое сопровождение

Звук должен присутствовать в любой игре, так как это позволяет игроку глубже погрузить в процесс и даже считать себя главным героем этой игры. Звук должен сопровождать каждое действие в игре, иначе теряется эта тонкая грань между виртуальностью и реальностью. И, конечно же должна присутствовать фоновая музыка, отражающая происходящее на экране. Это усилит эмоции игрока. Так как звук должен быть воспроизведён только после определенного действия, то в данном случае тоже нужно использовать логические операции. Создание звука можно реализовать так:

SND LD B,10 ;количество циклов

LD HL,300 ;начальная частота звучания

LD DE,8 ;длительность звука

SND1 PUSH BC

PUSH DE

PUSH HL

CALL 949

POP HL

POP DE

POP BC

DEC HL ;или INC HL

DJNZ SND1

RET

Заключение

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

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

Абрамова О.Ф. К вопросу о визуальном моделировании с использованием BOUML [Электронный ресурс] / О.Ф. Абрамова // NovaInfo.Ru: электрон. журнал. - 2016. - № 45, ч. 2. – Режим доступа: http://novainfo.ru/article/587

Морозов О. Е. Вывод простейших графических изображении [Электронный ресурс] / Морозов О. Е./электронная база “Здесь живут знания” - 2012 – статья 8 -Режим доступа : http://podelise.ru/docs/index-25143997-3.html

Евдокимов Александр «Все о ZX Spectrum»/ Александр Евдокимов/издательство «Питер» (Piter Ltd.)-1995-глава 5

Прохин Алексей Игра в 30 команд Ассемблера [Электронный ресурс], режим доступа: https://habr.com/post/207964/, свободный. (Дата обращения: 21.11.2018 г.)

Кузнецов Никита Логические операции Ассемблера [Электронный ресурс], режим доступа: http://codetown.ru/assembler/logicheskie-operacii/, свободный.(Дата обращения: 21.11.2018 г)

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