Мне кажется, чтобы игры нормальные создавать нужно реально "больным" на
эту тему быть, а если такого нет - не стоит заморачиваться.
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 и вставить Вконтакт, или
скачать архив, разместить на собственном
хостинге.
Последнеее
предпочтительнее, потому что мой сервер
пока несильно шустрый.
Когда
игровой проект завершён им можно
поделиться с другим пользователем,
который может, например, создать совй
уровень или изменить сюжетную линию,
что угодно.