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



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

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


  13.01.2011

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

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


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

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

В реальном мире огонь – это раскаленные до невозможности частицы — плазма, исходящие вверх из сильно нагретого объекта (значит называем объект «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» прямо на объект. Задаем постоянный таймер, который будет переносить источник огня вслед за объектом. Постоянно вылетающие плазмы из источника будут изображать всё тот же обычный огонь, а постоянное передвижение источника за объектом значительно изменит результат отображения огня.

Виды огней
Виды огней

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

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


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


  14.01.2011

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

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

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


Начальный экран игры
Начальный экран игры

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

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

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


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


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

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

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


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



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

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


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



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

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

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


Завязка сюжета
Завязка сюжета

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

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

(Была такая игра «Freedom Fighters», где Советский Союз полностью захватывал Америку, а потом обычные мирные люди сами вернули себе свободу. У меня будет примерно то же самое по сюжету, но с точностью до наоборот, и в формате экшн платформера).

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

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

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


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

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



Ach Достижение "Почётный читатель gamesisart.ru"
Понравилась статья? В благодарность можно поставить лайк через любую социальную сеть. Для вас это — один клик, для нас — очередной шаг вверх в рейтинге игровых сайтов.
Ach Достижение "Почётный спонсор gamesisart.ru"
Для особо щедрых есть возможность перевести деньги на счет сайта. В этом случае вы можете повлиять на выбор новой темы для статьи или прохождения.
Ссылка для доната. История, Топ донатов





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






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

Клуб романтики Skyrim
Darksiders 2 Warcraft 3
GTA SA The Sims 4
Gothic Machinarium
Brain Out Cyberpunk 2077
RE8 БЛ
LMR Fallout
Lego Sky Saga A Creed
Lost Lands 8 Homescapes
Rooms&Exits Harry Potter 1
Toca Boca Starfield
Contra Сосед
Poppy Playtime FNaF
Bloodborne Братья Пилоты


Партнерские ссылки


Купить игры дешевле Steam

Купить казуальные игры

Футболки с надписями из игр

Как сделать уникальный подарок