На Unity сделано много замечательных игр - Valheim, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны? - Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны? - Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity? - C#
- На каких платформах работают созданные с помощью Unity игры? - Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать? - Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки? - Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity? - Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
Обучение по книгам
Обучение языку C# книги на русском языке:
1. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин 2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев 3. C# для чайников Автор книги – Джон Пол Мюллер 4. Unity и C#. Геймдев от идеи до реализации Автор: Джереми Гибсон Бонд 5. Язык программирования C# 7 и платформы .NET и .NET Core Авторы: Филипп Джепикс, Эндрю Троелсен
Для людей абсолютно не знакомых с движком есть 3и основные книги на русском языке:
1. Разработка игр на Unity 2018 за 24 часа Майка Гейга (Знакомство с движком, изучение редактора, создание 4х простых игр практически без кода, отличное пособие для полных новичков). 2. Изучаем C# через разработку игр на Unity. 5-е издание Харрисон Ферроне (Пошаговое освоение всех базовых знаний по программированию на языке С# в редакторе юнити, создание одной игры стрелялки от первого лица, написание искусственного интеллекта врага, книга переведена не совсем корректно и порой встречаются не просто опечатки, а серьёзные неточности перевода.) 3. Unity в действии. Мультиплатформенная разработка на C#. 3-е межд. издание Хокинг Джозеф (Правильное построение архитектуры кода для сложных проектов, углублённое изучение программированию на C#, создание 4х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)
Красавец что удалил целую строку, но какого хуя книги старого говна оставил? Сложно было потратить 5 минут и написать актуалочку? Или как в вузах будешь учиться в юнити на материале десятилетней давности? В юньке каждый год что-то меняется, причем кардинально. Уж раз в год можно обновить список литературы.
@ Знаю, что мой код неправильный @ Не знаю, как правильно @ Поначитался блять советов мудрых, итоги. @ Ведь все пишут, как не надо, и как неправильно, а как правильно и как надо никто не пишет, это же надо иметь умения учителя и вообще прилагать усилия, но с хуяль тебя должны учить. Только обсирать могут.
>>859241 Моего кода вообще нет в сети, ведь я начитался/насмотрелся умных проггеров, и не могу дописать проекты. Я вижу косяки, но я не знаю, как писать без этих косяков. А просто доделать лишь бы доделать не могу себя заставить. Если уж и писать, то писать правильно
>>859435 а ты ввалился в геймдев в надежде что тебе жрать будет чего? братан а ты хорошо продумал свой бизнес план? а если твой игорь не взлетит? может сначала стабильную работку найдешь?
>>858859 (OP) Знатоки, помогите! Пытаюсь задать параметр скорости анимации через функцию: animator.SetFloat("name", value). Создал параметр типа флоат в аниматоре, в нужной анимации повесил его мультиплаером на значение скорости .
Но это нормально срабатывает только если вызывать функцию в Update(). В Awake() и Start() - никакого эффекта. Я решил, что возможно параметры аниматора инициализируются в первом апдейте и попробовал вызвать SetFloat() в корутине с задержкой в секунду: после секундного ожидания скорость действительно меняется, но только на 1 цикл анимации, после чего скорость снова стандартная.
По умалчанию в инспекторе значение параметра =1.0.
Запилил компонент, который под объект добавляет иконку, опционально можно сделать ее анимированной. Я, например, в будущем хочу чтобы анимация была на том объекте, на которую смотрит игрок. https://pastebin.com/MzAY2ZHM Потом планирую из update вынести в корутину, чтобы не часто, а также отключить вычисления, если объект не виден на камеру.
>>860989 Просто думаю как и что с их помощью можно оптимизировать, какие подводные и какие ограничения. Они же на плюсах пишутся. Если удастся оптимизировать хотя-бы поиск ближайшего объекта из листа, то будет уже хорошо
>>861106 >В коде у тимлида метод StartGame имеет комментарий "Старт игры". Что не так? Если там генерация документации по коду, что бы ты написал?
>>861139 >А как должно быть? Очевидно, либо DamageAdd(), либо Change_Health(). Чтобы единый стиль был. Если смотреть по API юнити, подразумевается, что должно быть DamageAdd().
>>861059 >ужас с RAM у движка при загрузке Это тебе пусть в движкосраче пояснят, а то здесь забанить могут за это.
>>859223 >@ Знаю, что мой код неправильный >@ Не знаю, как правильно Так ты и бугурты не знаешь как правильно писать. Тебе бугурт-сенсей нужен?
Вот, бесплатная демонстрация первых двух строчек: ЗНАЮ, ЧТО МОЙ КОД НЕПРАВИЛЬНЫЙ @ НЕ ЗНАЮ, КАК ПРАВИЛЬНО Дальше сам.
>как правильно и как надо никто не пишет Правильно - это чтоб работало или чтоб поддерживать можно было?
В геймдеве не принято вылизывать код до идеала. Просто говнокодишь от души, чтобы запускалось на большинстве компьютеров и не падало с ошибкой в 99.9% игровых сессий. Чтобы не было существенных утечек памяти и чтобы потом можно было добавить новую фичу за конечное время. Всё. А вылизывание до идеала оставь академикам, которые изобретают новые алгоритмы, которые никто потом на практике не использует.
ОСОБЕННО если ты инди. Все привыкли к тому, что ААА-говно тормозит и падает, а у инди и графики толком нет, и тормоза с падениями больше и чаще, чем у ААА-говна. Можешь вылизать код игры, когда соберёшь достаточно продаж, тогда хомячки обрадуются: "оооо, наконец-то оптимизацию подвезли, вот разработчик молодец какой, респект, не то, что %ААА-корпорация%, которая 10+ лет не может баги в своей дойной корове пофиксить и оптимизацию завезти". Ты вообще поиграй в игры, посмотри, какие у них отзывы и как на это влияет качество кода. Вот ЯндереДева за качество кода говном поливали, драму устраивали, а он всё равно деньги получает за разработку игры, которая растянулась на долгие годы из-за его говнокода, и преданные фанаты у него всё ещё остались (в данный момент на патреоне: 574 patrons, €1970 per month). Так что забей на качество кода и занимайся творчеством, а не вылизыванием алгоритмов.
>>861175 >Очевидно, либо DamageAdd(), либо Change_Health(). Чтобы единый стиль был. Если смотреть по API юнити, подразумевается, что должно быть DamageAdd().
Походу еще один тимлид, пацаны. Чиста парню подчеркивание никрасива, а то что семантика метода не отражает его назначение, а да ихуй с ним.
Только начал изучать Unity - и вот мой вопрос. Есть ли нормальный полноценный курс, который позволит мне с нуля создать нормальную 3D гонку? За то время что я вкатываюсь в геймдев, я успел посмотреть курс itProger по созданию стратегии, видео малопопулярных ютуберов по созданию управления машины, курс Сакутина по C#.
И везде только часть информации.
Из Юнити ассетов я собрал трассу, добавил на нее сначала машину, которая отвратительно управлялась, потом добавил другую, которая управляется чуть получше (хотя тоже не ахти).
Теперь надо искать видео как добавить соперников, потом - как сделать гонку, в которой будет отображаться время забега, позиции игроков, и кто первый пересек финишную черту. Потом - как к этому прикрутить возможность отображения лучших результатов.
И для этого придется перелопатить тонну видео и статей.
Может быть существует самый информативный, самый лучший курс по Unity, который позволит создать нормальную 3D-гонку?
1. Это реализовать приятную механику вождения для игрока. 2. Решить что будет с АИ, либо выдать ему такую же меху как игроку и чтобы он управлял, или имитировать его управление.
>>861267 >Теперь надо искать видео как добавить соперников, потом - как сделать гонку, в которой будет отображаться время забега, позиции игроков, и кто первый пересек финишную черту. Попробуй не искать видео, а включить мозг.
>>861267 Ты опоздал лет на 10. Жанр гонок мертв, сейчас котируется или сверхреализм с топовым графоном, или сверхреализм в поведении авто, симулятор. Ни то, ни другое ты в соло не запилишь, поэтому лучше забей, и переключись на другие жанры. Лучше запили клон my summer car в Торжке, было бы ахуенно.
>>861267 попробуй взять готовый опенсорс на тему (с людумдаревов каких или еще где) и поковыряться в коде. это и быстрей и понятней чем видосики (когда поймешь что ничего сложно него и код надо тупо ЧИТАТЬ чтобы понять, а не выдумывать и не додумывать)
А у вас было такое? Запилили реализацию какой-то хуйни, а потом - бац! - оказалось, что уже есть готовое решение, и ни где-то в виде отдельной библиотеки, а в самом api unity блять. После этого начинаешь шерстить весь manual/ScriptingApi и обнаруживать доселе невиданные плюхи.
Я начинаю думать, что новичку надо советовать такой план изучения, по порядку: 1. Смотреть базовые уроки по созданию простейших игр, типа floppy birds, и при этом чтобы чел воспроизвел реализацию этого. 1.1 Навернуть пару книжек, не слишко мудренных. 2. Прочитать манул от корки до корки. Некоторые специфичные главы (AR, VR) можно пропускать, если чел точно знает, что это ему(пока) не нужно. 3. Прочитать скриптинг api.
После этого можно приступать к игре, не задалбывая всех встречных вопросами - а как? а почему? а можно ли?
>>861324 Можно еще проще. Смотрит любой список видосов как делается игра, и делаешь дальше сам, гугля проблемы в процессе, т.к в любом случаи они будут.
>>861324 >1.1 Навернуть пару книжек, не слишко мудренных. >2. Прочитать манул от корки до корки. Некоторые специфичные главы (AR, VR) можно пропускать, если чел точно знает, что это ему(пока) не нужно. >3. Прочитать скриптинг api. и много ты запомнишь без практики, дура ебаная?
придумал такую тему есть системы нижнего уровня, которые прокручивают компоненты и меняют в них дату, а по завершению на сущности вешают пустой компонент-флаг системы которые зависят от актуальности даты в другом слое выше делают запрос на сущности с этим компонентом и после своей уже обработки убирают компонент как идея посаны? в теории и дата будет актуальной и не надо прогонять вообще все сущности с нужными компонентами
>>858859 (OP) Есть ли смысл постоянно обновлять версии юнити? Сижу на 2021.3, думаю обновиться но тоже не хотелось, чтобы всё, в теории, послетало после обновы
>>861368 За пару лет такой ломки самое страшное что было это udr попидорился с материалами и пришлось заного все материалы переназначать. Всякие внезапные ошибки в скриптах и несовместимости решались переустановкой либо юньки или самого пакета в менеджере.
>>861183 >семантика метода не отражает его назначение Что тебе не так-то?
Я вижу это так: ChangeHealth() - меняет уровень здоровья, запуская анимации шкалы здоровья, может проверять порог максимального здоровья, запускать событие смерти при нулевом уровне и т.п. AddDamage() - помимо вызова ChangeHealth() может отображать на экране эффекты урона, заставлять персонажа издавать крик боли, проверять пробитие брони, снижать урон в зависимости от брони и т.п. Heal() - помимо вызова ChangeHealth() может отображать на экране эффекты лечения, регулировать эффективность лечения в зависимости от имеющихся повреждений, качества лечилки и т.д.
Это просто разные слои абстракции. Где-то ещё выше по абстракции будет Hit() и UseHealthPack(), которые вызывают AddDamage() и Heal() соответственно, но ещё делают другие дела.
Если в коде один метод вызывает другой и больше ничего не делает - это не бесполезный код, это плейсхолдер для возможных будущих фич, которые сейчас не нужно или некогда реализовывать.
А назначение методов пусть в документации будет написано. У вас же есть документация на игру?
>>861397 Я сначала думал накинуться и разбомбить этого документоведа по пунктам, а потом подумал, а нахуя мне дарить человеку шанс вылезти из этого болота бесплатно? Плати пять тыщь и я обоссу каждый пункт этого эталонного примера.
Пацаны, у вас как вообще на работе происходит. Вот мне дали задание, спроектировать архитектуру режима игры. Дизайн документа нет. И как должен проектировать. Я кстати напомню, я на позиции джуна при этом.
>>861422 >Пацаны, у вас как вообще на работе происходит. Прихожу на работку, мне говорят вот мы тут нового лоха наняли за копейки. Ну я скидываю ему какую нибудь задачку, типа сделай мне игру целиком. И иду чилить в сауну с девками.
>>861592 Эй, пс-с, чувак, подь сюды, есть один альтернативный двиг, ну, ты понимаешь, "игровой" как мы между собой его называем, да, с оч-чень интересными свойствами при использовании, во-от, и да, первая, гм-гм, я имею в виду, бесплатно, совершенно бесплатно, скачивай и пользуйся без регистрации, легавые ничего не заметят, честное слово, потом ещё захочешь, а к нему, движку тобишь, аддончики есть, угу-угу, бесплатные аддончики, бери пока нас не застукали здесь, ну всё, бывай, расходимся в разные стороны, ты меня здесь не видел.
Я совершенно другой анон, не отписывался ранее про работу. Дали тестовое задание на джуна - запустили две одинаковые сферы радиусом 1 метр с разных позиций с помощью применение сил AddForce, для каждой сферы разный вектор силы. Задание - рассчитать время и позицию столкновения сфер, если они вообще столкнутся.
Я не прошу вычислять, просто скажите, это нормальная задача для джуна? Я себе все извилины стёр, походу не быть мне в геймдеве...
>>862115 Абсолютно пустая 3D сцена, только две сферы в рандомных позициях, есть гравитация. Запуск игры не нужен, если только для проверки. Я должен написать формулу, как я понял, где должен передать позиции сфер/радиус/силу, и на основое всего получить время и позицию столкновения, если оно вообще произойдет.
Короче я как то должен расчитать координаты пересечений траекторий полетов двух сфер, до того как они будут отправлены, естественно. Да впрочем я уже забил на работу. Надо походу высшую математику долбить вместе с физикой.
>>862131 Какая еще блять математика и физика. Запускаешь таймер в 0 кадре. Регистрируешь событие столкновения двух сфер и сохраняешь текущее время и позицию точки столкновения. Это не для джуна задание, а для дебила-вкатыша, на знание API и вообще вменяемость. Я не программист, и то бы сделал такое за полчаса.
Но ладно, забил так забил. Все равно на этой "вакансии" наверное не деньги платят, а просто за энтузиазм работаешь.
>>862202 >Регистрируешь событие столкновения двух сфер и сохраняешь текущее время и позицию точки столкновения. Ебать ты умный. Вот только надо рассчитать время и позицию без запуска юнити. Короче, закрываешь юнити, и надо все решить на листочке.
Воооот у меня заебись. У меня тимлид работает через FindObjectOfType. Лол. Очень надеюсь, что мне не придется работать с его кодом. Потому что я категорически не хочу так опускаться. Ту игру, которую там делают, я могу соляного написать по нормальному ООП, солидом, с архитектурой готовой к расширению. Но там другие стандартны разработки.
>>862301 Пчел, я раскидываю их по школьникам, мне не надо помнить как именно рабы их решают. Тем более я не собираюсь выкладывать решение, чтобы он с ним потом ко мне же пришел )))
>>862302 Ну ладно, раз сам ссышься то я тогда накидаю уравнения. Только я еще и упростил задачу чтобы меньше писать было: она теперь двухмерная и у первого шара начальная скорость направлена по оси Х, а у второго по оси Y.
Казалось бы все номрмально выводится ваще изи, итоговое решение берем из расстояния между кругами, только вот в итоговом уравнении получается корень из многочлена 4й степени. А если бы было трезхмерное пространство, то был бы корень из многочлена 6й степени.
Ни то ни другое на листочнке не решается(ток если там специально дали удобные числа чтобы все посокращалось), это надо вбивать в вольфрам альфа.
void Update() { float t = Time.time; float x = initialPosition.x + initialVelocity.x t + 0.5f acceleration.x t t; float y = initialPosition.y + initialVelocity.y t + 0.5f acceleration.y t t; float z = initialPosition.z + initialVelocity.z t + 0.5f acceleration.z t * t; transform.position = new Vector3(x, y, z); } }
Формула расчета траектории объекта в Unity с компонентом Rigidbody может быть выражена как:
x = x0 + v0x t + 0.5 ax t^2 y = y0 + v0y t + 0.5 ay t^2 z = z0 + v0z t + 0.5 az * t^2
где:
x, y, z - координаты объекта в момент времени t x0, y0, z0 - начальные координаты объекта v0x, v0y, v0z - начальные скорости объекта по x, y, z соответственно ax, ay, az - ускорения объекта по x, y, z соответственно t - время Для объекта с компонентом Rigidbody в Unity можно получить начальные координаты и скорость с помощью соответствующих свойств transform.position и Rigidbody.velocity. Ускорение объекта может быть получено из свойства Rigidbody.acceleration.
Применяя силу к объекту с помощью метода AddForce, ускорение объекта изменяется, что влияет на его скорость и координаты. Поэтому, чтобы точнее рассчитать траекторию объекта, необходимо использовать метод AddForce вместе с вычислением ускорения.
Ниже приведен пример кода, который демонстрирует использование формулы для расчета траектории объекта с компонентом Rigidbody в Unity, применяя силу к объекту с помощью метода AddForce:
Нахуй вы вообще этой дрочью занимаетесь? Какие то вычисления, хуйня маня какая то. В юнити у вас есть механика и вам надо её делать, а вы дрочью страдаете. Если не можете сделать меху, то дропаете её и реализуете то что надо, иначе так и продрочитесь до старости не выпустив игру.
>>862318 Дэбил, ему работу такую задают. Вот придумал геймдизайнер гиперказуалку где надо сталкивать шары но он хочет подкручивать чтобы они не сталкивались и игрок покупал алмазики. А ты такой я не умею. Да и похуй, пинка тебе под зад, у них очередь вкатунов.
>>862317 Чего сложного? Буквально одно уравнение - ты еще раз обрати внимание на дано, там во все уравнения ниже все подставляется. Просто из-за самоц сути задачи тут надо решать уравнение 4-6 степени
>Например найди пересечение в проекции на ось x, потом проверь ось y. Неа, никаких вторых проверок, это сразу не сработает. Тут суть в том и есть что надо получить опередленный x И y, потому что это шары а не точки.
Не зашквар ли делать вешать пустой gameobject на сцену, чтобы просто реализовать какой-то функционал, который требует MonoBohaviour-ные штуки, типа Udpate, Корутины и т.п. Поэтому, просто сделать class Zalupa {} нельзя, нужно сделать Zalupa : Monobehaviour
Открыл жиденький диздок на работе, посмотрел че какая работа ждет в будущем, там вроде есть прожарочные места, но хуй знает. Достал бутылку пива и под пивко разметил десяток классов и сделал одну механикусебе в карман конечно же. Балдеж. Пока вот эти вот - Аряяя ти хочишь игры делать или на код дрочить, дрочат своему же говнокоду.
Никогда не работал с проблемой оптимизации больших вычислений и вот она появилась. Может, кто что дельное подскажет, ибо я не понимаю эту вещь. Мне нужно обработать в цикле массив допустим с 87500 элементами. Делаю свой поиск пути, с алгоритмом а* разобрался и сейчас оптимизирую это. Если я одним циклом делаю это, то хоть и очень дорого выходит, но все работает нормально. Но если сразу делаю вложенные фор, чтобы сразу работать после этого цикла с кластерами данных, то у меня юнити виснет намертво, хотя по логике и там и там в фор происходит одинаковое количество итераций. В чем я не прав? Почему это работает именно так?
Очень нубский вопрос, но я всё же спрошу. Как в Юнити реализовать плоские объекты поверх других объектов? Например граффити на стене или сетку путей на трёхмерном террейне.
Сидели с пацанами и занимались коллективным решением задач. В процессе решения задачи возникла проблема, надо было из класса нижнего уровня, передать наверх в контроллер информацию о том, что выполнены необходимые действия. Решение предложенное тимлидом - кешировать контроллер в классе нижнего уровня и оттуда давать команду контроллеру.
>>866101 Звучит разумной оптимизацией, в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы (обычно лулзов доставляет если там еще и поиск по строковому названию). Конечно можно доебаться что а как же архитектура, связность... Но во первых это же игра а не сайт сбербанка. Вряд ли вдруг появится новый контроллер или все начнет перетряхиваться в дереве. Во вторых если это казуалка какая нибудь, это все равно код пишется один раз на выброс и многолетняя поддержка не нужна, а важнее тайм ту маркет. Итог - тимлид не зря свою икру ест.
>>866223 Пробуй реализовать базовые механики различных игр. Ту же шутер механику. Чарактер контроллер для адвенчура. Матч-3. Или механику нынче популярного Vampire Survivors.
Сап архитектурные. Хочу расписать свой метод, как я пишу какой то функционал. Сначала я тупо на листочке раписываю все возможные функции, которые мне могут понадобиться, даже с вероятностью 0.001%. Их может быть штук 20. Так вот, реализовал я это все, и хоть в продакшн сразу, но нет, я писал без каких либо паттернов, с самоповторами, на скорую руку. И теперь, когда я вижу картину целиком, я вижу, где я могу вынести отдельные классы, где организовать контроллер, связи, и в итоге получается добротная система без повторов с расширяемостью и т.п.
ХЗ, мне так легче, чем заранее спланировать и сразу сделать готовую гибкую систему, возможно, спецы с высшим образованием и опытом 15 летом и могут это сделать заранее, но я нет.
>>866230 На сколько базовым оно должно быть чтобы не стыдно было показывать как портфолио? Последний раз в пересобирал чужую демку из говно-движка в годот, пикрил, могу пересобрать в юньку, но хз если зачтется при таких вводных
>>866217 > Звучит разумной оптимизацией Никакой разницы в производительности нет. Вопрос весь заключается в том, что от чего зависит. Лид предлагает круговую зависимость - когда все друг от друга зависит, челы выше говорят, что зависимость должна быть лишь одна.
> в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы (обычно лулзов доставляет если там еще и поиск по строковому названию). Сервис локатор или поиск чего либо по строке это сразу досвидос на собесе. Ес че челы выше ни про сервис локатор ни про строки ниче не говорили.
> Конечно можно доебаться что а как же архитектура, связность... Не можно а нужно.
> Но во первых это же игра а не сайт сбербанка. Вряд ли вдруг появится новый контроллер или все начнет перетряхиваться в дереве. Во вторых если это казуалка какая нибудь, это все равно код пишется один раз на выброс и многолетняя поддержка не нужна, а важнее тайм ту маркет. Итог - тимлид не зря свою икру ест. Пчелидзе годные прототипы с хорошим удержанием всегда развиваются дальше. Если студия выкидывает игру сразу после релиза - значит релиз неудачный. Если студия все игры выкидывает после релиза - значит она такой себе пример для подражения и должна что-то менять. А если писать говнокод даже там где изи(те же трудозатраты) сделать норм, как в этом примере, то ебнешься потом игру развивать.
>>866257 Игра после релиза просто продается, продается, раскручивается рекламой и продается. В 99% там ничего не дорабатывают. Иногда вставляют новые картинки не меняя код. Я же написал казуалки, а не какой нибудь факторио.
>>866259 > >прямой вызов по ссылке vs прожевывание событий через конвееры Какие нах конвееры сынище, один лишний колл функции для ивента. Ты с ума сошел? Ты в курсе скок у тебя рендер тред жрет? Вот посмотри, и не будешь больше на хуйне экономить.
>>866260 Нихуя, с апдейтами можно с аудитории еще долго деньги качать если игра хорошо зашла и ее не удаляют.
>>866273 > У тебя форыч уже бесплатный стал? Можно считать бесплатным, его работа эквивалентна перескокам по адресам методов. > Добавление удаление в списки тоже? Выполняется один раз при подписке и отписке) > Сам твой цикл где находится, в вакууме? Запускается при колле ивента
Я тебе еще раз говорю посмотри сколько жрет рендер тред а потом сходи с ума с этими бестолковыми оптимизациями.
>>866280 Ну так если у тебя рендер все жрет (который на минутку на ГПУ а не ЦПУ), то чего ты вообще возбудился, тогда получается как угодно говнокодить можно.
>>866286 > Ну так если у тебя рендер все жрет (который на минутку на ГПУ а не ЦПУ), Я же сказал рендер тред а не рендер.
Ты в курсе ваще что перед тем как видеокарта чето нарисует - процессор должен ей выдать задачи, а перед этим еще и подготовить сцену к рендерингу и выполнить куллинг?
Так вот это всё порой довольно тяжелая задача и именно она часто является ботлнеком в играх. То что ты там наэкономишь с шизы по типу той что мы обсуждаем - вообще не заметно по сравнению с реально тяжелыми частями игр, как например подготовка сцены к рендерингу.
> тогда получается как угодно говнокодить можно Говнокод/неговнокод это в первую очередь не про оптимизацию, а про организацию кода и архитектуру. Конечно это несколько связные вещи, поэтому надо компромиссы искать, но в данном случае я хочу сказать, что не использовать ивенты потому что якобы они дохуя жрут(тезис, на которыц я изначально отвечал) - это глупо, потому что это просто пиздежь и не правда.
Ну тут ладно, хотя бы о коде дискуссия. В анриалтреде челики сегодня про ООП первый раз услушали и обмякли. Я то думал, там элита. Осиляторы настоящие.
>>866584 > Зато без всякого говна типа Many GC Spikes, Memory Alloc + Huge Overheads и 14.6ms per frame Нутк есть микрокорутины и юнитаск с которыми таких проблем нет
>>866761 >Только джуны уже не нужны бизнесу Все кто хотел вкатиться давно вкатились, остались дегенеративные зумерки которых я бы даже в макдак не взял работать.
>>866771 Если принципиально купить, а не спиратить - то масса сервисов, где за тебя люди с иностранных карт покупают, а ты им оплачиваешь с процентами на российскую карту. На Авито смотри. Если совсем богатый - то оформи казахскую или армянскую карту и покупай сам что хочешь.
Возможно ли, имея только карту глубины, сделать скрин спейс глобалку на URP, пусть даже совсем не точную и не реалистичную, чисто в качестве такой стилизовочки
>>866783 Кстати, кто-нибудь делал стриминг рабочего стола ПК например на смартфон? Я видел в ассет сторе, но цена меня мягко сказано огорчила. Или может гайды какие есть как такое с нуля сделать? Я только понимаю что нужно 2 приложения, одно выступающее сервером и запущенное на ПК, а другое клиентом и запущенное на смартфоне. Также я видел один интересный потому что бесплатный ассет ( https://nexplayersdk.com ) позволяющий воспроизводить на почти любом объекте выбранный видеоролик или даже видео с ютуба, стим с твича и т.д. Но я вообще не понимаю как захватить рабочий стол и самое главное передавать команды мыши и клавиатуры.
>>867078 Посмотрел. Пока выглядит очень сложно и непонятно, тонны кода на C и C++. Нахуй такое.
Думаю буду использовать RDP клиент - Sharp RDP, Free RDP или встроенный от майков если заработает конечно. Пока я не совсем понимаю куда и как мне полученные данные выгружать.
Как вы следите за значением нескольких переменных, которые обновляются очень часто, так что Debug.Log не прокатит Я вот запилил дебагер https://pastebin.com/hp0CvU87. Результат на гифке update() { GUIDebug.I.Print("hehe1", "LOL"); GUIDebug.I.Print("hehe2", Time.time.ToString()); GUIDebug.I.Print("hehe3", Time.deltaTime.ToString()); }
Аноны, зацените архитектуру (ссылку на pastebin приложу нижу)
Решил я сделать возможность плавного изменения значения с А до Б за определенное время, используя функцию Whatever.Lerp(). А и Б могут быть разных типов, например, если они Vector3, то должен быть задействован Vectror3.Lerp, если они float-ы, то Mathf.Lerp, и т.п. Короче, типов несколько, а различие между ними только в расчете Lerp, поэтому если и должен быть дубликат, то только в функции расчета значения на текущий момент времени. В итоге родил такое решение https://pastebin.com/Rbe6zcUf
В полевых условиях (пикрил) работает заебись. Теперь я смогу джуном устроится?
>>867671 1. Напрашивается паттерн FluentBuilder 2. Не ясно что внутри Lerp - оно дергает Time.time что ли? Если да, то я бы лично так не делал - а если я хочу сделать его непривязанным или поивязанным к таймскейлу для анимации в ui? 3. Нету возможности проверить, закончилось ли оно. А надо.
как починить пикрелейтед? что он (должен) делать: follower следует за leader, копируя все перемещения но медленнее в зависимости от fraction в тепличных условиях работает как надо, но когда допустим загружаю сцену в которой leader перемещается то начинается грязь, позиция follower совершенно не там где ожидал.
>>867168 Короче все хуйня - RDP оказывается даже 60 фпс не выдает. Какой пиздец... Буду свое пилить, по UDP, а то и по вообще своему протоколу поверху IPv4 (потому что ждать ответа с другого конца после каждого пакета по TCP это совсем бред какой-то). Буду стримить экран через SharpAvi, потом кодировать через MJpeg или через Mpeg4, потом шифровать через AES и отправлять на другую сторон. Проблему с кейфреймами решу просто посылая сразу 5 одинаковых фреймов один за другим, посмотрю короче.
Если на стороне сервера чисто виндовая приложуха, то на стороне клиента напишу прямо на юнити по сути там только дешифровшик, TCP клиент для общения (хотя скорее всего там не TCP будет, а тот же самопильный протокол) и набор из нескольки команд: 1. Отправить пароль в зашифрованном виде. 2. Получить ответ что все ок. 3. Получить ошибку с причиной что не ок. 4. Каждую секунду сигнализировать что клиент не сдох.
>>867926 Хочу сделать виртуальный дом (хотя тут скорее подойдет слово космическая станция или замок) здорового человека в котором можно кастомизировать вообще все и вся (вплоть до материалов стен и цвета мебели) который ты будешь сам строить из ассетов в рантайме, а также пользоваться виртуальным рабочем столом ПК и в идеале чтобы весь этот "дом" работал на железе шлема виртуальной реальности. По крайней мере я надеюсь что получится так сделать - все же железо шлема не идет ни в какое сравнение с полноценной видеокартой и процом на ПК. Потому что те решения которые в данный момент есть выглядят как какие-то демки.
>>867944 Я предварительно почекал какие есть "бесплатные" ассеты - 95% покроют готовые ассеты, самое сложное это как раз удаленный рабочий стол сделать потому что пока что планирую ограничится просто строительством. Распространять буду через бусти по подписке.
А какие-то сетевые игры вы пилили на юнити? Такие чтобы с централизованными серверами. Сколько это примерно будет стоить в месяц? Понятно, что зависит от нагрузки, но хотя бы примерно.
>>867947 Зависит от игры, архитектуры и кучи всего.
Есть рабочих 2 игры в данный момент. 1 Это мобилко донатная игрулька, арендую сервачок за 2к, на нём запущена сервер билд игры. 2 Это мини рпг ммо с донатом тоже, для него по аналогии но уже за 5к.
Разработка игр делалась так - Делаешь игру, и потом для неё же компилишь сервер билд, можно сразу под винду если лень трахаться с линуксом. Платежи либо через гугл делаешь + апи от юников, либо же если хочешь сэкономить и вообще траблы с выводом + сторонняя платёжка, их куча.
В общем сложность игры, это само создание + от типа игры ебля с оптимизаций и синхронизацией, т.к нужно решить как ты планируешь держать игроков. Далее покурив немного гайдов билдишь сервер билд и арендуешь любой сервер, хоть дома. Это актуально только для выделенного, если хочется локалки или пертупир то надо реле и комнаты от любого апи из коробки. Короче лучше всего напиши что за игру ты хочешь сделать в вакуме и там уже подкину решения и затраты. В сухом остатке это минималка от 1к до 10к в месяц.
>>868053 С таким же успехом Юнити может закрыться по щелчку пальцев. Нужно срочно пилить свой движок!
>>868083 > но в реале адский гемор В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет. А вот если бы я создавал свой бекенд, свою сеть, тогда представляю какой пиздец бы меня ждал. Скорее всего я бы тогда вообще игру не запустил.
>>868132 >С таким же успехом Юнити может закрыться по щелчку пальцев. Может, и даже лицензию может отозвать. поэтому нормально пользоваться опен сорс дивжками. Но тут все проще - хотя бы пиратку сможешь скачать, а если облако отключат, то все. И что дальше, будешь переписывать сетевой код с нуля.
>>868132 >В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет. Конечно нет, ты же мамкин фантазёр безигорник, еще бы у тебя были проблемы.
>>868132 >В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет. А это твой пост выше про 10к? Деревянных я надеюсь. Если так то это очень оптимистично и дешёво.
Я так то вроде понимаю как на пальцах закодить неткод с предикшеном и откатом, но вот чо т не могу поверить что все эти сторонние SDK настолько гибкие.
Шалом, костыляч. Нубский вопрос наверное. Как реализовть переход между сценами?
Вот у нас есть несколько сцен, вот экземпляр персонажа на каждой из них который находится в начале сцены(точка А) и переход на другую сцену(точка В). Персонаж переходит в сцену2 и оказывается в начале сцены 2(точка А сцены2). Как реализовать что бы при переходе обратно на сцену 1 персонаж оказывался в точке В а не в начале сцены?
Я так понимаю что надо как то ебаться с ДонДейстройОнЛоад
>>868177 > А это твой пост выше про 10к? Нет. У меня на фотон и плейфаб уходит тысяч 6 долларов. Зависит от месяца.
Нет смысла вкладывать силы в написание своей сети и своего бекенда на начальном этапе. Если игра взлетит и будет целесообразно перейти на свои решения - тогда ок. Хотя я знаю неудачный опыт чуваков, которые по 600 тысяч $ в лучшие месяцы зарабатывали. У них была целая команда для разработки сети, но в результате они перешли на обычный Photon Server.
Создатели War Robots вроде смогли таки уйти полностью с Photon, но, бля, они и зарабатывали ежемесячно больше миллиона долларов. У них огромная команда.
>>861324 Я считаю, что движок надо учить так: Смотришь тутор по интерфейсу, покупаешь плеймейкер в ассет сторе, ставишь себе цель - сделать флэппи бёрд. И не смотришь типов из интернета, которые за один ролик делают флэппи бёрд, а сам ставишь себе маленькие задачи: "заставить птицу падать" и вот гуглишь. Учишься на собственных ошибках, лучше запоминаются штуки до которых ты сам дошел.
>>868822 Делаешь игры, закидываешь на итч, копишь портфолио, хвастаешь им перед работодателями, получаешь отказы, продолжаешь копить порфтолио. В какой-то момент порфтолио станет до того солидным что начнет приносить достаточный доход для жизни, и вот получается ты сам работу и создал.
>>868935 Он же через полгода не вспомнит что за что отвечает если что подправить надо будет. Я бы лично сделал бы класс и туда все это говно бы запихнул и потом бы просто вызывал нужные свойства.
>>868926 >>868930 Мидлы тут? Подскажите что тут можно исправить? В первом случае я даже хз че делать, если ему реально столько переменных нужно чтобы формулу расчитать. Декаплить от гейменеджера по-любому как-то надо, это сразу читабельность повысить в разы. Даже если надо 100500 переменных передавать в каждую функцию, если они все с семантическим названием будут, уже пизже будет. Но как еще улучшить хз.
>>868930 Тут опять же декаплинг, чтобы кликбай не ссылался на this, а получал параметром айдиешчку, ну и для разных функций и их айдишников я бы наверное хэш-мапу сделал.
>>868946 В юнити вопросы где к примеру для расчета баффа или какой либо формулы нужно 10050 переменных делается просто. Это дело разбивается по паре скриптов, которые обслуживают определенные области формулы, и в конце результат от каждой из них присылается в главный менеджер.
>>868946 Тут может помочь только смена профессии. Потому что автор вроде достаточно долго занимается программированием, но до сих пор является соседом спанчбоба. Тут не по Сеньке шапка явно. Это настолько позорище, что срать захотелось даже.
Если по теме, то в самом начале уже 1.2.3.4 это уже должны обрабатывать последовательно 3 класса, 4 выносится в отдельный метод. Вся остальная формула разбивается на классы, там штук 10 судя по всему. Они тупо последовательно считают, но можно и декоратор ебануть.
>>866119 > Ивенты Использовать C# ивенты в классах низкого уровня такое себе. Лучше просто обсервера кинуть. Какой-нибудь IPlayerObserver с нужными методами. И потом внутри его вызывать: _observer?.OnTakeDamage(value);
>>866217 >в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы Чо это за хуйня?
Вы думаете сервис-локаторы - это когда .GetService каждый тик вызывается? Зависимость прокинется один раз при создании агента. Всё. Чем это отличается от кэширования, блядь, какое нахуй кэширование. Сука мне жопу разорвало, чел просто сохраняет ссылку в переменную и называет это "кэшем".
>>866266 >Мидлы тут? Подскажите что тут можно исправить? Список модификаторов. Представь как у тебя скорость атаки в РПГ считается - там есть массив бафов от оружия, спелов, и они в определённом порядке применяются к базовому значению.
В зависимости от контекста можно рассмотреть событийную модель, когда значение будет пересчитывается только изменяется один из компонентов.
>>869780 >Ни то, я имел ввиду чтобы механика крутилась вокруг разрушения энвайронмента, а не чтобы танчики тупо взрывались. Дык там тоже этого хватает - постройки, заборы и прочие укрытия разрушаются, ландшафт деформируется (образуются воронки, валятся деревья и все в таком духе).
>>869957 Номер лицензии вшивается в билд. Но в целом > всем насрать Не знаю были ли вообще прецеденты, когда за это кого-нибудь выебли. Они больше денег въебут на суд. А если ты заработал на игре нормальные деньги, тебе уже проще купить лицензию.
Насколько имеет смысл визуальное программирование в юнити для реализации простых механик? Или это говно без перспектив? Интересует как оно по скорости в отличии от простого программирования и можно ли чего на нем можно сделать
>>869781 Окей, зачёт, просто я именно имел ввиду чтобы весь геймплей крутился вокруг разрушений. Тут это скорее как приятный бонус, ты всё-таки концентрируешься на тактиконе и позиционировании войск. А разрушаемый энвайронмент просто учитываешь при этом.
Сап посоны, есть одна проблема, нельзя подключить некоторые либы, такие как microsoft.extensions.dependencyinjection, а надо очень. Раньше работало до февраля 2022, после слетела винда и проеблись исходники, бэкап годичной давности не запускается. Есть ли какие-то способы заставить работать как прежде? Пойдут самые костыльные способы, тупо лишь бы запустить бэкап.
Реализовал таскание предметов перед камерой, как в half life, чтобы через стены не проходили, чтобы все было плавно, чтобы опционально крутились от столкновений (как на скрине, но потом все же планирую заморозить вращение, ибо все же такое поведение - не стандарт). И всего то 6 строчек кода. А я когла гуглил готовое решение - там такие каши попадались. Вот почему если я что-то и беру стороннее, то только довольно мощное, где работали несколько человек в течении долгого времени и до сих пор обновляют. А изобрести свой велосипед это нормально, ведь тебе не надо разбираться в чужом коде, дабы что внести/поправить. Ну тут вообще как повезет. Например, взял готовый сторонний ассет, сэкономил пару дней, и все хорошо, но только если босс не скажет, так, а давай сделаем еще вот такое. А "вот такое" это стороннее не поддерживает. И теперь тебе надо изучить архитектуру этой либы, и писать там что-то свое.
Только изучаю юнити и вот появился вопрос с реализацией базы данных на ScriptableObject. Как это правильно сделать? На первом пике сам ScriptableObject для предметов и кажется, что всё просто. Но что делать когда я хочу добавить очень разные предметы? Например зелье и меч? Мне нужно наследоваться от этого базового ScriptableObject? Или всё пытаться реализовать в самом префабе каждого предмета? А в ScriptableObject хранить только то, что я сейчас храню? В первый раз сталкиваюсь с этими ScriptableObject и вот не знаю куда смотреть
Однажды ты вместо float/int/string будешь писать var и при этом не испытывать каких либо внутренних противоречий. Так ты поймешь, что познал дзен программирования
>>870233 Однажды ты вместо var будешь писать float/int/string и при этом не испытывать каких либо внутренних противоречий. Так ты поймешь, что познал дзен программирования
>>870281 5$ доллоров в час? ну это неплохо. ну вот смотри. 5 долларов это 377 рублей. Рабочих часов в месяце 126 ч, значит, этот чел заработает 126*377 = 47502 рубля в месяц. В год - 570 024. За два года он станет миллионером!
>>870285 зато не бесплатно. это немного мотивирует делать. потом будет 20. потом 50. но это неважно. какаая разница сколько заплатят. получить деньги за любимое дело - приятно, неважно какая сумма
Вообще это нормально начинать фрилансером за копейки. Во первых, тебя особо ебать не будут, и ты не будешь парится из-за копеек. Да и опыта нет, что выебываться-то? Потом будешь поднимать ставки, если будет получаться/клиент будет доволен
Использовать Switch case вообще позволительно или чеды програмисты посмеються над такой хуетой? Если вот у меня например есть 100 разных пушек с разными типами атаки, которые нужно прописывать в коде. Как будет более правильно? Юзать Enum и ScriptableObject со switch кейсами? Или для каждой пушки отдельный класс прописывать?
> Если вот у меня например есть 100 разных пушек с разными типами атаки, которые нужно прописывать в коде. Как будет более правильно? Юзать Enum и ScriptableObject со switch кейсами? Скорее всего каждый тип атаки должен быть своим классом, в него каким-то образом должны прокинуться зависимости на инициализации, и у него должен быть метод атаки.
Дальше зависит от твой игры, можно в коде это сделать адекватно, либо делать атаки скриптабл обжектами и закидывать скриптабл обжект оружия.
В коде это можно делать например так RegsiterAttackType(WeaponType, IAttackType) Вместо класса IAttackType может быть фабрика если тебе надо чтобы инстанс был разным для разных юзеров
И потом сделать валидацию, что на все типы атаки зареган класс.
>>870659 А с чего Юнитеки должны ответственность нести? Это ты будешь спрашивать с продавца. В случае чего ты сможешь подтвердить, что купил ассеты, далее тебе их нужно будет заменить.
>>870713 А деньги ты кому переводишь? Думаю тут не так все просто. яндекс такси насколько я помню выебали за такие штуки, когда они брали деньги, но пытались сделать вид что не отвечают ни за что, а просто знакомят пассажиров с водителями.
>>870714 Хуёво ты думаешь. Если у тебя в банке спиздят деньги, то банк не будет тебе ничего выплачивать, понимаешь? Тебе нужно будет в суд обратиться, чтобы поймать мошенника и уже с него взыскать деньги.
Так же и здесь. Сначала владельцы авторских прав могут засудить тебя и взыскать с тебя n-ю сумму. Далее ты подаёшь заявление на автора ассета, так как он ввёл тебя в заблуждение и взыскиваешь уже с него n-ю сумму. Юнити по сути тоже как потерпевший будет.
>>870721 > ну реально взломают хранилище и вынесут Какое нахуй хранилище? Если ты в ячейку положишь деньги или драгоценности и их спиздят, то тебя нахуй пошлют. Будешь через мусоров искать вора и с него требовать деньги.
>>870725 Ну смотри наглядно: ты кладешь деньги в банкомате на карту, при тебе этот банкомат выносят грабители, ты идешь в соседний банкомат и снимаешь ту же сумму что положил. Проблемы?
>>870659 Никто ничего не будет тебе расширять, в России решения судов иностранных государств не признаются, а пиратство ИС недружственных стран неформально даже приветствуется, а формально находится пока в серой зоне.
Короче, мораль сей басни такова: и Юнитеки, и ты - будете потерпевшей стороной. Юнитеки вам нихуя выплачивать не будут и отвечать за то, что вас наебали, они тоже не будут. Как и в случае банков, если вас обнесли, то банк становится потерпевшей стороной и он вам при этом нихуя не должен.
Нужно следить за тем, что ты покупаешь в ассетсторах. Да даже банально фрилансеры могут наебать, подсунув какой-нибудь закопирайченый контенте.
>>870746 >Да даже банально фрилансеры могут наебать, У меня еще веселее есть история. Я придумал главного персонажа для игры, и прорабатывал эскизы. А потом я случшайно наткнулся на старую игру, и понял, что это персонаж оттуда, просто я играл 10 лет назад и забыл, а потом подумал что я его придумал.
>>870746 > и Юнитеки, и ты - будете потерпевшей стороной. > банк становится потерпевшей стороной и он вам при этом нихуя не должен
признание потерпевшим по уголовному делу не освобождает от обязанностей, которые возникают у банка в гражданско-правовой области. Вопрос заключается в том, какие обязательства на себя взял банк, а не кто там где-то потерпевший.
Добрый вечер. Прошу у Вас помощи. Уже не знаю что делать. Сразу скажу - я живу в Донецке. Официальный сайт Юнити у меня заблокирован. Через VPN работает более-менее. Решил я пройти курс по обучению на официальном сайте, но, для этого нужно авторизоваться, а сделать я это не могу. В решении этой проблемы не помогает даже VPN'ы и анонимайзеры. Есть ли какие-то способы пройти эту авторизацию ? Сразу спасибо за помощь.
>>870785 1. Иногда сайт юнити просто висит и там ничего не работает, у меня такое было с asset store. Это не связано с санкциями и блокировками 2. Используй другой VPN (Psiphon, например)
Доброго дня аноны, как в приложении можно задать своё разрешение, а не из тех что дается при выборе в настройках. Суть такая, в Windows поставлена книжная ориентация экрана с разрешение 1080х1920, в приложении выставлено 1920х1080, оно получается путает длину и ширину, и шакалит жестко картинку, как исправить этот баг?
>>868926 Нормальный код ДО рефакторинга, когда отрабатываются какие-то геймдизайн концепции. Потом можно будет и по отдельным методам распихать и от мэджикнамберс избавиться.
>>870890 Мне тысяча километров до Крыма и иногда по пол-дня вместо окошка логина или ассет стора белое окно, как на скрине, так что это не всегда связано.
Нужно сделать тайлмап в трёхмерной игре, по которому будут ходить персонажи. Выбрал в Grid ориентацию ячеек XZY, тайлмап стал горизонтальным, но спрайты тайлов в нём всё равно расположены вертикально. Если выбрать любую вертикальную ориентацию, то всё отображается нормально. Как это пофиксить? Проект свежий, ещё ничего нахуевертить не успел. Нагуглить проблему не получилось. Если через rotation просто повернуть Grid на 90 градусов, то возникают проблемы с позиционированием - я давно делал так и там были какие-то проблемы с координатами для GetTile, подробнее уже не помню. Неужели нет какого-то адекватного встроенного решения для горизонтального тайлмапа?
Аноны, кто запекает лайтмапы с помощью Bakery? У меня много моделей у которых автоматически UV2 генерируется. Но лайтмапы все равно хорошо пекутся. Только вот после запекания одних и тех же моделей но в разных сценах возникают проблемы. На старой сцене UV будето бы съезжает в сторону и появляется всякая гадость на краях развертки. Да, при запекании каждой сцены meta файлы ассетов меняются, там значение padding каждый раз новое. Как фиксить?
Почему у меня материалы из 3д модель не импортируются в Юнити? Вот я скачиваю какой-нибудь объект, например https://free3d.com/3d-model/building-54495.html. Открываю в блендере - всё нормально, здание раскрашено. Оттуда .fbx закидываю в Юнити. Добавляю на сцену - модель вся серая. Жму Extract Materials - все извлеченные материалы серые. Переключаю Material creation mode и Location на Legacy - всё равно серые. Как сделать, чтобы модель имела все текстуры?
>>871312 >1. нажать extract textures, если текстуры внутри fbx (а так fbx умеет? я не помню) Кнопка неактивна, либо не умеет, либо их нет в данном файле. >2. если они не внутри fbx, то импортировать их в юнити А как? Я закинул их в один каталог с материалами, в один каталог с моделью - ничего не изменилось.
Blender 3.4 открывает файл без текстур, с серыми материалами Autodersk FBX Viewer вообще не отображает Windows 3D Viewer отображает только 2 текстуры из 15
>А как? Ну установи каждому материалу текстуру вручную, там кривой файл какой-то
Поставил в ноут новый диск. Установил ту же систему и дрова, что и на старом диске. В итоге в редакторе в проекте фпс просел со 100 до 60. Пару раз запускал на старом диске, сохраненный на новом диске проект. Там все также выдает 100фпс стабильно. На новом - 60. Переставил юхаб и сам юнити - нихуя не изменилось. Гоню на новый юнити хаб. Старый двадцатого года, который на старом диске стоял, сейчас скачать не дают. Думаю в нем причина. Пиздец, как неприятно.
>>871431 Нашел VSync Count в Project Settings > Quality > Other Переключил его с Every V Blank на Dont Synk - фпс не изменился Это оно? Там же нашел параметр Anti Aliasing и сделал ему Disabled - фпс сразу вырос до 150. Это немного радует, но не знаю можно ли так делать, с учетом, что у меня карточная игра с картинками целиком в UI. Не будет ли проблемсов потом?
Пацаны, если я указал в камере horizontal field of view 80 градусов. То вот не понятно, как игра будет выглядеть на мониторах с разными разрешениями. Если одна и та же сцена откроется на квадратном 1024x1024 и на ultra wide 4000x1080, то на втором же явно будет больше видно? Тогда в чем смысл этого FOV?
>>871446 ЗЫ. Погуглил немного. Я прав в информации, которой я нарыл?: Неизменным считается параметр vertical field of view, то есть, на мониторах всех разрешений высота игрового мира будет одинаковый. А вот horizontal всегда будет разный, в зависимости от aspect. То есть на ultra wide он может достигать хоть 180 градусов
>>871449 Если про визуал скриптинг то нет не стоит, нужно откинуть все визуальное говно типо нодов или листов событий как в констракте и сразу хардкорить с сишарпой. Иначе просто несколько лет потратишь и все равно к скриптингу придешь, потому что самое сложное это не представления и синтаксис, а сами алгоритмы, а они везде одинаковые. Качай райдер и учи, чем сложнее будет, тем быстрее научишься. Главное много повторять
>>871438 Такой же точно основной диск с системой и драйверами, но новый. На обоих работает система. Я их менял физически в ноуте и проверял один и тот же проект на обоих по очереди.
>>871439 Стоит все также, но VSync уже без галочки. Если ее включить, то фпс проседает с 60 до 55-57. Вообще в Project Settings > Quality > Other достаточно много параметров (тени например мне совсем не нужны - у меня имитация теней спрайтами). Попробую с ними поиграть, хотя отключение сглаживания уже подняло фпс сразу почти на 100 единиц. Но надо еще поковырять В любом случае спасибо, более-менее понял куда копать
>>871456 Да все такое же. Единственная разница - на новом диске меня принудили поставить новый ЮХаб и в нем сразу последнюю стабильную версию юнити. Хотя потом я в этот хаб уже поставил нужную мне версию и на ней запускал один и тот же проект, перекидывая его флешкой с диска на диск и меняя диски в ноуте физически для сравнения. Если проблема не в хабе, то скорее всего они в самой юнити где-то выставили или сняли, какую-то галочку. Т.к. на старом ноуте я нужную версию не скачивал, а в свое время год назад где-то обновлялся до нее с более древней версии. То эта галочка могла там встать автоматом, перекинув настройки, с древней версии. В новой же версии я скачал их предустановки. Думаю, проблема в этом.
>>871456 >И такой же уровень загрузки процессора и видеокарты? Это не сравнивал, т.к. установщик винды и драйвера с одной флешки и все вроде как встало нормально. До этого наебался с заменой самого диска в ноуте - купил в Озоне, походу восстановленный (и с виду не очень новый), долго пытался его разбить на локальные диски - но ничего не получалось. В итоге оформил возврат и в итоге купил диск в ДНС, на который все поставилось сразу. Проебал с этим озоном кучу времени просто в никуда, так что пока лезть в дебри не буду, вроде как решение найдено, буду копать в том направлении
А я не ставлю vsync галочку. Если показывает 500-700 fps, значит,с проектом все ок. То есть, это такой показатель оптимизированности. Однажды, когда пилил один компонент, fps упал до 200. Оптимизировал, и снова стало много fps. А был бы включен vsinc то и не заметил бы, как было бы 75fps, так и осталось бы. Ладно я, у меня комп мощбный i5 9400f 1660super, а вот на какой нибудь бомжатской коробке у чела просело бы до 10 fps, и он бы обосрал меня в отзывах. Оно вам надо? Вот и не ставьте эту галочк.
Абсолютно юничую этого >>871462 Также ориентируюсь на фпс во время разработки, и было пару случаев когда из-за алгоритма поиска и отображения проседало фпс с 300 до 100 и ниже, сразу чекал этого и фиксил, так-бы не заметил, работало всё как часы.
>>871584 выдели кнопку в сцене или в списке слева, в компоненте Button если его нет то добавь этот компонент этого объекта(кнопка) там еще плюсик нажми добавить объект и в появившемся окне переключись на вкладку сцена (вторая из двух), затем найди там и выдели сам этот же объект. окошко с выбором закроется. потом чуть правее там же (где плюсик, справа) - строка, нажми на нее выползет списочек, найдешь в нем свой скрипт(который уже должен обязательно висеть на этой же кнопке) и дальше нажав на него найдешь нужный метод ButtonCliked (), который и выделишь. теперь при нажатии на кнопку будет срабатывать твой метод, ты правильно сделал его паблик иначе он не будет показан
>>871584 собственно у тебя на втором пике, во втором окошке должен стоять вызываемый метод ButtonCliked (), а не имя скрипта со () хз как ты вообще засунул его туда
Как реализовал: переход между сценами инстансит из префаба GameObject GatesTeleporter (DontDestroyOnLoad) который в зависимости от true или false перенесет персонажа либо туда либо сюда и дейстройнется на следующем кадре.
Возможно система черезжопная, но пусть будет так.
Проблема: нужно что бы галку true либо false в GatesTeleporterScript вешал сам переход , но он, по непонятной мне причине, вешает эту галку не на свежесозданный объект а сам префаб.