четверг, 12 сентября 2013 г.

Мне кажется, чтобы игры нормальные создавать нужно реально "больным" на эту тему быть, а если такого нет - не стоит заморачиваться.


Java Script и разработка игр

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

Само-собой разумеется, если есть язык программирования, рано или поздно, кто-нибудь обязательно попытается использовать его для создания игры.
И хотя игры бывают разные для любой среднестатистической игры требуются следующие функции:
1. Управление графикой : создание из картинок спрайтов, управления фреймами спрайтов, обновление графики на экране;
2. Вычисления: определение координат графических объектов, определение их размеров, определение столкновений, пересечений и наложений объектов;
3. Манипуляции с графическими объектами: перемещения объектов, повороты, появления, исчезновения, замена одних объектов другими;
4. Работа со звуком;
5. Сохранение промежуточных результатов и состояний;
6. Управление уровнями

В Javascript есть функции, которые можно приспособить для выполнения этих операций, а при использовании некоторых готовых классов (например Jquery) реализация описанных выше пунктов значительно упрощается.

А для того, чтобы процесс создания игры с использованием Javascript был более контролируемый я написал небольшой сервис, который скромно назвал: 2L4U.RU

Основной трудностью при создании игр на Javascript, на мой взгляд является сложность управления большим количеством разнообразных по применению объектов. Игровой проект может включать в себя различные библиотеки (тот же Jquery) , картинки создающие фон, картинки фреймов спрайтов, звуки, 3d мэши, текстуры или SVG-сцены.

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

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

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

Для управления спрайтами появилась страница "спрайты", где спрайты можно создать из набора картинок или загрузить сразу архив, в котором картинки должны быть помечены цифрами, чтобы обеспечить правильную смену фреймов в спрайте (1.png – 1-й фрейм, 2.png – 2-й фрейм, 3.png – 3-й фрейм, и так далее). Некоторые дополнительные функции позволяют копирповать спрайт, отражать, поворачивать спрайт, а так же делать страйп - полоску из кадров. Это было специально для того, чтобы использовать фреймворк Spritely

Собственно спрайты это картинки, для того, чтобы их вывести на экран были предусмотрены игровые объекты – так появилась страница Объекты

Наконец для расстановки объектов нужна сцена. Так появилась страница управления сценой. В игре может быть несколько сцен. Может понадобиться переключения между сценами. Я добавил эту возможность.

Что из себя представляет сцена на физическом уровне – это HTML страница, которая вставляется в iframe

Редактор сцены позволяет расставлять созданные объекты- героев, текты, фоны и т.п. Создавать слои – если игровых объектов много, наконец загружать картинки непосредственно в сцену.
Редактор сцены позволяет изменять свойства объектов их глубину или поменять спрайт.
Редактор сцены позволяет присваивать объектам поведение, достаточно щёлкнуть по иконке в виде шестерёнки и появляется окно редактора поведения.
Вот когда начинается программирование на Javascript

Для того, чтобы процесс программирования не был сильно сложным, я включил во все проекты несколько предустановленных фреймворков: Jquery (для управления анимацией), Jquery-Timers (для обновления состояний графических объектов) и несколько собственных пользовательских функций, которые мне показались полезными.
Например: функцию генерирования случайного числа, функцию определения координат объекта, функцию определения столкновения объектов и т.д.

Для того, чтобы поведение было логичным я использовал парадигму событие – действие. Например. Есть событие "Один Раз, В Начале Игры" – это означает, что код будет запущен одлин раз на страрте. Есть событие "Постоянно, Во Время Игры" – это означает, что код будет запускаться через равное кол-во миллисекунд в течении всей игры.

Основное действие которое запускают события - пользовательская программа

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

Ну, например, : в событие "Один Раз, В Начале Игры" можно добавить код, который будет слушать пользовательский ввод, напрмер клавиши AWSD – и привязать к ним событие объекта – например анимацию.

В событие "Постоянно, Во Время Игры" я втсавляю проверку столкновения.

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

Когда стало понятно, что помимо стандартных фреймворков понадобиться использовать любые другие появилась страница "Сценарии" . Это помогло, например, для создании игры "SVG – Fashion," где используются сценарии для управления SVG с помощью Javascript.


Когда игровой проект завершён его можно послать на публикацию, можно получить ссылки на iframe и вставить Вконтакт, или скачать архив, разместить на собственном хостинге.

Последнеее предпочтительнее, потому что мой сервер пока несильно шустрый.

Когда игровой проект завершён им можно поделиться с другим пользователем, который может, например, создать совй уровень или изменить сюжетную линию, что угодно.

Комментариев нет:

Отправить комментарий