На 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 вешал сам переход , но он, по непонятной мне причине, вешает эту галку не на свежесозданный объект а сам префаб.
>>872068 Дак если бы он был отключен, то на всех скринах одинаково было бы. Но я тыкал и отдельно запекал, цифры те же. Там вообще странно, даже если просто камеру вниз увести, чтобы объектов не было видно, и наклонять - такая же хрень. Смотришь вниз, там пустота, он миллионы рисует и тормозит
Сделал зеркало (вторая камера + render texture), которое можно таскать и крепить на стенку (для решения моих хардкорных головоломок). Правда чет там все темновато, но похуй
>>872090 1050ти Сука, юнитя заебало, я хотел игруху изометрическую сделать, камеру наклоняю, хуяк в два раза фэпэсы падают, что это вообще за хуйня? Уверен нигде такой хуйни нету
>>872118 Ну так ты хоть посмотри что у тебя на экране написано, стату включил, а сам и не читаешь. CPU 37ms
Значит на видекарту ваще пох, причем тут твоя 1050ти? Игра цпу баунд. Что это значит? Это значит, что надо открыть профайлер и посмотреть что там такое творится. Подсказка - "saved by batching:0". Думай.
>>872125 >CPU 7700к Ты можешь сказать какую галочку нажать, чтобы когда камера вниз смотрит не было пиздеца или нет? Я что должен быть экспертом в этих рендерах, нахуй мне это говно
>>872125 > CPU 37ms Это когда все сферы видно, нахуй ты мне про это вообще, жопой читаешь что ли. Там и должно лагать потому что 36кк. Я про первые три скрина говорю
>>872126 Бляя. В материале gpu instancing вруби хотя бы и уже лучше станет.
> Я что должен быть экспертом в этих рендерах Ну как экспертом, на ютубе видос на 15 минут глянуть, потом погуглить минут 10 что не понятно, потом еще видос на минут 10 и все, ты достаточно эксперт для этого
> нахуй мне это говно Ну это уж к тебе вопрос, если ты хочешь графон выжимать то хотя бы базу должен знать, или быть готов узнать, иначе ниче не получится
>>872129 > Там и должно лагать потому что 36кк. Я про первые три скрина говорю Сынище, ты видишь что видюха это все переваривает не заметив и имеет во всех случаях время кадра 3мс?
Т.е. если бы процессор не делал какую-то подозрительную работу(выше уже написал как поправить), у тебя бы было 333 фпс вне зависимости от поворота камеры, видюхе ваще пох на твои сферы, наваливай еще, она даже не заметит.
>>872130 >>872055 >>872131 Нет, короче нашел причину. Такая хуйня шо я того рот ебал. Чтобы вы думали? А? А? !? Это короче солнышко ебучее. Можно камеру не вращать, а солнце вращать и такая же хрень происходит. Когда направления совпадают, тогда максимум миллионов. Вот и думайте, вот и покумекайте, сынишки, это вам не там, юнити вас быстро на колени поставит и фпс заберет
Пилю игру с ебанутыми головоломками. Вот одна из них. Чел прошел уровень и идет на следующий, где его ждет очередной сюрприз. Он идет вперед, но постоянно выходит на одну и ту же комнату (его порталит назад, но он этого видеть не будет, потому что в этих маленьких портальных коридорчиках будут двери сзади и спереди, а во время переноса они будут закрыты). На стене этой повторяющейся комнаты будет издевающаяся надпись "ЭТО НЕ ТА ЖЕ САМАЯ КОМНАТА, ПРОСТО ИДИ ВПЕРЕД". Но он никогда не дойдет, лол. Однако, если чел из комнаты пойдет назад, он попадает на предыдущуй уровень, который он прошел. Знаете какое решение? занести в эту повторяющуся комнату какой-нибудь предмет из того предыдущего уровня, чтобы надпись "ЭТО НЕ ТА ЖЕ САМАЯ КОМНАТА, ПРОСТО ИДИ ВПЕРЕД" стала ложной, ведь теперь, если игрока запорталить снова, он по идее не должен увидеть тот предмет, раз это "другая комната" Короче мою игру никто не пройдет, да и похуй
Делаю простенькую сейв систему и столкнулся с вопросом.
В найденном гайде объяснялось что PlayerPrefs.SetInt записывает полученную переменную, но что бы ее сохранить надо дополнительно использовать PlayerPrefs.Save.
На основе этих знаний сделал так: На Start методом PlayerPrefs.getInt устанавливается переменная State. Если State==1 сразу запускается метод Die() при убийстве врага Die() переменная State меняется на 1. State скармливается PlayerPrefs.SettInt. PlayerPrefs.Save повесил на событие которое дергается когда персонаж проходит чекпойнт.
Однако при повторной загрузке уровня, без дергания чекпойнта ранее убитые враги все равно имеют сохраненный State ==1 хотя PlayerPrefs.Save не использовался.
Вопрос: Я неправильно понял гайд и SetInt все равно сохраняет переменную без PlayerPrefs.Save? Зачем тогда вообще PlayerPrefs.Save?
>>872285 Вообще советую сделать по уму, и создать менджер который держит в себе списки всех мобов. Далее во время сохранения/загрузки чекаются и списки и спавнятся те которые живые. Можно хранить это дело тупо одной стринг строкой.
>>872309 Хорошо, а нахуя нам тогда PlayerPrefs.Save . В гайде говорилось что что бы все работало и Аллах был доволен надо и записать и сохранить разными командами
>>872323 Чел, ты в плеер префс сохранил 1, если ты после этого не перезаписывал значение на другое, он у тебя и остался равным 1 после перезапуска приложения. Судя по твоему коду, ты не перезаписывал ничего, а просто выдергиваешьс свою единицу из памяти раз за разом.
>PlayerPrefs.Save.html Никогда не используйте юнитивское ванильное сохранение в реестр, это полное дерьмо как по функционалу и работе с данными, это худшее решение на ровне с тем чтобы просто давать код игроку который он бы сам вписывал. Есть куча стандартных вариантов записи сохранения в файл и чтение из, и делаются они в 2 клика.
Вопрос из области "примерно почувствуй". Сколько бы стоила в наши дни сделать игру Капхед? Если бы всё делалось, естественно, в Восточной Европе. Не от безделья спрашиваю. Реально интересно и любопытно
>>872477 >$25 Дорого нынче услуги по передвижению кубов стоят. Проще нанять за эти деньги индуса который сделает тебе игру с гораздо лучшим соответствием запросу.
>>872399 главное правило работы с юнити, как можно меньше соприкасаться с их АПИ и тогда многих проблем можно избежать. Надо воспринимать юнити как систему управления граф. ассетами и билд систему и не более.
Подскажите, насколько Unity подойдет для 2D (!) RTS игры с тайловой генерируемой картой? Я очень долго искал более легковесные и/или узконаправленные для этого движки или платформы, но понял, что пока я буду тот же Allegro+AGUI ковырять, пройдет вечность. Если есть более хорошие варианты чем Unity (особенно с возможностью хорошей оптимизации), буду рад услышать. ЯПы не проблема, безгайдовые API - проблема.
>>872567 А какие есть примеры реальных более-менее серьезных проектов на годоте? Мне просто показалось на первый взгляд, что он какой-то больше для обучения, чем для реальной разработки
>>872587 Оптимизация - это баззворд. Что конкретно под оптимизацией ты хочешь подразуметь? > Хочеца чтобы и на утюге играли Если в игре есть физон, то как ты там ентити с системами не оптимизируй, если проц говно - физон будет считаться долго и дропать общий ФПС до 15 даже на топовой РТХ печи 4090.
>>872587 Ну, как я написал - ниче лучше юнити в плане производительности ты не найдешь из популярных движков, при условии что ты осилишь ецс с многопотоком.
Подскажите юнитаны, я следую принципу ООП и у меня на сцене пару сотен объектов с логикой, которые связаны ниточками из ссылок друг на друга в виде дерева, так-же в игре у меня создается большое количество игровых объектов в виде архитектуры и хранения данных. Игра 2д, и все данных хранятся на созданных объектах пустышках на которых висят скрипты. Вопрос, на сколько пагубное влияет около десятка тысяч пустых объектов со скриптами на сцена для производительности? Больше вопрос относится к мобилко гейменгу, вроде как фпс не просаживается, но интересует не нагружает ли так сильно цпу эти самые объекты? В них нет апдейт методов или чего такого, это просто данные.
Но я еще добавлю: > и у меня на сцене пару сотен объектов с логикой, которые связаны ниточками из ссылок друг на друга в виде дерева Скорее всего это было бы удобнее в коде делать. > так-же в игре у меня создается большое количество игровых объектов в виде архитектуры и хранения данных. Скорее всего им не обязательно быть монобехами ваще. > Вопрос, на сколько пагубное влияет около десятка тысяч пустых объектов со скриптами на сцена для производительности? Больше вопрос относится к мобилко гейменгу, вроде как фпс не просаживается, но интересует не нагружает ли так сильно цпу эти самые объекты? Не сильно
Кто-то использовал Odin Inspector? Настолько ли это нужная вещь для соло разработчика? Или это только для упрощения работы гейм дизайнеров? И соло разрабу хватит дефолтного инспектора? Просто выглядит неплохо, но и покупать за 55$ не особо хочу
>>872857 >но и покупать за 55$ не особо хочу Ну так воспользуйся полнофункциональной ознакомительной версией и сам уже реши стоит тебе его покупать или продолжить пользоваться полнофункциональной ознакомительной версией нет. https://www.file-upload.com/ql4vxgp91vs8
Обнаружьте уже гугол штоле. Это не какие-то мои секретные ссылки, это ссылки со всем известных сайтов с полнофункциональными ознакомительными версиями ассетов, которые вы можете попробовать, и если понравится, то купить в ассетсторе конечно же.
>>872975 >Я гуглю в тысячу раз лучше чем ты. Ну так гугли себе ассеты, а не видосы как твою мамку ебут бомжи и срут ей на грудь. Это юнитек просто слегка подпиздывает. Для самого древнего европейца это норма тащемта. Вот его же сообщение с форума юнитеков и на его скрине у него версия 2.3.1 весит 1,16 мб. Следующая версия после этого была как раз 2.4.0 и в ней какие-то мелкие изменения и на 2 файла меньше, так что не могла она в 2 раза в размере увеличиться. Может это размер после извлечения пакета. Может этот юнитек в ассетсторе к ассету фото своего члена прилагает, а ознакомители фото не стали распространять, а только пакет с ассетов выложили. Я в душе нее ебу, у меня юните даже не установлено.
Пиздец, помогаешь людям по доброте душевной даже мимо проходя, а они ещё и выёбываются.
Короче не ленись гуглить что-то кроме порнухи с твоей мамкой и бомжами и будет тебе счастье.
>>872983 Капец ты быдло агрессивное. Я качал и по ссылке и предыдущие версии, там ошибка, в редакторе папки невидимыми становятся и в package manager не отображается ассет, хуйню какую-то советуешь скачивать
Сап архитектурные. Короче, есть один компонент А. Ему можно передавать объекты (А.Add(GameOjbect)), и он будет вызывать события, когда с этими передаваемыми объектами кое-что случится. И вот тут проблема. Например, компонент B добавил несколько объектов, и компонент C, и оба подписались. Но беда в том, что они оба будут получать уведомления. Например, что-то случилось с объектом, который добавил компонент B, но уведомление об этом объекте получит и компонент C. Поэтому, в B и C надо добавить проверки, что уведомление связяно с их объектом. Короче, проблема в том, что надо как-то разграничить, чтобы не получать уведомления о событиях не своих объектов.
В принципе, это работает, просто как-то странно получилось.
Поэтому я пошел дальше, и в метод Add добавил второй параметр делагат. Например В B.cs: A.Add(gameObject, B.Zalupa); void Zalupa(GameObject g)..
В С.cs: A.Add(gameObject, С.Her); void Her(GameObject g)..
В итоге получилось, что вместо подписок будут вызываться эти делигаты. Проблема в разграничением решена.
Короче, в чем я не прав?
Я сейчас думаю, либо так оставить. Либо сделать компонент A префабом и вернуть события. То есть, если компоненту B понадобился А, то я просто создаю префаб, и B подписывается на этот префаб. Если компоненту С понадобился А, то я создаю еще один префаб А, и С подписывается на этот префаб. В итоге первый префаб А отправляет события только В. А второй префаб А отправляет события только С.
>>873021 Вообще, я бы хотел, чтобы А не был ни компонентом, ни префабом, но он должен уметь делать монобешные штуки... Я бы в идеале хотел так class B { void start() { A a = new A(); a.someEvent.addEventListener(Kok) a.Add(a); a.Add(b); } void Kok() {} }
class С { void start() { A a = new A(); a.someEvent.addEventListener(Lol) a.Add(x); a.Add(y); } void Lol() {} }
Пацаны, как в пэйнтере сделана рисовалка? Пускают луч из курсора, хитнормал умножается на радиус кисти и получаем типо точку на сфере, она начало, в ней размер текстуры кисти ноль, потом к середине сферы она увеличивается и к концу опять уходит в ноль. Но как сама текстура проецируется на объект?
"setType" в параметре метода интерфейса абсолютно бессмысленно. Или нет? Помяните мое слово, скоро компилятор разрешит его не использовать, в моем примере достаточно будет написать. public void Set(SetType); Просто майки пока ленятся
>>873220 АХАХХА я помню 2 или 3 года назад почти тоже самое написал и скинул это же видео, сука реально теория мёртвого интернета в действии, у тебя кстати щас какая версия ИИ стоит на борту?
>>873232 Ты рожден для большего. Нужно перекатить юнититред не с одной буквой, а чтобы прям было написано анриал, внукам будет рассказывать про такой вин
Пацаны, в скрипте для инпута такое писать _controls = new MyControls(); _controls.Player.Enable(); А если в другом скрипте тоже нужно инпут считывать, тоже так же создавать, или как-то из первого скрипта брать?
Анон, есть ли простой и бесплатный способ сделать авторитарный сервер для мультиплеерной игры на юнити?
Как это вообще делать? На данный момент, я жто так представляю:
Пишу программу с игровой логикой на c# и ставлю его на линукс на триал впс, как-то соединяю его через фотон с клиентской игрой на unity. Это так делается, либо есть способы проще?
>>873558 если делаешь под стим, то посмотри в сторону https://wiki.facepunch.com/steamworks/ я сделал на нем сетевую игру через организацию лобби прямо в стиме без серверов, но сторонние сервера там тоже вроде можно пристраивать, насколько я помню
На компе стоит Виндовс10. До переустановки системы проект был собран под Universal Windows Platform После переустановки системы и юнити, в юнити проект автоматом с какого-то хуя стал под PC, Mac & Linux Standalone Знаю что можно его перевести назад, но опять же с какого-то хуя он при этом становится на 40% тяжелее
Вопрос: не может ли это как-то влиять на заметное падение ФПС в редакторе?
>>873565 Ничего ты не даешь, гнида, только спамишь своей тупизной, зачем мне твои вопросы про сам думаешь, я таких как ты советчиков сразу нахуй посылаю, там твое место, гнилой уебок
>>873580 Забей на этого козла. Лучше силы направь на работу.
По вопросу твоему, лучше всего создавать новый экземпляр импутсистем в каждом скрипте, в котором предполагается его использование. Так получается хороший контроль инпутов. Все гибко.
Выучил С#, и планирую следующие 8 месяцев (не считая апрель) выпасть из мира и пилить свою первую мобильную порашу. Концепт написал сразу хороший, гача игра с "бесконечным" прогрессом и полем обновлений. Этапы разработки тоже разделил. Ну не суть, короче у меня появились вопросы, надеюсь вы как более опытные ответите на них.
1. Какие мощности сервера нужны, если я собираюсь хранить у себя: стату\прогресс аккаунта, весь лут аккаунта, проверять на легитимность запуска матча, а также если получиться дроп после матча. Сам матч будет на смартфоне происходить.
2. Защита от читов. Поскольку я собираюсь в будущем вводить простенькое пвп и ебать какие сложные данжи, с редким довольно лутом, хотел бы как-то защититься даже от потенциальных читеров. Как оно там происходит на ваших мобилках?
Короче, хочу сделать игру красиво, без какого либо пейвола и дебильных реклам.
>>873633 Очень интересует вообще тема читов. Поскольку я собираюсь вводить прям рейтинговый подбор для ПвП в будущем. Сезонные причем, и бесплатно как хартстон раздавать уникальные шкурки, которые никак потом не добыть.
А так в целом игра будет скорее про пве, с партийными ивентами в далеком будущем.
>>873633 >>873636 самое первое и простое, что можно делать - это проверять целостность файлов, ну и как-то нужно научиться детектить инжекты, выделенную память, потоки, потому что в настоящее время абсолютной любой объект, данные можно отредачить из вне
>>873633 >1. Какие мощности сервера нужны, если я собираюсь хранить у себя: стату\прогресс аккаунта, весь лут аккаунта, проверять на легитимность запуска матча, а также если получиться дроп после матча. Сам матч будет на смартфоне происходить. На самом деле не большие, В 3к месяц должно хватить.
>2. Защита от читов. Поскольку я собираюсь в будущем вводить простенькое пвп и ебать какие сложные данжи, с редким довольно лутом, хотел бы как-то защититься даже от потенциальных читеров. Как оно там происходит на ваших мобилках? Читерить игру буду с помощью эмулятора андроида на ПК, никто ломать игру играя на мобилке не будет. Ну либо готовый какой нибудь чит скачивать что в принципе равноценно. Прежде чем защищать игру, надо примерно представлять как её будут ломать и что будут видеть ломатели. Далее уже из этого строить защиту. Не беру в пример простой взлом с помощью подобия артмани или читэнджина, а именно самописный стафф для работы с функциями и объектами. Все критичные данные нужно хранить на сервере это раз. Клиент является по сути одной обёрткой UI и всякими мелкими таймерами это два. Это если кратко. Обычно на сервере хранятся помимо данных глобальные состояния клиента, и критичные таймеры, чтобы если клиент попытался отправить пакет того что он не может сделать дропнуть его, к пример открыть инвентарь в бою если это не предусмотрено игрой, но возможно сделать отправкой пакета, либо заспамить каким либо действием таймер которого есть лишь на клиенте, а на сервере не применяется.
По своему опыту скажу что защита строится уже после того как ты оформишь архитектуру и будешь видеть где что можно заэксплоить, ну и конечно тестеры нужны, самому за всем не уследить, ну и без опыта в любом случае будут фэйлы, не существует защиту которую нельзя сломать. Параллельно с защитой делаешь какой нибудь анализатор данных в игре для админа, или сторонний, желательно в табличках, и чекаешь подозрительные аккаунты по ним что упрощает, либо всё это дело автоматизируешь. Опять же логи важных действий. В мобильных играх это также решается тем что всякая торговля и глобальные действия не доступны сначало, а открываются игроку позже, и человеку нужно время чтобы прокачать аккаунт (Мин 30-40), тем самым сильно усложняя жизнь взломщикам, т.к бан потеря времени.
>>873681 Понял, спасибо. А так вообще, в целом трейда в игре не будет. Никакого. Может когда нибудь что-то типа аукциона попробую сделать, но скорее нет, чем да. Постараюсь сделать игровой процесс всегда "от зп до зп", чтобы вроде бы как-то идет прогресс, но иногда нужно будет опуститься на пару уровней ниже, чтобы вернутся на прежний уровень. Ни донатом, ни трейдом чтобы это нельзя было исправить.
Донат пока планирую в виде гачи и скинов. Ну, и соответственно можно будет крутить за игровую валюту, которая будет фармится в матчах.
Ну лан, я щас распланирую всё за этот месяц и засяду по хардкору.
>>858859 (OP) Сап юнитач. Поясни за анимацию. Работаю в бленде, анимирую сам, через инверсную кинематику, закидываю в движок и всегда обсираюсь. Ноги скользят по земле даже в идле. Пробовал через слои, ставить галочки на самой анимаци, чтобы только ноги опирались на землю ничего, не помогает. Проблема системная и тянется уже несколько лет, в дефолтных проектах или скелет миксамо без инверсии или с инверсией, но почему то не скользит. Странно, что на годоте такой проблемы в принципе нет.
Можешь так-же передавать ссылку на этот тип через скрипты как и с любой другой переменной. Вообще это лучше делать через конструкторы и подобную хуиту, но для начало можешь не запариваться.
>>874014 Тебе тут надо инстантиейтить не GameObject, а конкретный объект - тип(компонент), в нем будет поле с сcылкой на StatsNPC тип, которую ты прокинешь через поле, так ты сможешь например через метод Init передавать все данные в виде параметров:
[SerialazeField] private Character _npcTemplate; <= сюда закидываешь префаб с компонентом Character
Character newNPC = Instantiate(_npcTemplate); newNPC.Init("Bob", "Bobber", "Female") ==================================================================================== class Character { [SerialazeField] private StatsNPC _stats;<= сюда перетаскиваешь компонент StatsNPC прям с Character gameobject
Можно ли имея GameObject получить его скрипт при этом без указания названия скрипта?
То есть: У меня есть геймобжект Enemy к которому приляпан EnemyScript и Enemy2 к которому приляпан Enemy2Script. В обеих скриптах есть переменная State. Enemy и Enemy2 собраны в GameObject{} Enemyes. Как можно сделать что бы цикл пробежал по массиву GameObject[]Enemyes и "дернул" каждый из скриптов?
Допустим, есть гонка с процедурной генерацией уровня. Когда машинка доезжает до определенного места в одном куске карты, генерится следующий и удаляется тот, что был до этого.
Если уровни будут генерится бесконечно, например мы будем ехать час и нагенерим 200 уровней (и столько же удалим) мы окажемся на координате, например 10000. Вопрос, насколько сильно это нагружает игру и где вообще мы едем. То есть, сохраняется ли "пустое" пространство, на котором были предыдущие уровни и какую часть этого пространства видит/обрабатывает игра?
Как вообще можно понять это "пустое" пространство? (пикрил)
>>877136 >Но ведь от одного куба можно "долететь" до другого. Полет будет по чему? По пустоте? "Полет" это аналогичное перемещение по 3 координатам.
>Алсо вопрос. Как определять размер объектов? Вот например условный 1 юнит это сколько? Например какая моделька больше, гг из ведьмака или гг из гта? Полностью от того как настроишь скейл зависит.
>>877170 >"Полет" это аналогичное перемещение по 3 координатам. То есть игра хранит координаты первого куба, второго и объекта, который летит. А также все координаты (расстояние) между ними. Меньше координат (расстояния), меньше нагрузка, разве нет? Ну например если кубов будет не 2, а 2кк
>Полностью от того как настроишь скейл зависит Как понимать размерность скейла? Если грузануть 2 разных модели со скейлом 1, они могут быть разного размера. Тогда при одинаковом скейле как понимать размерность?
>>877176 >То есть игра хранит координаты первого куба, второго и объекта, который летит. А также все координаты (расстояние) между ними. Меньше координат (расстояния), меньше нагрузка, разве нет? Ну например если кубов будет не 2, а 2кк Основная нагрузка приходится на оперативу, чем больше объектов тем больше загрузка оперативы, но только при условии что кубы статичны, если они не статичный то нагружаться будет еще и проц, но современным процам посчитать перемещение 2кк кубов это вообще не задача, больше всего же будет нагружаться ГПУ которой придется кубы в зоне видимости рендерить.
>Если грузануть 2 разных модели со скейлом 1, они могут быть разного размера. Скейл это не только скейл в юнити, но еще и скейл в 3д редакторе в котором эта модель делалась.
>>877190 То есть если объект будет "лететь по пустоте" и кроме него в "пустоте" ничего не будет, то нагрузка не будет меняться и можно лететь бесконечно? Типа как генерация карты в майнкрафте, только без генерации карты
Если взять модельки условно со скейлом 1, будет какая-то разница в производительности, если уменьшить их до скейла 0.005 или увеличить до скейла 10?
>>877229 >То есть если объект будет "лететь по пустоте" и кроме него в "пустоте" ничего не будет, то нагрузка не будет меняться и можно лететь бесконечно? Да, не будет. Но чем больше точек будет в объекте тем будет выше постоянная загрузка.
>Если взять модельки условно со скейлом 1, будет какая-то разница в производительности, если уменьшить их до скейла 0.005 или увеличить до скейла 10? А тут уже от наличия/отсутствия камеры зависит - чем больше полигонов рендерится тем больше нагрузка на ГП. Если камеры не будет то и модель не будет двигаться то нагружаться будет только оператива, если будет двигаться то еще и ЦП.
Что оптимальнее, цикл if в апдейте или пустой объект с триггером? При условии что действие в if выполняется игроком скажем, раз в 2-3 минуты. Если if (или объект) один и если if-ов (объектов) 1000?
>>877418 Триггерится будет при соприкосновении? Впринципе без разницы, поскольку даже 1000 if-ов в апдейте не особо грузит кпу пока не выполняется. Но лучше ничего в апдейт не сувать когда можно избежать этого
>>877624 Да, как сделаешь так и будет тригерится хоть при нажатии кнопки, хоть при повороте камеры. Это из разряда "можно, но зачем" и обычно не нужно Ну лан, то что лучше на триггеры чем апдейты я сказал. Могу сказать еще очевидную вещь, что проверки колайдера ну к примеру пули и стены, лучше вешать на каждую пулю(включая запуск разрушения стены) чем на каждую часть стены для оптимизации А так, у них новый тред тут >>873990 (OP), и если нужно больше ответов разных лучше спрашивать там У меня настроения постить в нем нет никакого даже после всего это времени, поэтому в закладках только этот
На компе установлен вин10 х64, Visual Studio с какого-то хуя установился в C:\Program Files (x86)\ Он разве 32 битный, или я не тот скачал. какого хуя он вообще работает тогда?