Первый опыт "ГеймДева". Часть два.

Доброго времени суток. Это продолжение поста http://pikabu.ru/story/razrabotka_igr_ili_pervyiy_opyit_quot...

И так, допустим вы определились какая мерность у вашей игры будет, какой сеттинг, каковы основные события будут. Славно. Если вы с движками еще не работали вам стоит "побаловаться" с ними.

Сегодня будет немного кода и то, как я учился всему что умею в этой сфере.

Лично мое мнение о движках:
Unity - Более простой, с относительно низкой графикой (Хотя есть очень достойные работы, опять же, от разработчика зависит), проще в освоении и менее требовательный в плане ресурсов.
UnrealEngine - Более сложный, с хорошей графикой, сложнее в освоении, требует больше времени на изучения материала и возможностей движка. Требователен к ресурсам.
CryEngine - Далеко не простой движок, нужно смотреть уроки, коих на русском языке не так много, графический потенциал, а так же возможности очень велики, но думаю стоит учесть что он очень требователен к ресурсам.

Как я говорил, я буду показывать на примере Unity. Все эти движки - бесплатны.

И так, как получить юнити - заходите на офф. сайт: https://unity3d.com/ru , регистрируйтесь, скачивайте бесплатную версию. Так же можно сделать и с остальными движками.

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

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Ждем, долго ждем, зависит от процессора и жесткого диска.

Ждем запуск юнити и получаем примерно такое:

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Я не буду рассказывать как все работает и тем более объяснять что за что отвечает. Первое, потому что я пишу эти посты не как уроки по unity, а как напутствие с чего начать.

Второе, вы могли выбрать и не Unity.

Тыкаемся, пробуем, создаем объекты и понимаем чего мы можем (ничего скорей всего, но это пока) и что может движок.
Вдоволь поигравшись перейдем к практике. Сначала хочу сказать железное мое правило: Не использовать чужие работы. Это касается Моделей, Текстур, Кода и т.д.
Исключение - это шейдеры (Если коротко, инструкция для видеокарты как отображать объект), до меня с трудом доходит как они работают, потому я использую или стандартные или бесплатные, чьи-то наброски и пытаюсь их доработать. Так же исключение это когда я смотрю примеры, как сделали другие, забираю себе код и дорабатываю под свои нужды или под свой лад. Последний раз так было года пол назад. Главное в коде понимать как он работает, это придет со временем.

И так, практика. Напишите план работ. Туманный, без дат и т.д. Не обязательно делать по порядку, возможно вы нечаянно поймете как осуществить один из пунктов плана в момент выполнения первого пункта. Придерживайтесь плана. Если устаете - переключайтесь на другие части проекта. Первым лучше делать механику. Набросайте небольшую сцену (Карту, комнату и т.д. где могут происходить действия игрока) и начинайте там пробовать создавать то, чем будет управлять игрок. Да, есть момент когда механика не обязательно будет первая. В моем случае я делал генератор мира параллельно механике игрока.

Код. Код проблема многих. Многие не понимают как что либо сделать. Не пытайтесь сразу писать всю массу работы, если не понимаете как оно вообще работает все. Придумайте простую цель, например, по нажатию на "E" объект должен начать вращаться\уменьшаться\увеличиваться\двигаться, все что угодно. Простые задачи.
Процесс написания кода:
В Unity есть свой редактор кода, но по желанию можете привязать к более удобному для вас редактору.

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Я пишу на C#, есть JS, но особой разницы, прям ощутимой, я не заметил. Лучше, как по мне, использовать C#. (Начинал с JS, а еще раньше, с версток сайтов на HTML).



Теперь, у нас есть задача. По нажатию "E"(Англ) делать что-то с объектом. Есть сайт https://docs.unity3d.com/Manual/index.html , он поможет с решением проблем из за не знания какие методы (команды движку) существуют.

Так же, вопросы лучше задавать в гугле, и запомнить что в 90% нам поможет docs.unity3d.com , потому в списке ответов искать его. Если не найдете, есть еще русскоязычный форум по Юнити.

Решим же нашу простую задачу про кнопку E.

Начнем с начала, у нас есть кнопка, на клавиатуре, по ее нажатию что-то должно произойти.

Немного думает, идем в гугл, пишем подобное: "Событие по нажатию клавиши клавиатуры Unity". (Если не найдете что нужно, попробуйте перефразировать запрос. В крайнем случае сделайте запрос на английском языке). Вот что мне выдал Гугл.

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Кликаем на первые два. Находим это:

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

По описанию не совсем понятно, но вот по коду, уже больше информации. Debug.Log(Тут то что вам нужно вывести в консоль); - Это команда вывода информации в консоль. По переводу с англ поймем: Первое: "Пробел(Тут имеется ввиду клавиша) нажат"; второе: "Пробел поднят (Фактическое поднимание клавиши наверх)". По факту, мы копипастим весь кусок "void Update" (Обновление, все что будет в его фигурных скобках будет выполняться каждый кадр. В нормальной ситуации в секунду происходит 30-60 кадров, за кол. кадров отвечает FPS. Frame Per Second, Кадров в секунду.). То что выше копировать не нужно. Это класс Скрипта, у каждого скрипта свой класс (уникальное название класса), класс можно наследовать (Это пока вам не так нужно).

Создаем на нужном объекте-испытуемом скрипт:

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Дальше ищем как взаимодействовать с объектом. Залетаем на первый форму из списка результата гугла по запросу "изменение масштаба объекта unity" и находим это: "transform.localScale = new Vector3(3.0f, 0.0f, 0.0f);". Vector3, это такой тип переменной, где имеется 3 значения. x, y , z.

Добавляем в кода сначала наш if с его условием. И да, if - команда проверки, если можно так сказать. Имеет вид if(){}. В круглых скобках - условие. Например 2 + 2 == 4 или a + b == c (a,b,c переменные, которые указать можно перед void Start и void Update, сразу после class и его названия, в его теле (Тело - то что между фигурных скобок), это я покажу мельком в другом уроке, можете сами поискать виды переменных в C#, знайте, что вам придется заниматься самообучением). То что в теле if - будет происходить если условие верно, и не выполниться если не верно. Про if можете опять же поискать в гугле по запросу "if C# Unity".

После чего в тело if добавляем действие над объектом.

Получим примерно такое:

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

Идем в Unity, запускаем сцену, нажимаем E, радуемся результатам.

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev

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

Пробуйте, задавайте может быть и глупые задачи, но все же, практикуйтесь. Больше запросов в интернет, там много информации. При поиске указывайте "C# Unity", если ответов не находите, убирайте "C#", если и так ответов не находите, попробуйте убрать и "Unity".

Скажу одно, к видео лучше прибегать в крайних случаях. Не бойтесь главное и волю фантазии. Следующий пост сделаю в рамках 2д проекта.

Спасибо большое за внимание, я рад что эта тема кому-то интересна. Прошу отписаться, стоит ли делать такие большие посты или все же меньше? Если есть ошибки в посте, прошу простить меня.

Удачи от FWS!

Первый опыт "ГеймДева". Часть два. Длиннопост, Инди, Unity, Gamedev
Автор поста оценил этот комментарий

у меня два вопроса

1.зачем вы всё это делаете ? (мне правда интересно,с чего вдруг человек начинает делать игру)

2.вы не рассматривали вариант пойти работать в контору по разработке игр ? (это проще чем изучать все самому и больше шансов увидеть какой то результат своей работы)

раскрыть ветку