Компьютерные игры как искусство
Главная
Введение
История сайта

Теория
Искусство
Жанры игр
Статьи об играх

Разработка
Статьи
Игровые движки
Обучение

Индустрия
Структура
Игр. платформы
Игр. журналы
Игровые сайты

Шедевры
Компьютерные
Консольные
Онлайн - игры
Инди - игры
Казуальные игры
Музыка из игр

Прочее
Прохождения


Форум












Прохождение игр

Darksiders 2
Diablo 3
Warcraft 3 GTA SA
GTA V
STALKER 3
Divinity
Alien
Skyrim
Witcher_3
Batman Knight
Game of Thrones 5
Cradle
100 Дверей
100 Дверей 2013
FF Type-0
DMC_3
MGS 5
Mad Max
Stasis
Планета С
Armikrog
SOMA


GamesIsArt.ru >> Разработка >> Обучение
Все статьи в разделе «Разработка игр»:
Базовые знания
Инструменты
Практика
Командная работа
Этапы создания игр Лучшие игровые движки Курс обучения Unity Документация
Как стать разработчиком 2D, 3D, Крос, MMO, Моб Курс обучения GMaker Методология разработки
Профессии Графические редакторы Курс обучения Construct2 Сайты о создании игр
Где учиться. ВШБИ Ассеты, графика, звуки Курс обучения Unreal  

Блог о создании игры "D2"

Страницы блога:     12345678910


  13.01.2011

За физику я пока не брался, её реализация сдвигается чуть дальше. А пока у меня есть настроение развивать тему лучей и частиц.

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


Реализация огня.

- -
Направления стрельбы
Направления стрельбы
- Games is Art -

В реальном мире огонь – это раскаленные до невозможности частицы (плазма)(объект «Plazma»), исходящие вверх из сильно нагретого объекта. Частицы летят вверх по странной витиеватой траектории, из-за чего весь огонь как бы качается из стороны в сторону. В самом низу частицы прозрачны, по мере их подъема, они белеют, желтеют, краснеют, и в конце концов темнеют, постепенно превращаясь в дым.

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


Все преобразования цвета и формы будут происходить в спрайтах анимации. А перемещение, как обычно, с помощью задания скоростей по горизонтали (Plazma.dx) и вертикали (Plazma.dy).

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

Объект «Plazma» является спецэффектом, поэтому он будет жить очень малое количество времени (прямо при его появлении всегда будет запускаться таймер самоуничтожения, время срабатывания можно разнообразить функцией «random», например: random (6..10) – некоторые всполохи огня будут улетать дальше остальных). Единственное движение, которое будет выполняться всегда, это подъем частиц огня вверх. Нужно сделать один независимый таймер (Plazma - timer_up), постоянно добавляющий высоту к объекту (Plazma.y == Plazma.y – 2). Для того чтобы огонь раскачивался из стороны в сторону, добавим в тот же постоянный таймер ещё и незначительное горизонтальное движение.

Для обычного огня делаем центральную точку (невидимый объект «FirePlace»). Из неё будут разбрасываться во все стороны объекты «Plazma» с постепенным замедлением скорости (цикл: Plazma.x = Plazma.x + plazma.dx; Plazma.dx - -), а потом постоянный таймер будет поднимать их вверх. Чем ни настоящий огонь?

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

Взрыв делается на основе тех же объектов. В точке взрыва ставится невидимый объект «BangPlace». А уже из него в один короткий момент разлетятся во все возможные стороны объекты «plazma». Дополнительно к этому можно добавить небольшую встряску всего экрана (кратковременное смещение координат объекта «уровень» относительно экрана).

Огненный след от летящего объекта делаем добавлением невидимого источника огня «FirePlace» прямо на объект. Задаем постоянный таймер, который будет переносить источник огня вслед за объектом. Постоянно вылетающие плазмы из источника будут изображать всё тот же обычный огонь, а постоянное передвижение источника за объектом значительно изменит результат отображения огня.

- -
Направления стрельбы
Направления стрельбы
- Games is Art -

Огонь вылетающий из турбины не должен подниматься вверх, по крайней мере он должен делать это не так сильно, как обычный огонь. Уже привычный объект «Plazma» придется немного переделать. Сделаем «Plazma_turbo» - та же самая плазма, только без таймера «plazma.timer_up». Ну а дальше: невидимая точка – источник огня, и задание скорости и направления вновь появляющимся элементам огня.

Сидел, думал: что же ещё можно сделать с огнём?.. Огнемет! Как я сразу не догадался до этого? Нужно просто заменить обычные пули на плазму огня, немного подстроить силу удара и частоту появления – вот и всё.


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


  14.01.2011

Эх, когда же я возьмусь за физику? Пока неизвестно. А сейчас буду делать систему уровней.

В редакторе GameMaker’а уже создан полупустой первый уровень. Он загружается сразу же после запуска игры - это не правильно. Нужно сделать начальное меню или просто экран-заставку.

Меню будет представлять собой отдельный уровень. На нем не будет ни подвижных объектов, ни платформ, ничего игрового. Будет: задний фон, название-логотип игры, строчки меню, объект, показывающий выбранную строчку (это устаревший механизм выбора строчки, можно его не использовать).


- -
Направления стрельбы
Направления стрельбы
- Games is Art -

Задний фон – зацикленный небольшой рисунок, объект типа «background». Логотип – рисунок, имеющий определенные размеры. Текстовые строчки – особый объект в GameMaker. Строчек будет 4 штуки: «Начать», «Продолжить», «Настройки», «Выход». Выбор строчки (объект «Marker») – наш «герой» на этом начальном «уровне». Маркер будет управляться с помощью клавиш, перемещаться он будет только по строго заданным позициям.

Реализация передвижения маркера...

Прописывание действий строчек...


Главное меню игры является, по совместительству, лицом игры. Меню, как минимум, должно быть запоминающимся, чтобы в игру было приятно возвращаться вновь и вновь. Но всё это можно сделать только с помощью графики, а мы пока занимаемся движком игры и не будем на это отвлекаться. Вернемся к меню попозже.


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

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

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


(Вообще, чтобы не захламлять игру, не стоит для каждого события создавать новый таймер, нужно сделать на всю игру всего пару таймеров: один - с быстрым срабатыванием (0,1 секунды), в нём будет просчет силы тяготения, просчет прочих сил, где необходима четкость вычислений; второй – срабатывающий раз в несколько секунд (3 секунды), содержащий всевозможные проверки недопустимых значений, проверки условий для скриптовых событий).



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

При смерти героя, должен появляться ещё один экран-уровень со статистикой. Кстати, статистика то пока никак не собирается, нужно об этом позаботиться попозже.


Итак, хоть какая-то структура у игры появилась. Пока её отключу, чтобы снова сразу же загружался первый уровень – так тестировать быстрей. А вообще уже всё совсем не плохо устроено.



Начнём делать первый уровень.

Самый первый уровень должен быть запоминающимся, хорошо спланированным и интересным. Если кто-то решит запустит игру, не факт, что он станет проходить её до конца. Он может выйти из игры даже на первых минутах. Чтобы этого не допустить, нужно сразу же выставить напоказ все лучшие качества игры, создать интригу, заинтересовать сюжетом. (Хороший пример – игра «Need for Speed: Underground»: в начале дают прокатится на прокачанном, затюнингованном автомобиле. После этого начинается обычная игра с пока обычными машинами, но игрок то уже знает, что дальше будут просто суперские авто. Мотивация создана, игра зацепила).

Долгая сюжетная заставка в начале тоже ни к чему (если её и делать, то только с возможностью пропустить), потому что игрок ещё не готов окунутся в мир игры с головой. Для начала хорошо подойдут простые и понятные события прямо в процессе игры (скриптовые сценки), без всяких объяснений происходящего. То есть, помещаем игрока в поток событий с простыми правилами: показываем окружение героя, кто друзья, кто враги; какие законы в этом мире. (В современных играх знакомство с миром часто заменяют обучением игрока управлению. А система управления для каждого жанра уже давным-давно сформировалась, большая часть игроков всё это уже знают. Поэтому долгое занудное обучение, которое нельзя пропустить, тоже не лучший вариант для начала). После, когда игрок освоится, можно будет давать ему сюжетную информацию. Очень хороший приём – когда в самом начале игрок участвует в каких-то значимых событиях, при этом ничего не понимает, а потом на протяжении большей части игры постепенно узнаёт что же это было на самом деле.


- -
Направления стрельбы
Направления стрельбы
- Games is Art -

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

Вот такая завязка: США нападают на Россию, используют всё своё самое современное оружие, полностью уничтожают нашу армию, в живых остаются только небольшие партизанские отряды. Герой – обычный паренёк, решивший дать отпор иностранным врагам.

(Вообще, политически опасная тема для игры. Но, например, была такая игра «Freedom Fighters», где советский союз полностью захватывал США, а потом обычные мирные люди сами вернули себе свободу. Или, например, «Call of Duty: Modern Warfare», где Российские десантники высаживались прямо в американской глубинке и убивали всех вокруг. Ничего страшного после этого не произошло, значит и мне можно использовать эту тему в вывернутом варианте.)

Война, нападение войск США - всё это общий сюжет. Главный герой ничего этого не знает, пока он просто становится свидетелем уничтожения своего родного города. По моей задумке, после включения первого уровня, должно произойти так:

- показывается вид города издалека;
- через несколько секунд на город обрушивается шквал снарядов и воздушных бомб;
- весь экран озаряется яркой белой вспышкой света;
- через несколько секунд свет постепенно утихает, становится видно развалины одного многоэтажного дома (это уже вид самого уровня);
- камера приближается к развалинам, а там в это время кто-то пытается выбраться из-под завала;
- когда камера достаточно приближена, разлетается несколько обломков, из открывшейся пустоты начинает выбираться главный герой;
- он осматривается вокруг пару раз, вокруг становятся слышны выстрелы и крики, после этого герой быстро прячется за обломком чуть правее;
- справа выходит человек с оружием, добивает выстрелами что-нибудь живое и подвижное;
- герой выскакивает из укрытия, забирает у врага оружие и толкает его на острые обломки, тем самым случайно убивая его;
- после этого начинается игра – игрок получает героя в своё управление.

Ну, как вам завязочка? Захотелось узнать, что будет дальше? Появилась искра интереса? Как минимум до конца первого уровня этого хватит. А за это время нужно будет лишь «подкидывать дров в огонь». Небольшие интересные события должны происходить периодически до самого конца игры. (Мы создаем качественный программный игровой продукт, а не простой набор уровней – как любят делать незадачливые разработчики).


Итак, история началась, герой с оружием, вокруг много врагов, пора действовать.

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




<< Назад Дальше >>










Группа ВКонтакте

Реклама



 

 
О нас. Контакты Реклама на сайте Правила сайта
12+

Copyright ©2009 - 2016 GamesIsArt.ru
Все права защищены законодательством РФ. Использование материалов сайта GamesIsArt.ru возможно только с прямой ссылкой на источник.