Можно ли создать игру на слабом пк
Итак, топ-3 странных способа сделать игру:
1) Power Point (да, та самая программа для презентаций от Microsoft)
Не знали что тут можно создавать игры? Когда тебе 14 лет и ты не знаешь что однажды появится Adobe Illustrator, а игровые движки в твоем представлении - это 95% непонятных символов и 5% интерфейса, приходится выкручиваться. В детстве мы с братом устраивали своеобразные хакатоны, где за несколько дней нужно было разработать игру. Так появлялись небольшие RPG, аркады и даже квесты в духе рассказов Стивена Кинга:
2) Настольные игры
Когда тебе 16, ты вдохновляешься Magic The Gathering и ничего не знаешь про авторские права, то готов использовать все возможные способы чтобы компенсировать отсутствие способностей в рисовании. На самом деле настольные игры - это отличный тренажер для любого геймдизайнера, ведь имея такое количество ограничений (никаких вычислительных мощностей, только картон, цифры, UI и иллюстрации), приходится проявлять изобретательность. Один из увлекательных способов проверить работоспособность механики или идею игры - сделать бумажный прототип.
3) Twine (HTML+CSS)
Первыми "языками программирования" которые я изучил стали HTML и CSS. Бонусом шли основы JS, которые мне действительно пригодились. Да, на курсах по фронтэнду я делал сайты, но жажда делать игры не утихала и тогда я нашел Twine - движок для создания текстовых квестов, в котором можно использовать языки разметки и таблицы стилей. При большом желании игру сделанную тут можно даже выпустить на Android. Я взялся за небольшой карточный рогалик и в реализации это был сущий ад. Платформа явно не рассчитана на сложные игры. В Unity все это делается намного проще.
Наверняка и вам доводилось делать игры в приложениях, которые для этого не предназначены. А может быть вы использовали редакторы игр, которые просто не выдерживали и ломались под тяжестью и гениальностью ваших идей. В любом случае это интересно, обязательно расскажите 😅.
Как настроить дозагрузкуконтента для тяжёлой игры
С чего начать создание своей игры?
*Листок меняем на комп/ноут, карандаш меняем на любой более-менее поддерживаемый движок/конструктор*
В смысле, а как же "бумажный прототип"? ред.
Что такое "бумажный прототип"?
Прототип - это функционирующая модель. Он может быть меньше конечного изделия, страшнее, менее эффективным, но он должен (хотя бы в общих чертах) воспроизводить возможности этого изделия.
Поэтому прототип игры может быть только цифровым.
Игровая механика - это абстракция, которая может быть представлена в разных формах. Для каких-то механик подходит бумажный прототип, для каких-то нет, но однозначно утверждать, что прототип игры может быть только цифровым - грубая ошибка. Цель прототипа не сделать функционирующую модель, а ответить на вопросы и снять риски. Вы путаете прототип и MVP. ред.
Я ничего не путаю, просто использую слово "прототип" в его общеупотребительном значении. А не в том, что для себя придумали господа геймдевелоперы.
На бумаге можно изобразить набросок, эскиз, план, чертеж, пошаговую инструкцию - да что угодно.
Игровая механика - это абстракция, которая может быть представлена в разных формах
Вот именно для того, чтобы проверить - работает ли эта абстракция на практике, и нужно делать прототип.
Можно сделать бумажный прототип за 1 день, а можно "цифровую функционирующую модель" за неделю и получить один и тот же результат. И вот тут возникает вопрос нахера, а главное зачем? Пример - любые карточные игры и пошаговые стратегии. Нет никакого смысла вкладываться в разработку цифровой модели, чтобы понять работает ли кор-механика, юниты и баланс или нет. Все отлично проверяется на бумаге гораздо быстрее и дешевле. ред.
Пример - любые ККИ и пошаговые стратегии.
Ядерный Ганди приветливо машет ручкой (с явно недобрым намерениями).
А вообще, неделю на реализацию базовой арифметики и пары-тройки триггеров - это сильно.
P.S. Единственное, с чем я могу согласиться - это нарративный прототип. Это да, это можно и на бумаге. ред.
Ядерный Ганди это не кор, и даже в "цифровом прототипе" это отследить было бы невозможно, потому что там сделаны были бы 1-2 варианта правителя с минимальным, общим для всего класса, функционалом, по которому можно было бы снять вертикальный срез игры.
Ганди недоработка, но не на уровне ядра игры или прототипа, а на уровне реализации объекта класса. ред.
По фактам разъебал.
Тыб хотя бы погуглил, что это такое. Это мало того, что общепринятая в гейдизайне практика, так она ещё и не уникальна для создания игр.
Да и в твоём определении "прототипа" в трёх местах перепутаны причина и следствие.
ДОЛЖЕН БЫТЬ хуже конечного изделия, страшнее, менее эффективным
Нет, прототип должен воспроизводить основные характеристики объекта, с которого делается модель. То, что ты назвал, следствие того, что "страшнее и эффективнее" — качественные показатели, которые на этапе прототипа не важны. ред.
Человек решил экспертом притвориться, а ты вот так с ним. Жестоко.
Ммм, ставим минусы, бравируем.
Сразу видно серьезного человека, да еще и эксперта.
Ну что ж, в игнор.
На что только не пойдёшь, чтобы люди, читающие комментарии, не дай б-г не восприняли то, что ты тут написал, всерьёз. Всего хорошего. ред.
Хороший, грамотный, взвешенный подход восприятия аргументированной доказанной критики, когда несёшь чушь. Реакция страуса.
Ну да, откуда инженеру с двенадцатилетним стажем знать, что такое прототип
Круто, наверное. Апелляция к своему авторитету. Но ты сказал херню, которая отношение к реальности имеет опосредованное. И даже по твоему "должна быть страшной", бумажный прототип проходит. Потому что он, как правило, страшный.
Тип, модель может быть любой, лишь бы она описывала основные свойства натурного объекта. Она может быть математической, программной, бумажной, физической, да какой угодно. Лишь бы варьирование признаков было можно производить.
Ты сам-то хоть открывал эту статью?
Да. Я тебе показал, сколько лет этот метод прототипирования существует, и что он существует вообще. Дальше открываешь почти любую книгу по геймдизайну и смотришь как там люди обращаются с этим видом прототипов, даже картинки скину.
История знавала случаи когда некоторые знаковые игры вообще за столом в кафе придумывали, из салфеток и вилок.
Общепринятая в геймдизайне и разработке ПО терминология
Не знать что вещь вообще значит, но бухтеть какая она плохая, и, вообще, так быть не может
"Короче, как всегда, понапридумывали своей терминологии и рады"
Да, действительно пора заканчивать этот разговор. ред.
Публикация
Совет
Самое время показать всему миру своё творение.
Продвижение — самая волнительная стадия. Если вы сомневаетесь, вам поможет сообщество гейм-дизайнеров. Помните, что вы не одиноки, и раз прошли так много, нужно завершить дело до конца.
Вы не узнаете, станет ли игра хитом, пока не опубликуете её.
Если хотите, чтобы все узнали об игре, напишите анонсы для игровых медиа, участвуйте в фестивалях и конференциях.
Отправьте описание игры в прессу за неделю до выхода — дайте людям время написать о ней. Может случиться, что о ней не станут писать, но помните: журналисты любят красивые истории о разработчиках, уникальную или противоречивую идею и медиа-кит.
- Найдите в сети контакты авторов, которые вам нравятся: почта, страница в LinkedIn, Твиттер.
- Найдите почту издания в разделе «О нас» или внизу страницы.
Не пишите в игровые издания, которые не освещают ваш жанр или целевую игровую платформу.
- Игра станет популярна на платформах.
- Вы напишете напрямую. Не говорите о себе, кратко, красиво и убедительно расскажите про игру. Используйте гифки и скриншоты для привлечения внимания.
Письмо видеоблогеру Markiplier, чей канал насчитывает более 21 миллиона подписчиков
Это прекрасный инструмент для продвижения: Agar.io обрела популярность на 4chan, Butterfly Soup подскочила в загрузках после внимания в Твиттере.
Как лучше: публиковаться через издателя или самому. Хотите пойти по пути Hotline Miami, выпущенной Devolver Digital, или перенять опыт Farmville и Doki Doki Literature Club?
Чтобы сотрудничать с издателем, нужно сначала его найти. После этого будет небольшой ворох бумажной работы, зато вы получите достаточно средств для развития игры.
Если собираетесь издаваться самостоятельно, готовьтесь тратить немало времени на изучение маркетинга. Вы можете провалить кампанию по продвижению, но в процессе наберётесь ценных знаний и сэкономите деньги.
Количество установок игры растёт
Получилось! Теперь расслабьтесь, возьмите что-нибудь вкусное и отдохните. Вы работали не покладая рук и заслужили это.
Главное, что вы сделали игру и многому научились. Сейчас этого достаточно, и всегда есть возможность попробовать ещё раз с новыми знаниями.
Инструменты
Сервис presskit() помогает разработчикам оформить описание игры для прессы.
Платформы для публикации:
-
(PC) — 100 $ за публикацию.
(PC).
(PC) — бесплатная публикация после разрешения.
(MacOS) — 100 $ в год, требуется учётная запись разработчика Apple.
(PC / Web) — бесплатная публикация.
(PC/Web) — бесплатная публикация.
— бесплатная публикация.
(Web) — бесплатная публикация.
(Web) — бесплатная публикация.
(Web) — бесплатная публикация на сайте, заканчивающемся на «___.github.io».
(Web/Mobile) — бесплатная публикация.
(Mobile) — 25 $ за публикацию.
(Mobile) — требуется учётная запись разработчика Apple.
-
. Приём заявок до 1 октября.
. Международный фестиваль инди-игр. Приём заявок до мая–июня.
. Игровая премия Швеции. Приём заявок до июня.
. Приём заявок до декабря.
. Приём заявок до ноября.
Программирование
Совет
Выберите игровой движок, среду разработки и начинайте погружаться в код.
-
Типы данных и переменные. В основе кода лежат данные, которые хранятся в переменных. Можно объявить переменную так:
int — тип данных, i — имя переменной, = 0 — значение переменной.
Используя оператор else, можно расширить условие и отобразить что делать, если условие не соответствует истине:
For-циклы похожи на while-циклы. Для while мы пишем так:
Равнозначный for-цикл будет таким:
Если в коде что-то идёт не так, на помощь приходят исключения. Они как бы говорят: «Так, погоди, здесь ты сделал что-то нелогичное. Перепроверь ещё раз».
О чём ещё надо знать:
Код — это вызов самому себе. И ничего не понимать поначалу — нормально.
Как и любому навыку, программированию нужно обучаться. И, возможно, это окажется довольно интересно.
Другие немаловажные основы программирования:
- Объектно-ориентированное программирование. Делает код более естественным.
- Соглашение об именовании. Называйте классы, методы и переменные так, чтобы вам и другим программистам была понятна их цель. Например, назовите функцию атаки ближнего боя,
- Сопрограммы. Позволяют начать выполнять действие, продолжать в течение нужного времени и затем прекратить. Я использую их для визуальных эффектов взрывов, резких движений.
- Класс ScriptableObject. Он хранит данные с меньшими затратами, чем базовый класс MonoBehaviour.
Инструменты
- Visual Studio Code (для MacOS) — не зависает, имеет встроенную справочную информацию и удобные «горячие» клавиши.
- Visual Studio (для Windows).
- MonoDevelop — устанавливается с Unity, иногда подвисает.
В Unity Asset Store, bitbucket и GitHub очень много бесплатных ассетов. В своих проектах я использую минимум по два. Они упрощают жизнь, но далеко не идеальны. Заметили ошибку — исправляйте и говорите разработчику о ней.
-
.
.
.
.
.
.
— работает над Unity, доступные проекты визуальных эффектов с открытым исходным кодом.
Немаловажный, даже главный источник решения проблем с кодом — Гугл!
Совет
Аудио способно создавать настроение и погружать в игру, но для него нужна память.
Для начала решите: вы хотите звук? Если да, будет ли в игре музыка, звуковые эффекты, озвучка или повествование.
В любом случае потребуется запись и сведение таким образом, чтобы звук подходил под настроение игры. Например, Bastion использует органические и инструментальные звуки, хорошо вписывающиеся в мир игры. Crypt of the Necrodancer включил в себя смесь электронных ритмов и восьмибитного рока, чтобы передать темп и яркость игры.
Погружение решает. Если звуки не совпадают с настроением игры, игроку будет сложно погрузиться в ваш мир.
Инструменты
Приложения для работы с аудио:
- Logic Pro (только для MacOS). Цена 200 $.
- FL Studio. Цена 99–899 $. Есть бесплатная демоверсия.
- Reaper. Цена 60–225 $.
- Audacity. Бесплатная программа. Имеет мало возможностей, но полезен для чистки аудио.
-
. Здесь можно найти бесконечно много звуков и музыки под лицензией Creative Commons. Начните с этого плейлиста. Использовать можно бесплатно, но не забудьте указать авторство.
.
.
Как создать игру без навыков программирования
Первое знакомство
Однажды мне довелось побывать на мастер-классе по прототипированию у одного известного левел-дизайнера, работавшего в одной из крупнейших IT-компаний в России. На мастер-классе каждому участнику предложили создать свою игру за 1 час, а в конце часа показать игру остальным. То есть я первый раз запускаю программу и через час должен создать игру? Обладая некоторым опытом работы в программах, где необходимо писать код, я не поверил, что такое возможно. К моему удивлению, все (я в том числе) успели сделать свою первую маленькую игру. Пусть и простую, но в нее можно было играть. Так во мне зародилась любовь к конструктору под названием Clickteam Fusion 2.5 (раньше назывался Multimedia Fusion). Ещё популярными конструкторами являются Game Maker Studio и Construct 2. В основном, я работаю в Clickteam Fusion 2.5 (далее CF 2.5). На её примере раскрою принцип работы таких программ и их возможности.
Как это работает
Сразу отмечу, что конструкторы предназначены для работы в 2D. Уверен, в ближайшее время появятся и полноценные 3D-аналоги. Если вы настроены попробовать себя в 3D, то без знания программирования, вы сможете создать только карты для популярных игр, которые имеют редакторы-карт. Это уже другая тема, а сейчас я расскажу, как же работать в конструкторе.
При создании новой игры необходимо определить, для какой платформы хотите творить. Конструкторы дают возможность создавать игры для PC, IOS, Android, Html 5, Flash и т.д. Например, чтобы создать игру не только для PC, но и для IOS в программе CF 2.5, придётся докупить или скачать export module ios. Модуль конвертирует игру в код платформы – Xcode. Затем, через несколько нажатий, вы уже сможете тестировать игру на устройствах Apple (также нужен аккаунт разработчика Apple).
Ваша игра будет состоять из кадров (сцен). В каждом кадре можно создавать объекты, которые помогут вам решить любую задачу. Например, если это главное меню и вы хотите создать кнопку «Start», вам необходимо создать объект «active».
Окно «Редактор кадра».
Нажимаем правую кнопку мыши и выбираем «Insert object».
Выбираем объект «active».
Затем, нужно вставить в объект изображение кнопки или нарисовать во встроенном редакторе. В этом окне также можно создать покадровую анимацию. Один объект может иметь несколько анимаций (герой стоит, герой бежит, герой летит).
Окно «Графический редактор».
Осталось придумать событие, которое будет происходить с этим объектом.
Для этого, переходим с вкладки «редактор кадра» на вкладку «редактор событий».
Выбираем из списка необходимые события (условия), при которых, произойдут установленные вами действия над выбранным объектом, группой объектов, кадром.
Если игрок нажимает левой кнопкой мыши на объект «Start», то —
— происходит переход на следующий кадр.
Вот так просто, без программирования, можно создавать различные события, из которых будет состоять ваша игра.
Ещё несколько примеров:
— Если объект «шар» коснулся объекта «шип», то на экране появляется надпись «вы проиграли», а объект «шар» меняет анимацию на «шар лопнул».
— Если прошло более 5 секунд с начала запуска кадра, то в правом верхнем углу появляется объект «аптечка».
— Если объект «птичка» коснулся объекта «червяк», то «червяк» исчезает, в объект «счётчик очков» прибавляется единица и один раз проигрывается звук «жалобный крик червя».
Не изучая программирование, вы сможете создавать самые разные механики, используя фантазию и большое количество вспомогательных объектов. Перечислю некоторые из них:
Active object – самый популярный объект, его используют для создания объектов взаимодействия (главный герой, враги, платформы, ящики и т.д.). Он может содержать много разных анимаций (герой стоит, герой бежит, герой стреляет), иметь встроенные стандартные механики движения и управления.
Counter object – создает всевозможные счётчики жизней, денег, очков и т. д. Может быть представлен как в виде цифр, так и в виде шкалы.
INI object – сохраняет данные после выхода игрока из игры. Можно использовать для сохранения месторасположения любых объектов в кадре.
Physic engine object – появление этого объекта в кадре создаёт гравитацию, параметры которой можно регулировать.
Joystick control object– для touch-устройств создаёт эмулятор джойстика.
IOS store object – даёт возможность сделать внутриигровые покупки для AppStore.
Admob object – позволяет поместить баннерную рекламу в игру.
Touch object – учитывает все касания к экрану touch-устройства. Например, можно создать такое событие:
если игрок одновременно коснулся экрана тремя пальцами, то игра останавливается на паузу.
Заключение
Нет простого пути создания игры. Есть только ваши решительность и усилия.
За каждым Half-Life, Minecraft и Uncharted лежат океаны крови, пота и слез.
Кен Левин, создатель Bioshock
Вы будете допускать ошибки, чувствовать себя в тупике и плакать. Это нормально — значит, вы растёте над собой.
Графика
Совет
Если вы не умеете программировать, сначала прочтите раздел «Программирование». Вряд ли вы хотите потратить время на графику и выкинуть её потому, что под неё не написать код.
Даже если вы не умеете рисовать, игру можно сделать красивой, используя три визуальных принципа: цвет, форма и объём.
Thomas Was Alone — простая и прекрасная игра
Интерфейс
Подумайте, как сделать игру уникальной с помощью цветовой схемы, шрифтов и иконок без потери удобства для игрока. Понятна и читается ли важная информация?
Неудачный и удачный шрифт
2D-анимация
Анимацию можно реализовать двумя способами:
- Покадровая анимация. Когда вы отрисовываете каждый кадр. Для этого используйте таблицы спрайтов и Sprite Packer в Unity.
- Скелетная анимация. Отрисовывается каждая подвижная конечность, затем анимируется её позиция и повороты. Это быстрее, легче и тратит меньше оперативной памяти. Для 2D-анимации на Unity используйте пивоты (точки привязки) или плагин Anima 2D.
Что ещё может пригодиться
Советы, которые применимы не только к игровой графике, но и к другим программам:
Без тайлов и с тайлом
- 9-slice объекты с немасштабируемыми границами и масштабируемым центром позволяют увеличивать изображения без заполнения памяти.
Пятно расширяется, но углы остаются прежними
- Делайте разрешение каждого объекта таким, чтобы оно делилось на 4 или было степенью числа 2.
- В Photoshop вы можете сохранить каждый слой в отдельный файл через Файл > Экспорт > Быстрый экспорт в [формат изображения].
Инструменты
- Photoshop.
- Gimp.
- Paint Tool SAI — для графики в стиле аниме.
- Blender — мощное ПО со сложным обучением.
- Maya — для анимации.
- Max — для отрисовки.
-
— шрифты, иконки и прочее.
— высококачественные объекты, готовые к использованию в играх.
— огромная библиотека графики, созданной другими пользователями.
-
— закрытое сообщество дизайнеров.
— сообщество дизайнеров, к которому может присоединиться любой желающий.
— сообщество создателей инди-игр.
Геймдизайнер с нуля: как начать делать игры без опыта
Всего 2 года назад я была 17-летней школьницей и ничего не знала о программировании. Это не помешало мне начать учиться и через несколько месяцев выпустить свою первую игру в Steam. Сегодня у меня более 10 игр для ПК, интернета и мобильных устройств и свыше 1,9 млн игроков.
Не важно, что вы умеете сейчас — при должном желании вы тоже сможете делать игры. Два года назад такое казалось невозможным: это было самое сложное, что я сделала в жизни, и оно того стоило. Теперь я понимаю, что в разработке игр, как и в любом другом деле, вы растёте только тогда, когда пробуете, ошибаетесь и совершенствуетесь.
Всему, что я знаю, я научилась сама, а теперь научу вас.
Подготовка к публикации
Совет
Существует небольшая вероятность — на 99,99 процентов, что в игре есть ошибки. А это значит, что самое время заняться баг-тестом.
Как тестировать игру на баги?
- Дайте другим поиграть в игру. Желательно вместе с вами, на случай, если они столкнутся с ошибкой и не смогут понять или объяснить её.
- Проверьте игру на разных платформах. В редакторе может не быть проблем, но работает ли она там, где её будут запускать? Будьте особенно внимательны с Linux и Android.
- Проверьте консоль на исключения. Если нашли исключение, найдите файл и строку, где сработало исключение. Если оно звучит по-марсиански, поищите решение в сети, и подумайте, почему именно в этой строке срабатывает исключение.
- Напишите в консоль. Попробуйте вывести логи (системные файлы) в предполагаемых местах ошибки. Введите разные переменные и сверьте полученные значения с ожидаемыми. При несовпадении — исправляйте.
- Проверьте логи. Системные записи вашего проекта дадут больше информации, чем консоль. Прочтите строки, где сработало исключение. Гуглите всё, что не знаете.
- Поспите. Всё починится с утра. Это просто плохой сон :)
Типичные ошибки
В чём дело: функция выполняется с несуществующей (null) переменной.
Быстрое решение: проверьте, является ли переменная null.
Примечание: Проверьте, какие кавычки вы используете.
" //правильные кавычки;
" //ненужные кавычки, они принесут вам немало ошибок.
Советы по оптимизации
- Установите нужную частоту кадров. Для визуальной новеллы хватит 20 кадров в секунду, а вот для шутера нужны 60. Низкая частота кадров тратит меньше времени на отрисовку.
- Анимация / система частиц / выборочная обработка. Объекты, невидимые для камеры игрока, не обрабатываются. Персонажи анимируются, частицы обновляются, 3D-модели обрабатываются только в поле зрения игрока.
- Сжатие текстур и звуков. Для сжатия текстур используйте Crunch. Потоковая музыка и распаковка звуковых эффектов перегружают игру. Попробуйте снизить качество аудио. Сжатие может заметно снизить качество объектов.
- Не позволяйте Raycast касаться лишних объектов. Raycast похожи на маленькие лучи, выстреливающие из ваших пальцев или мыши, когда вы касаетесь экрана или кликаете. Найдите объекты, которые не должны реагировать на действия игрока и удалите их из вычислений Raycast.
- Используйте объектный пул. Частое создание и удаление большого количества объектов снижает производительность. Вместо этого, объедините их в список, очередь или другую структуру. Например, пули должны объединяться в один массив.
- Оптимизируйте шейдеры. Задайте материал для каждого визуализатора. Игре не придётся создавать новые материалы в начале игры, что сэкономит ресурсы. Пусть визуализатор включает только то, что функционально необходимо.
- Используйте AssetBundles (дословно «комплекты активов») вместо старой системы Resources в Unity. AssetBundles экспортирует ваши файлы из Unity и помещает в один файл, экономя оперативную память.
Инструменты (только для Unity)
Чтобы сделать игру, нужно пройти 6 этапов:
- Концепция
- Графика
- Программирование
- Звук
- Подготовка к публикации
- Публикация
Концепция
Совет
У вас есть классная идея. Но как оформить её на бумаге?
У каждого свой путь. Одни составляют дизайн-документы по 60 страниц, другие напишут лист неразборчивых заметок. Не знаю, как удобнее для вас, но обязательно зафиксируйте следующее:
Когда приходит вдохновение, бросайте всё и пишите. В следующий раз, когда мысль уйдёт, не понадобится высасывать идеи из пальца.
Инструменты
- Заметки на Mac OS.
- Google Документы.
- Трелло.
- Google Диск.
- GitHub. Требуется git и Unity .gitignore.
- Unity Collab. Самый простой инструмент, но с ограничениями в бесплатной версии.
- Книга Джесси Шелл «Искусство геймдизайна».
- Сайт для разработчиков игр Gamasutra.
Как создать игру, ничего не умея. Часть первая: модели и анимации
Привет, меня зовут Павел, и я разработчик игр. На идею рассказать о разработке игр людьми, которые ничего не умеют, но горят желанием, меня натолкнул мой брат.
— Я придумал игру, создай мне её.
— А почему ты сам её не создашь?
— Я не умею.
И я задумался, а так ли сложно что-то создать с нынешним количеством уроков и тем по созданию игр в интернете?
С чего начать?
Для начала нам нужна идея, что за игру мы будем создавать, благо у меня была идея брата. Рассмотрим её поближе.
- Это РПГ в средневековом стиле (банально, не правда ли? =) )
- Она должна быть 3D, а не 2D (тут, кстати, довольно интересно, потому как в основном весь интернет пестрит роликами с 2D играми)
- Вид камеры от третьго лица
- Характеристики изменяются сами с повышением уровня, с упором на используемое оружие.
- Лимит уровней — 30
- Предметы привязаны к уровню персонажа (персонаж четвертого уровня не сможет использовать предмет пятого уровня)
- Движок, на котором всё будет работать (в моём случае это Unity: по работе с ним самое большое количество уроков на мой взгляд)
Думаю, что данный план вполне подойдёт для создания шедевра ААА класса =).
Начнём создавать шедевр
В первую очередь регистрируемся на сайте Unity, скачиваем и устанавливаем движок последней версии. Далее перевоплощаемся в человека, который совершенно ничего не знает о движке и о создании игр.
Идём в интернет и спрашиваем «как нам начать использовать Unity?».
Запускаем Unity Hub.
Выбираем NEW и далее 3D проект, пишем название и местоположение проекта.
И открывается сама программа.
И тут, наверное, знатоки начнут кидаться картошкой со словами «Зачем столько воды? Все и так это знают» НО! Материал предназначен в первую очередь для тех, кто ничего не умеет, а не для гуру геймдева =).
Дальше снова идём в интернет либо проходим туториал в самой программе, чтобы научиться основам работы с движком. Для того, чтобы воспользоваться туториалом в программе, нужно в окне Unity Hub нажать на строчку Learn и выбрать любой из проектов. Я советую пройти все уроки и посмотреть несколько роликов по созданию игр.
Как создать модели для игры?
- Научиться моделированию (сложно, долго, но интересно)
- Купить готовый пак моделей (быстро и просто, но за деньги)
Я выбрал второй вариант. Отправляемся в AssetStore. Если у вас не активировалась ваша учетная запись, повторно входим в личный кабинет. И начинаем искать подходящие паки. Я нашел то, что нужно, примерно за 3 минуты по поиску knight. В паке, помимо моделей самих персонажей, были модели окружения. Купил за 10 долларов, нажал Import, поставил все галочки, и пропала проблема, неумения моделировать. 1/4 игры готово.
Сцена
Дальше начинается самое нудное. Нужно собрать рабочую зону (scene, сцену, кому как привычнее называть).
Я привык сначала прописывать персонажей, анимацию, и прочую ненужную (очень нужную) ерунду в начале работы, а уже после того как основные механики готовы, я собираю уровень (локацию, игровую зону). Для начала давайте в сцену поставим кусок земли, на которой будет стоять наш персонаж, и начнём работать с анимацией.
Поскольку мы с вами в этом деле новички, снова лезем в интернет и смотрим, как нам поставить поверхность в игровую зону. Выбираем GameObject -> 3D Object -> Cube, после масштабируем его до простой площадки.
Далее добавляем персонажа (рыцаря, демона, ниндзю, тяночку, или кто вам больше по душе). Персонажа берем из папки Prefabs: мы уже знаем (вспоминаем, чему нас научили во вкладке Learn), что туда сохраняют полностью готовые объекты, персонажей и так далее.
И вот он, наш герой, который будет покорять всех и вся.
Анимация
Помните в рейде «Цитадель Ночи» в World of Warcraft был босс Алуриэль? Когда она произносила заклинания, то кричала «Аннигиляция, репликация, детонация, АНИМАЦИЯ. ». Нам необходимо с криком «Анимация!» наброситься на интернет и понять, как её сделать.
Изучаю кучу материала по созданию анимации, и…, либо я дурак, либо лыжи забыл. Реально перелопатил полтора часа материала, но так ничего более-менее подходящего не нашел. Поэтому я решил объединить несколько уроков в один и собрать простой способ анимации.
Что нужно в первую очередь? По мне — так научиться ходить и бегать. Возьмём анимацию ходьбы и бега.
- В поисковике анимации набираем walking, выбираем понравившуюся анимацию, и ставим галочку In Place
- Далее нам нужно подгрузить FBX модель от купленного пака для того, чтобы анимация не баговала (иногда такой модели может не быть в паке, но сейчас 99% разработчиков дают модель при покупке любого пака бесплатно либо она может лежать на официальном сайте). Тыкаем на upload character и загружаем модель FBX со смешным названием Mixamo_Guy_Naked.fbx.
- Видим, что наш FBX заменил стандартную модель миксамо, и при желании можно кастомизировать анимацию, но этого делать мы, конечно же, не будем. Меня всё устраивает. Я жмякаю кнопку Download, выбираю Frames per Second 60 - анимация ходьбы готова.
- Проделываем туже процедуру с анимацией бега (и другими, в зависимости от того, сколько вы их хотите добавить в данный момент)
Теперь создаём папку Animation в Unity и добавляем туда нашу анимацию. Начинаем настройку.
Выбираем персонажа, inspector, окно Animator, и в строке Controller нажимаем на кругляшок. Появится выбор, где мы и увидим нашу Animation, выбираем её и нажимаем на кнопку Play в Unity. Если вы всё сделали правильно, то сейчас должны наблюдать как ваш персонаж стоит, и у него проигрывается анимация Idle. То есть, он стоит и немного покачивается.
С анимацией разобрались, пора включать снова человека, который ничего не умеет =)
Скрипт W A S D
Анимация у нас есть, теперь нужно заставить нашего персонажа двигаться. Покопавшись в интернете, я узнал, что можно просто добавить компонент Character Controller. Так и сделаем — тыкнем Add Component, в поиск вбиваем Character Controller и добавляем его, в строке Center выставляем Y=1 (нужно, чтобы «яйцо» покрывало всего персонажа. Если у вас получилось меньше или больше, то просто настройте его вручную).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move: MonoBehaviour
public float speed = 3.0F;
public float rotateSpeed = 3.0F;
void Update()
float horizontal = Input.GetAxis(«Horizontal»);
float vertical = Input.GetAxis(«Vertical»);
CharacterController controller = GetComponent<CharacterController>();
transform.Rotate(0, horizontal * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * vertical;
controller.SimpleMove(forward * curSpeed);
if (controller.velocity == Vector3.zero)
GetComponent<Animator>().SetBool(«Idle», true);
>
if (controller.velocity != Vector3.zero)
GetComponent<Animator>().SetBool(«Idle», false);
>
>
>
Тут я немного поясню скрипт.
Верхние четыре строчки — это подключение библиотек, public class — название скрипта. Если у Вас скрипт называется Moving или что-то в этом роде, то поменяйте название. Учтите, к регистру скрипт тоже придирчив.
public float speed = 3.0F; public float rotateSpeed = 3.0F; — это скорость персонажа, настраивается по желанию. Далее идёт подключение управления Character Controller и, соответственно, анимации.
Перетаскиваем скрипт в Inspector персонажа и проверяем. It's ALIVE.
Но есть нюанс: поворачивается наш персонаж слишком быстро и не подключена анимация бега. Скорость поворота лечится просто — выставляем в строке Rotate Speed 0.5, и наш персонаж больше не использует чит-крутилку из CS GO. Теперь сделаем, чтобы наш персонаж все-таки побежал. Снова интернет, хотя, по мне, тут можно и логически додумать, как всё провернуть, но всё же я нашел строчку кода, чтобы всё заработало. Добавляем в наш код такую строчку
if (Input.GetButtonDown(«Fire3»))GetComponent<Animator>().SetBool(«Running», true);
else if (Input.GetButtonUp(«Fire3»))
GetComponent<Animator>().SetBool(«Running», false);
Если у Вас возникли вопросы, что такое Fire3, то ответ прост: это LShift, а проверить это можно, зайдя File->Build Setting->Player Setting->Input Manager. Эту информацию также не составило труда найти в интернете.
После проверки наш персонаж при нажатии клавиши LShift сменил свою анимацию на бег, но при этом его скорость никак не изменилась. Снова уже по протоптанной дорожке идём сами знаете куда, и я снова нашел строчку кода, которая мне подошла и оказалась полностью рабочей.
if (Input.GetKey(KeyCode.LeftShift))speed = 6.0f;
>
else
speed = 3.0f;
>
В итоге весь скрипт у нас получился такого вида
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move: MonoBehaviour
public float speed = 3.0F;
public float rotateSpeed = 3.0F;
void Update()
float horizontal = Input.GetAxis(«Horizontal»);
float vertical = Input.GetAxis(«Vertical»);
CharacterController controller = GetComponent<CharacterController>();
transform.Rotate(0, horizontal * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * vertical;
controller.SimpleMove(forward * curSpeed);
if (Input.GetKey(KeyCode.LeftShift))
speed = 6.0f;
>
else
speed = 3.0f;
>
if (controller.velocity == Vector3.zero)
GetComponent<Animator>().SetBool(«Idle», true);
>
if (controller.velocity != Vector3.zero)
GetComponent<Animator>().SetBool(«Idle», false);
>
if (Input.GetButtonDown(«Fire3»))
GetComponent<Animator>().SetBool(«Running», true);
else if (Input.GetButtonUp(«Fire3»))
GetComponent<Animator>().SetBool(«Running», false);
>
Всё проверили, всё работает, осталось только прикрепить камеру к персонажу. Без заморочек просто перетаскиваем Main Camera в нашего персонажа, далее её настраиваем как нам удобно, проверяем и празднуем ПОБЕДУ!
Заключение
Думаю, что на этом можно этот пост закончить, но впереди еще много работы: создание локации, проработка боя, квесты, предметы, музыка, и еще бесконечное количество вещей, которые можно сделать. Я пока не решил, буду ли в следующей статье строить город или же займусь боевой системой — всё будет зависеть от настроения.
Я считаю, что не имея никаких знаний и денег, а только немного терпения, можно самому создать свою игру. Если вас смущает покупка пака из Asset Store, то всегда можно найти бесплатные паки. Я порылся в интернете и нашел как минимум 6 ресурсов, которые их предоставляют. Советую помимо интернета начать изучение какого-либо направления гейм дева.
Все описанное в этой статье было собрано без специальных знаний с помощью интернета.
Читайте также: