Разработка первой игры, как это происходит у меня.
Примерно вначале года, я решил попробовать сделать игру. Не имея никаких знаний в области 3д дизайна, программирования, анимаций, и финансов. Я понятия не имел, с чего начать, какие будут сложности, и как должен выглядеть первый проект. В общем типичный нолик.
Но начинать с чего-то все таки нужно было, я выбрал юнити. Скачав движок с оф сайта разработчика, я там же нашел курсы на английском языке. Сказать что я знаю английский идеально, явно нельзя, но этого было достаточно чтобы понимать что говорит разработчик в видео и какие задания он даёт. Курсы оказались немного устаревшими, потому что разработчики постоянно обновляют свой движок, а вот курсы - нет. Но все равно они дали необходимую базу. И пройдя совсем небольшой бесплатный курс. Я с удивлением обнаружил как разрабы мне говорят "Поздравляем тебя бро, теперь ты джун, и щас мы тебя будем учить как устраиваться на работу". Чтобы вы понимали, курс проходится не спеша буквально за неделю, если активно заниматься то можно пройти за 3-4 дня. И мне говорят "Ну всё, ты готов, иди твори". Но я ничего не умею!
Полученных знаний с курса, едва могло хватить, на то чтобы сделать, какой нить простенький Angry Birds, в лучшем случае. Я пытался смотреть другие уроки на ютубе, но быстро пришел к выводу, что это плохая идея. Каждый ютубер который учил делать игры, учил по своему. Как бы вынуждая вас следовать его стилю, а иногда они просто ожидали от вас, что вы по дефолту понимаете о чем идет речь. И я понял что без ментора, который будет отвечать на мои вопросы, я буду скипать материал который я не понимаю, и это приведет к дырам и к еще большему не понимаю, что происходит дальше.
И тут мы приходим к нейросетям. По изучав курсы юнити, и посмотрев немного ролики на ютубе, я уже тогда понимал, что использовать нейросеть как что-то, что пишет весь код за меня - абсолютный идиотизм. Тут наверное многие не согласятся со мной. Но если вы делаете игру, которая планируется быть чуть больше чем три в ряд - у вас возникнут сложности. Чем сложнее ваша игра, тем больше в ней кода, чем больше кода, тем лучше его нужно структурировать, чтобы не запутаться. У вас появятся, основные скрипты-синглтоны, свои классы, в каждом скрипте будет 200-2500 строк кода. А скриптов будет много, очень много. Они будут иметь разный уровень связи друг с другом. Даже если изначально вы чего-то в вашей игре не планируете, то со временем, вы захотите это добавить или изменить. Например вы захотите, добавить в игру стелс, вам нужно будет внедрять его во все скрипты с врагами, игроком, гейм менеджера, UI,локализаций, и возможно даже инвентаря если это какое то зелье невидимости. Вы пойдете к нейросети и скажете что хотите стелс, но если вы до этого все время полагались на нее, то вы уже сами не помните и не знаете какие скипты вам нужно изменить и показать ей, чтобы она смогла как то этот стелс в игру вшить. И чем больше ваша игра будет расти, тем быстрее вы зайдете в тупик.
Для чего можно использовать нейросеть. Вы можете спросить у нее, что делает то или это, как можно создать ту или иную механику, ваша задача не копировать бездумно,а пытаться понять, что за код она предлагает. Чтобы вы потом могли в любой момент сами его изменить. Не смотря на то что иногда она ошибается, и несет чушь, переспрашивая раз за разом, когда что-то не получается, вы рано или поздно получите нормальный ответ от нее. Главное не копипасть а разобраться. Нейросеть - это инструмент, а не заменитель вас.Так же нейросеть отлично подойдет для генерации картинок, и даже озвучки(английской). Но это и так уже знает каждый. Я использовал ее именно для этого, обучение коду,использованию каких-то 3д редакторов, озвучка и картинки UI.
Теперь о том, как повысился уровень сложности. И так после того как я прошел курс молодого бойца от юнити, нашёл сенсея в виде нейросетки. Начался ад. В отличии от ситуации когда разработчик юнити показывает на своем собственном примере, как что куда тыкнуть чтобы оно работало - нейросеть обьясняла просто текстом. А уровень сложности от "просто подвинуть обьект" до "сделать инвентарь, квесты, диалоги, нелинейность, систему сохраний" - существенно вырос. Кто-то скажет, "Зачем пытаться сделать сразу что-то такое комплексное, начни с малого?" И это верный подход. Но мне совсем не хотелось, чтобы моя первая игра была одной из тех, что сгодится только в помойку. Скорее всего и эта игра тоже годится только в помойку, я немного механик и визуал продемонстрирую внизу в видео. Но тут, я хотя бы могу себе сказать, что я старался и выложился на все сто.
Из-за такого подхода, многое приходилось переделывать. Я вначале просто тупо не понимал как сделать, что-то такое сложное. И как решать возникающие проблемы. У меня не получалось ничего. Сделать простую анимацию? КАК?! Блендер? А что это?! Двигать камеру в блендере? А че она двигается не как в юнити? А почему в блендере ось Z это вверх?! А как мне импортировать в юнити обратно модель? А как расставить ключи анимации? А почему у меня вместо модельки персонажа, какой то костлявый чужой. А как экструдировать? IK & FK контроллеры анимаций? What the **** is this? Кароче блендер это ад. И нейросеть была там абсолютно бесполезна.
С кодом было чуть легче, но у меня постоянно все ломалось, новая кнопка/механика->новая организация кода->всё сломалось. В данный момент у меня в игре около 50 000 строк кода(и да, каждый метод, делает что-то своё, уникальное, без повторений). Вот подумайте, вы как всё это разом нейросети отправите, чтобы она вам новую механику внедрила?
Юнити сильно усложнял жизнь своими приколами. Например, если обьект сначала был обычным, а потом стал кинематическим, то юнити принудительно запускает зоны для тригеров на нем, таким образом пересчитывая физику, и весь код который был расчитан на "игрок вошел в зону, сделать что-то" автоматически срабатывал. Или бывали ситуации, когда нужно специально было вводить корутины, чтобы подождать пару кадров пока юнити раздуплится, чтобы выполнять безопасно код дальше.
Я точно так же впервые работал в фотошопе для изменения текстур на русском языке, да да, в игре текстурки на русском будут. И точно так же не вдуплял куда нажать, чтобы даже загрузить картинку для редактирования.
Для диалогов я использовал Ink, по факту кроме С# мне пришлось еще учить и язык инка.
Я бы еще много чего написал, но наверное всех уже достало читать этот длинный скучный пост. Вот немного механик, текстур, и стиля игры.Чтобы показать идею. Игра еще далека от завершения. В сумме, учитывая перерывы и включая обучение, я потратил месяца 4-5. Повторю, на видео далеко не все что сделано и присутствует в игре. В данный момент большая часть локаций находится в виде префаба, и достается по мере необходимости модернизации.
Тестовая площадка. Показать механики. Я в курсе, что пока что, все это выглядит очень плохо, мне не хватает опыта, знаний, и всего остального, но я обязательно доведу ее до конца.