Последние новости: 2022.3 теперь LTS и рекомендуется к использованию
https://unity.com/releases/lts
Прошлый тред: >>873990 (OP)
Официальный сайт: https://unity.com/ru
Документация: https://docs.unity3d.com/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com
Магазин ассетов: https://assetstore.unity.com
На Unity сделано много замечательных игр: Hearthstone, VRChat, Escape from Tarkov, Valheim, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие.
Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
Какие у Unity сильные стороны?
Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
Какие у Unity слабые стороны?
Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
На каких языках я могу писать скрипты для Unity?
Поддерживается написание скриптов на C# 9.0
https://docs.unity3d.com/Manual/CSharpCompiler.html
Какие есть готовые решения для создания мультиплеерной игры?
https://www.photonengine.com
https://mirror-networking.com
https://playfab.com
На каких платформах работают созданные с помощью 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. C# для чайников Автор книги – Джон Пол Мюллер
2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев
3. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин
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х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)
Шапка: https://pastebin.com/XDakFcF2
Поехавший блять
Но тут проблема именно в творческих делах, где важен эмоциональный отклик. Поэтому, если делать что-то, где показатель - не эмоция, а соотвествие референсу/личному опыту, то тут депрессующий анон вполне может продвигаться дальше. Например, в написании кода главное - чтобы он работал. Чтобы понять, что он работает, не нужно испытывать дофамин, а лишь увидеть, что компилятор не выдал ошибок, и что в игре код работает как надо. Когда же ты смоделировал, например, дом, тот показатель успешности - твое чувство удовлетворенности, но он подавляется депрессией.
Или прочей эмоциональной траблой в башке.
нужна внешняя поддержка от нормальных людей, чтобы они могли сказать пару хороших слов и сразу же появлялась мотивация, по себе знаю
Зря ты так про кодинг. У меня с ним ровно такие же проблемы, как у тебя с моделированием. Это какой-то сорт оф перфекционизм, когда тебе хочется, чтобы всё в твоей игре было идеально. Начиная с кодовой базы, чтобы в ней каждое название класса было выверено, каждый отступ был правильно сделан и так далее.
я говорю про нормальных, а не про рандомный биоскот, который даже другом близко нельзя назвать
>Есть где-то полный список игор на юнете?
Разумеется нет. Как ты себе это представляешь? Это как спрашивать полный список сайтов на каком-то движке.
Так юнити у меня ещё не баговала и не вылетала, как в 2022.3.0
Она выглядит неплохо но автор часов 5 рассказывает как этот кактус вырастить, но как его жрать решительно непонятно , то ли я слишком тупой.
Если кто то юзает эту диалоговую систему и мог бы объяснить как как ей пользоваться я был бы финансово благодарен
Нормальные версии юнити грузили карту на 100% и всё запекалось за 15 минут.
ЛТСище нагружает карту на 3 процента и запекает сутки
Тут уже не важно, что 1060, понимаешь?
100 и 3 процента, вот что важно.
Индусы опять насрали
у меня тоже на начальных версиях залупа ебаная была с постоянными утечками и реже крашами
Я тебе даже больше скажу - у нас на андроиде было несколько процентов крашей(больше нормы) пока не обновились на 2021.3.22 или около того.
Чуть увеличивается, но до краев все равно не доходит.
Можно как-то сохранить префаб вместе с NavMesh на нем? Сейчас меш сохраняется на сцене даже если удалить плеин.
Навмеш хранится не на префабе. По моему до 2022.2 он хранился просто в сцене, а в последней ЛТСке он вроде как в компоненте одном конкретном. Просто уменьшай это дерьмо, пока не будет удовлетворительно. Ничего страшного, что оно не доходит до краёв, если настроишь высоту дропа и дальность прыжка, всё будет норм и мобы будут спрыгивать/перепрыгивать
Берешь и рисуешь круг в нужном месте.
В чем именно сложность, какие есть идеи и почему тебе кажется они не сработаю
Может ты говоришь про что то другое, но вроде это называется разрешение и это не настройка камеры, а настройка окна с игрой / графическая настройка
1920x1080, 0:36
Это именно камера. Мне именно нужна возможность задать размер камеры по ширине и по высоте. Накидал как камеры работает в юнити и как работает в годоте (такая возможность есть не только в годоте) для примера какое поведение мне нужно.
В юнити при изменение размера окна шарик куда-то сплющивает, то расплющивает. В годоте не колбасит изображение.
тебе ничего не делать, потому что ты ничего и никогда уже не сделаешь, тяжёлая болезнь у тебя, скоро умирать
Мне нужно найти 2-3 человека с приличным опытом коммерческой разработки мобильных игр. Таких, с которыми не нужно нянчиться, которые могут приступить сразу к работе. И тут две проблемы: 1) как их привлечь, если они уже официально где-то работают, а я хочу платить в чёрную криптой (3-5к баксов)? 2) как их искать на линкедине, как правильно отсеивать от блаженных, которые на самом деле ничего толком не могут делать самостоятельно. Реально ли вообще привлечь сеньора на удалёнку за 3-5к в месяц в чёрную? Или это из области фантастики.
>я хочу платить в чёрную криптой (3-5к баксов)
Если не официально, то это всегда риски, либо для работников, либо для работодателя. Есть шанс что всё срастётся и будет чики-пуки, есть риск что одна из сторон кинет каким либо образом.
Идеальный вариант это знакомства или связи. Если рандомно, то это чистая рулетка.
Че там, уже кому-то раздали доступ?
>>81106
>Че там, уже кому-то раздали доступ?
Вчера только думал, что вскоре появится кнопка "Сделать игру". Предчувствую скорый конец геймдева. ИИ заменит кругом людей.
Ты походу проиграл в генетическую лотерею.
КАКАЯ ЖЕ УРОДСКАЯ ЭТА ХУИТА С УЕБИЩНЫМ МЕЛКИМ ИНТЕРФЕЙСОМ МИКРОСКОПИЧЕСКИМ ШРИФТОМ НАХУЙ КАК С ЭТОЙ ХУЙНЕЙ РАБОТАТЬ МНЕ ЭКРАН ЦЕЛОВАТЬ ПРИХОДИТЬСЯ ЧТОБЫ ХОТЬ ЧТО-ТО РАЗГЛЯДЕТЬ ЕЩЕ И ЕБАНЫЕ ЦВЕТА ВСЕ ОДНОТОННЫЕ БЛЯДСКИЙ ПИЗДОС А ДОКУМЕНТАЦИЯ ЭТО ПРОСТО ПОЛНЫЙ АХУЙ КАК СКАЛИРУЕТСЯ ЕБАНАЯ МОДНАЯ ХУЙНЯ НАХУЙ НИХУЯ В ЭТОЙ МОДНОЙ ПИЗДЕ НЕ ВИДНО
Согласен. На моём full hd мониторе постоянно приходится сдвигать и масштабировать
В соседнем движке можно поставить любой шрифт и размер букв, а ещё перекрасить интерфейс в любой цвет (по умолчанию синий) и устроить светомузыку с нескучными живыми обоями в стиле аниме, что даёт бонус к скорости разработки инди-игр +200% и увеличивает размер глаз, что, в свою очередь, улучшает зрение, делая тебя похожим на ОЯШа. Алсо, документация очень хорошая и встроена в редактор, лично я сделал множество багофич опираясь только на подсказки по кнопке F1 без необходимости искать что-то в интернетах. Игру, правда, так и не сделал, но было приятно провести время, а это главное.
Че пиздишь, у меня хуевое зрение и с юнити никаких проблем нет.
>Берешь и рисуешь круг в нужном месте.
Каким классом\методом? https://docs.unity3d.com/Manual/class-LineRenderer.html ?
Я пытался помечать зону спрайтом, получается говно, т.к. сопоставлять радиус спрайта с с длинной вектора не оч удобно. Делал через partical system - просто некрасиво выходит
> Я пытался помечать зону спрайтом, получается говно, т.к. сопоставлять радиус спрайта с с длинной вектора не оч удобно
Подумой. Вот у тебя есть квадратная картинка, тогда от центра касательная от каждой из сторон - 0.5.
Лайн рендерер впринципе тоже можешь.
Можешь сам меш генерировать как угодно
Ну и я подумал - а нет ли возможности как-то автоматически подгрузить все соответствующие текстуры в материалы? Они же после Сабстанса все подписаны соответствующим образом, нужно просто прочитать и загрузить.
>Если объект большой, то материалов может быть пара десятков.
Тут твоя ошибка. На объекте, какой бы он не был не должно быть столько, самое большое это для персонажа 3-4.
Всё остальное делается атласом текстур и шейдером при необходимости особых эффектов.
https://github.com/Unity-Technologies/MegacityMultiplayer
>для персонажа 3-4.
А если у него вся локация одним куском?
>>81296
>открыл реузультат в Сабстансе
Что мешает настроить материалы в блендере? Или импортировать материалы из сабстенса в блендер и экспортировать по-человечески уже из блендера.
>>81310
>RAM: 32GB
>Downloading the Megacity Multiplayer repo: Up to 20 min
>Opening the project with library build: Up to 20 min
>When going into the main scene, subscenes need to import: Up to 20 min
>When going into the playmode, server world is created: Up to 30 min
Вот это Ж Ы Р Н О Т А, есть видео или скриншоты?
Что за ерунда? Почему тачки телепортируются и вращаются моментально. Это типа юнитивский проект для демонстрации неебаца возможностей ихнего ДОТСа? По моему, больше похоже на лажу. По таймкодам:
https://youtu.be/KgcU2HBOXAw?t=58
https://youtu.be/KgcU2HBOXAw?t=84
ебать ты инцел душный, они же не делали демонстрацию красивейших графики, анимации или пейзажей
Да, они ничего из перечисленного не могут продемонстрировать.
А вот почему они не могут контролировать свои ротейшены это отдельный разговор. Неужели дотс такое говно, что они сами не могут сделать, чтобы тачки не колбасило?
Что там вообще из самого интересного добавили? Если сравнивать с 2022.
1280x720, 2:30
На видео - прохождение 5 уровня. Там две комнаты с терминалами, напротив каждого терминала панель, которую можно вращать. В каждом терминале нужно ввести номер, который отобразится в панели напротив. Номер генерируется каждый раз, когда чел проходит через плитку, входя в комнату с терминалом.
С терминалом №1 все ок - крутишь панель напротив, чтобы номер был виден и вводишь его.
А вот с терминалом №2 все плохо - панель напротив не работает,всегда черный экран. Я хочу туда потом добавить иконку, типа сломано. Поэтому номер для терминала №2 отображается на дисплее напротив терминала №1, а он не виден. Выйти из комнаты, чтобы запомнить номер, не получится - когда проходишь мимо терминала, он сбрасывается.
Решение - вспомнить, что в предыщем уровне было зеркало, прикрепить его к вращающейся панели, покрутить, как надо, и увидеть код через отражение. В видео это в конце сделано.
А что, тут нельзя показывать свои прогрессы? Ну ладно, запилю тред, как только демо будет готова
Они тебе завидуют
Конечно можно, и даже нужно, но так-же надо чтобы какая то инфа была об игре со стороны разработки на юнити, иначе смысл постить о разработке игры, но не рассказывать как и что делаешь на этом движке в треде движка?
Чуть чуть головку включай прежде чем постить, это просто дружеский совет.
>очень сложными головоломками
Да ну? И даже без квестов в стиле "через полпятнадцатого слева отнимание пять" как у нульча было? Кинешь ссылку, когда будет готово?
Постить рили есть смысл в субшоте или в отдельном треде.
Нужно чтобы гг клал доску/лестницу на два ящика (на которых есть NavMesh) и на этой доске появлялся NavMesh
по идее
NavMeshSurface surface;
surface.BuildNavMesh();
Но по моему ты офигеешь как это будет лагать
Кароч, в юнити float очень трудно "поймать" в точных значениях.
Не знаю что у тебя там за углы, но скорей всего он при преобразовании в int округляет до 179 или 181.
Тут либо ебаться с округлением float до большего/меньшего значения (179.00001 округлять до 180), либо прописать
if(угол_во_float >= 180)
никогда не получай углы через transform.eulerAngles
Потому что один и тот же поворот можно двумя разными способами получить
Хуйня в том что такого быть не может тк угол крутится по целым числам
>если на флажок, то персонаж первые несколько кадров дрочит
Там где переход(стрелочка) из Idle в Walk убери галочку Has Exit Time.
А вообще на ютубе есть подробные разборы аниматора. Можешь еще посмотреть васянов, которые пилят свои 3д залупы
if (bool) Do(); - нет, я так не делаю
if (bool)
Do(); - тоже нет
if (bool)
{
Do(); - вот так заебись
}
Кароч если доска лежит в сцене сразу, то все ок, если инстанциировать, то агент не видит "новый" навмеш, ходит тока по старому.
Надо как-то обновить данные по NavMesh у агента или типа того. Как - хз.
У тебя юнька какого года, какой там навмеш? Запекает по статику или объекты с компонентом?
Доску спавнишь, делаешь её статиком/даёшь компонент?
Попробуй положить доску и запечь через какое то время, типа, пол секунды
почему в 2023 возникают такие проблемы? в чём проблема хрюнити? разве нельзя сделать уже сразу готовое и рабочее на 100% решение
> Как мне получить ровно ту хуйню что написана в инспекторе?
Никак.
Поэтому углы тебе надо хранить самостоятельно и заносить их в трансформ.
он имел ввиду подобную залупу
>как его сейчас расставляют
https://ru.wikipedia.org/wiki/Адаптивный_веб-дизайн
В игорях всё то же самое, только через велосипеды.
Какая логика была в том, чтобы юзать сраные кватернионы вместо нормальных углов?
попробуй в этой куче кала покопаться, может что-то интересное для себя найдёшь
https://github.com/Unity-Technologies/NavMeshComponents
зарепортил в МВД РФ
Ты можешь использовать pyypl. Я через их карту всякую херню в интернете оплачиваю. Единственное, там не подойдёт обычный российский паспорт. Нужен именно загранпаспорт.
>спокойно обойтись бесплатной версией?
Уже лет 5 можно обходится бесплатной, всё тоже самое.
Раньше во времена динозавров ставили кряк чтоб получить полный функционал, потом только чтоб тему на темную менять, сейчас смысла нет от слова совсем.
Из кряков есть смысл накатывать только отключатор начальной картинки от самих юников.
Понял, спасибо.
> Раньше во времена динозавров ставили кряк чтоб получить полный функционал
Чтобы получить Темную тему
>Чтобы получить Темную тему
Жопой читаешь?
>Раньше во времена динозавров ставили кряк чтоб получить полный функционал
>потом только чтоб тему на темную менять
Чел блядь..
Если бы был тупой, то ее бы не было
Я все храню в StreamingAssets в txt-файле.
Он парсится на доступные языки (верхняя строчка) и они добавится в выпадающий список при запуске игры.
Захотел добавить French - пишешь в верхней строчке, чтобы получилось
English|Русский|French
и добавляешь слова
ng|New game|Новая игра|Le Novaya Igra
(ng - это идентификатор, Localization.GetText("ng"))
В юните есть localization package, я его некоторое время, но для меня он слишком навороченный и в нем переодически надо копаться на уровне исходников, и разве он позволяет сторонним челикам добавлять свой язык даже когда игра вышла таким простым путем, как правка txt файла?
Храню в скриптах, выставляю нужный перевод по значению статик переменной:
if (MenuBattle.language == 1)
{
text_1.text = "" + item_l1 + " (Активируемый предмет, заряды: " + Weapons.weap67_2 + " )";
}
if (MenuBattle.language == 2)
{
text_1.text = "" + item_l2 + " (Active item, charges: " + Weapons.weap67_2 + " )";
}
Я храню в JSON. Там можно указывать доп. параметры для plural form.
Тебе не обязательно весь перевод хранить в одном файле. Это неудобно. Особенно, если ты отдашь перевод на аутсорс. Ты можешь добавить папку Locale и просто загружать все файлы оттуда. Название файлы будет названием языка. То есть будут: English.txt, Русский.txt и так далее.
I2 Localization, но там данные хранятся в со, поэтому очевидно при мердже проблемы, которые тяжко фиксятся
Думаю написать свой калыч для локализации, чтобы был кастомный редактор который грузит и сохраняет данные в жсон и дальше их можно было в игру вставлять
>то сколько времени, денег и людей в команде
Лет пять, первоначально рублей миллиардов десять, человек сто. А что есть предложения?
есть два бюджета разработки на маркетинг? нет? ну вот и соси жопу, вне зависимости от вбуханных денег
>Как бы вы организовали процессы?
Есть такое понятие паплайн разработки игры. https://blog.skillfactory.ru/glossary/pajplajn/
В предпродакшене есть пункт - Расчет денежных, материальных и людских ресурсов для разработки.
Как приблизительно рассчитывают можно почитать https://dtf.ru/gamedevclub/771563-kruglyy-stol-kak-rasschitat-byudzhet-na-sozdanie-svoey-indi-igry
Да, примерно так оценивают. Плюс огромная команда разработчиков.
Да, я в курсе. Сам охуел когда гуглил. Но в этом-то и смысл мысленного эксперимента. Это как, допустим, я посчитал бы сам сколько бы мне стоило переснять знаменитый рекламный ролик Кока-колы в музее. Я бы смог переснять без потери качества, минимум, в 15 раз дешевле. Так как я в теме.
Вот тут так же
>>82608
Да, спасибо за ссылки. Я в курсе пайалайна тоже. Сам занимаюсь видеопродакшеном с большой командой. Но суть вопроса в мысленном эксперименте. Вы же сами для себя не станете делать всё как там написано. Много чего оптимизируете и найдёте альт варианты
>Но суть вопроса в мысленном эксперименте.
Так я вот мысленно проанализировав и получил >>82562
Вполне себе бьется с первоначальным бюджетом и командой разработки геншина.
>оптимизируете
Так это не работает. Будет больше, меньше точно не будет.
Можно глянуть на пример создания известной игры "Смута", где государство выделило 230млн рублей, а они за полгода уже потратили 500млн.
> Да, я в курсе. Сам охуел когда гуглил. Но в этом-то и смысл мысленного эксперимента. Это как, допустим, я посчитал бы сам сколько бы мне стоило переснять знаменитый рекламный ролик Кока-колы в музее. Я бы смог переснять без потери качества, минимум, в 15 раз дешевле. Так как я в теме.
> Вот тут так же
На самом деле охуевать там нечего, в игре большой бесшовный мир, много механик, много визуала, отличная оптимизация.
Причем стоит отметить, что визуальный стиль своеобразный(=были потрачены усилия и немало итераций концептов чтобы найти идеал), персонажи все и анимации реально качественные(=опять же были потрачены ресурсы на пробы и ошибки для каждого персонажа).
> Можно глянуть на пример создания известной игры "Смута", где государство выделило 230млн рублей, а они за полгода уже потратили 500млн.
Так там игры нет еще никакой, не известно что они уже сделали, и что в итоге хотят получить
Так то ролики разработки внушают оптимизм.
Да это хуйня полная лол, какой оптимизм
Это просто такая фишка уе, что полторы кат сцены санимировал, сделал ландшафт(готовый) и расставил готовые генерируемые деревья, настроил кое как освещение и все такие вааау, хотя работы на это потрачено очень мало и все самое сложное(да и вообще все) впереди. Но щас это уже не особо работает, и в данном случае графон они совсем уж нихуя не настроили в большей части сцен.
Про геймплей промолчу, его считай нет пока.
Но я не говорю что будет провал - пока нихуч не понятно, просто пока ничего не показали, что заслуживает анимания и показывает какую-то ощутимую вложенную работу или решенную технически сложную задачу.
Говно какое-то.
1. Шрифты говно. Заголовок читается СУИТА. Ещё эти непонятные шутки снизу "мы хотели влепить сюда свастику, но побоялись делать это явно".
2. Брёвна, домики - всё пластиково-гладкое и чистое, в реальности там всё засрано должно быть.
3. Люди ходят и бегают, будто наложили в штаны.
4. ГУЙ и геймплей - как будто игрока пытаются макнуть головой в бочку с несвежим дарк соулс.
>Сам занимаюсь видеопродакшеном с большой командой
выit тебе отвечал. уточню, игра не кинчик, процессы только кажутся похожими, сам из этого бэкгаунда. тебе нужно ориентироваться на GRIS брать графоном а не гачей
Да тут кадры из слитой альфы, так что всё может быть подругому
>в реальности
Чел... какая реальность в художественом произведении и тем более в игре?..
> бочку с несвежим дарк соулс.
Да тупо типикал европейская рпгэха. Тип в готике, руине, ведьмаке 3 тоже самое.
>где государство выделило 230млн рублей, а они за полгода уже потратили 500млн.
Да государство даёт им деньги на основе отчётов о готовности. Там больше 500 млн выделили за всё это время
Хуита, игра кал. В техническом плане тоже дерьмо.
У меня пиксельная 2d игра, и в ней есть игровая поверхность, которая делится на зоны. И вот мне надо это как-то визуализировать, чтобы и для дебага было удобно и вообще в игре это тоже отображать, для игрока. Я с шейдерами не разу не работал, это как? Можешь подробнее объяснить.
>Разработка игр на Unity 2018 за 24 часа Майка Гейга
а где отзывы глянуть? 600р норм цена за цифровое издание, но не хочу ещё одну книгу где всё дотошно объясняется, а потом в какой-то момент непонятно что откуда и куда и не охуел ли автор проебав какой-то момент.
как-то этот момент странно выглядит, будто мухоморов объелся и куда-то несётся в кислотном трипе
Храню в tsv, оставь контакты и скину скрипты
Ты хуйню написал, вопрос же не в юнити. Весь функционал юнити тебе доступен вне зависимости от страны проживания. Вопрос в том, что ты хочешь делать на нем и где выкладываться.
https://youtu.be/dR4IuN2tF78
О, мудрейший, могут ли быть проблемы с оплатой покупкой ассетов и если компания-разработчик решит специально мешать пользоваться своим движком тем кто находится в РФ?
Если ты за год не научился обходить санкционные ограничения, то это смешно.
Если ты настолько мнительный дебил, то пользуйся Фалька Енжин. У него и ассеты бесплатные можно скачать.
лучше своё тупое ебало скинь, потому что это уровень кодинга этой залупы
так и знал что найдётся чьмонышь, который и тут гнилую отмазу выдвинет))))
На ассеты пох - есть слитые, есть посредники для покупки, есть другие площадки для ассетов, в крайнем случае можно оформить карту казахскую какую-нибудь если очень надо
> если компания-разработчик решит специально мешать пользоваться своим движком тем кто находится в РФ?
Это невозможно
>>82887
Ты думаешь впринципе не о том - главная проблема это то, что с работой на юнити в рашке щас очень хуево, хуже чем по другим направлениям, поэтому первые 1-2 года придется выживать на соротыгу в месяц, ну или две соротыги, а до уровня реального наносека надо минимум 3 года расти, в отличии от какого-нибудь бекенда, который тоже просел после гойды, но не настолько сильно
Это лишь подсказка на заданный вопрос, так что успокойся чмоня
Вроде круто, но честно говоря лень разбираться. Ебашу лапшу в сэйв файл.
public void OnPointerEnter(PointerEventData eventData)
{
x = true; Invoke("Delay", 5f);
}
public void OnPointerExit(PointerEventData eventData)
{
x = false; a = false;
}
void Delay()
{
if (x) { a = true; }
}
Как это в принципе возможно? Микрофриз редактора, во время которого курсор отошел с объекта и он его не заметил. Или событие отвода курсора вклинилось в момент выполнения метода Delay(), когда проверка if (x) уже прошла, но a = true; еще не было выполнено?
Обычные Юнити-проблемы. Событие OnPointerExit не было исполнено.
Все события по рейкастам, коллизиям и прочему работают не со 100% вероятностью. Надо добавлять костыли если хочешь чтобы 100% четко все работало.
Пример:
class Hehe
{
public delegate void Kekeke();
public List<Kekeke> delegates = new List<Kekeke>();
}
Hehe hehe = new Hehe();
class Lala
{
public Lala() {hehe.delegates.add(Puk)}
void Puk() {}
}
Lala lala = new Lala();
// lala был уничтожен, что там с листом delegates?
bump
>Событие OnPointerExit не было исполнено
да, тоже думаю, что так
все же это не так страшно, как если бы обработка события шло параллельно методу вызванному инвоком, тогда уже вообще пиздец бы был
ЗЫ
То есть, может такое быть, что длина листа уменьшится, из-за того, что объект в списке был собран сборщиком мусора?
Ее кто только не обоссывал
> если экземплят объекта, который добавил свой метод в delegates, был уничтожен - удалится ли его делагат-функция из листа
Нет
> // lala был уничтожен
Уничтожен как? Гарбедж коллектором?
Кстати код что ты написал - нерабочий, возможно ты пока его сочинял упустил какую-то деталь, которая есть в твоем реальном коде и из-за которой у тебя проблемы
Pyypl возможно сработает. Ассеты покупать не пробовал, но чат гпт смог оплатить в июне.
есть вот это, но нужно очко порвать, чтобы запустить
https://assetstore.unity.com/packages/essentials/tutorial-projects/enemies-hdrp-248975
почему справа у спрайта лестницы пропадают, если качество хуже?
интерполяция
Как в таких вертикальных платформерах происходит загрузка уровня/уровней? Мир игры разделен на вертикальные слои и слои асинхронно подгружаются по мере продвижения игрока вверх?
А что происходит когда игрок падает сверху и летит свободно вниз? Как игра будет успевать грузить данные?
Иду сейчас по видео-курсу. Три дня бичевал. Возвращаюсь к проекту и появилась проблема с интерфейсом.
Выбираю материал, меняю любой параметр и масштаб превьюшки с шаром улетает куда-то вдаль. Переключаешься на другой материал и обратно, норм. Но каждый раз меняешь чт-то и улетает..
И чего делать..
Это баг или фича?
Петух. Посоветовал мне все то же самое, но с Job System.
То как решить проблему слишком быстрого движения игрока с загрузкой и выгрузкой большого количества сущностей ты конечно же не знаешь.
>Может показаться, что такой объем информации будет трудновато переварить,но как только вы чуть лучше познакомитесь с основами текстур, шейдеров и материалов, вы увидите, что значение параметра Smoothness вашего материала станет приближаться к 1.
это шутка была?
ты бы сразу сказал, что лох безигорный, я бы тебя говное ебаное проигнорировал
Компания Unity объявила об удалении из своего магазина ассетов материалов, созданных студией Atlas. Причина проста — партнеры уверяли, что весь контент создан ИИ, однако некоторые из ассетов оказались крадеными.
в стимчанском порнушный нейро кал тоже банить начали
Буду дико благодарен
1200р!
Майк Гейг, плез.
Короче, чтобы везде не рефактирить, я бы хотел в OnDisable компонента "А" отписаться от всего, на что он был подписан. Но от подписок на лямбды не избавиться, не так ли
Хорошим тоном является всегда отписываться, удобнее это делать в OnEnable(), OnDisable() соответственно.
> Разработка игр на Unity 2018 за 24 часа Майка Гейга
cаму книгу нашёл, а где файлы с прилагаемого дисочка взять..
отбой, они по ссылке в книге оказывается(кто вообще читает предисловия).
да, спасибо, мне такая мысль почему-то только после написания поста в тред пришла (Как-то часто так случается).
>levelProgress.changed.RemoveAllListeners()
Это уберет все подписки на changed.
И раз такое дело, надо подушить тебя теорией, потому что такие вещи надо понимать
Ты когда дешаешь levelProgress.changed.RemoveAllListeners() - просто вызываешь метод без аргументов. Как по твоему внутри этого метода можно узнать, что его вызывал компонент А? Ответ - никак.
>>84065
С UniRX такое удобнее делать.
>>84096
Норм, но обязательно практикуйся, а не просто читай. Пробуй пкреписать примеры оттуда и реально понять как они работают, что-то поменять, поэксперементировать.
> Чот поменялось что ли за время с момента выпуска книги?
Ну смотри. Полное название этой книги звучит так:
>Разработка игр на Unity 2018 за 24 часа
То есть, книга написана на версию 2018. Актуальная версия Юнити - 2022.3. Между выпусками - четыре года. Много ли изменилось с тех пор? Да дохуя всего.
А про материал не знаю.
Так у тебя навеоное проект urp
я и спросил - чот поменялось?
Пытался так менять
this.Rbody.AddForce(Vector3.up 1000000, ForceMode.Impulse);
и
prokectile.Rbody.velocity = Vector3.up 1000;
(нормальные вектора тоже ставил).
При это объект не кинематик. Прикладываю картинку с настройками ригидбоди
Не могу нагуглить в каком направлении копать, надо не найти тупо один раз ближайшего, а именно чтобы все активные юниты нашли ближайшего
У файтера есть метод, где обрабатывается получение урона.
Но нанесение урона сделано так, что пуля находит родительский класс енеми и меняет его переменную damage, потом уже в файтере происходит if (damage!=0f) {...}
Я понимаю, что это не лучшее решение, а как правильно? Как сделать так, чтобы метод в дочернем вызывался при том, что пуля попадает в родительский?
троттлинг процессора или что?
У моба есть методы (найти ближайшую цель, получить урон,).
И у моба есть поведение (патрулировать, преследовать, етц).
С точки зрения ООПидорства, лучше запихать все это в один скрипт или сделать отдельно скрипт с параметрами и отдельно с поведением/методами, с наследованием параметров?
Что значит "за одну джобу"?
Вот кривой скрипт поиска ближайшей цели
GameObject [] enemy;
GameObject closest;
public string nearest;
void Start() {
enemy = GameObject.FindGameObjectsWithTag("Enemy");
}
GameObject FindClosestEnemy() {
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in enemy) {
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if(curDistance< distance) {
closest = go;
distance = curDistance;
}
}
return closest;
}
void Update() {
nearest =FindClosestEnemy().name;
}
Что значит "за одну джобу"?
Вот кривой скрипт поиска ближайшей цели
GameObject [] enemy;
GameObject closest;
public string nearest;
void Start() {
enemy = GameObject.FindGameObjectsWithTag("Enemy");
}
GameObject FindClosestEnemy() {
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in enemy) {
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if(curDistance< distance) {
closest = go;
distance = curDistance;
}
}
return closest;
}
void Update() {
nearest =FindClosestEnemy().name;
}
> Что значит "за одну джобу"?
Job System знаешь?
> скрипт
Это дефолтный поиск ближайшего, я так и сделал, и у меня вот этот код (только файнд гейм обджекта нет, так как есть лист всех врагов/союзников) повторяется на 200 противниках и 200 союзниках и чет не очень оптимизировано выглядит. Я думаю, должен быть более правильный подход.
Вот это выглядит как что то полезное, но почему опять они не отделяют сраный екс от джобов?
Заметил что некоторые сайты покупают ассеты, а потом продают к ним доступ через платные файлообменники.
Я бы даже за платный файлообменник заплатил, покупать ассеты за сотни денег жаба душит.
Тогда будет 5 классов по 100 строк, вместо одного...
Зависит от проекта(где бы ты в теории что мог бы переиспользовать сейчас и в будущем) и от его архитектуры
Но это точно не один класс должен быть в любом случае
Какая именно помойка?
576x1024, 0:39
void Update()
{ if (Input.GetKeyDown(KeyCode.Escape && Panel.activeSelf)) { Exit(); } }
Еще есть отдельный скрипт который при нажатии Esc проверяет состояние всех панелей и если они все неактивны, то вызывает плашку с вопросом о выходе из игры. Вроде бы все просто...
Но прикол в том, что все эти скрипты обрабатываются в хуй знает какой последовательности. И при единичном нажатии Esc, может сначала произойти закрытие открытой панели и в этом же тике пройдет проверка, что все панели закрыты и сразу же вылетит панелька для выхода из игры. А может сработать как задумано и единичное нажатие Esc только закроет открытую панель. А для выхода надо будет нажать Esc еще раз.
Как вообще обходится такая специфика движка? Да, знаю, что можно использовать задержки, но там тоже есть пиздец какой большой подводный камень
А какой кнопкой можно эти стрелки посередине модельки сделать?
меня эта хрень тоже бесит
> Как вообще обходится такая специфика движка?
Грамотной архитектурой.
Раз есть "гонка", значит что нужно сделать? Правильно, сделать проверку нажатия и выбор нужной логики в одном месте.
Выдели только капсуль
Создай одну функцию, которая вызывается при нажатии и сначала проходи по всем панелям и проверяй их. Если они открыты - закрывай, если ни одной закрытой не было - там же вызывай выход из игры.
Выделяя несколько объектов стрелки рисуются где-то между ними, очевидно что у других двух координаты хуй знает где на сцене, сделай у них по 0.0.0.
>Грамотной архитектурой
К сожалению, любая грамотная архитектура превращается в полный пиздец, когда начинаешь вносить в нее незапланированные изначально изменения. А такие изменения неизбежны, если только ты не делаешь точный клон чего-то по заранее известному шаблону
>>84723
>Создай одну функцию
управление отдельными панелями раскидано по отдельным классам и анально огорожено от внешнего доступа (принцип ООПа, да это он самый)
В итоге сделал костыль на проверку с микрозадержкой для кнопки выхода. Но хотелось бы каких-нибудь индексов для скриптов чтобы задавать им очередность выполнения как раз для таких случаев
>Но хотелось бы каких-нибудь индексов для скриптов чтобы задавать им очередность выполнения как раз для таких случаев
Так вроде можно настроить выполнение
https://docs.unity3d.com/Manual/class-MonoManager.html
Чел для кого придумали менеджеры?
Зачем ты обрабатываешь нажатия в разных объектах?
У тебя буквально их пара должна быть, для интерфейса, для игрового объекта и если уж нужно что-то специфичное еще для чего-то. Всё.
Всё делается удобно и красивого в одном скрипте в котором хранятся ссылки на следующие объекты в которых идёт принятие сигнала.
>Зачем ты обрабатываешь нажатия в разных объектах?
Ну, например, у меня в панели старт есть еще 4 подпанели которые тоже должны реагировать на нажатие Esc причем со своей логикой, т.к. там есть и сетевое подключение, которое нужно еще грамотно разорвать
Я понимаю, что в случае простой игры проще запихнуть все в 1 менеджер, но тут не тот случай. Здесь же я просто охуею обеспечивать доступ с десяткам параметров отдельных панелей, которые к тому же имеют разные состояния во времени
>>84732
ага спасиб, кажется то что надо
> К сожалению, любая грамотная архитектура превращается в полный пиздец, когда начинаешь вносить в нее незапланированные изначально изменения. А такие изменения неизбежны, если только ты не делаешь точный клон чего-то по заранее известному шаблону
Неа
> управление отдельными панелями раскидано по отдельным классам и анально огорожено от внешнего доступа (принцип ООПа, да это он самый)
То что ты инкапсулировал и сделал классы с единственной ответственностью, еще не значит, что ты сделал правильные классы, более того есть даже индикатор того, что сделал ты неправильно(костыли с задержкой)
> В итоге сделал костыль на проверку с микрозадержкой для кнопки выхода.
Пиздец
>>84732
Пиздец х2
>еще не значит, что ты сделал правильные классы
У меня соло разработка. Тут не требуются "правильные" классы с точки зрения общепринятых стандартов, чтобы пришел другой разраб и сразу все понял, а третий разраб не смог куда-то там залезть и для этого нужно тотально все огородить 10 раз.
Мне нужен рабочий код, оптимизированный, без багов, простой и понятный лично для меня. Костыли есть, но только там где без них реально никак - они жестко привязаны к нужному месту и подробно описаны в комментариях. Да в идеале нужен "правильный" код, но в соло разработке на него нет времени, к сожалению
>Ну, например, у меня в панели старт есть еще 4 подпанели которые тоже должны реагировать на нажатие Esc причем со своей логикой
Не вижу никаких проблем, вообще странно что по твоему мнению менеджеры где всё по порядку идёт и правильно, это не удобнее чем куча всего что само реагирует и обрабатывает это дело, да еще и со своей логикой.
>что в случае простой игры проще запихнуть все в 1 менеджер
Как раз чем игра шире, тем всё должно быть структуирование, и это маленькие игры могут позволить чтобы всё работало как угодно, откуда угодно.
На мой взгляд у тебя большие проблемы с архитектурой, и ты постепенно накидуешь новые уровни абстракции без рефакторинга старого кода.
Да нет же, правильный код наоборот сокращает время написания и уменьшает количество багов
>панель при нажатии Esc проверяет свое состояние в апдейте и если открыта, то закрывается
А в юнити нельзя шорткаты для кнопок делать? И потом событие срабатывания кнопки обрабатывать.
Изучи ошибки. Кликай на каждую и читай что там написано. Когда увидишь реальную причину - гугли её.
Целиуом ошибку в гугл вставлять не надо, скорее всего тебе надо искать что-то типа gradle failed with error: и там будет реальная ошибка написана.
>как ты сумел запустить юнити с таким айкью?
Какое дружелюбное юнити-cumмьюнити...
>>84922
>Exception while marshalling
>Q:\Program Files\Unity Editor\...\package.xml
>Probably the SDK is read-only
Первожу на русский:
>Исключение во время маршалинга файла...
https://ru.wikipedia.org/wiki/Маршалинг
>Вероятно, папка с SDK только для чтения
Причина: в Windows папка Program Files закрыта от записи простым пользователям.
Решения:
1. Переустановить в другую папку, типа Q:\Unity\...
2. Запускать от имени администратора ПК.
3. Зайти в свойства папки Unity Editor и на вкладке безопасности разрешить запись для пользователей.
мимо из самого дружелюбного треда /gd/
>Какое дружелюбное юнити-cumмьюнити...
Ну он прав, я просто от бессилия пост сделал, заебался если честно, постоянно отлавливал ошибки, и вроде все заработало, решил попробовать билд сделать, и на тебе какая то пиздота вылезла.
Права я выдал, но полезли другие ошибки.
Ну сейчас гуглю с лицом лягушки, даже чат гпт подрубил...
>а зачем ты обновлялся до 2022 ? вот просто нахуя?
Потому что она вылезла как рекомендованная? Я юнити ковырять вчера только начал.
Окей, на какой сейчас версии все сидят? На 2021?
>>84963
>Чел я ж написал что делать
Я делаю, делал. Лог говорит об синтаксических ошибках в джава коде, но это абсурд, я же его не редактировал.
Да, я сейчас все переустанавливаю, посмотрим что будет.
да, качай 2021, это классика хрюнити, стабильной 2022.3 станет может быть через несколько месяцев
Лол, я скачал 2023 версию, и на ней проект компильнулся вообще без проблем. Может на 2023 сидеть тогда уж?
не-не-не 2023 уже перебор, почитай отличия версий и если тебе не нужны какие-то штуки специфичные для определённых версий то качай 2021
Ну вроде нагуглил.
https://forum.unity.com/threads/android-build-issue-switching-from-2021-3-to-2022-3.1443835/
Вот здесь это починил, сделал тоже самое, но не завелось - ругалось на \.android\debug.keystore , удалил этот файл и сбилдился проект.
Победа, но осадок остался.
Теперь что получается, буквально после каждого пука в едиторе билдить и проверять что все работает?
Вот здесь это починили*
Скорее всего это тролли.
Да не трясись ты.
> Победа, но осадок остался.
Базовичок, малаца
> Теперь что получается, буквально после каждого пука в едиторе билдить и проверять что все работает?
Я очень много ебался со всякими проблемами с билдами под андроид, могу сразу посоветовать вот что:
1. Билдить после каждого пука - не надо. Когда будут проблемы - тогда решишь. А будут они только когда разные сдк будешь наваливать.
2. Иногда просто нужно очистить кеш гредла в аппдате или удалить папку library
3. Иногда бывают конфликты или проблемы нативных либ которые подтягиваются под разные сдк, в этом случае надо кастомные гредл файлы добавить и там прописать какие-то настройки или какую аерсию лиюы подтягивать - тут уж в зависимости от проблем надо гуглить что именно, как правило в консоли в gradle build failed надо смотреть че ему не нравитсч и гуглить это
4. Сразу лучше создай тестовый кейстор для билдов, через паблишинг настройки во вкладке плеер. Иногда могут быть проблемы без этого
Опасно, но можно.
В 2021 все основные проблемы только к 2021.3.18 примерно пофиксили. 2022 когда последний раз чекал была поломана, но это до релиза лтс было
Окей, а нахуя ты лезишь в геймдев тогда? Или ты думаешь твоя очевидная ошибка это вообще хоть какой-то челлендж при разработке?
Удел таких овощей это максимум тестером быть.
Рот закрой. Люди с образованием психолога, на сраном втором констракте делают и успешно продают игры.
Со временем он разберётся.
мимо
Хочу спиздить ознакомиться с алгоритмом расчета, но пока не могу найти такого, только статьи ученых-моченых для понимания которых надо прочитать еще сотню статей
>Читать то хоть умеешь?)
Тупая чушка. Если ошибку можно загуглить она очевидная. А вот когда ты встретишься с чем-то специфичным что встречалось только у тебя, то вот тогда, и будет та проблема с которой стоит подумать.
Пиздец, откуда эти животные по вылазили? Из какого загона?
Тупо в цикле у меня не получается
foreach (var (rma, tempChunkData) in
SystemAPI.Query<RenderMeshArray, RefRO<TempChunkData>>()
.WithAll<TempChunkMeshTag>()) {
Texture2D tempTexture = getTexture2D(tempStorage.T,
tempChunkData.ValueRO.startAtPosition,
tempChunkData.ValueRO.endAtPosition);
Material mat = (Material) rma.Materials.GetValue(0);
mat.SetTexture("_TempTexture", tempTexture);
tempTexture.Apply();
}
C этим разобрался - оказалось что если спамить объекты через ецс, то у них общий материал, который потом хуй поменяешь. Как ворк араунд - создавать разные материалы на этапе создания и потом уже совать в них текстуру.
Знаю что можно послать сразу несколько текстур на один материал, а вот примеров чтоб несколько на разные материалы не видел.
Если ты не можешь решить задачу - то ты делаешь что-то не так. В подавляющем большинстве случаев не требуется удалять гланды через анус. Сделай в своём спавнере массив материалов и выбирай из него.
И почему же 23 это перебор?
У него статы загружаются из сейв файла
Но даже если у него 0 хп и он мертвый он все равно появляется, потому что он стоит в эдиторе
Могу я как-нибудь сделать так, чтобы моб был в эдиторе, но появлялся только при определенном условии.
Структура объектов у меня следующая:
1. TestScene
1.1. Enemies
1.1.1. Dummy
Пока что из возможных вариантов:
1. Уничтожать объект, если он не подходит под условие (кринж)
2. Скрывать объект, если оне подходит под условие (кринж поменбше)
3. Писать в JSONe позицию существа и остальную инфу, затем создавать только живых (совсем маленький кринж жестб)
Итого все варианты кринжовые, последний приемлемый, но в хочется взаимодействовать с гуи, а не писать все ручками.
Так флаги отображения и здоровья это разные структуры.
Ты определись, у тебя здоровье влияет на то что моб существует или нет.
Обычно есть отдельный флаг видимости и создания. Ты либо создаешь моба и скрывашеь его, либо нет. А здоровье какое это вообще должно быть фиолетово, это стат из более высокоуровневой архитектуры не влияющие на состояние моба.
>Ты либо создаешь моба и скрывашеь его, либо нет
Разве он не будет прогружен и находится в памяти на сцене все время?
Чем тебе не нравится раскидывать по уровню не мобов, а спавн поинты для этих мобов? Я бы сделал максимально лениво, чтобы спавнер мобов находил в сцене объекты с нужным компонентом, а в самом компоненте какой-нибудь дропдаун список с типом моба, хп и прочей хуитой. И без единого апдейта.
А можно сделать так, чтобы было видно в эдиторе куда я поставил НПЦ? Я могу задать им позицию и спавнить префабы, это не проблема, но они будут появлять только в рантайме.
Можно отрисовывать гизмо по позициям, но возможно существуют решения попроще
Так а чем тебя гизмо не устраивают?
https://docs.unity3d.com/ScriptReference/Gizmos.DrawMesh.html
Есть даже вот такая хуйня. Только сразу предупрежу, что там с материалами хуйня, не переназначишь с дефолтных гизмовских.
Плюс у меня есть решение "через жопу". Тупо ставишь по уровню нпц и не паришься. Перед билдом ждёшь особую кнопку, скрипт проходится по уровню, собирает данные о позиции каждого нпц и дестроит префаб. Муторно.
При нажатии на Enter с какого-то хуя также происходит нажатие на последний нажатый объект с компонентом Button. Даже не на тот на котором стоит курсор, а тупо на любой последний.
Вопрос - нахуя это сделано, нахуя это сделано по умолчанию и как это выключить нахуй? Кому вообще пришла мысль прописать это в коде движка для срабатывания на автомате? Просто ебаное автоматическое срабатывание на нажатие кнопки, которого никто не просил. Что-за пиздец, блять.
потому что ты даун ёбаный и не разобрался в вопросе, эти кнопки по дефолту прописаны и на них реагирует инпут модуль
720x720, 0:28
Я бы мог понять, если бы при нажатии на Enter срабатывала та кнопка на которой курсор, но, блеать, не последняя нажатая. Не могу представить кому в голову пришла мысль сделать такое, причем сделать по умолчанию, сука. Просто в ахуе, въебали хуй пойми что на автомате, а я должен искать, где это говно выключать
А ты ещё пробел поклацай. Это сделано не просто так, а для реализации навигации по кнопкам через таб. После нажатия на твою кнопку она становится "выбранной", потому это всё и происходит. Сделано так буквально в каждой версии юнити-интерфейсов. У uielements есть, например, свойство focusable, которое можно выключить, чтобы это не срабатывало. Но если фокусейбл выключить у текст филда, то он вообще перестанет работать. Вот такая залупа эти каломенты. У старого гуя была опция в редакторе, которая позволяла выключать навигацию. C юи тулкитом даже не знаю, что посоветовать. Кроме, разве что, этого
https://docs.unity3d.com/Manual/UIE-Events-Handling.html
А, ну или да, выключить весь сабмит по энтеру\спейсу и радоваться, что просто охуеть.
>навигации по кнопкам через таб
Это было особенно популярно во времена расцвета текстовых РПГ и отсутствия компьютерных мышей, как таковых в природе. Нахуя они тащат этот анахронизм из версии в версию причем, блеать, во включенном по умолчанию виде для меня большая загадка. С учетом того, что игр где успешно реализована эта spoiler]сукаблять "фишка" едва ли больше процента. Я даже уверен, что разработчики хуевой тучи платформеров для стима, с удовольтвием бы отпиздили этого хранителя компьютерных традиций за одну только необходимость отвязывать в своих играх от кнопки прыжка всю ту хуиту, привязанную им по умолчанию к кнопке space.
Что особенно иронично - переключение через Tab у меня нихуя по умолчанию не работает даже в меню.
>разве что, этого https://docs.unity3d.com/Manual/UIE-Events-Handling.html
спасибо, но не уверен, что пока хочу глубоко в это нырять, т.к. все эти изменения режимов нажатия в дальнейшем могут потенциально привести к большим проблемам при портировании на устройства с тачпадом
>uielements есть, например, свойство focusable, которое можно выключить
Это интересно, у меня буквально UImage всего с двумя компонентами Image и Button. Где искать это focusable?
Кто то работал с этой фигней? Там можно как то кастомизировать "шанс" появления маркеров? К примеру если я хочу чтобы у меня было больше стен, потолок везде был. Как это сделать? В документации есть статья про паттерны, но там я так понял только про наложение еще одних маркеров к существующим.
>переключение через Tab у меня нихуя по умолчанию не работает даже в меню
Cтранно. Но похуй. Ещё советую тестировать весь гуй в билдах, а не редакторе. Так уж получается, что редактору поебать на настройки инпутэкшенов. Я прихуел в какой-то момент, когда в редакторе всё работало, а в билде не работал вообще весь гуй.
> могут потенциально привести к большим проблемам
Вряд ли на самом деле, но дело твоё. По идее, ты можешь в обработчике сабмита проверять, что сейчас выбрано и нажимать нужный анус.
>Где искать это focusable?
https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/script-SelectableNavigation.html
Но если максимально просто, то я бы ебанул
EventSystem.current.currentSelectedGameObject == null
И забил хуй на всё это говно.
Понимаю что именно для таких как я написана шапка - но может есть идеальный курс, где все очень хорошо разжевано?
Нету таких курсов, я к примеру неделю изучаю юнити, и просто беру и конкретно по задачам изучаю моменты.
Придумай для себя простую задачу, к примеру запилить демку в небольшой локации с мобильным тач управлением от 3 лица, изучай материал по этой теме, далее начни делать "мобов" и как с ними взаимодействовать оружием, это делой, и т.д.
Ты вообще для чего юнити хочешь изучать?
Хочу запилить свою Vampire Survivors, но с особенностями (возможно создам здесь тред, когда игра будет существовать хоть в каком-то виде) - и если она не стрельнет и не принесет мне миллионы долларов, то попробую с этим проектом найти работу.
Я учил фронтенд и бэкенд, (JS React и Java Spring), но ничего толком не написал.
Курсы по Java смотрел по многу раз и от разных учителей, смотрел курс по C# от Сакутина - так что мне понятно что происходит, когда пишу скрипт.
>>85560
https://www.youtube.com/watch?v=46xm13ZaabA&list=PLtosjGHWDab682nfZ1f6JSQ1cjap7Ieeb&index=3&ab_channel=Branno
Еще мне очень понравился данный курс, но он на Godot'е.
Спасибо, тебе тоже удачи.
>(правда они на английском)
ставь янд браузер там переводчик голоса есть, либо просто перевод титров используй в обычном браузере
ЧТоб когда игрок падает, камера не летела за ним в низ. Юзаю cinemachine, но чет не могу настроить зоны как надо. По идее надо чтоб dead zone была несимметрична и вниз уходила до конца экрана.
Как так сделать можно?
Ничего лучше дублирования игрока невидимой куклой которая скриптом идет только вверх не придумал
так добавь условие, позиция игрока ниже нового минимального уровня - отключаешь лок.
не понял, что ты имел в виду, но натолкнуло на мысль менять оффест, работает отлично выглядит не отлично
У тебя камера залочена следовать за персонажем, если он опускается ниже нового минимального уровня (с каждым прыжком ты его должен обновлять я полагаю), то просто открепляй её.
t.me/unity3d_ru
Да, Нинтендо знает.
Хм... Кидать снаряд с коллайдером, при столкновении спавнить декаль?
class Zalupa
{
public void CreatePosos() {
Instantiate(pososPrefab)
}
}
У меня открытый мир, а не кишка, поэтому вопрос стоит очень остро. Сразу скажу что геометрия у меня обычно статическая, проблемы возникают из-за количества объектов.
Вот в 2022 версии можно открыть файл, скопировать модельку, упростить ее и назвать _LOD1 и так далее. Тогда при импорте файла ЛОДы автоматически подтянутся. Вы так делаете? Или удобнее скачать какой-нибудь из плагинов для автоматических ЛОДов?
Далее вопрос с коллайдерами. По логике вещей можно самый последний ЛОД взять и сделать его convex mesh collider. Но форма бывает разная, convex не всегда нормально строится и производительность его все равно хуже чем у примитивов. Вы так делаете? Или вручную жопу рвете? Или используете что-то вроде Technie Collider Creator?
У меня вопрос. Хорошо мешь объединился, но как быть с коллизиями и коллайдерами? Например если объединить меш горы или дерева, то как движок различит, что дерево а что гора?
Гору с деревом объединять не надо это супер тупо
Понял, спасибо.
А в чем выгода Mesh Combiner по сравнению с обычным батчингом статики? https://docs.unity3d.com/Manual/static-batching.html Мне нужно именно статичные объекты оптимизировать.
Алсо, что используешь для коллайдеров?
>>86207
Думаю что движку похуй. У тебя же отдельные коллайдеры на все.
>Разработка игр на Unity 2018 за 24 часа Майка Гейга
Есть ссылка на скачивание? В гугле не могу найти
Код у тебя дерьмовый, но оценивается скорее способность решать задачи. Если ты можешь при помощи стрёмного кода сделать игру, которая будет работать, то ты вполне нормальный кодер. Как минимум для джуна. И явно не на 20к, а хотя бы 60-80.
Учитывая что половина кода со скринов написана не тобой а твоя половина выглядит сильно хуевее то да, более 20К давать тебе это преступление.
> человека
Можешь начать с gamedev.ru. Размести там резюме + откликайся на вакансии, которые там периодически размещают. Хай-лвл - это пойти на линкедин и добавить себе в контакты ХРюш, чтобы чаще выпадать в поиске.
Если тебе нужны были слова утешения то ты пришел не по адресу.
>в чем выгода Mesh Combiner по сравнению с обычным батчингом статики?
> пойти на линкедин и добавить себе в контакты ХРюш
Меня там никто вообще не доавбляет, даже пиксельные художники лоу тира.
Чисто по коду на 20к тянешь. Даже больше, вполне на 40к+ могут взять а теории.
1. Сделай хотя бы одну завершенную игру и выложи на итч/гугл плей/яндекс игры/стим/да куда хочешь, чтобы ты мог скинуть на нее ссылку.
2. Желательно выложи ее сурс код на гитхаб. Можно ссылку на гитхаб вставить в резюме, а можно не вставлять, и кидать только если попросят пример кода.
3. Долбись на хх в вакансии где указано 1-3 года опыта. Если опыта нет - можешь выдумать чтобы 1 год было, ну 3 месяца хотя бы, работу над своей игрой тоже впиши
>Неужели я пишу настолько плохой код, что не достоин работать больше чем за 20к?
КАК тебе могут платить 20к?
Я тупой слесарь в порту мне и то платят 50к, могут и больше но я по выходным не хочу работать. Но здесь человек, который впринципе понимает код получает меньше чем, чем.. да блядь у на уборщицы за 30у колучают
> Сделай хотя бы одну завершенную игру и выложи на итч/гугл плей/яндекс игры/стим/да куда хочешь, чтобы ты мог скинуть на нее ссылку.
Я выпустил 5 игр в гуглплей и одну из них в Стим. У самой популярной 15к загрузок, у другой 16к, у третьей 5к и о ней написали в новостях.
> Можно ссылку на гитхаб вставить в резюме
Она там есть. Но HR не переходят по ссылкам из резюме.
> Долбись на хх в вакансии где указано 1-3 года опыта.
Либо не отвечают, либо отправляют тестового - ботом. После выполнения тестового всегда молчат.
Ну 5 игр это заебись. Пиши себе год опыта и долбись везде.
> Она там есть. Но HR не переходят по ссылкам из резюме.
Переходят, но не сразу.
Сначала твое резюме должно пройти фильтр.
Потом оно бегло просматривается.
Потом оно подробнее просматривается, на этом этапе ссылки на игры и нужны. Если нихуя нет то это просто скип.
И дальше уже если все понравилось пока что будут собесы или тестовые.
Само собой, когда ищешь вакансии убирай фильтр по региону и кидай везде где удаленка
> Пиши себе год опыта и долбись везде.
У меня и так есть год опыта (коммерческого, в командах).
Тогда хуйня какая-то, странно
1280x720, 0:17
Может у тебя всратая фотка или вообще нет фотки. Хрюшки смотрят и понимают, что перед ними какой-то додик.
Чего? А как они представляют, ноулайферов?
Я просто подумывал перекатится с дно работки на галлеры к тёлочкам, но что то уже тоже начинаю сомневаться, стоит ли. Мало того что я туповат, так ещё и запил, как у Ростовского гопника.
Это решаемо.
Снимаешь самого себя в ломаном Тиктаке с фильтром болд гламур и нарезаешь с ролика фоточек для резюме.
Эйчарки тебе свои нюдсы вместо откликов слать будут.
> А как они представляют, ноулайферов
В смысле? Да, я ноулафйер, но я работал в компании (где не было HR) над мидкором, и там с этим пробелм не было. А 18-летние дуры строят из себя психологов
Парни расшифруйте что этот чед хотел сказать своим тернарным выражением?
motion = (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
типо этого?
if( (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z))
{
motion = motion 0.7f;
}
else
{
motion = motion * 1;
}
>motion = (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
ну за что калпилятор позволил выблядкам писать так по свински
Чет один говнолапшакод, но куча звездочек
https://github.com/topics/fps-game?l=c%23
Ты про синглтоны? Это понял, сейчас начинаю использовать Zenject. К слову, на той работе где у игры было миллион установок, всё было на синглтонах и DI не использовали.
А мой код HR не смотрят, они даже по ссылкам в резюме не переходят.
Вот например компонент управление персонажем. Согласно solid я должен сделать отдельные компоненты
1. MoveCharacter (параметр CharacterController, публичный метод SetMoveDirection()) - чисто для движения
2. LookCharacter (параметр CharacterController, публичный метод SetLookDirection()) - чисто для вращения
3. JumpCharacter (параметр CharacterController, публичный метод Jump())
4. RunCharacter (параметр CharacterController, публичный метод Run())
Не, ну один класс - одна логика.
И эти классы вообще не должны содержать внешнюю логику, то есть, туда не запихать проверку
if (!game.isPaused) DoThis()
> Больше интересно, нахуя так писать? Сам же себе усложняешь понимание в дальнейшем.
Это те же долбоебы которые устраивают фокусы с пре/пост инкрементами и декрементами и юзают любые хаки для сокращения написанного кода, потому что долбоебы
Я сколько не искал - ни разу не видел нормальный проект на гитхабе, одно говнище. А сэмплы от юнити еще хуже.
Хотя вроде говорят та последняя ецс демка с мультиплеером норм написана но я не чекал.
Ну, те компоненты что ты тут выдумал - это чисто твоя выдумка, это не единственный вариант проектирования по солиду в данной ситуации.
Более того, даже если делать так - все эти классы не обязаны быть компонентами, а должны быть тупа классами.
Ну и само собой должен быть управляющий класс выше, который менеджит текущюю стратегию поведения/вращения и реагирует на паузу.
>юзают любые хаки для сокращения написанного кода
Вот нахуя? Чисто выёбываться "смотри, как я могу"? Так регекспы любого такого лошка выебут и высушат. Сделать вид, что ты "про"? Так один хуй не про, лол, у тебя ускорение по трём осям умножается на скорость движения. Нажал W и начал падать быстрее, ну чё за хуйня, блядь?
Ну либо самозванцы которые выебываются этой хуйней перед новичками
Либо джунища которые думают что это заебись и не осознают подводные камни этой хуеты
Я даже не могу понять, что такое параметричарактертконтроллера лол. Сам то понял, что сказал? В целом описаная логика является какой-то мутной хуйней. В солиде нигде не сказано, что каждый пук должен быть классом.
Да мазафака, прикинь, проверку на паузу нужно делать в другом месте, потому что прикинь лол двигательный код вообще не ебет что такое пауза.
>параметричарактертконтроллера
[SerializedField]
CharacterController controller;
public void Look(Vector2 input) {
//Крутим переданный контроллр
}
В терминологии базовой разберись, пчел.
Ты прав, бег должен быть в movecharacter
Тогда и присед движение, и ползание, и лазание - это все движение. Все в один класс пихать? Ты ебанутый?
В runCharacter будет ссылка на moveCharacter, чтобы запустить moveCharacter.Speed(90000)
>это все движение
Да, это всё движение. Даже падение твоей жопы со стула - это движение.
>Все в один класс пихать?
А нахуя все состояния в один класс пихать? Ты что, ебанутый?
Дали ему state - бери, изучай, пользуйся. Нет, блядь, хочу жрать говно.
>В runCharacter будет ссылка на moveCharacter
Ты ебанутый.
>сраные ссаные обоссаные кододебилы соревнуются в своей кододебильности
кек лол хех мда
Почему это работает? Как он связал два разных скрипта лежащие на разных сценах?
Да хуйня это всё, у меня за последние два дня юнити крашнулся раз 10 на пустом месте, из-за этого твг дропнул, просто пиздец в ярости.
1280x720, 0:03
краши как-то ещё можно перетерпеть, но вот хуйня с пикрила даже перезаходом не фиксится
Она должна легко фиксится переносом проекта, скрипта или нужного элемента. В крайнем случаи переустановкой юнити с хабом, а вот внезапные краши сукаблядьебучаяхуйня которая может застать в любой момент.
Тоже было. Корраптятся файлы CurrentLayout-default.dwlt и CurrentMaximizeLayout.dwlt в папке библиотеки. Берёшь из проекта без глюка и радуешься жизни. Или полный реимпорт.
Не знаю, но у меня с годом опыта 100к в ооо рога и копыта без четкой организации грейдов
Можно и без аддитива кста. Но только если он не будет юзать унаследованные из монобеха методы, либо будет помечен донт дестрой он лоад
>>87026
Потому что в шарпе сборщик мусора - класс удаляется только когда на него ссылок нет
Загружаем сцену где на геймобжекте висит MainMenu, далее уничтожаем геймобжект(или выгружаем сцену что повлечет за собой его уничтожение) - ставится пометка что компонент уничтожен, но сам то класс не будет уничтожен пока на него ссылка есть. Поэтому можно коллить его методы. Но при сравнении с null он будет выдавать тру, потому что у MonoBehaviour перегружен метод сравнения для этого
Но это чисто в теории, чтобы ты понимал лайфтайм классов и почему "уничтоженный" экземпляр на самом деле продолжит сщуествовать но чисто в шарпе, вне поля зрения юнити, на практике так делать не надо.
Я английский уже сейчас знаю норм(B2-C1), но все равно хз как в англоязычный рынок вылезти. Те кто нанимает фулл ремоут разрабов(т.е. без обязательной релокации, а я не хочу релоцироваться) в основном ищут сеньоров у которых 5 лет опыта, а для тех у кого даже 3 года опыта почти ничего нет.
По крайней мере мне так показалось когда я чекал вакансии в сша/германии/франции/швеции/англии, но может я что-то не то или не там искал. Может быть есть те, кто не помечает свою вакансию как full remote а все равно готов взять тебя даже если ты в другой стране оформлен, но я пока не проверял.
Поэтому если нету многих лет опыта чтобы тебя прям хотели англоязычные кабаны нанять, то мне кажется реальнее свою игру сделать и издателя найти.
Мимо >>87065
Как я понимаю, коллайдер каждого активного объекта в сцене участвует в расчете физики. То есть даже если коллайдер статический и ни с кем не взаимодействует в этот момент.
Этак получается что любой mehs-коллайдер будет очень хуевым вариантом.
Не понятное поведение курсора при отключении его по клавише коавиатуры.
Сап аноны я опять проебал, кто знает почему курсор не отключается при нажатии на клавиатуре
При этом если просто нажать на кнопку мышкой продолжить игру курсор исчезает, но при нажатии ESC ничего не происходит.
2к баксов по актуальному курсу можешь просить.
Раньше можно было смотреть по https://ru.ingamejob.com/ru/salaries но сейчас там только ua
Еще можно glassdoor чекнуть, но там данных по геймдеву мало
А не, обосрался. Но, типа если весь код одинаковый, то очевидно дебагай непосредственно инпут.
да, и?
бери скилбоксящего программиста ИЛИ горящего экс-гуманитария с уклоном в гейм-дизайн и натаскивай под свои задачи, выращивай. а как ты хотел. движок движется к стагнации, рыночек порешал
>скиллбокс
Кто-то ещё покупает курсы у этих разводил? Лол. Я бы не стал брать лоха после скиллбокса, это же явный маркер, что человек долбоёб.
Крепкий это как? Скинь вакансию
Мониторю hh на тему удаленки с юнити, нет там вакансий на 4к баксов, максимум 200к рублей на нормальный проект и 250к на ванучий.
Я просто думаю, стоит ли заморачиваться уменьшением значения set pass calls, если у меня очень низкополигональные объект, но их много
Так самое смешное, что даже на такую ЗП не идут опытные разработчики. Сеньорам подавай уже 5-7 тысяч долларов. При этом они хотят, чтобы у них в подчинение было пару программистов хотя бы. Сами они нихуя толком не пишут.
Это от мидла до сеньора
нельзя
Можно, интеграция есть, хуё-моё. Юнити даже подзаебала, на этот говнорайдер по умолчанию плагин ставит, а на божественную визуалочку - нет.
Есть Item - капсула здоровья.
Игрок должен подойти - и когда он касается коллайдера Item, она исчезает, а в консоль выводится: "Капсула подобрана".
На капсуле - Capsule Collider. Когда галка Is Trigger включена - объект становится твердым и никуда не исчезает.
А когда выключена - нормально исчезает, сквозь него можно пройти, надпись в консоль выводится.
А в книге, по которой я учусь, написано что должно быть наоборот.
Почему так?
утка давай ты за щеку возьмёшь и выложишь видос
У меня OnCollisionEnter() - но когда меняю код на OnTriggerEnter(), вообще работать перестает.
Повесил Rigid Body на капсулу Item - теперь про включенной галочке Is Trigger капсула пропадает.
Но вот беда - и при выключенной галочке эта капсула тоже пропадает!
> Если, чисто теоретически, set pass calls 300, но вершин всего 5К в кадре - это плохо?
Да
> Я просто думаю, стоит ли заморачиваться уменьшением значения set pass calls, если у меня очень низкополигональные объект, но их много
Да
это ванучий проект
Я планирую написать команду TouchObject, с реквестом, дальше дописать логики, но мне кажется дальше через реквест прокидывать ивенты в скрипты будет как-то тяжело, пример, как это будет выглядеть(пик1,2,3)
Как можно это сделать лучшим образом?
Тут проблема в том, что достпные тебе варианты зависят от архитектуры твоей игры. То как у тебя прокидываются зависимости - зависит от архитектуры твоей игры.
То как сделано у тебя - так впринципе не делают. Если хочешь могу расписать какие проблемы вижу у тебя в коде.
А так скорее всего в твоем случае разумнее всего будет сделать как-то так:
Делаешь интерфейс
public interface ITouchable
{
public void Touch();
}
делаешь монобех реализующий этот интерфейс, вешаешь его на нажимаемыф объект объект
Когда детектишь объект на который нажали, делаешь у него TryGetComponent<ITouchable>(out var touchable) и дальше touchable.Touch();
Всё.
Предвидя вопросы сразу отвечу на них:
Есди надо чтобы какая-то внешняя система знала что на что-то нажали, внешняя система должна вести учет объектов и отлавливать ивенты.
Например тебе надо открыть магазин когда нажимаешь на него. Делаешь интерфейс
public interface IShopRequester
{
public event Action OnOpenShopRequest;
}
Дальше реализуешь
public class TouchableShop : MonoBehavior, IShopRequester, ITouchable
{
public event Action OnOpenShopRequest;
public void Touch()
{
OnOpenShopRequest?.Invoke();
}
}
Дальше какая-то внешняя система отслеживает объекты IShopRequester и как только они вызывают ивент - открывает магазин.
Тут проблема в том, что достпные тебе варианты зависят от архитектуры твоей игры. То как у тебя прокидываются зависимости - зависит от архитектуры твоей игры.
То как сделано у тебя - так впринципе не делают. Если хочешь могу расписать какие проблемы вижу у тебя в коде.
А так скорее всего в твоем случае разумнее всего будет сделать как-то так:
Делаешь интерфейс
public interface ITouchable
{
public void Touch();
}
делаешь монобех реализующий этот интерфейс, вешаешь его на нажимаемыф объект объект
Когда детектишь объект на который нажали, делаешь у него TryGetComponent<ITouchable>(out var touchable) и дальше touchable.Touch();
Всё.
Предвидя вопросы сразу отвечу на них:
Есди надо чтобы какая-то внешняя система знала что на что-то нажали, внешняя система должна вести учет объектов и отлавливать ивенты.
Например тебе надо открыть магазин когда нажимаешь на него. Делаешь интерфейс
public interface IShopRequester
{
public event Action OnOpenShopRequest;
}
Дальше реализуешь
public class TouchableShop : MonoBehavior, IShopRequester, ITouchable
{
public event Action OnOpenShopRequest;
public void Touch()
{
OnOpenShopRequest?.Invoke();
}
}
Дальше какая-то внешняя система отслеживает объекты IShopRequester и как только они вызывают ивент - открывает магазин.
Все предметы которые ты хочешь потрогать ITouchable, реализуешь методы которые будут инвокать ивент и передавать себя.
Так а тебе что надо? Целые скрипты и всякие фреймворки внутри юнити типа топ даун энжина?
Ща учу просто программирование, не шарп, но потом перейду. Какие навыки нужно развить, чтобы пользоваться юнити? Че вообще там делать по логике, если ничего не прописывать?
Я просто берегу себя от видео туториалов, учусь под документациям онли
Петушков, которые говорят, что у тебя типо все не очень, а надо делать интерфейс антачибал особо не слушай, это буквально самое первое прямолинейное тобишь нубское решение, плохое оно или хорошее не важно, они просто по другому не умеют. Лучше сам думай.
Да вроде бы имеет смысл, сделал вот так:
Лол, пчел, если ты глядя на его код не понимаешь в чем проблема - то тебе стоит самому попробовать сделать игру
А интерфейс это первое что тут нужно сделать согласно здравому смыслу, почти в любом случае.
Напиши, какие проблемы в коде
Нет мне нужен ресурс откуда я могу бесплатно взять посмотреть ассет
Нету типизации - все завязано на GetComponent у геймобжектов и надежды что будет там нужный компонент, есть параметры типа object, есть GameData, GameEvent и Attributes, которые как я понимаю тоже общие и используются для всего подряд и поля там тоже не типизированные а геймобжекты да обжекты.
Отсутствие типизации я думаю очевидно почему проблемно - нету гарантий что на вход поступило то что надо, невозможно в иде отследить источники разных "GameEvent". Потом где-то вылкзет ошибка и будешь охуевать А представь были бы у тебя типы - сразу в иде видишь где как какие юзаются.
Вот эти вот общие типы как GameEvent и GameData порождают ебовую связность как я понимаю у тебя они юзаются в каждом классе.
public GameEvent playerTouch - нету инкапсуляции, любой может заоверрайдить это поле и все сломается. Ну, если уверен в себе то можешь так оставить.
Очень странно, что тач контроллер зависит от некой геймдаты, которая у тебя
[SerializeField]
private GameData gameData
Во-первых ты че руками будешь везде эту геймдату перетаскивать? Во-вторых зачем всем компонентам знать про геймдату?
Намного лучше когда контроль идет сверху вниз и управляющая система знает о своих компонентах(а по солиду, по базе - об абстракциях компонентов, тогда ты еще и сможешь их подменять а не прибивать к конкретному типу), а не наоборот. Или у тебя впринципе как такового управления всей игрой нету, и компоненты самостоятельные и как хотят эту геймдату изменяют и реагируют на измения по своему усмотрению?
Не совсем понятно как прокинуты связи - вот ты делаешь gameEvent.Raise - кто перехватывает его, как узнает о нем? Просто выглядит так будто там каша
Ну и я думаю само собой понятно, что с неймингом хуево(_r.Ge - не хорошо), код стайл не соблюдается(где-то приватные с _ где то без), интерфейсы не юзаются а классы прибиты друг к другу
Ну и такое, можешь особо не переживать по этому поводу если пока только учишься, но гарбедж коллектор импакт вносит, поэтому реф тайпы без толку аллоцировать - а у тебя дохуя всяких ивентов как я понимаю классы и каждый раз при вызове срут в память собой. Похуй если это было бы редко, но если у тебя вся игра так сделана то гарбедж коллектор будет ебать иногда
>>87871
Да не трясись малой)
Нету типизации - все завязано на GetComponent у геймобжектов и надежды что будет там нужный компонент, есть параметры типа object, есть GameData, GameEvent и Attributes, которые как я понимаю тоже общие и используются для всего подряд и поля там тоже не типизированные а геймобжекты да обжекты.
Отсутствие типизации я думаю очевидно почему проблемно - нету гарантий что на вход поступило то что надо, невозможно в иде отследить источники разных "GameEvent". Потом где-то вылкзет ошибка и будешь охуевать А представь были бы у тебя типы - сразу в иде видишь где как какие юзаются.
Вот эти вот общие типы как GameEvent и GameData порождают ебовую связность как я понимаю у тебя они юзаются в каждом классе.
public GameEvent playerTouch - нету инкапсуляции, любой может заоверрайдить это поле и все сломается. Ну, если уверен в себе то можешь так оставить.
Очень странно, что тач контроллер зависит от некой геймдаты, которая у тебя
[SerializeField]
private GameData gameData
Во-первых ты че руками будешь везде эту геймдату перетаскивать? Во-вторых зачем всем компонентам знать про геймдату?
Намного лучше когда контроль идет сверху вниз и управляющая система знает о своих компонентах(а по солиду, по базе - об абстракциях компонентов, тогда ты еще и сможешь их подменять а не прибивать к конкретному типу), а не наоборот. Или у тебя впринципе как такового управления всей игрой нету, и компоненты самостоятельные и как хотят эту геймдату изменяют и реагируют на измения по своему усмотрению?
Не совсем понятно как прокинуты связи - вот ты делаешь gameEvent.Raise - кто перехватывает его, как узнает о нем? Просто выглядит так будто там каша
Ну и я думаю само собой понятно, что с неймингом хуево(_r.Ge - не хорошо), код стайл не соблюдается(где-то приватные с _ где то без), интерфейсы не юзаются а классы прибиты друг к другу
Ну и такое, можешь особо не переживать по этому поводу если пока только учишься, но гарбедж коллектор импакт вносит, поэтому реф тайпы без толку аллоцировать - а у тебя дохуя всяких ивентов как я понимаю классы и каждый раз при вызове срут в память собой. Похуй если это было бы редко, но если у тебя вся игра так сделана то гарбедж коллектор будет ебать иногда
>>87871
Да не трясись малой)
>public class TouchableShop : MonoBehavior, IShopRequester, ITouchable
{
public event Action OnOpenShopRequest;
public void Touch()
{
OnOpenShopRequest?.Invoke();
}
}
кловун, спок.
Что не так?)
Легко свапаешь реализации и будет и делаешь разные варианты открытия магазина, разные штуки которые можно тыкать, интерфейс четко показывает свое назначение, для ньюфага самое то, и в его случае конкретно такое улучшение можно прям щас сделать и не сильно охуеть
>Все завязано на GetComponent у геймобжектов и надежды что будет там нужный компонент
Проверка if (component == null) return исправит ситуацию?
>есть GameData, GameEvent и Attributes, которые как я понимаю тоже общие и используются для всего подряд и поля там тоже не типизированные а геймобжекты да обжекты.
GameData и Attribute это просто модели данных игры(пик1)
GameEvent(пик2) я взял из тутора по ивентам
>Вот эти вот общие типы как GameEvent и GameData порождают ебовую связность как я понимаю у тебя они юзаются в каждом классе.
GameEvent (пик2,3) избавляет от необходимости добавлять ссылки на инстансы через [SerializeField], тк там если что ивент просто никому не придет или на него никак не отреагируют. Я это взял из тутора: https://www.youtube.com/watch?v=7_dyDmF0Ktw&t=312s
Насчет GameData наверное её нужно как-то растаскивать по классам, по-разному загружать и тд, я его щас юзаю просто как модель данных, которые загружаются в нужные компоненты при загрузке файла сохранения
>гарбедж коллектор импакт вносит, поэтому реф тайпы без толку аллоцировать - а у тебя дохуя всяких ивентов как я понимаю классы и каждый раз при вызове срут в память собой. Похуй если это было бы редко, но если у тебя вся игра так сделана то гарбедж коллектор будет ебать иногда
Разве он не будет сам срабатывать, когда игра будет ресы нажирать как в жабе, а по ресам у меня каких-то йоба эффектов не планируется
В общем и целом было бы круто, если бы ты ещё пояснил по тому, что я написал. Было бы найс конечно вообще сделать слоеную архитектуру как я делаю на бекенде, но я честно хз как тут это реализовать
>Было бы найс конечно вообще сделать слоеную архитектуру как я делаю на бекенде, но я честно хз как тут это реализовать
лул)
Не получится так что я сейчас учу Unity, а через лет пять все будут на UE игры делать?
На юнити индиаутисты и мобилкогоспода, анрил для игр категории Б и АА, годот это мем.
Ааа)) вот оно что)) блииин интерфейс ничего не делает как же быть((
Эх жаль нельзя сделать сделать некий класс, который будет иметь доступ к объектам с IShopRequester(либо найдет их через GetComponentsInChildren, либо фабрика будет пополнять их список который он получит, либо будет какой-нибудь ивент бас через который будет оповещать о спавне объектов с таким типом, или сервис для учета таких объектов заинжектится или будет получен с сервис локатора - вариантов миллион), подпишется на ивент OnOpenShopRequest и будет его централизованно обрабатывать в зависимости от текущего состояния игры, было бы круто... или можно!?
>>87928
> Проверка if (component == null) return исправит ситуацию?
Ну основная проблема останется та же - в компайл тайме проблему не увидишь, надо именно запустить игру и триггернуть нужный сценарий чтобы ошибка вылезла. Чем больше штук которые нельзя отследить без запуска игры - тем хуже само собой.
Проверка - ну, она скорее может и в худшую сторону сыграть, потому что ошибка в консоль не напишется в просто ничего сделано не будет.
> GameData и Attribute это просто модели данных игры(пик1)
> GameEvent(пик2) я взял из тутора по ивентам
Ааа, так это та самая архитектура на СО, чего же я сразу не догадался. Ну, если че ее никто не юзает в коммерческой разработке(да и вообще), она по сути мемом стала, одна из изначально мертвых вещей от юнитеков.
Единственный её плюс - то что геймдизайнер может сам собирать механики просто перетасиквая эти ивенты в монобехи, т.е. это "разгрузит"(условно) программистов, но от геймдизайнеров которые будут копаться в юнити будет требоваться намного больше работы и в какой-то момент будет ахуй с количества этих ивентов однообразных ивентов в которых хуй знает какие данные, причем по одному СО будет ваще не ясно какие данные придут в этом ивенте. Вот есть у тебя условно тот же TouchEvent и ты хочешь на него подписаться - как понять какие данные придут в параметре? Там же тип object. Придется искать что его вызывает и где...
Или наделать наследников GameEvent с типизированными параметрами какими-то.
С геймдатой я немного не понял - я вижу у тебя есть
private GameDate gameData.
Т.е. она существует не в единственном экземляре?
При этом в самой геймдате есть данные игрока и нпц - явно оно должно быть уникальным на уровень или вообще, и существовать в единственном экземпляре. Если оно у тебя в единственном экземпляре, то как тогда все классы его получают?
> Насчет GameData наверное её нужно как-то растаскивать по классам, по-разному загружать и тд, я его щас юзаю просто как модель данных, которые загружаются в нужные компоненты при загрузке файла сохранения
Ага, надо.
> GameEvent (пик2,3) избавляет от необходимости добавлять ссылки на инстансы через [SerializeField], тк там если что ивент просто никому не придет или на него никак не отреагируют. Я это взял из тутора
Не, я про то, что у тебя вся игра построена с их использованием и соответственно если будет нужно изменение в ГеймИвент, то оно потребует изменения от всего что от него зависит. Но т.к. теперь я вижу что это СО - это оправданно, потому что цель сделать ивенты которые можно руками закидывать чтобы собирать механики без кода, а по-другому этого просто не сделать(разве что кодогенерацией лол).
Но как я говорил - сама архитектура на СО это калыч и того не стоит.
> Разве он не будет сам срабатывать, когда игра будет ресы нажирать как в жабе, а по ресам у меня каких-то йоба эффектов не планируется
Будет. Но работа гарбедж коллектора - это фриз в игре. Чем больше гавна он собирает, тем больше фриз. Поэтому у нас тут принято делать как можно меньшую нагрузку на него.
И опять же - ничего страшного если немного будет мусора, но если у тебя вся игра построена по аналогии с теми TouchObjectResponce и TouchObjectRequest, и их каждыы кадр по многу штук так не надо делать, юзай структуру хотя бы вместо класса.
> В общем и целом было бы круто, если бы ты ещё пояснил по тому, что я написал. Было бы найс конечно вообще сделать слоеную архитектуру как я делаю на бекенде, но я честно хз как тут это реализовать
А, так ты с бекенда, так это же вообще заебись.
Щас на юнити по сути две метовые архитектуря:
1. Сервисная архитектура - это вот довольно близко к бекенду. Как правило используется с DI(Zenject или VContainer). Регаешь сервисы - не монобех классы, все зависимости прокидываются, в точке входа из фабрик спаунишь своих игроков да врагов и все что тебе надо и инжектишь в них зависимости. Либо сразу в монобехи инжектятся эти сервисы.
Короче если бы ты был новичком в программированит то лучше бы было в это пока не лезть, но раз ты уже бекендер то тебе этот подход нааерное сразу понятнее будет. Погугли zenject или просто dependency injection в юнити.
2. Ecs. Причем он может быть в связке с сервисной архитектурой, а может и без нее.
Ну и из менее популярнвх подходов есть еще EventBus, его многие не любят, но лучше уж ивент бас чем архитектура на СО
Ааа)) вот оно что)) блииин интерфейс ничего не делает как же быть((
Эх жаль нельзя сделать сделать некий класс, который будет иметь доступ к объектам с IShopRequester(либо найдет их через GetComponentsInChildren, либо фабрика будет пополнять их список который он получит, либо будет какой-нибудь ивент бас через который будет оповещать о спавне объектов с таким типом, или сервис для учета таких объектов заинжектится или будет получен с сервис локатора - вариантов миллион), подпишется на ивент OnOpenShopRequest и будет его централизованно обрабатывать в зависимости от текущего состояния игры, было бы круто... или можно!?
>>87928
> Проверка if (component == null) return исправит ситуацию?
Ну основная проблема останется та же - в компайл тайме проблему не увидишь, надо именно запустить игру и триггернуть нужный сценарий чтобы ошибка вылезла. Чем больше штук которые нельзя отследить без запуска игры - тем хуже само собой.
Проверка - ну, она скорее может и в худшую сторону сыграть, потому что ошибка в консоль не напишется в просто ничего сделано не будет.
> GameData и Attribute это просто модели данных игры(пик1)
> GameEvent(пик2) я взял из тутора по ивентам
Ааа, так это та самая архитектура на СО, чего же я сразу не догадался. Ну, если че ее никто не юзает в коммерческой разработке(да и вообще), она по сути мемом стала, одна из изначально мертвых вещей от юнитеков.
Единственный её плюс - то что геймдизайнер может сам собирать механики просто перетасиквая эти ивенты в монобехи, т.е. это "разгрузит"(условно) программистов, но от геймдизайнеров которые будут копаться в юнити будет требоваться намного больше работы и в какой-то момент будет ахуй с количества этих ивентов однообразных ивентов в которых хуй знает какие данные, причем по одному СО будет ваще не ясно какие данные придут в этом ивенте. Вот есть у тебя условно тот же TouchEvent и ты хочешь на него подписаться - как понять какие данные придут в параметре? Там же тип object. Придется искать что его вызывает и где...
Или наделать наследников GameEvent с типизированными параметрами какими-то.
С геймдатой я немного не понял - я вижу у тебя есть
private GameDate gameData.
Т.е. она существует не в единственном экземляре?
При этом в самой геймдате есть данные игрока и нпц - явно оно должно быть уникальным на уровень или вообще, и существовать в единственном экземпляре. Если оно у тебя в единственном экземпляре, то как тогда все классы его получают?
> Насчет GameData наверное её нужно как-то растаскивать по классам, по-разному загружать и тд, я его щас юзаю просто как модель данных, которые загружаются в нужные компоненты при загрузке файла сохранения
Ага, надо.
> GameEvent (пик2,3) избавляет от необходимости добавлять ссылки на инстансы через [SerializeField], тк там если что ивент просто никому не придет или на него никак не отреагируют. Я это взял из тутора
Не, я про то, что у тебя вся игра построена с их использованием и соответственно если будет нужно изменение в ГеймИвент, то оно потребует изменения от всего что от него зависит. Но т.к. теперь я вижу что это СО - это оправданно, потому что цель сделать ивенты которые можно руками закидывать чтобы собирать механики без кода, а по-другому этого просто не сделать(разве что кодогенерацией лол).
Но как я говорил - сама архитектура на СО это калыч и того не стоит.
> Разве он не будет сам срабатывать, когда игра будет ресы нажирать как в жабе, а по ресам у меня каких-то йоба эффектов не планируется
Будет. Но работа гарбедж коллектора - это фриз в игре. Чем больше гавна он собирает, тем больше фриз. Поэтому у нас тут принято делать как можно меньшую нагрузку на него.
И опять же - ничего страшного если немного будет мусора, но если у тебя вся игра построена по аналогии с теми TouchObjectResponce и TouchObjectRequest, и их каждыы кадр по многу штук так не надо делать, юзай структуру хотя бы вместо класса.
> В общем и целом было бы круто, если бы ты ещё пояснил по тому, что я написал. Было бы найс конечно вообще сделать слоеную архитектуру как я делаю на бекенде, но я честно хз как тут это реализовать
А, так ты с бекенда, так это же вообще заебись.
Щас на юнити по сути две метовые архитектуря:
1. Сервисная архитектура - это вот довольно близко к бекенду. Как правило используется с DI(Zenject или VContainer). Регаешь сервисы - не монобех классы, все зависимости прокидываются, в точке входа из фабрик спаунишь своих игроков да врагов и все что тебе надо и инжектишь в них зависимости. Либо сразу в монобехи инжектятся эти сервисы.
Короче если бы ты был новичком в программированит то лучше бы было в это пока не лезть, но раз ты уже бекендер то тебе этот подход нааерное сразу понятнее будет. Погугли zenject или просто dependency injection в юнити.
2. Ecs. Причем он может быть в связке с сервисной архитектурой, а может и без нее.
Ну и из менее популярнвх подходов есть еще EventBus, его многие не любят, но лучше уж ивент бас чем архитектура на СО
> Если что у тебя и инкапсуляция разъебана
В каком месте?
Ну хочешь сделаю public IObservable<Unit> OnShopRequested(); и приватный сабжект буду в реализациях возвращать
> но ты походу екс дебил, поэтому тут как бы все ясно
Екс это база
Разве у всех жопа не отвалится писать на с++? Ведь дебажить разные segfaultы сложнее, чем NullReferenceException'ы
>GetComponentsInChildren
)))))) ПАХПАХ
>который будет иметь доступ к объектам с IShopRequester
вот это да, ничивосебе
>ивент бас
))))))))))
>сервис локатора
)))
Екс дебил не меняется)))
>>87928
>Проверка if (component == null) return исправит ситуацию?
исправит.
>>87969
этого долбоеба не советую слушать, это местный патентованный ебаклак, который в основном просто пропукаивает терминами, т.е. у него буквально все посты об одном и том же. Видишь эвент бас, диай вот это все, сразу можешь не читать лол.
>В анриле ограниченно С++ юзают, и есть блю принты.
в парадигме выпускников скилбокса?
>>87955
Плюс юнити в том, что научиться качественно прогать на шарпе проще. Если с нулевой базой пойти сразу в анриал, то это практически гарантия говнокодерской базы в голове. Перекат из юнити в анриал лично у меня занял месяц, с учетом изучения базы плюсов.
> >GetComponentsInChildren
> )))))) ПАХПАХ
> >который будет иметь доступ к объектам с IShopRequester
> вот это да, ничивосебе
> >ивент бас
> ))))))))))
> >сервис локатора
> )))
ЫЫЫ ХАЧУ СИНГЛТОНЫ ИЛИ НЕТ ХАЧУ МЫШКОЙ ДВИГАТЬ))
Забавно как ты меня выдаешь как некую мистическую личность приследующую тебя, хотя я далеко не единственный кто итт топит за ди или ецс и редко вообще в таких срачах участвую.
Чего ты вообще так рвешься с подходов которые массово в коммерческой разработке используются в играх сложнее гиперкежа? Может быть ты просто не веришь что их поголовно все используют?
> далеко не единственный кто итт топит за ди или ецс
угу, и за эвент бас, сервис локатор. пошел ты нахуй гандон.
>массово в коммерческой разработке используются
Кто их массово использует? овлкат гамес с пропуками в играх? Охотно верю.
Вроде бы я и не говорю, что его обязательно надо юзать, а просто перечислил варианты как возможно лиюо найти объекты нужные, либо передать данные о них.
>>87991
> Кто их массово использует? овлкат гамес с пропуками в играх? Охотно верю.
Я знаю только что чел из овлкет на хабре статью писал про то как они ивентбас юзали. Что еще они там юзают я хз.
А так все либо строят архитектуру на ди, либо на ецс. Ну вот буквально все, можешь на хх прочекать вакансии, там в 60% вакансий требуют понимание ди, в 20% ецс, и только в 20% никакой конкретики не указано, но скорее всего либо тоже что-то из этого, либо они на синглтоновых геймменеджерах гиперкеж штампуют.
> угу, и за эвент бас, сервис локатор. пошел ты нахуй гандон.
Нахуй сервис локатор нужен когда есть ди?)
>там в 60% вакансий требуют понимание ди
пиздабол. там кроме знания зенжекта ничего не требуют и это как раз поточное мобильное производство.
>Вроде бы я и не говорю, что его обязательно надо юзать, а просто перечислил варианты как возможно лиюо найти объекты нужные, либо передать данные о них.
да да. просто написал хуйню с лишней абстракцией, теперь буду придумывать где она пригодиться. А че двумя ограничился, а не пятью?
> да да. просто написал хуйню с лишней абстракцией, теперь буду придумывать где она пригодиться. А че двумя ограничился, а не пятью?
Че бля?
Ты сказал, что я сделал интерфейс который ничего не делает. Я тебе сказал - делать будет не он, потому что он и не должен этого делать, а какая-то внешняя система, соответственно встает вопрос о том как она узнает об объектах соответствующего типа. И я перечислил все варианты это сделать какие пришли в голову сходу, чтобы показать что какая бы у тебя не была архитектура - никакой сложности тут нет и твоя претензия изначально непонятна. Это не значит что я топлю за сервис локатор или ивент бас или спавн абсолютно всего из фабрик.
С чего тебя порвало?
> пиздабол. там кроме знания зенжекта ничего не требуют и это как раз поточное мобильное производство.
Ну вот я и говорю в 60% указано требование ди, а ты говоришь никто не использует.
Или тебя смутило, что я написал что в 20% вакансий требуют ецс? Конкретно в в тех вакансиях что я смотрел недавно где-то в 20% случаев было написано ецс. Если учитывать джуновские и всякое очевидное гавно то конечно будет меньше.
В той же телеге есть ецс чат которыы очень даже активный, дохуя кто его юзает
>Ну вот я и говорю
>серьезные практики для серьезный ребят
> поточное мобильное производство
держи в курсе.
>Я тебе сказал - делать будет не он, потому что он и не должен этого делать, а какая-то внешняя система, соответственно встает вопрос о том как она узнает об объектах соответствующего типа.
зачем там какая-то внешняя система? чтобы эвентбас заработал?))
> держи в курсе.
Если это не гк, то там вообще-то очень много бизнес-логики!
> зачем там какая-то внешняя система? чтобы эвентбас заработал?))
Хз, ты по моему просто рендом слова пишешь.
Ну, мы хотим сделать так, что ты кликаешь на что-то и открывается магазин.
Само собой нужна некая модель данных и бизнес логики магазина, нужен юи магазина, нужна доп. логика типа паузы или чего еще при переходе в магазин.
Сколько это внешних систем, так можешь примерно почувствовать?
Когда почувствуешь, понимаешь, что у тебя два варианта - либо кликаемый магазин должен получить ссылку на некую внешнюю систему сам делать что-то типа shop.Open()под которым будет скрываться загрузка магазина, показ ui, пауза и доп логика.
Либо просто выкидывать ивент, который отловит внешняя система и сделает то же самое что под спойлером.
Второй вариант само собой прикольнее, потому что можно активные вьюхи и другие хендлеры этого ивента вешать включать и отключать по желанию, да еще и контроль идет сверху-вниз и можно придерживаться слоеноц архитектуры
>Когда почувствуешь, понимаешь, что у тебя два варианта - либо кликаемый магазин должен получить ссылку на некую внешнюю систему сам делать что-то типа shop.Open()
сильно)))
Низзя
Очень удобно, сижу на райдере больше 3 лет и ничто меня не заставит вернуться на уебищную студию.
нет, такое гениальное моги только на Source 2 запилить
Причина тряски?
У меня тоже самое в большой игре. Разница только в оформлении, то что на пике разбил бы на 10-15 пунктов для ясности понимания и дебага.
там ещё ссылки все подрубаются через GameObject.Find, не могу вкурить прикол такого подхода
У меня немного по другому. Находится, либо задается Родительский Transform и уже по нему Find ищется, т.к если просто через GameObject.Find, это слишком грузит сцену поиском по всей, и весьма плохо, хотя если разовая инициализация в начале игры, то поебать, подождут.
>не могу вкурить прикол такого подхода
Тебе не надо ручками ничего задавать, всё делается в скрипте.
Есть два дебила, один дебил не может кодить и просто накидывает говна в сцену. Второй дебил делает так, чтобы это говно хоть как-то работало.
Что мешает прокинуть ссылку напрямую через инспектор или если эти объекты создаются, а не лежат в сцене сразу получать ссылку после создания? Геймдиз, перенесет мискликом объект в другой скоуп, да получит пизды, но искать траблу будешь ты.
Речь про сотни объектов, еще сотни инстансятся, данный метод позволяет всё сделать из кода и одного места. Эту инициализацию делаешь в начале, всё делается по порядку, минимум конфликтов и дебага. Руками в инспектаре лучше вообще ничего не делать.
Если код зависит от сцены, которая может изменится и все упадет это неправильный подход. Проебанная ссылка будет видна в коммите префаба, ошибка будет указывать на отсутствие ссылки явно объект удаленный или перемещенный из сцены сложно найти в коммите с измененной сценой.
Факт - использовать GameObject.Find плохо.
Как же меня бесит этот баг, когда пытаешься прокрутить окно инспектора и мышка улетает на другую сторону экрана. Юнити вообще кто-то пользуется? Как можно не заметить этот очевидный баг?
То есть надо подвигать мышкой с зажатой кнопкой в окне сцене, после этого зажать левую кнопку пока курсор над окном юнити и двигать курсор к краю экрана. Курсор будет телепортироваться. Это баг.
В смысле, что при зажатой кнопке курсор из крайнего левого положения переходит в правое и наоборот? Это абсолютно нормальное поведение. Сделано было, скорее всего, чтобы флоаты в редакторе накручивать удобнее было. Но абсолютно ничем не мешает и уж точно не баг.
>>88564
Вы вообще читали что я писал? Баг заключается в том, что если подвигать мышкой с зажатой левой кнопкой в окне сцены, то "залипает" режим переноса мышки ВСЕГДА если левая кнопка была зажата над окном юнити. Я в курсе что в юнити для некоторых окон и контролов активируется такой режим. Баг в том, что он "залипает" и срабатывает всегда при зажатой левой кнопке над окном юнити.
Если запустить юнити и не двигать мышкой в окне сцены, то этого бага нет. Если подвигать мышкой в окне сцены с левой кнопкой, а потом подвигать с зажатой средней кнопкой, или переключить инструмент сцены (например, с выделения, на инструмент перетаскивания), то это состояние переноса тоже сбрасывается.
По идее этот режим переноса в сцене должен активироваться только для перетаскивания средней кнопкой. В юнити 2021 это так работает.
Для Move Tool он НЕ ДОЛЖЕН активироваться. В новых версиях юнити этот перенос ошибочно активируется для Move Tool и потом залипает. Это баг.
Оно никогда так не работало. И сейчас не работает, если не активировать баг залипания через Move Tool.
И все побежали учить его?
Значит ли это, что в какой-то момент Unity девелоперов начнет не хватать, а на рынке мобилок / казуальных игр Unity все же уделывает Unreal?
Значит ли это, что учить именно Unity - правильный выбор?
>Значит ли это, что в какой-то момент Unity девелоперов начнет не хватать
Конечно нет, типоумеющих в юнити всегда хватает. А вот нормальных разработчиков нехуя нет.
> Правильно ли я понимаю, что сейчас на хайпе Unreal Engine?
Откуда инфа?
> И все побежали учить его?
Да нет вроде. Ну, популярность анрила не падает, а стабильно растет, но вроде особого хайпа нет.
> Значит ли это, что в какой-то момент Unity девелоперов начнет не хватать, а на рынке мобилок / казуальных игр Unity все же уделывает Unreal?
Анрила на мобилках практически нету, даже годота наверное больше
> Значит ли это, что учить именно Unity - правильный выбор?
У юнити и анрила свои преимущества и недостатки, выбирать надо исходя из них и своих целей
Если тебе интересно что выбрать чисто с экономической точки зрения, то наоборот лучше вкатываться туда где темпы роста больше - если отрасль растет, то создаются новые рабочие места, а обычные работяги быстрее апаются по карьере
1. Допустим, я хочу взять предмет Cube.
2. Я его буквально скрываю (setActive(false))
3. На его место перемещаю специальный объект-пустышку, и присваиваю ему ту же сетку и добавляю boxCollider с триггером.
4. Если этот псевдо объект с чем столкнулся, то его специальный полупрозрачный материал становится красным, типа нельзя его тут бросить.
5. Если игрок бросает предмет, то скрываем псевдообъект и на его место ставим оригинальный.
В общем, нет физики - нет физических проблем.
Код уменьшился на 80%, стал понятнее
Да, решение отличное.
Как можно быстро покрасить модельки и импортировать их в таком виде в юнити?
Это не для готового проекта, я учусь и хотелось бы учиться на чем то наглядном, а не на кубах. Анимацию и сами модели делаю в Майе, но насчёт текстурирования там долго сидеть с нодами и это та сторона куда я практически не влазил.
*В идеале рисовка по самой модели, а не по 2д развёртке.
Так покрась в блендере, не так удобно как в пайнтере, но для быстрого покраса пойдет. На ютубе много туториалов https://www.youtube.com/watch?v=8UoUZHlWcVc
Или ScriptableObject, или что-то, что можно в экселе открыть
Почему новичкам даже не советуют смотреть в сторону игр с открытым миром?
Это потому что нужно полностью знать код и функционал движка для оптимизации?
Или дело в том что домашнее железо просто не потянет фул мапу в одной сцене со всеми объектами на ней?
Юнити из коробки умеет в подгрузку только тех квадратов карты где находится игрок?
> Почему новичкам даже не советуют смотреть в сторону игр с открытым миром?
Много сложностей и как правило игра с открытым ммром предполагает много механик, новичок никак не потянет большой проект
> Это потому что нужно полностью знать код и функционал движка для оптимизации?
Полностью юнити никто не знает, это и не нужно
> Или дело в том что домашнее железо просто не потянет фул мапу в одной сцене со всеми объектами на ней?
Железо не причем
> Юнити из коробки умеет в подгрузку только тех квадратов карты где находится игрок?
Ну, скажем так, тут не все так просто.э
На самом деле если честно твои вопросы несколько бессмысленные. Если хочешь делать игры - начинай учиться, там и до опен ворлда дойдешь в какой-то момент
Тогда более приземистый вопрос, как правильно выставить настройки чтобы пресет партикла не сбрасывался?
Я его настроил, посмотрел работу ингейм, и как только стопнул, все слетает на дефолт
А нахуй ты настройки в плеймоде крутишь? Крути без плеймода. Если прямо в жопе свербит в плеймоде смотреть то до того, как отжать, клацни по компоненту второй кнопкой, выбери скопировать компонент, отожми плеймод и вставь.
если эти данные не будут куда то лететь на сервер и геймдизайнеры работают в юнити то ScriptableObject
Скорее дело не в том выпустишь или нет, а в твоих навыках. Я когда еще ньюфагом был - было тяжело... А как стал ебашить - стало намного приятнее игры делать, потому что в целом понимаю как и что надо делать, есть вопросы только к некоторым конкретным особенностям или элементам игры, и намного меньше времени тратится на дизморалящую борьбу с багами
Я создаю партикл в сцене. Настраиваю его, вбиваю все параметры, далее жму плей, проверяю, останавливаю, возвращаюсь к его настройкам и они сбрасываются на дефолтные.
В туторах - они остаются
Не сохраняя вышел с проекта, загрузил - без результата. Видимость везде проставлена, настройки самой камеры сброшены на дефолт. Причем видимость с нее в углу видна, а вот расположение объектов в сцене я увидеть не могу. Только передвинуть их.
>>89337
Все пофиксилось, в том числе и партикли, появилось корректное окно где можно менять настройки, рестартить и все остается.
Кто нибудь спросит а нахуя нубу партикли, если он не знает базовых основ. Так я отвечу - туториалы очень простые, можно сразу работать над эффектами скилов и оружия.
Напиши для персонажей универсальный компонент типа CharacterController, в котором будет весь функционал и вешай его на всех персов (нпц, монстры, игрок и тд.) Потом пиши контроллеры пользователя (PlayerController и AIController), где ты уже определишь какие функции CharacterController будут использоваться. В AiController ты можешь реализовать кучу разных поведенческих паттернов и менять их на лету. Должно получиться довольно гибкое решение, т.к каждый персонаж может быть нпц ботом или управляться игроком. Даже если это не пригодится, то по крайней мере ты избавишься от навязчивых мыслей, что тебе чего-то не хватает.
На самом деле хуёвая идея называть скрипты так, как уже назвали свои скрипты юнитеки.
Если взглянуть изнутри на скрипты юнитеков, то на самом деле название класса у них можно смело отбирать.
Нигде. Ты нигде не найдешь примеры нормального кода с нормальной архитектурой. Все туториалы являются говнокодов, абсолютно все.
Не правда
В настройках биллбоард фейс камера выключена, всё равно крутится
Исключение.
Кстати это забавно, по архитектуре вообще нету никаких нормальных материалов, ни на гитхабе проектов, ни статей, ни видосов, ничего. Максимум какие-то абстрактные размышления на тему без конкретики. Хотя тема супер актуальная, новички делают говно и спрашивают у всех - а как надо, а им никто не отвечает и посоветовать ничего не может, потому что нечего.
Я и сам таким был, и стал делать нормально(и то условно, еще есть много к чему стремиться) уже на работе после нескольких выпущенных проектов, и я реально не вижу причины, почему до сих пор никто не запилил на гитхаб пример или на хабр статью как сделать базу под какую-нибудь небольшую игру. Ну, кроме того что это время займет, и скорее всего профитво никаких не принесет.
По сути одну только годную статью по этой теме видел, но она не для новичков и только для тех кто на ецс
https://habr.com/ru/articles/742376/
Единственный способ научиться писать нормальное архитектуру и перенять современные практики - пойти работать с большую контору разработчиков игр. Особенно в мобильных конторах дрочат архитектуру очень жёстко, потому что в мобильных играх очень много различных сервисов, состояний и прочего.
По сути это системы которые используют или использовали ММОРПГ 2005-2010 годов. Когда у тебя моб в принципе аналогичен игроку. А игрок может на себя примерять шкуру моба. Такое было в Lineage 2, когда включаешь девелоп режим
При помощи каких шейдеров и текстур можно воссоздать эффект искривления пространства волнами исходящими из центра? Что-то вроде черной дыры.
Я находил тутор по эффектам , но чел сам сделал шейдер и не поделился им
Ну расстроился чел немного, что терпение у соседа лопнуло. Не ссы, без году неделя война кончится и опять видосы будет снимать.
Да там особо то и знать ничего не надо. буквально код комплит прочитать, там слоеная описана и все. У Крюкова тоже ехала слоеная через слоеную.
>Где можно посмотреть примеры таких решений или туториалы?
Берешь любую игру на юнити и открываешь декомпилятором. Смотришь что тебе надо и пиздишь код
Нах?
Большинство того что встречаю это по сути портфолио, автор не углубляется либо пропускает ключевые моменты как он сделал определенные вещи. Особенно у азиатов - очень красиво и годно, но даже намека нет с чего начать.
А теперь я строго так, по списку, можно не по порядку, но не отвлекаясь
1. Настройка чувствительности мыши/геймпада
2. Разместить лампы для запекания
3. Разместить пробы
4. Реализовать прыжок персонажа.
И т.п., ну как-то так.
+1 очко к скиллу
Есть еще базы?
>Сегодня пришел к выводу, что лучше не работать с OnEnable, Awake
Ну давай, накидай мне альтернативу.
Игрок получил перк - ужас, при котором все враги низкого уровня разбегаются, давай как мне это им сообщить?
Если напишешь про Update перетяну тебе через лицо..
паттерн обзервер...
Когда главный вахтер анриал треда увидел у меня метод инициализации класса, у него случился шок.
Вангую этот еще и создает компонент ужас, который цепляет на персонажа, как единственно возможное решение.
enemy.ApplyEffect(EffectType.Terror)
Если вам надо, чтобы Юнитя компилировала скрипты, но иногда вам этого не надо, выможете в каком-то скрипте оставить явную ошибку. Компиляции не будет, и вы будете экономить пару секунд, а и то больше, если железо слабое.
А то иногда прям нужно переключаться между редактором с VS Code делая небольшие правки в коде, но при этом нет необходимости, чтобы была компиляция
я про это бесячее окно
Мне нужно в префаб засунуть и потом экспортировать или как вообще?
Правой кнопкой жмешь на папку, где сохранена модель, префаб, материал, текстуры и т.п., далее выбираешь из списка export package и сохраняешь куда надо.
https://www.youtube.com/@GabrielAguiarProd/videos
вот на этом канале подробные туториалы годных спецэффектов.
Переведи пикрил в normal map, потом эту нормал мапу надо применить на прозрачный материал (tranbsparent), а дальше играть с масштабом объекта, на который применяешь материал - либо через скрипт, либо через щейдер с функцией масштабирования.
Что за гавно?
Мне 37
Как найти детей у объекта?
Я сейчас попробовал через публичные объекты, всё работает. Значит юнити не находит детей по тегу.
9
Вот есть у нас персонаж со скелетом, к нему будет идти анимации - стойка, ходьба, бег и т.п.
А каким образом к скелету цеплять оружие, если вариаций оружия несколько? Как правильно это делать?
1. Написать единый шейдер с функционалом изначальных.
Новичкам надо просто делать игры по типу арканоида и сапера, изучать апи движка, а не дрочить мануалы по архитектуре - это только отбивает желание изучать движок. Со временем, после пары-тройки говнопроектов, если чел понял что делать игрульки - это его - понимание само придет по выбору архитектуры для конкретного проекта.
Я бы добавил пустой объект к нужной кости, который бы потом был парентом или констрейнтом для объекта оружия. Когда происходит выбор оружия, то персонаж должен включить необходимый анимейшен стейт для этого типа оружия (держать пистолет или держать винтовку), дальше должен включиться и приаттачиться необходимый ствол к нашей опорной точке. В общем у тебя два объекта(персонаж и оружие) которые просто синхронно проигрывают анимацию.
>Значит юнити не находит детей по тегу
ну тогда получается, что ошибка где-то тут. нет?
и скорее всего не у юнититеков
> Новичкам надо просто делать игры по типу арканоида и сапера
Я не про таких новичков само собой лол
А про таких
> Со временем, после пары-тройки говнопроектов
Потому что на практике
> если чел понял что делать игрульки - это его - понимание само придет по выбору архитектуры для конкретного проекта.
нихуя не придет за 3 игры. Чтобы пришло надо изучать все те крохи инфы какие есть в интернете и как они решают твои проблемы и уже быть опытным в программировании еще до прихода на юнити
Плюсы:
- почти не нужно думать над сюжетом и проработкой мира
- простые механики
- небольшая детализация окружения
Минусы:
- тварь скопировал чужое
Разобрался, мой проёб. Я сначала извлекал материалы, потом текстуры, а надо наоборот.
Не подходит под мою стилистику, у меня все текстуры рисованные будут на планшете
К тому же там миллион переменных будет.
Такая игра ЯВНО не для новичка
Постараюсь понятнее объяснить:
Я кирилл суть такова
Допустим у нас один большой террейн площадью 25 квадратных км. со сторонами 5х5. Кистью проводим разметку с макета - оставляем пометки для того чтобы на эти места расставить постройки и остальное.
Далее это дело нужно разбить на квадраты по 1 кв. км. и заниматься окончательной проработкой.
И к примеру треть карты останется пустой, для ее наполнения в дальнейшем, но там будут невидимые стены куда игрок не пройдет.
>>91097
>В юнити возможно работать над бесшовным миром разделяя его на отдельные куски по сетке?
Можно.
>Движок умеет подгружать в уже собранном проекте только те места где непосредственно находится игрок?
Умеет.
Требований несколько
- Персонаж не должен проходить сквозь текстуры и органично двигаться
- возможность движения по наклонной поверхности
Все остальное взаимодействие будет только с интерактивными объектами.
Но я наткнулся на курс от Яндекса, вроде бы норм.
А есть еще хорошие русскоязычные курсы?
Так лезть в ригитбоди это же самый простой вариант, почему ты боишься?
Оно не будет грузить проц, если у тебя не сто тыщ объектов. Тем более пхисикс в юнити это самый быстрый вариант, не считая той дрисни для дотса
Я прочитал что движку придется каждый раз делать рассчеты. А если у тебя статичный объект движется то вообще смерть.
Собственно отсюда уже второй вопрос вытекает, если у меня в игре будут панели парящие в воздухе по маршруту - что на них вешать? Тоже ригидбоди?
И при этом 0 информации о terrain collider, как его правильно использовать и для чего
>нужно вешать меш коллайдер на казалось бы простой объект.
Нужно вешать кубы и капсулы, они производительней. Но иногда геометрия объекта просто не вписывается в куб и тут уже нет вариантов.
terrain collider же работает только с встроенным в Юнити тиррейном, ты его ни с чем другим не сможешь нормально использовать.
А теперь мой вопрос. Хочу сделать персонажа маленького роста, сантиметров двадцать. Писать собственный контроллер персонажа мне лень, беру готовый. С моделькой такого роста получаю полный пиздец по движениям и анимациям. Как думаете, есть смысл нормально все настраивать? Или проще тупо увеличить все объекты окружения?
> Персонаж не должен проходить сквозь текстуры
> возможность движения по наклонной поверхности
Ну если нужна физика, значит надо лезть в физику. Не?
>>91220
> Собственно отсюда уже второй вопрос вытекает, если у меня в игре будут панели парящие в воздухе по маршруту - что на них вешать? Тоже ригидбоди?
Ну если это физические твердые тела(участвуют в коллизиях, сквозь них нельзя ходить), то да.
> Я прочитал что движку придется каждый раз делать рассчеты.
При любом движении придется делать рассчеты. И все равно цена им около 0 в твоем случае.
> статичный объект движется то вообще смерть
Ну значит делаешь объект не статическим и двигаешь
При установке пакетов из пакетного менеджера возникает такая ошибка:
Converting circular structure to JSON
--> starting at object with constructor 'Error'
--- property 'error' closes the circle
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()
Что с этим делать? Перезагрузка и переустановка не помогли.
Так советуют переустанавливать и перезагружать
Или это так не работает? Каким образом мне правильно перенести мою локацию? Там есть как ровные поверхности так и холмы. Неужели нужно руками расставлять коллизии примитивы которые будут повторять очертания ?
Меш коллайдер
У нас есть модель эльфа. Для него сделано 3 набора брони, каждая состоит из 5 частей. (Шлем, нагрудник, штаны, перчатки, сапоги) Экипировать можно 1 часть любого набора брони. Игрок сам должен решать какие бонусы ему нужны и в зависимости от этого подбирать куски.
Но как это должно выглядеть с технической стороны? Создавать сотни возможных вариаций одной модели это же шиза. Шейдеры тоже не помогут, потому что броня выходит за пределы модели персонажа, особенно тяжёлая.
Лучше попытаться настроить. Там же вроде ничего сложного нет, сам юнити говорит, что надо step offset по такой то формуле подгонять к размеру объекта.
Собственно, хочу левел-апнуться и сменить место. Во многих конторах для миддла (от 200к) просят строгое соблюдение SOLID, DI. (иногда приписывают YAGNI, DRY)
Что есть почитать на тему или глянуть туториалы, чтобы сие использовалось в Юнити?
Туториал о том, как использовать солид в юнити? ты серьезно?
>делаем гиперказуальную-казуальную хуйню
>просят строгое соблюдение SOLID, DI
Это для хуевых прототипов которые за 2 недели собирают нужен солид и инверсия?
Советую канал:
https://www.youtube.com/watch?v=ZA-1BZPj3_U&ab_channel=SergeyKazantsev
Ваще это база, думаю после просмотра видосиков поймешь почему и вспомнишь как меняя какую то хуйню, переписывал пару классов или искал баг.
Unity Hub закрывал и запускал от имени администратора - не помогло.
погугли как сбросить кеш в хабе, может поможет
И что растет быстрее