13. Виды игр .Не большие примеры создания простых игр.
14.Как работает сражение? пример взаимодействия между спрайтами.
Штумоз™No
Существует большое количество игр , но все они по сути одинаковы. Все они -это разновидность всего несколько видов одинаковых действий , которые по разному визуально оформлены, или у каждого разный сценарий.
На базе одного и того же кода можно сделать много игр ,не смотря на то что код у них будет один и тот же -все игры будут разными, при чем настолько существенно разными -что никто не поверить что у них одинаковый код или одинаковый набор логики. Изредка случается что кто то один водит уникальный элемент ,но через время это становиться массовым. Так например мной на форуме одной игры созданной по рассказам Мин-Хи Чон предлагалось вести карты и совместить жанр ККИ и MMORPG .игра мне нравилась, а боевая система нет.
Тем не менее я разработала одну теорию .Эта теория гласить что среди людей живут маги и чародеи, исполнители желаний и волшебники ,колдуньи ,ведуньи и даже боги. Если публично предлагать самые бредовые идеи, кто то может их услышать и реализовать . Никто серьезно не воспринимал такую систему боя тогда, даже смеялись над бредовостью предложения, тем не менее ряд игр спустя два года ее применили, пусть и в видоизмененном виде. .
Наиболее близки к этому стали игры Astellia Online, Soul Worker ,это очень близкая идея ,где карта используется как призыв способности или маунт на короткое время. Тем не менее были игры где была похожая идея ранее.
Формально игры можно делать по шаблонам. Раз создав какие то шаблоны можно просто штамповать игры.
Условно можно разбить все боевые системы на около 20-30 шаблонов по котором можно наладить конвейер выпуска игр . Это не требует практически не навыков, не знаний. Это одна из причин почему в какой то момент времени не смотря на большое количество игр -хороших игр просто нет. Это одна из Главных причин почему меня заинтересовала разработка игр.
За последние 5-10 лет было создано всего 3-5 игр заслуживающих внимания .Да игр много, точно так же как много книг, точно так же как много фильмов. Но чем большее количество вы смотрите или читаете или играете -растет требование к тому -что вы смотрите, что вы читаете и во что играете .За последний год стало сложно найти даже пару хороших книг, при потребности от 60 книг в год. Другими словами все что существует - оно не отвечает потребности. Более того рынок просто переполнен похожими друг на друга играми.
потому я хочу рассмотреть наиболее распространенные шаблоны игр .
Первый шаблон
Пошаговые стратегии. Существует большое множество игр наиболее известные.
Heroes of Might and Magic III , и стоит упомянуть достойную внимания King's Bounty: Принцесса в доспехах .
В данных боях поле представляет себе аналог шахматной доски или Гобан
Так как такие клетки часто нужны что бы делать такие игры как шашки, Шахматы ,Го, Мельница, Тафл , лендлорда, Особняк счастья , Чатуранга и другие игры в том числе пошаговые стратегии ,Давайте приведу пример как их быстро рисовать ,это может пригодиться .
Штумоз™No
Используется для рисования система клонирования ,когда делается квадрат, круг и затем с интервалом равным между собой делается клон в любую сторону .
Сделаем стандартное поле 8 на 8-как наиболее распространенное .
Я покажу -два решения . одно 8 на 4 второе 8 на 8.
для начала я покажу основу построения .Во первых это часто повторяемый блок идти какое то количество шагов. Потому Другие блоки создать блок ,где создается клон потом спрайт сдвигается и снова делается клон и так 8 раз. после чего нам нужно сместить спрайт на строку в верх. что делается смещением координат .Данный код создает поле 8 на 4
где 8 шагов это длина по горизонтали ,а 4 по вертикале.
Как видно этот код можно упростить.
Так как у нас количество смещений верх равно тоже какому то одинаковому значению, и скорее всего оно равно ширине шага.
потому мы можем упростить вторую половину кода.
решение будет следующим.
установив начальную точку, мы просто повторим 8 раз значение создать блок ,после чего спрячем наш спрайт, и остановим выполнение кода. Перед выполнением мы задаем идти в задний слой, для того что бы если мы будем размещать спрайты-спрайты всегда были над полем. А в нашем блоке допишем условие что закончив выполнять блок спрайт должен сместиться по значению игрек на +40 условно шагов . Делаем мы это через оператор Движение и оператор + где прописываем что игрек + количество шагов по игреку.
Штумоз™No
В итоге у нас шаблонное поле ,разбитые на равные клетки. Мы можем сделать любые Визуальный спрайты и сделать игру на базе этого поля. даже по броску кубика. Это типичный шаблон пошаговых боев. Меняя обзор камеры, рисуя спрайты из этого шаблона можно сделать игру аналогичную . Braveland Heroes это тоже самое поле, оно везде стандартно ,так как это шаблонная игра.
Следующая система очень похожа на предыдущие ,отличие лишь в том что спрайты в такой систем практически статичны, неподвижны .
Они остаются на своем месте -выполняя лишь анимацию, пример таких игр Shakes and Fidget, Child of Light- «Дитя Света», Disciples II, Onmyoji.
В этой системе нету сетки боя ,вы просто располагаете спрайты напротив спрайта .
Штумоз™No
Следующая система.
Это точно такая же система как предыдущие ,тоже своеобразно пошаговый бой но сделано в одной плоскости ,а очередность хода передается через иконки ,яркий пример Metal Waltz
-Стальной вальс .
наиболее близко к этой системе можно рассмотреть систему боя ККИ Коллекционная карточная игра .
Как правило используется в настольных играх ,но часто бывает и наоборот из ПК игр делать настольные.
Пример настольных игр берсерк герои время машин.
Штумоз™No
типичный игровой ККИ это Eternal Card Game. Разница заключается лишь в оформлении поля, И самих картах и героях.
Существует множество игр ,но в основе каждой лежит Шаблон . Вы можете сделать точно такую, лишь сделав свои карты и изменив слегка правила.
Другой тип игр -платформеры.
Самый известный это Earthworm Jim , Червяк ДжимEWJ.
Штумоз™No
и пожалуй нельзя не назвать игру Comix Zone
это типичные платформеры ,смело можно назвать лучшими в этом жанре.
конечно есть много других, Где вы просто бегаете прыгаете ,те что вышли еще на 8 битных приставках первыми. К таким относиться Марио. Contra Evolution, Ninja Gaiden II: The Dark Sword of Chaos,и конечно игракоторая вышла на плестейшенCastlevania: Symphony of the Night.
эти игры самые простые для реализации ,их наиболее просто делать .
Штумоз™No
Следующая категория.
Рогалики бродилки- это конечно игры такие как Greedy Cave , Torchlight II , Diablo II, Sacred. магия крови 2, аллоды 2
Суть этих игр , вы зачищаете подземелье , каждый раз опускаясь все глубже и глубже
в конце каждого уровня сражаясь с босом- такая схема называется рогалик.
В другом варианте сами локации - это аналог подземелья.
На самом деле существует большое количество игр ,но все их можно разбить по шаблонам.
Зачем это нужно знать? просто что бы иметь представление о том-какую игру вы хотите сделать?.
Что бы выбрать стиль и характер игры, нужно определить какая будет ваша игра? о чем она?
После чего вы сможете создать персонажей, и написать сценарий вашей игры .
Следующий вид игр
Это квесты ,головоломки, логические игры
наиболее известные такие как ;
Не верь худо , Василий Иванович и Петька, Космические рейнджеры у которых большое количество квестов на планетах.
Из головоломок , это 5 в ряд, крестики нолики и другие . Часто это смешанный жанр ,когда в квест водиться головоломка или мини игра головоломка. Так же это разряд всех собирательных квестов ,найди 10 предметов или отличий. Или решение логической задачи , например наиболее популярная игра таких жанров сегодня это Cut the Rope. В этой категории так же можно отметить игры пазлы. Яркий пример такой игры Водопроводчик суть игры сложить пазл ,что бы игра пошла по трубе.
Штумоз™No
Отельным классом стоять разные музыкальные игры и гонки, аркады и шутеры и игры на выживание
класс Шутеры -можно обозвать условно стрелялки. Суть игр просто уничтожать большое количество мобов . С гонками понятно, примеры Need For Speed , машины условно проделывают путь по трасам, сюда же можно отнести скачки. Это самый легкий для создания игр. Музыкальные игры, это как правило музыкальные инструменты.
ну давайте сделаем одну для примера .
Это самая простая Игра . Любой из вас ее может сделать ее всего за 10 минут.
Мы делаем 7 спрайтов каждый будет отвечать за одну ноту .
после чего мы через поиск звуков добавим Звуки piano или же можем загрузить любые другие которые у которых соответствие звучанию нотного ряда До, Ре ,Ми, Фа, Соль, Ля Си.
Первое что нужно сделать? разместить любым для вас удобным способом эти спрайты, Оптимальный способ ,это круг по принципу размещения ударной установки, можно вместо нот использовать семплы.
Тогда можно будет семплировать музыку.
Код очень простой .Когда флаг
нажат, то всегда проверять условие касается ли спрайт мышки ? и если касается издать звук. и сделать паузу. Любую по длительности. Она нужна для того, что бы когда мы навели курсор, нота воспроизводилась с задержкой.
Таким образам просто наведя курсор мышки на спрайт ,тот издаст звук.
и этот код размещаем в каждый спрайт .Проверяем что звук в каждый спрайт так же поместили. И изменили согласно звучания.
Это полностью рабочая программа. Музыкальная игра.
не забываем задать место положения спрайта через движение икс и игрек, это вы сделаете самостоятельно, так как это делалась ранее не однократно.
Штумоз™No
гонки.
Давайте сделаем простую игру гонок.
рисуем спрайт машины ,это может быть квадрат и круг вместо кабины. Кто как умеет . так и рисуем.
Виды движения это когда один объект движется относительно другого, при этом сам объект может быть не подвижным. Потому мы сделаем Иллюзию движения основанную на визуальном обмане.
Зададим управление нашему спрайту.
создадим блок управления нашим спрайтом. Поскольку движение только влево и вправо , то
сделаем это через движение по иксу. тогда Другие блоки -создать блок . Если клавиша стрелка вправо то изменить х на 10 если влево то на минус 10. Когда флаг нажат ,то перейти в точку х-100 y -150 Всегда блок управления.
Для ограничения машины и удержания на дороге мы делаем два спрайта в виде бордюров.
потому дописываем условие если касается спрайт 1 то изменить х на 12 ,а если спрайта 2 то на минус х -12. что будет отталкивать наш спрайт обратно на условно дорогу.
Для спрайта бордюра просто прописывается только место положение по бокам дороги.
Если мы теперь нажмем флаг ,то наша машина будет перемещаться вправо и влево. и когда касается бордюра , то будет от него отталкиваться .
дальше мы загружаем фон дороги. Для фона мной задана фоновая музыка из трех композиций которая повторяется по кругу.
Штумоз™No
Видимость езды создается за счет движения спрайтов на встречу нам.
Мной заданы так же эффекты торможение и ускорения. Для этого мы рисуем еще одну машину или делаем клон той что у нас есть ,и задаем движение на встречу.
Для ускорения по сколько спрайт встречной машины передвигается по оси игрек. вынесены вот такие условия .
если стрелка нажата вниз- что условно торможение машины, то изменить игрек на 4 шага ,и издать звук похожий на торможение. что бы не было задержек звук делается через отельную команду
то есть когда стрелка вниз первая часть отвечает за скорость , вторая часть когда стрелка вниз -за звук.
Второе условие когда стрелка нажата верх, то так же вынесен отдельно звук,
и при нажатии будет воспроизводиться звук.
А теперь сам код нашего спрайта. Если бы мы делали только одну машину на встречу, то Код был бы таким.
перейти в координаты х-0 игрек 145,после чего всегда изменить игрек на минус количество шагов пусть на 10 . и создать условие что когда коснется края или спрайта то исчезнуть. Сменить костюм на взрыв и любое другое условие.
Но так будет визуально не интересно, так как можно поставить машину в положение где она просто не когда не столкнется с машиной которая на встречу. Если сделать две машины, то машину можно поставить по центру и она не когда с ними не столкнется. Потому мы делаем три машины на встречу. тогда если не управлять машиной она столкнется со спрайтом. При желание вы можете отнимать здоровье.
потому мы ставим генератор для генерирования трех мест появления машин.
мы задаем точку начального появления
Делаем это через оператор иначе.
нижняя часть кода отвечает за движение ,верхняя за генератор машин. Делаем это через оператор иначе. Поскольку у машины всегда три положения то условие если 1 =1 до 3 где 3=3. то если получим число 3 то машина перейдет в точку координат х-86 y 126 если нет -то выполнить условие иначе.
Штумоз™No
и если снова задаем генератор чисел и условие . Если выпадет число от 1 до 3 и 2=2 то машина переместиться в точку в точку х-2 e 139, иначе если число не равно одному не двум, то в положение три . в точку х 78 y 144 .
и повторять все это пока не коснется края или спрайта нашей машины .через оператор повторять до того как коснется край или спрайт 1. ,все время изменить на -5 .и добавляем условие ускорения если стрелка верх нажата? то изменить игрек на минус восемь. Теперь при нажатие скорость спрайтов увеличиться.
Вот так просто сделать простые гонки .
отельный жанр это хонор разные игры ужасов вроде Resident Evil 3, Parasite Eve,
Silent Hill 3 . Vampire: The Masquerade - Bloodlines.
Не смотря на большое разнообразия -у всех у них есть общие принципы. Можно конечно сразу пытаться сделать свой Dark Souls ,но лучше начать с малого.
что общего во всех играх?
Можно вместо программировать каждый раз новую игру сделать шаблоны
1.Управления персонажем. -они всего имеют от пяти до не более двенадцати стандартных шаблона.
2.Шаблон поведения монстра, боса, бота ,не смотря на разнообразие можно создать типовых 10-20 шаблонов что хватить на 80% игр.
тогда построения игры будет сводиться к тому что бы просто расставить все на картах и создать карты и диалоги.
Это делают Игровые конструкторы. К сожалению все они старые и практически не менялись более 10 лет .
Все игры - это клоны каких то других игр, только визуально по другому оформлены .Условно их не более 30-60 готовых шаблонов. Потому лично мне не понятно почему до сих пор нету встроенных шаблонов в саму среду разработок игр, вместо этого разработчика принуждают заниматься программированием , рисованием и кучей не нужных других вещей -вместо создания самих игр .Все это ведет к тому ,что тех кто мог бы создавать игры ,просто нет они не создают их. Они не хотят тратить время на изучение программирования, а потом теряют интерес к самому созданию игр. Потому что игры можно создавать очень быстро за неделю две, а игры ААА класса за месяц в одиночку. Все что нужно- программное обеспечение с готовыми шаблонами и легко создаваемыми моделями и окружением.
Но на рынке таких нет, их почему то не делают. Хотя в корпорациях я уверена есть ,пример тому Редакторы карт некоторых игр .Они представляют собой тот самый редактор карт ,где нужно просто расставить модели и сделать дополнительную карту. например редактора карт Героев 2 или Warcraft III World Editor.
Таким образом как видим не нужно быть программистом что бы делать игры, если у вас есть не обходимое программное обеспечение.
Лично мне не понятно зачем прописывать миллион раз один и тот же самый код-который писали до этого миллионы программистов да еще на разных языках программирования. Лично мне программировать не интересно и мне не понятна причина принуждение к учебе программированию. При этом любой из вас может этому научиться этому за 10-20 уроков.
За две недели любой из вас может программировать. Но лично я бы предпочла готовые шаблоны -потому что это сэкономило бы мне много времени. Я потратила меньше недели на изучение, лично мое мнение -я не понимаю почему не сделать готовые шаблоны? и почему не встроить их в игровые движки что бы разработчик не тратил время на то- что ему не нужно, то есть на программирование.
Штумоз™No
Перейдем к тому ,на чем строится больше половины игр . Это взаимодействие спрайта со спрайтом.
Когда спрайт касается другого спрайта и дальше существует бесконечное множество как это применять.
например один спрайт это меч или пуля, второй условно противник или один спрайт торпеда ,а второй корабль или танк .
Тогда при касании мы можем отнять какое то значение ,которое мы задали спрайту. Рассмотрим простой пример.
Пусть один спрайт будет пушка. Второй спрайт снаряды к пушке- ядро.
Зарядим нашу пушку.
для этого спрайт ядро при когда флаг нажат ,мы через операторы движения ,указываем перейти в положение ,где вместо случайного положения прописываем спрайт пушка.
.Поскольку ядро попадает в центр, мы смещаем его относительно центра на 100 шагов и на 35 по игрек.
У нас есть теперь заряженная пушка. Осталось заставить ее стрелять
и визуально что бы ядро появилось только в момент выстрела делается это так.
Добавим теперь движение .Если клавиша пробел нажата, то старт звук выстрела ,показаться повторить до того как касается край. если касается край? то спрятаться, проверять всегда.
теперь когда мы нажмем пробел ,будет воспроизведен звук выстрела, ядро покажется и будет делать 10 шагов постоянно пока не коснется края.
и если коснется то снова спрячется.
мы можем сделать дубль пушки и поставить их друг на против друга. Сделать передачу хода ....
И создать любое количество спрайтов -задавая ходы поочередно.
Теперь нам нужно что бы наш снаряд наносил урон по условному противнику.
Для этого мы создадим спрайт врага.
И ведем шкалу урона .
Штумоз™No
Для нашего спрайта будет условие что он будет двигаться в сторону пушки пока не коснется ее. И смена костюма, для визуальной ходьбы, поскольку их два, то просто смена наследующий костюм.
А ядру мы допишем условие .Если касается края то спрятаться, а если дракона -то изменить значение здоровье минус 10 .
И водим значение здоровья равно 100 если флаг нажат..
И мы можем добавить еще условие Если здоровье дракона равно ноль-то конец игры.
после условия касается края нужно добавить края и дракона ,перед стоп все -задать временную паузу.
Это рабочая механика иры ,вы можете генерировать количество драконов, сделать что бы они шли с верху, Сделать поворот пушки .
Общем все что угодно, насколько хватает вашего воображения. Принцип неизменный.
Это может быть топор если он касается дерева, то отнять жизнь дерева если дерево ноль-то дерево спрятаться появиться 4 бревна. Кирка касается камня, если 10 раз -то получить 1 руду.
шпага касается противника - отнять жизнь.
То есть почти любая игра которая связана с добычей ресурсов, любой стреляющий танк,
все это всего лишь одно условие спрайт касается спрайта- происходить какое то действие.
Для закрепления материала я покажу еще 3-4 примера такого взаимодействия. После чего любой из вас сможет делать практические любую игру связанную с тем что бы стрелять, или сражаться. Это не готовые игры, это пример как делать игры.
Штумоз™No
Давайте сделаем то что мы делали, но реализуем это чуть иначе. Что бы пушка у нас могла вращаться.
Создадим спрайт прицела.
очень простое управление ,перейти в точку ноль по икс и игрек.
всегда проверять нажаты ли кнопки стрелка верх или стрелка внизз?
и если нажато влево то изменить на - 5 шагов, если вправо то на 5 .
Таким образом прицел будет перемещаться по горизонтали.
Сделаем орудие
когда флаг нажат всегда повернуться в сторону прицела. Теперь наше орудия будет поворачиваться в сторону прицела.
ну и сам код торпеды. Перейти в башню оружия и спрятаться.
повернуться в сторону прицела .идти 90 шагов что бы снаряд появился после дула.
Если клавиша пробел нажата? то воспроизвести звук выстрела, показаться, повторять пока не коснется края,
идти 10 шагов, после чего спрятаться.
Таким образом у вас будет рабочая модель пушки которая стреляет в направления прицела.
Саму мишень легко прописать через появляется в случайном месте, или рандомно в заданных точках.
Через операторы плыть в указанную точку, или идти и если коснется края то идти в обратном направлении.
Через операторы переменных вы можете задать количество жизни спрайту. и условие что будет если жизнь станет равна нулю.
Давайте рассмотрим еще один пример .
Стрельба в движении.
Штумоз™No
Мы практически оставим код без изменения
Нарисуем спрайт какого то танка или машины. Остальное оставим без изменений
мы практически не трогали код. Движение сделано по клику мышки, если мышка нажата то
с интервалом 0,1 секунда танк движется в сторону прицела ,можно сделать управления клавишами.
Сам прицел теперь когда флаг нажат-то перейти в указатель мыши.
И снаряд без изменения если флаг нажат, то перейти в орудие повернуться к прицел, идти 70 шагов, и если клавиша пробел нажата то звук выстрела ,показаться повторять пока не коснется края. Спрятаться . Вы можете самостоятельно переделать управления танком.
По этой механике работают любые выстрелы. Так же их можно сделать через систему клонов.
Теперь рассмотрим механику касания, до этого мы ее рассматривали.
в основе лежит если спрайт касается спрайта. где спрайт может быть чем угодно от оружия до кирки , и от щита до дерева.
Потому рассмотрим пример добычи ресурсов.
Нарисуем два спрайта 1. Топор .2 дерево. Внутри спрайта топора создадим дубль топора и изменим угол наклона для анимации рубки дерева ,внутри спрайта дерево нарисуем спрайт полено. А теперь напишем код .
Штумоз™No
Для топора .перейти в положение х-43,y-118 далее поскольку у нас жизнь дерева будет равно 100 ,а удар топора отнимает по 10 ,то повторить 10 раз
Штумоз™No
изменить костюм на топор 1,издать звук удар топора, интервал задержки 0,5 секунды, сменить костюм на топор 2, и тоже ждать 0,5секунды если спрайт касается дерева? то изменить жизнь дерева на -10 . Разместить спрайт топора так -что бы во втором положении она касался дерево.
Теперь спрайт дерева.
Когда Флаг нажат , то задать жизнь дерево через созданную переменную равно 100
перейти в положение х=11 у= -6
проверять всегда, равна ли жизнь дерева нулю?
и если да то сменить костюм на полено играть звук срубленного дерева. и стоп скрипт.
Вместо дерева может быть игрок, тогда удар топора будет отнимать у него жизнь, и если жизнь станет равна нулю, то игрок умер .