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

Доброго времени суток. Это продолжение поста 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.вы не рассматривали вариант пойти работать в контору по разработке игр ? (это проще чем изучать все самому и больше шансов увидеть какой то результат своей работы)

раскрыть ветку (13)
1
Автор поста оценил этот комментарий

2 - согласен с @KaperDonjon3
1 - Не сколько жажда наживы, а сколько сделать что-то прекрасное лично для своего глаза. Так же сделать что-то, что будет нравится другим. А деньги скорее на втором месте, ведь искусство-творчество хорошо, но кушать тоже хочется.

раскрыть ветку (4)
Автор поста оценил этот комментарий

Кстати,заметил такую особенность. Почему то люди, начинающие делать свою игру,стараются как можно быстрее визуализировать свою идею. То есть создание игры начинается либо с уроков юнити, либо с создания графики. Почему ни кто не начинает с дизайндокумента. Потом же проще будет. Потратить некоторое время на описание основных идей, описать базовые механики, элементы интерфейса и потом уже приступать к изучению инструментария (понимая,на что в уроках обратить особое внимание,а что можно оставить на потом).

раскрыть ветку (3)
Автор поста оценил этот комментарий

Лично для меня это было бы только сложнее. На момент создания опыта было очень мало. На что способен я и что может движок я не совсем знал. Сейчас механика шлифуется на ходу. Испытывается моими рабами знакомыми, они говорят как было бы лучше, что добавить и что убрать. Так же про интерфейс, ведь тоже изначально не знаешь какова система интерфейса. Я согласен когда ты имеешь опыт с движком или программой. Тогда да, составляешь план - идешь по плану... А тут было проблемно. Сейчас уже есть план работ и все уже достаточно детально описано.

раскрыть ветку (2)
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Нет, ну блин, по ходу дела дорабатывается не отходя от основной темы)

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

Автор поста оценил этот комментарий

Напишу от себя:

1. Коротко говоря, это жажда наживы и тяга к творчеству. В разных пропорциях.

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

раскрыть ветку (7)
Автор поста оценил этот комментарий

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

Но, в любом случае спасибо за ответы, интересно будет почитать, чем все это закончится : )

раскрыть ветку (6)
Автор поста оценил этот комментарий

Это еще очень хороший вариант для геймдевера среди "работ в команде" - сдавать готовую игру паблишеру.


А ведь есть еще вариант, что если геймдевер - узкий специалист, в команде ему придется заниматься тем, что надо, а не тем чем хочется. Конечно это нормально, ведь за эту работу скорее всего ему будут платить ЗП. Но ведь если платить кому-то ЗП то можно и выбирать из вариантов. Тут начинающих геймдевер и отпадет ибо опыта мало.


Ну это все коммерция... А если же тяга к творчеству преобладает над тягой к наживе,

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


Все imho. У меня у самого опыта нет, кроме пары строк кода, да пары кривых моделек.

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

Не знаю, возможно в силу возраста у меня много идей, много сил, я могу быстро учиться, но времени... Бывают такие моменты когда просто не замечаешь куда уходит весь день. 15 лет, подготовка к экзаменам, + такого рода проект, + администрирование группы, + вот посты писать начал, с учетом того что меня еще пытаются на "олимпиады" тягать, на это все остается не очень много времени. В общем, во всей красе жизнь показывается - Нехватка времени и ресурсов не дает тебе возможности делать что ты хочешь. Но а так, стараюсь. Про качество, честно, я слишком самокритичен, наверное, и сам еще никогда не оценивал свои проекты на хорошо. Постоянно пытаюсь поднять планку. Явным примером "Как делать не надо" 80% игр GreenLight Steam. Там 50% халтура, 25% неоптимизированность, а еще 5% откровенный бред. Я хочу что бы люди радовались мелочам и проведенному времени в моих проектах, что бы было в них приятно играть и приятно за ними наблюдать. Всеми силами стараюсь в рамках своего ума и опыта. Но, по сравнению с тем, что у меня было ранее, есть прогресс.

Хотя есть относительно годная работа. Собственно это было сделано в 2014 году. Простенький генератор систем. Зачем я его делал? А я сам не знаю, просто сделал. Была идея стратегию сделать, но делать стратегию на HTML - извращение.

Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

На GreenLight без кровавых слез не взглянешь )

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

Автор поста оценил этот комментарий

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

раскрыть ветку (2)
Автор поста оценил этот комментарий

Геймдиз...

«Совершенство достигнуто не тогда, когда нечего добавить, а тогда, когда нечего убрать.»

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

...что-то я сомневаюсь что этому вообще можно научиться. )

...ну это все так мысли вслух просто :).

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, учиться этому нельзя. Но многие себя устанавливают на "Да у меня не получится", "Это сложно", "Тут странные букаваки, я не пойму", "Компуктеры не для людей" и т.д.
Если они будут делать откровенный шлак, то их никто не оценит, следовательно, будет стимул или прекратить или делать лучше. Никто не просит от тебя игру, потому тебе нужно сделать так, что бы твою игру полюбили. Ну, думаю моя мысль ясна.

А над счет каждого первого - да. Просто много кто думает что это все реально по щелчку пальцев делается.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку