Как я игру на Unity делал

Забегая вперед - все получилось, игра в стиме, скоро пригласят делать ведьмака 8 и диабло 12

Сухо и кратко. Игры до этого никогда не делал, с Unity познакомился через курс на Udemy. Есть огромное желание делать игры, давно об этом мечтал и в один момент понял, что пора завязывать с мечтаниями, надо делать.

Как я игру на Unity делал Gamedev, Unity, Разработка, Игры, Steam, Компьютерные игры, Программирование, Программист, Длиннопост

Скриншот из моей игры Cyber Workshop

Мой бэкграунд это фулстек на .NET/C#. Из фронты знаю HTML/CSS, React, Blazor и в том же духе. ЭС КЮ ЭЛЬ тоже знаю. Не могу сказать, что я стронг мидл, но и джуном себя не назову. В определенный момент я перестал придавать этому значение, сосредоточился на решении проблем, развитии своих скиллов. Понятие не имею, сколько там всего структур данных и как считать сложность алгоритмов, а так же сколько транзисторов используется при вызове моих методов.

Игра создана на Unity, формат 2.5D (2D модели в 3D мире). Из допольнительного это UI Toolkit. Платные и бесплатные ассеты звуков и спецэффектов.

Активно использовал ChatGPT4, все картинки в игре получены с помощью Midjourney.

На процесс разработки было потрачено 4.5 месяца, так вышло, что начал с начала 24 года, а публикация произошла 16 мая. Можно сюда заложить вынашивание идеи и грубо сказать, что игру делал 5 месяцев.

Игру можно найти в Steam: Cyber Workshop

Посмотреть как я рассказываю про мою игру можно на Youtube: Мой канал

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

Как я игру на Unity делал Gamedev, Unity, Разработка, Игры, Steam, Компьютерные игры, Программирование, Программист, Длиннопост

Скриншот из моей игры Cyber Workshop

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

Если ты хочешь делать игру и утебя нет навыков в программирование от слова совсем, то вот тебе та самя мотивирущая фраза от меня:

Сейчас делать игры легче и доступнее, чем когда-либо.

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

То ценное, что я получил при разработе в техническом плане:

Перое. Я уверен в том, что Unity, Unreal Engine и другие движки, это инструменты для создания инструментов для создания вашей игры. Грубо говоря, тебе нужно написать свой фреймворк, для разработки твоей игры. Как только я это осознал, то автоматиески появились такие штуки, как например Система Схем (смотри описание игры). Весь этот объект настроен таким образом, что бы в одном месте добавлять и изменять схемы, которые используются в игре. Что бы сделать золотой слиток, необходимо две золотые руды. Ничего не мешает изменить золотой слиток так, что бы запихать в него все возможные к созданию предметы в мастерской, то есть реакторы, имплатны и так далее, все это будет работать, подсчитываться, сколько и чего нужно заказать для изготовления, а UI будет выстраиваться корректно.

Возможно, ты это уже знаешь, мне это не известно, я делюсь своим опытом.

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

Возможно и это ты тоже уже знаешь.

Третье. Создание книги, настольной игры, компьютерной игры имеет под собой одинаковые принципы. У тебя есть идея, тебе нужно выложить ее из головы в реальность в определенной форме - книга бумажная, книга электронная, смс знакомому, надпись на заборе. Относительно игр это настольная игра, это устное обговаривание правил, то есть передача информации об правилах и принципах игры в головы других людей с помошью речи (например игра в города, если другой человек не знает, что это вообще такое и как в это играть). Это касается и компьютерных игр. Я осмелюсь выделить две состовляющие, которые необходимо принять. Есть идея игры, которую ты закладываешь в какую то форму, которая существует в реальности. Есть инструменты повествования этой идеи, которая заложена. Рассказываю как умею. Грубо говоря, в шахматы можно играть на компьютере и без интерфейса о том, сколько фигур срубил противник, сколько времени до конца хода и так далее. Ты можешь это и в голове держать. Но тогда можно оказаться в ситуации, когда ты прирожденный игрок в шахматы, но ты не смог въехать в игру, так как над доской не показывались клетки, по котором фигура может ходить и идею ты не уловил, ну его, пойду лучше тик ток посмотрю. Еще раз. Есть идея, которую автор закладывет в книгу. Есть способы получения заложенной информации наружу, в головы других людей. Если атор накосячил со средствами повествования инфомрации наружу, то возникает ситуация, что одни люди сумели понять глубокий смысл, а другие нет - слишком "сложна". Но тут и обратная ситуация может быть - идея легко извлекатеся, но она слишком проста, не очень интересно, что тут сложного. На мой взгляд это можно представить, как лабиринт с призом в центре. Если лабиринт сложный, это автоматически увеличивает ценность награды, однако это может создать ситуацию, когда в это не интересно играть. Слишком сложно, а награда недостаточно мотивирует сама по себе. Справедливо и обратно - лабиринт слишком простой, нет интереса его проходить, желанность награды становиться меньше, даже если награда очень ценная сама по себе. Как то так, я не писатель, как могу, так описываю. К чему это все. Баланс игры должен заключается в комбинации уровня сложности достижения цели и ценности цели самой по себе. Причем если сложность лабиринта повысить, то и желание получить что то ценное, потратив столько сил, становиться больше. Если лабиринт слишком простой, ну ты понял.

Если в Counter Strike дать возможность летать по карте, то играть становиться легче, интерес играть на разных картах уменьшается - нет никаких ограничений и уникальных ситуаци. Это как пример, на мой взгляд.

Все описанное выше, я постарался применить в своей игре - рецепты крафта не должны быть слишком простые или слишком сложные, это понятно. Действия, которые нужно делать для того, что бы непосредственно играть, сводяться к клику мыши, это очень легко. В противовес этому, есть сложные вещи типа "А какие именно ресурсы я могу складывать в машину, что бы получить требуемый предмет?", "Что именно мне нужно заказать для крафта?", "Выполнение каких заказов принесет больше денег?". Из этого "выстраивается" интерес к игре, на мой взгляд.

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

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

Думаю, ты тут ожидал кучу скринов, встаки с кодом. Я так и хотел сначала, но после передумал. Посмотреть игру можно на youtube, а вставки моего кода просто не пременимы к твоей игре, твоему проекту. Так что постарался выделить ценные вещи на примере своей игры, своего опыта.

Шестое и последнее. Моя главная ошибка, это отсутсвие какого либо продвижения себя, свой игры. Я слаб в этом, просто боюсь этого всего. Боюсь, того, что люди напишут в комментах под этим постом, на yutube и так далее. Но желание довести дело до конца больше, так что надо чем то жертвовать. В данном случае, я жертвую комфортом пребывания в неведении о том, а что там интернет думает обо мне и моей игре. К сути. Я только начинаю полноценно рекламировать себя, свою игру и вообще быть активным публично в этом плане. Что то ценного конкретно я назвать не могу - я просто не знаю. Но то, что надо начать продижение как можно раньше, это мне уже понятно. Так как я опоздал с этим, дофига как, то делаю такие вещи как: видео блог разработки, заметки в соцсетях, публикации в группах. Собственно, и это статья для рекламы меня, моей игры. Я верю, что то, чем я поделился выше, очень ценно. Но вот насколько это ценно кому-то помимо меня, это другой вопрос. Я прекрасно понимаю, что это может быть совершенно не применимо к тебе и ты зря дочитал то этого момента. Чтож, де*ьмо случается.