Это копия, сохраненная 10 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
БАААМП! Юнити самый популярный движок, почему здесь нет бурного обсуждения никакого?
потому что о перекате забыли сообщить в прошлый тред. откуда ему появится в избранном то
Ебааать, и это представители юнити? Я лучше на анриле посижу тогда, там хотя бы community manager няшная тянучка.
Когда я приближаю камеру к 100+ объектам, сокращая таким образом их количество в области обзора, фпс падает, когда удаляюсь от них и держу все из них в области обзора, фпс растёт. Очень слабо растёт, разница на моей довольно старой пекарне в 10 фпс при очень простых моделях, от 60 до 70 в итоге, но тем не менее. Ничего с окклюженом не делал, один источник света, менял только шейдеры, чтобы ритмично прозрачность у половины объектов менялась в зависимости от времени. Сделал префабы, которые состоят из нескольких стандартных юнитовских фигур, заменил все модели, оставив те же шейдеры - фпс упал до 20-30, при этом наоборот при приближении фпс растёт на 10.
Что это вообще может быть?
И тебе привет, очередной "я самый умный юнити дураки не знают как делать движок".
Очевидно же, что движок говно, ведь ты у мамы гений, и ошибка 100% не в твоем проекте.
Привет, юнитипидар, что, в святом юнити не бывает ошибок да? Юнитиговно набито ими доверху.
>John Riccitiello (/rɪkɪˈtɛloʊ/) is an American executive who serves as chief executive officer (CEO) of Unity Technologies. Previously, he served as CEO, chief operating officer and president of Electronic Arts, and co-founded private equity firm Elevation Partners in 2004. Riccitiello has served on several company boards, including those of the Entertainment Software Association, the Entertainment Software Rating Board, the Haas School of Business and the USC School of Cinematic Arts.
Надо быстрее игры делать, пока такие CEO не успели ввести лутбоксы в Юнити.
Пять лет работало, анон, с 4.х, на 5.х. Но они немного переделали райкаст, судя по всему, из-за чего и сломалось. Уже починил, всё работает заебись.
У меня есть самолетик c Rigidbody, он летит вперед с помощью скрипта, движение через Rigidbody.MovePosition. Все работает нормально.
Хотел добавить ему анимации, idle и все такое, чтоб он покачивался и т.д. Влючил Animator, покрутил его, записал это, настроил анимации и переходы и пиздец, он теперь не плавно летает а его колбасит жостка. Он вроде и двигается по анимации и летит вперед, но его потрясывает и дергает сильно.
Вопрос: ЧЯДНТ и как по нормальному анимировать игровые движущиеся обьекты?
Я поправил ту штуку, спасибо за ответ.
Но в итоге мне окончательно помогла смена Update mode в Animator с Normal на Animate Physics. Заработался что-то и забыл проверить этот момент. Анимация стала плавнее и вроде перестала дергаться.
Вообще довольно сложную систему анимаций они сделали, как мне кажется. Не всегда понятно, что именно нужно сделать.
А ведь еще есть Timeline, там тоже свои приколюхи.
float time_passed = 0;
while (time_passed < time)
{
if (Input.GetKeyDown(KeyCode.Space)) break;
time_passed += 0.1f;
yield return new WaitForSeconds(0.1f);
}
Это нормальный подход или есть вариант лучше?
1600x900, 0:32
Работает, и вращение сохраняет по локальной Y оси. Разобраться бы еще с интерполяцией.
Советую инструмент ВЕРТЕКС. Очень гибкий. Делаешь из них меш, ну генерируешь и надо их генерировать ну чтоб коммиблок выходил. Ну сдвигать вертексы. Потом еще у-вэ координаты инструмент чтоб на вертексы текстуры накладывать. Так что советую оба этих инструмента.
1600x900, 0:45
Сделал интерполяцию между нормалями, выглядит более презентабельно.
Только по геймдизайну пока вообще хороших идей нет для мобильной платформы. И как оптимизировать этот праздник тоже по не умею.
У тебя Input.GetKeyDown может не сработать. Нажатие кнопки вниз нужно отлавливать в апдейте, эта хрень очень чувствительна ко времени. Например, в лейт апдейте она промахивается в 9 случаях из 10, а у тебя арбитрарный пропуск в 0.1 сек. Как думаешь, как часто пробел срабатывать будет?
while()
{
yield return null;
time_passed += Time.deltaTime;
if (NAZHALI_KNOPKU() || time_passed >= time) break;
}
yield return null пропускает один фрейм.
Нажатие кнопки может быть нужно отлавливать через переменную-посредника, типа где-нибудь в апдейте ставишь чек на нужную кнопку, делаешь переменную тру, если переменная тру, делаешь её фолс и возвращаешь в NAZHALI_KNOPKU() тру.
Прошедшее с последнего фрейма время это Time.deltaTime.
Arbitrary. Значит, что то, что ты делаешь, ничем не обосновано. Например, у тебя проверка на какое-то слово в тексте, и ты везде ручками вписываешь строку в каждом месте, где эта проверка происходит, вместо того, чтобы задать где-нибудь строковую переменную с нужным значением и сверять с этой переменной.
Чушь пишешь. Update(), корутины и LateUpdate() вызываются всегда по очереди за один цикл обновления. Там не может ничего пропасть.
Весь инпут стейт захватывается в начале кадра. Там ничего в реальном времени каждый раз не считывается
создавать новые пустые объекты
Спасибо, анон
>Physics: Fixed an issue where raycast may fail on terrain collider (1063586)
О, юнитеки в бетке 2019 пофиксили всю хуйню. Хотя мне уже и не надо.
В этом скрипте есть ссылка на триггер, но сам скрипт привязан к геймобжекту, который не связан с персонажем.
ЛОЖЪ!!! НЕ МОЖИТ БЫТЬ ОШИБКИ!
так корутина и не завершается, она живет внутри монобехейвора никак не связанная с местом вызова
Как лучше всего удалять обьекты со сцены в игре?
Есть монетки, игрок их собирает- они удаляются. Но слышал не один раз, что Destroy это плохой вариант и надо его избегать. Получается, достаточно просто скрыть текстурку? Или как?
Воткнуть public Bool переменную в тот скрипт, что привязан?
>Есть монетки, игрок их собирает- они удаляются. Но слышал не один раз, что Destroy это плохой вариант и надо его избегать.
Конечно, избегай, там просадки до 5фпс. Если две монетки быстро собераешь, то юнити может завистснуть!
>Сарказм или нет?
Нет, конечно, люди неспроста трезвонят, юнити и от платформера может тормозить, нужно оптимизировать!
https://www.youtube.com/watch?v=3mR-9KrXDFc&t=1323s
Хочу на оба стула сесть.
>>60711
Спасибо, буду разбираться.
Наговнокодить всегда легко, а я хотел бы сделать масштабируемый проект с хорошей производительностью. Я блин один movement скрипт пишу уже 4 дня. Очень сложно сделать по нормальному, когда не научился еще. Вообще игры сложно делать, очень сложно, столько сил надо, столько воли и терпения. А еще надо не перегореть на пол пути и довести все до конца.
>Вообще игры сложно делать
>выбрал unity, на котором даже 10-летние дети с легкостью делают игры
Тоже самое можно про любой игровой движок сказать. Да и вообще все в жизни делают 10 летние дети. Так что не знаю, что ты мне хотел сказать этим.
>Хочу на оба стула сесть.
Хоти дальше, от тебя мало что зависит - ты своими скриптиками на ядро движка никакого влияния оказать не сможешь. Будет у юнити где-то затуп на большом кол-ве объектов - придется смириться, такова плата за удобство и низкий порог входа.
У юнити не низкий порог входа, прогать на сисярпе довольно сложно. В редакторе легко модельки расставлять, но это не вход, это
>>У юнити не низкий порог входа, прогать на сисярпе довольно сложно. В редакторе легко модельки расставлять, но это не вход, это
Для тебя написаны десятки ассетов уже готовых систем, которые нужно только драгндропнуть в сцену и прочитать туториал для даунов.
Комбинировать и настраивать шаблоны, чтоб геймплей был как в dmc - задача геймдизайнера. За тебя только позаботились, чтобы тебе не нужно было лезть в код и изобрели за тебя велосипед.
Завершается, я проверял. Если вернуть на какое то время управления и функция, которая вызывала коррутину завершится, то и коррутина не продолжится выполняться.
Пулинг капля в море на самом деле.
С графеном больше всего проблем. Причём поликаунт в сцене сильно не влияет (сюрпрайз мазафака), влияет всё что прицепил к камере.
Дефолтное юнитевское стоит отключать к хуям (АА, post-process stack если есть, етц). Искать замену менее тяжёлую этому всему, юзать текстурные атласы, лоды, terrain2mesh (система террейна полная параша). На шейдоры стоит взглянуть и использовать mobile по возможности.
Ну это всё так, личные наблюдения, могу быть не прав.
>Комбинировать и настраивать шаблоны
Слился петуч, ничего там нет, кроме примитивной хуйни типа платформеров или наоборот суперрпоге конструктор, изъебы которого учить сложнее шарпа. Вместо того, чтобы сделать вот например двиг финалки 12, вот 13, вот дмц, они так же пилят универсальное говно со своим! скриптом.
Я дестрою без просадок фпс. Но это у меня из-за дизайна необходимость - каждый объект уникален, и ему могут быть прописаны любые значения игроком, пулить такое бессмысленно. Если у тебя монетки всегда одинаковые, то суй их в пул. Или, если тебе в принципе норм, если будет невидимая монетка висеть в прошлом месте (мало ли - респавн или что-нибудь такое захочешь делать), то GameObject.SetActive(false) или как-то так в помощь.
По моему личному опыту пулить надо главным образом элементы интерфейса. И вообще юнити как-то очень хуёво с изображениями обращается, Я-то по наивности думал, что 3д сложнее 2д, ан нет, 3д у юнити быстрый, а вот 2д в каждой первой юнькоигре лагучий и полон ошибок - достаточно на 2д игры на юньке в стиме глянуть.
>Для тебя написаны десятки ассетов уже готовых систем
>Пиздишь, лошок, дмц системы нету, и из платформераговна ее не собрать
>за тибя фсе сделать, сам пиши
ECS сейчас на таком этапе, когда для использования надо смотреть сорцы и читать патчноуты.
Судя по твоему вопросу, стоит еще годик подождать.
Но если прям вообще хочется, то документация на гитхабе, видосы на ютубе (хоть и немного устаревшие), мне этого хватило чтобы вкатиться.
Я люблю начинать изучение с аутирования над готовым примером, а не с трех часов бубнежа что такое Е C и S по отдельности и вместе.
Чтобы ассетодаунам, коих большинство на юнитиговне, которые хотят сделать клон топовой игры, можно было купить и сделать, уебище тупое. Думай своей даунской башкой, прежде чем хуйню спрашивать.
Окей, понял, спс.
Есть fbx сцена, где используется этот объект.
Почему юнити делает материал для этого объекта полу прозрачным. Нахуя он так делает? Как это пофиксить?
Читал вот, что объекты с коллайдерами ни в коем случае нельзя двигать, если к ним не прикреплены rigidbody, типа это нарушает просчеты физики движка и все такое.
А я вот двигаю их, они у меня в качестве триггеров работают для игры. Возможно не самое лучшее решение, но теперь мне что, на них rigidbody лепить чтоль? Хотя их всего 9 штук. Наверное это не так уж и критично.
Короче: двигать коллайдеры без рб или нет?
>объекты с коллайдерами ни в коем случае нельзя двигать
Обесните тогда, как с этими rigidbody управляться, если мне физика не всралась? У меня она вся заскриптована на триггерах. Коллайдеры тоже на объектах есть (как иначе просчитывать столкновения игрока с врагами и препятствиями?)
А если не дай боже где-то оставлю rigidbody, начинается цирк с конями, гда объекты взбираются друг на друга и творят прочую содомию.
Мне не нужна эта физика, хочу максимально заскриптованное перемещение.
Использую character controller, везде где читал - юзается или character controller, или rigidbody. Значит с контроллером должно быть норм, это какбе полностью предусмотрено функционалом, а он физику не юзает.
Потому что обычные коллайдеры предназначены для статики. И если ты их двигаешь без ригидбоди, то там много перерасчетов происходит. Как-то так. Так было раньше. А как в новых версиях - хуй знает.
https://unity3d.com/ru/learn/tutorials/topics/physics/physics-best-practices
Игровые объекты, не имеющие компонента RigidBody, считаются статическими коллайдерами. Об этом важно помнить, поскольку пытаться перемещать статические коллайдеры крайне неэффективно, так как он заставляет физический движок пересчитывать физический мир снова и снова. К счастью, профилировщик сообщит вам, перемещаете ли вы статический коллайдер, добавив предупреждение на вкладку предупреждений на CPU Profiler.
Это всё ещё актуально только для 2D режима, в 3D мир больше не перерисовывается. Начиная с версий 5.х.
Эй, здесь вообще кто-нибудь делает RTS?
Ты делаешь, наверное.
Понятно, что есть гайды, только человеческое обьяснение от анона было бы намного понятнее. Хотя бы в двух словах можете обьяснить их разницу?
>Is Kinematic на Rigidbody вырубает его физику же
У меня такая хрень происходит, даже с kinematic:
https://answers.unity.com/questions/651764/keep-enemies-from-moving-on-top-of-each-other-like.html
Все constraints включены. На изменение slope limit ему похуй.
Если убрать вообще rigidbody и оставить коллайдер, всё норм. Не знаю баг это, или я делаю что-то не так.
Мне кажется, у тебя со скриптом управляющим этими обьектами что-то, если даже такие изменения не помогают.
Но на крайний случай это да, баг юньки, хех.
Сколько полигонов в среднем задаешь на одну модельку (юнит), и сколько задаёшь на здания.?
А так же сколько в среднем анимаций цепляешь на одного юнита?
Как визуализушь спецэффекты. (вспышки выстрелов, взрывы).
Я пытаюсь понять, как максимально повысить производимость RTS, минимально урезав в визуализации.
Никак, бегаю на серых кубах и лоупольных пижженых ассетах, пока ебусь с навигацией и механикой приказов и режимов взаимодействий.
аниматором пользуйся. тут тебе и стейт машина для анимаций и инверсивная кинематика и прочее говно вроде прилипающих ножек.
Animation старое как говно мамонта и им не рекомендуется пользоваться. он нужен только если хочется велосипедить.
>>61562
расскажи че сделал
>>60886
стоит просто потому что вместе с ним идет вся эта хуйня в виде джобсов и бёрст компайлера. что на самом то деле просто заебись. но если тебе хочется просто ECS то лучше как по старинке ебошить все структами. когда ECS станет более юзабельным то пересесть со стула на стул будет не так и больно
>>60871
чем тебе террейн то не угодил? кроме полужопинских колайдеров у деревьев он довольно клёвый. и в последних версиях даже не такой тормозной.
Окей спасибо.
Так круто сделал, беру InputX и Y и анимацию зависящую от етого замутил, прикольно получилось. До этого просто дергалось, а это я в скриптах замудрил. В общем разобрался, спс, буду аниматором пользоваться.
>когда ECS станет более юзабельным
Лепить на геймобджекты прокси-компоненты и обрабатывать их в системах можно уже сейчас, не теряя доступа к этим данным из monobehaviour. Можно даже сами монобехавиоры в системах процессить, производительность правда такая себе.
Джобсы и бёрст идут отдельными пакетами, кстати.
>Cтрелковый тренажер с учетом опыта компьютерных игр разработали в РФ
Ну и кто из вас, уёбков, это сотворил?
Ну смотри, ближе камера - для большего числа пикселей пикселей надо рассчитывать освещение. Может быть это перевешивает.
Это так, просто предположение с дивана.
Просто вычитай от saturation дельтатайм. Дельтатайм при 60 фпс всегда равен 1/60, ты всегда получаешь одно значения при текущих вычислениях.
Сделал вычитание через цикл, все работает, спасибо анон
да, но в monobehaviour компоненте можно просто оставлять индекс структа в каком-то глобальном массиве и сделать чтобы когда ему что-то надо то он щемился туда. в целом конечно ECS удобней чем вся эта хуйня и приятно когда не надо изобретать свой велосипед и можно просто сесть на готовый. просто пока сидения не приделали, сидеть на нём не удобно.
джобсы и бёрст то отдельными пакетами конечно, но учитывая сколько их подгоняют друг под друга я не удивлюсь если они в итоге станут чем-то одним.
>>61760
в целом да, есть. но в большинстве случаев об этом думать не стоит. разве что ты там сортировку оптимизируешь или ещё какую важную хуйню.
опрятный читабельный код > производительный код
>>61843
и до этого писали. только куда лучше когда уже что-то за тебя написано, а не как в годоти!
>>61609
Пока есть:
Загрузка юнитов из базы характеристик
Локализация интерфейса
Универсальные абилки
Частично сделана указание не в точку карты а в геолокацию, типа "иди к мосту" или "охраняйте сектор В2"
Тактическая и стратегические карты/камеры
Несколько видов перемещения по местности
Зайчатки на АИ и разведку по приказу
Зайчатки радиоразведки - будет замена туману войны
Базовая экономика
Говняная навигация на юнити навмеш.
В планах решить перепиливать это на ЕСЦ или нет(планирую масштаб одной мотострелковой роты на игрока, вроде бешеная производительность не нужна)
И как привертеть кооп и мультос.
https://blogs.unity3d.com/ru/2019/02/26/on-dots-c-c/
Сколько же сил они в эту хуйню вкидывают, хотя главное в борьбе с анриалом это рендер.
ну дык. границы то интересно узнать. вдруг ты там хочешь ебани побольше вплоть до уровня "в тылу врага" где у каждого юнита свой инвентарь.
Не, не настолько. (хоят в тылупирога я веселился перезаряжая танк руками, нося по одному снаряду на солдате)
Микры поменьше, подумать побольше.
Игрок типа в чине от летехи до подполкана.
>инди-хуинди не могут себе его позволить один хуй
Что эта идиотская фраза должна значить? Ты же понимаешь, что, даже просто кубики расставленые в анриале уже красиво выглядят, инди-хуинди именно в этом и нуждаются, чтобы двиг компенсировал.
вообще в тылу врага если бы имел кнопочки позволяющие автоматизировать некоторый охуительный процесс вроде "подобрать патроны с трупов" то там подобное было бы менее мучительным. вообще ты вот докладывай об успехах в тред, всегда интересно что другие делают же.
>>61863
они выглядят как кубики и там и там. просто анрил тебе в ебало ещё сует всякие отвратительные вещи прямо в окне сцены. лучше игры делай, а не графон. графон не сделает из плохой игры хорошую.
Как будет графен свой хоть немного и вся общая логика - начну делиться с анонами инфой.
>графон не сделает из плохой игры хорошую.
Какая разница, тупица, вообще похуй на качество игры, главное засветить скрины и продать. Качественный гейплей можно и без движков делать. Нахуй они весь этот оптимизон пилят, юнити это что, двиг для стратегий? На деле одно платформероговно.
нука выдели платформоговно из списка за последние пару лет https://en.wikipedia.org/wiki/List_of_Unity_games
>нука выдели платформоговно из списка за последние пару лет
Pikuniku! Протыкал несколько ссылок, игр где нужен сложный просчет практически нет, ну где, в феникс поинте? Фсе.
что, теперь не платформоговно уже? а рассматриваем как сильно игры комнату обогревают? так то разумеется довольно много игр из списка требуют перфоманс. рпг говно вроде Pathfinder, или PoE2 уже прилично требует. ну а говно вроде Oxygen Not Included или RimWorld так ваще охуеть. на юнити то говно самых разных жанров выпускается. если оно ещё тормозить перестанет так будет просто замечательно.
>Так вопрос, на что тратить ресурсы, на улучшение графона или чтоб код быстрее выполнялся.
вообще если рассматривать вопрос про инди-хуинди то я бы не сказал чтобы на анриле инди-хуинди имело графон сильно лучше чем в юнити инди-хуинди. можно вспомнить всякое вроде Everspace, или Moss. но я бы не сказал чтобы они так уж хорошо выглядели для того как анрил облагораживает графон.
Escape from Tarkov вон сделан на юнити а тоже иногда выдает хорошую картинку. или Ghost of a Tale. а ведь инди-хуинди.
с другой стороны если открыть https://en.wikipedia.org/wiki/List_of_Unreal_Engine_games#Unreal_Engine_4 и полистать то там раз через раз либо шутан либо адвенчура. тогда как на юнити жанры выходящих игр разнообразней.
>Платформероговно имелось в виду, что средний индюшатник не пилит свой XCOM.
дык ведь сложно же. хотя на юнити время от времени вон выходят же шедевры вроде симулятора финляндии "my summer car" с его симуляцией ломающейся машины. правда сложно сказать станет ли он лучше со всеми приблудами для перфоманса, или тем более графона. или вон этот ублюдок рокет же пилит свой stationeers с симуляцией газов. правда он темболее лучше не станет от новых приблуд.
на анриле что-то этакое навскидку я только satisfactory вспомнить могу.
Да я не сравниваю с анриалом, я говорю, что нужно вкидывать бабло в рендер, чтобы индюкам легче было картинку лучше выдавать, а там и преимущество перед анриалом видно будет, а на оптимизации сишарпы большинству насрать и никто про них не узнает.
по моему напрямую сравниваешь постоянно упоминая его.
да ладно сколько игр на юнити имели пиздецовую оптимизацию, особенно на релизе. пальцев на руках и ногах не хватит сосчитать. притом некоторые игры вроде BattleTech были бы куда популярней если бы небыли такими тормозными.
вообще. если юнити будет давать более крутые инструменты для того чтобы делать перфоманс то будет выходить больше игр требующих этот перфоманс. и тогда преимуществом будет уже это. на юнити и так уже проще лепить игры отличающиеся от экшонов и адвенчур, разрыв в этом преимуществе будет ещё больше.
>по моему напрямую сравниваешь постоянно упоминая его
Когда я писал, что не сравниваю с анриалом, я имел ввиду, что центром разговора является юнити и из оптимизации, а не юнити против анриал, ты тупой блять.
>>61915
>сколько игр на юнити имели пиздецовую оптимизацию
Юнити тут мало поможет
>>61915
>если юнити будет давать более крутые инструменты для того чтобы делать перфоманс то будет выходить больше игр требующих этот перфоманс
Да дело в том, что у них уже все заебись, с перфомансом. На сколько сишарп медленнее плюсов? Во сколько раз его можно ускорить?
>сишарп медленнее плюсов
Подобными сравнениями ты только демонстрируешь собственное незнание программирования.
очень странно, но ладно можт ты и прав
на всякий случай: ты надеюсъ понимаешь что корутина сама по себе вызывается один раз, а если надо чтоб она работала в бекграунде, то внутри нее надо ставить бесконечный цикл while(true)
>Когда я писал, что не сравниваю с анриалом, я имел ввиду, что центром разговора является юнити и из оптимизации, а не юнити против анриал, ты тупой блять.
тогда нахуй ты вообще анрил то вспомнил. весь диалог задала фраза
>хотя главное в борьбе с анриалом это рендер.
вот и говорим о борьбе.
>На сколько сишарп медленнее плюсов? Во сколько раз его можно ускорить?
у юнити то шарп в плюсы компилится один хуй. вообще какой-то дурацкий вопрос. всё зависит от контекста.
вон довольно сильно можно ускорить отключением проверок чтобы выстрелить себе в ногу наверняка https://docs.unity3d.com/Manual/IL2CPP-CompilerOptions.html но то что сейчас там делают разумеется лучше чем вся эта хуйня. и чтобы это получить не надо совать кочергу себе в задницу так глубоко как сейчас.
>>61923
ещё и на прохожих бросаешься. возможно ты просто школьник который и в игры не играет а только кинцо смотрит?
но она не работает в бэкграунде. она все так-же крутится в основном потоке. https://docs.unity3d.com/Manual/ExecutionOrder.html
хотя у корутин конечно клевый синтаксис местами. можно например сразу ебануть
IEnumerator Start() {} и тогда вызовется на старте.
>тогда нахуй ты вообще анрил то вспомнил. весь диалог задала фраза
Это у тебя просто очко уже четко заточено на срач, на обвинения, и в любом разговоре тебе нужно выискать врага.
У нее хуй?
сделай рэйкаст который ты пускаешь из камеры которая рендерит в картинку, хули. а вообще можно скипнуть картинку и сразу рендерить камеру на какой-то участок интерфейсам типа такого. тогда и возится с экранными координатами даже не придется.
Изображение выводится на экран с 1 камеры, и если я буду рейкастить экран через 2 камеру, то любая полученная координата будет в пределах размера 1 камеры.
Блять, я ебанутый, хуйню спизданул, сорри.
Разве с ними не контачат battle state games которые escape from tarkov замутили? Могли бы им заказать.
ах да, я вдруг представил, что живу там где хотят сделать что-то качественное а не попилить бюджет, глупый-глупый.
Кватернионы - тема.
Так в этом же и прикол. Гравитация направлена не к центру меша а к ближайшей нормали. С боксом ещё отлично работает но сфера "сглаживает' нормали и объекты ложатся на планетоид ненатурально и качаются .
Хочу сделать такую панельку в 3д игре, что когда игрок входит с какой-то её частью в контакт, конкретно эта часть обьекта меняет цвет/добавляет очков, а остальной обьект остается неактивен.
У меня получилось сделать это с целым обьектом, но я так понимаю, мне надо разделить меш на кусочки и считать отдельно каждый кусочек. А сейчас у меня меш это один большой кусок, лол.
Как его разделить? В какую сторону копать? Или мне проще вообще не ебаться, и построить обьект из отдельных маленьких кусочков и считать каждый отдельно?
То есть сама башня должна быть устойчивой и раскачиваться только от движения самой платформы, а не под действием собственного веса. С весом, гравитацией пытался играться, но все значения дают примерно одинаковый результат.
>>62184
> если стоит идеально ровно, начинает проседать и нижние блоки начинают "скользить" толипод собственным весом, толи еще под чем
Посмотри на материал объекта, по умолчанию он относительно скользкий. С весом rigidbody тоже пошамань. В видео Фодди, который любит с физикой играться, вроде какие-то интересные вещи говорит.
Сам я физон практически не тыкал обоссы но не бей, 300к/нс сениор, но судя по туторам складывается впечатление, что чаще удобнее имитировать фичи через пару строк кода и коллайдеры, чем пытаться заставить rigidbody делать то, что ты хочешь. Rigidbody без пердолинга идеально подходит для того, чтобы у тебя по арене бочки катались, мусор ногами пинался и т.п.
Материалы тоже пытался потыкать, что интересно, кто-то говорит, что это из-за эффекта bouncing, мол колебания башни увеличивается и вся конструкция становится нестабильной. При этомполностью отключить его так и неполучилось, даже с подобными параметрами. В общем гляну туториалы еще, но если будут идеи - пишите, а то я совсем не вкуриваю. Ну и писать собственную физику, даже самую простецкую, не радует.
алсо, friction 0 тоже не решает проблему
а нахуй ты с этим ебешся? у тебя панельки чтоли каких-то нестандартных размеров? просто одну панельку передвигать куда тебе там надо не хочешь?
>>62184
по переключай режим детекции коллизии. а вообще физон цепочки объектов никтогда и не давал хорошего результата. наверно лучшим советом будет постоянно уменьшать массу блоков которые сверху бросаешь.
И правда, если платформу сделать статичной, а каждый последующий блок делать немного легче, то конструкция становится устойчивее. Другой вопрос - как можно было бы придавать эффект "раскачивания" от передвижения нижней платформы?
вообще хуй его знает. тут уже я не вижу таких простых решений и никогда не пытался это делать. может просто будешь придавать сам Rigidbody.AddForce в сторону в которую платформа двигается? можно например придавать силу не сразу всем объектам, а делать её волной относительно высоты.
но вообще твоя затея немного не вписывается в то как работает физон. посчитать где столкнутся обьекты "А > Б" то не сложно. а вот посчитать в цепочке коллизий "А > Б > В > Г > Д" как А взаимодействует с Д уже довольно сложно и ощутимо зависит от того в каком порядке эти объекты обрабатываются физоном. чем в юнити насколько я знаю не дают управлять. самым простым решением получить лучший результат будет наверно написать свое подобие физона, но это не выглядит хорошим решением.
>а нахуй ты с этим ебешся?
Да хотел сделать так, чтоб если увеличивать/уменьшать длину пластины этой, то автоматически скрипт уменьшал/увеличивал число элементов, которые меняют цвет/добавляют очки.
Я наверное плохо обьяснил, потом попробую сделать так, как планировал, но пока буду переставлять просто все эти штуки.
OnTriggerEnter(Collider other){ }
получил вхождение именно во второй коллайдер, а не первый? Как уточнить, какой именно коллайдер я хочу проверить?
Вопрос глупый, но чот не получается разобраться.
Впринципе похуй просто два обьекта кинул разных, и так сойдет.
пустой чайлд @ бох коллайдер
Делаю 2D шутемап и столкнулся с таким багом:
Когда префаб пули прилетает в мобов, он сначала дамажит их от того, что влетает в агро-сферу (сферический коллайдер, который заставляет мобов агриться, если игрок в него заходит), а потом повторно еще при соприкосновении непосредственно с мобами. И такого быть не должно, пуля должна коллайдить только мобов и после этого исчезать.
Детектор повреждений (висит и на мобах и на персонаже) у меня выглядит следующим образом:
public virtual void OnTriggerEnter2D(Collider2D other)
{
if (DamageSources.Contains(other.tag))
{
StartCoroutine(TakeDamage());
}
}
То есть, есть списочек с тегами, выведенный в инспектор, где можно назначить, от чего будет идти дамаг по мобу.
Все еще не очень понимаю, каким образом агро-сфера (которая висит чайлдом у Enemy) реагирует на источник дамага.
Алсо, пробовал прицепить к агро-сфере еще скрипт с IgnoreCollision(), выглядит так:
[SerializeField]
public Collider2D other;
private void Awake()
{
Physics2D.IgnoreCollision(GetComponent<CircleCollider2D>(), other, true);
}
Тоже нихуя не работает. Даже пробовал из других скриптов в этот делать SendMessage(), вроде и отправлялось, а все равно не срабатывало.
А вот код с которым пуля должны исчезать при коллайде с вражиной:
public void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag.Equals("Enemy"))
{
Destroy(gameObject);
Debug.Log("Bullet has been destroyed");
}
}
Причем, пробовал и другие теги ставить и на других объектах тестить - пуля никак уничтожаться после коллайда не хочет.
ЧЯДНТ?
Делаю 2D шутемап и столкнулся с таким багом:
Когда префаб пули прилетает в мобов, он сначала дамажит их от того, что влетает в агро-сферу (сферический коллайдер, который заставляет мобов агриться, если игрок в него заходит), а потом повторно еще при соприкосновении непосредственно с мобами. И такого быть не должно, пуля должна коллайдить только мобов и после этого исчезать.
Детектор повреждений (висит и на мобах и на персонаже) у меня выглядит следующим образом:
public virtual void OnTriggerEnter2D(Collider2D other)
{
if (DamageSources.Contains(other.tag))
{
StartCoroutine(TakeDamage());
}
}
То есть, есть списочек с тегами, выведенный в инспектор, где можно назначить, от чего будет идти дамаг по мобу.
Все еще не очень понимаю, каким образом агро-сфера (которая висит чайлдом у Enemy) реагирует на источник дамага.
Алсо, пробовал прицепить к агро-сфере еще скрипт с IgnoreCollision(), выглядит так:
[SerializeField]
public Collider2D other;
private void Awake()
{
Physics2D.IgnoreCollision(GetComponent<CircleCollider2D>(), other, true);
}
Тоже нихуя не работает. Даже пробовал из других скриптов в этот делать SendMessage(), вроде и отправлялось, а все равно не срабатывало.
А вот код с которым пуля должны исчезать при коллайде с вражиной:
public void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag.Equals("Enemy"))
{
Destroy(gameObject);
Debug.Log("Bullet has been destroyed");
}
}
Причем, пробовал и другие теги ставить и на других объектах тестить - пуля никак уничтожаться после коллайда не хочет.
ЧЯДНТ?
ну раздели эуйню по разным физическим слоям и убери колизию одного с другим, хули.
>по разным физическим слоям
Ты имеешь ввиду слои, которые в инспекторе настраиваются сверху? Если да, то пробовал - бестолку.
>убери колизию одного с другим
Агро-сфера и так не должна ни с чем реагировать, кроме объектов с тегом Player. Вообще. Никак. Там в коде ни строчки про коллайд с другими объектами, а сверху еще скрипт с IgnoreCollision() висит.
поставь агросфере слой 1, поставь плееру слой 2, поставь всему остальному любой другой слой, оставь у слоя 1 колизию только со слоем 2.
https://docs.unity3d.com/Manual/LayerBasedCollision.html
Охуеть, сработало! Спасибо, анон, теперь сфера дамаг не воспринимает.
Но проблема с тем, что пуля не исчезает, осталась. Может, и тут чего подскажешь?
в душе неибу, то что ты дал на дваче все равно читать невозможно. если в твоем посте кода больше чем сообщения то лучше суй его на пастбин и ссылку в тред кидай. потрогай пулей врага, проверь вызывается ли OnCollisionEnter2D на ней.
а вообще нахуй ты пулями как индивидуальными объектами управляешь? сделай себе менеджер пуль, который вместо всей этой хуйни c коллизией каждый тик бы делал Physics2D.CircleCast траектории пули и уже так проверял колизии-хуизии.
>если в твоем посте кода больше чем сообщения то лучше суй его на пастбин и ссылку в тред кидай.
Полный скрипт пули https://pastebin.com/xUcshwk1
>потрогай пулей врага, проверь вызывается ли OnCollisionEnter2D на ней.
Не вызывается. Враг реагирует на пулю, пуля на врага - нет.
>а вообще нахуй ты пулями как индивидуальными объектами управляешь?
Потому что так проще. Я в программирование три месяца назад вкатился, пока с трудом ориентируюсь.
>сделай себе менеджер пуль, который вместо всей этой хуйни c коллизией каждый тик бы делал Physics2D.CircleCast траектории пули и уже так проверял колизии-хуизии.
Вот это я даже не до конца понимаю как будет работать.
Что плохого в том, чтобы пули отдельными объектами вызывались?
А ты не тот анон, который пилит RTS с углублённой системой приказов для юнитов? Просто сейчас уже у тебя уже командная ветка, более развита, чем у 75% современных ртс.
1040x746, 0:07
лол ну проверь слои может пуля не коллайдится с тем чем должна
>Потому что так проще. Я в программирование три месяца назад вкатился, пока с трудом ориентируюсь.
да ладно, референс от валуе типа отличаешь и нормально
>Вот это я даже не до конца понимаю как будет работать.
https://drive.google.com/open?id=1pgW8GGhCHtP5fWxeViWxhmHNr_kkeUP6
ну на тебе небольшой экзампл. можно пол часика и потратить на анона с двачей.
код: https://pastebin.com/Q6tQqMD0
>Что плохого в том, чтобы пули отдельными объектами вызывались?
всё раскидано по куче скриптов, потом искать что где как вызывает. да ну нахуй.
ну и вот оптимизон можно сделать! не удалять и не создавать лишние объекты.
Хочу сделать собственный редактор уровней, чтобы игрок мог сам создавать уровни в будущем, да и чтоб мне было проще. основной геймплей как раз и реализуют сами уровни, поэтому и хочется специальный редактор для этого
Если говорить просто, то мне для создания собственного редактора нужно создать отдельный Юнити проект, в котором будет созданный мной инструментарий по моделированию карт, который по итогу будет созданный уровень переводить в файл по типу сейв файла, только с настройками уровня. Файл, в котором будут указаны координаты всех обьектов и т.д. А потом я просто в самой игре реализую возможность загрузки всех этих обьектов по их координатам из файла.
Получается цепочка: Отдельный проект редактор уровней -> создание в нем уровней с помощью заложенного мной функционала -> сохранение координат и свойств обьектов в специальный файл -> загрузка этого файла в самой игре
Я правильно все понимаю? Или есть какие-то другие варианты, не такие очевидные?
ты все правильно понимаешь. гугли как сериализовать и десериализовать.
хотя редактор и игру можно и в одном проекте хуячить, просто билдить по разному.
>ну на тебе небольшой экзампл. можно пол часика и потратить на анона с двачей.
Спасибо, конечно, анончик, знатная штука, но я даже с кодом перед глазами очень слабо перевариваю работу всей этой штуковины.
Но на всякий случай схоронил, может, подсмотрю для себя чего полезного.
Алсо, сколько нужно заниматься кодом, чтобы такой скрипт написать за полчаса?
У меня бы на него пара недель ушла.
Тоже глянул скрипт его, и правда крутой.
Я же правильно понял, что у него на пастебине там два скрипта в одном, где
public class BulletExplosion : MonoBehaviour{
это уже другой скрипт начинается?
А вообще такое с опытом приходит же, я думаю какой-нибудь эксперт написал бы еще лучше и еще более компактно.
Кстати, тот анон программистом работает или это чисто для себя ты так кодить научился?
Кекнул с этого процедурного говнокода
>>62607
>я даже с кодом перед глазами очень слабо перевариваю работу всей этой штуковины.
наверно надо было комментов нахуячить ещё чтобы понятно было. но это ещё пол часика бы заняло. там то просто всё.
class BulletManagerExample : MonoBehaviour висит на камере чтобы вызывать OnPostRender на ней и линии рисовать. но вообще можно было иметь в другом месте скрипт который бы в Camera.onPostRender добавлял свой делегат и делал то-же самое.
class BulletExplosion : MonoBehaviour возвращает в пулл партиклы которые закончили свою анимацию
static class BulletManager управляет всей этой хуйнёй
Bullet[] bulletsArray хранит все выпущеные снаряды, те у которых время жизни больше 0 считаются активными
int bulletsCreated считает индексы которые были использованы в этом массиве
int[] freeIndexStack в него возвращаются освободившиеся индексы из массива буллетов
int freeIndexStackLength сколько индексов содержат значения в этом стаке
ну а дальше думаю и так понятно. когда спавнится пуля то если в стаке есть свободный индекс, то берется он, если его нет то увеличивается используемый размер массива пуль. если размеры чего-то из этого достигли физических размеров массива то массивы ресайзятся.
>Алсо, сколько нужно заниматься кодом, чтобы такой скрипт написать за полчаса?
как всегда зависит от того что дрочишь. подрочишь недельки 2-3 массивы, сможешь массивы. подрочишь GL в юнити, сможешь его. узнаешь про пуллы, сможешь этот фокус с пуллом партиклов. а то что я все это в одном месте объединил, так не первый раз пишу подобные менеджеры. после того как у тебя на такое ушла бы пара недель, второй раз написал бы ты так-же за пол часа.
>>62616
сразу три класса в один пастбин сунул, чтобы не открывать три ссылки. так то да, их надо в 2 разных файла совать, чтобы вешать в юнити можно было на геймобжекты. впрочем в экзампле и так все рассовано куда надо.
>А вообще такое с опытом приходит же, я думаю какой-нибудь эксперт написал бы еще лучше и еще более компактно.
а надо ли? и так засрал местами все тернарными операторами.
>Кстати, тот анон программистом работает или это чисто для себя ты так кодить научился?
умеренно работаю, но научился то для себя.
>>62607
>я даже с кодом перед глазами очень слабо перевариваю работу всей этой штуковины.
наверно надо было комментов нахуячить ещё чтобы понятно было. но это ещё пол часика бы заняло. там то просто всё.
class BulletManagerExample : MonoBehaviour висит на камере чтобы вызывать OnPostRender на ней и линии рисовать. но вообще можно было иметь в другом месте скрипт который бы в Camera.onPostRender добавлял свой делегат и делал то-же самое.
class BulletExplosion : MonoBehaviour возвращает в пулл партиклы которые закончили свою анимацию
static class BulletManager управляет всей этой хуйнёй
Bullet[] bulletsArray хранит все выпущеные снаряды, те у которых время жизни больше 0 считаются активными
int bulletsCreated считает индексы которые были использованы в этом массиве
int[] freeIndexStack в него возвращаются освободившиеся индексы из массива буллетов
int freeIndexStackLength сколько индексов содержат значения в этом стаке
ну а дальше думаю и так понятно. когда спавнится пуля то если в стаке есть свободный индекс, то берется он, если его нет то увеличивается используемый размер массива пуль. если размеры чего-то из этого достигли физических размеров массива то массивы ресайзятся.
>Алсо, сколько нужно заниматься кодом, чтобы такой скрипт написать за полчаса?
как всегда зависит от того что дрочишь. подрочишь недельки 2-3 массивы, сможешь массивы. подрочишь GL в юнити, сможешь его. узнаешь про пуллы, сможешь этот фокус с пуллом партиклов. а то что я все это в одном месте объединил, так не первый раз пишу подобные менеджеры. после того как у тебя на такое ушла бы пара недель, второй раз написал бы ты так-же за пол часа.
>>62616
сразу три класса в один пастбин сунул, чтобы не открывать три ссылки. так то да, их надо в 2 разных файла совать, чтобы вешать в юнити можно было на геймобжекты. впрочем в экзампле и так все рассовано куда надо.
>А вообще такое с опытом приходит же, я думаю какой-нибудь эксперт написал бы еще лучше и еще более компактно.
а надо ли? и так засрал местами все тернарными операторами.
>Кстати, тот анон программистом работает или это чисто для себя ты так кодить научился?
умеренно работаю, но научился то для себя.
Хитрым образом юзать StateMachineBehaviour? Записывать в переменную?
Так проверяю текущее состояние:
animator.GetCurrentAnimatorStateInfo(0);
Есть ли какие-то варианты?
наиболее адекватно через StateMachineBehaviour.OnStateExit обновлять переменную последнего стейта. но это на каждый стейт это говно придется совать. че сделать то пытаешься?
Допустим аниматор в состоянии "атака", сразу после него нужно войти в стейт "бег" при соблюдении условия.
У меня получается, что если зажата кнопка бега и игрок жмёт при этом кнопку атаки (не отпуская бег), он останавливается, выполняет атаку, а дальше по идее должен быть транзишен обратно в бег, который работает криво и играется часто невпопад (хотя казалось бы и condition указан нужный). Отчего хотелось бы этот момент захардкодить скриптом, минуя транзишены.
а просто не отсылать триггер атаки в аниматор если магнитуда вектора бега отличается от нуля не?
Ну хотелось бы, чтобы атака имела приоритет перед бегом.
В теории проблему должно решить что-то вроде этого (после атаки мы по дефолту возвращаемся в idle, скрипт проверяет что мы таки движемся и меняет idle на run):
var clipInfo = animator.GetCurrentAnimatorStateInfo(0);
var controller = GetComponent<CharacterController>();
...
if (controller.velocity != Vector3.zero)
{
if (clipInfo.IsName("idle"))
{
animator.CrossFadeInFixedTime("run", 0, 2);
}
}
Но это почему-то не работает при постоянно зажатой клавише бега и игрок тупо в idle продолжает двигаться.
Сделай себе менеджер состояний персонажа через энум и из него решай какую анимацию проигрывать.
public class Player : MonoBehaviour
{
public enum PlayerState
{
IDLE,
WALK,
SPRINT,
CROUCH,
DEAD
}
public PlayerState currentPlayerState;
}
Используй кучу проверок всего и вся типа игрок стоит на поверхности, игрок идёт, игрок дрочит, игрок падает, (не)нажата любая клавиша и т.д. и каждое действие ограничь правилами.
Энум автоматом присваивает членам индексы, и ты можешь их напрямую кидать в аниматор, если хочешь, по типу
animator.SetInteger("state", (int)Player.PlayerState.WALK);
Ух, ебать.
Сохранил твой пост .txt-файликом рядом с экземплом.
кстати, вопрос про пулю, не реагирующую на врагов, все еще актуален
насчет слоев, как ты сказал - если пулю пихать во 2 слой, где и враг, то она будет снова коллайдить агро-сферу, которая на 1 слое и коллайдится только со 2.
>игрок тупо в idle продолжает двигаться.
Так у него ввод неправильно обрабатывается, причём тут переходы.
1112x816, 0:18
>>62676
так сделай приоритет над бегом. вообще нахуй читать состояния аниматора, когда ты все переходы и так извне указываешь?
>>62734
ну так добавь коллизии нужного слоя с нужным. хотя думаю за это время и так уже догадался.
Установить 4.7.1 не получается - выдает ошибку, что на компе уже установлена поздняя версия. Да, я вроде недавно установил 4.7.2.
Потом попробовал вручную в файлах .csproj заменить 4.7.1 и на 4.7.2, и вуаля, работает, но при перезапуске проекта там снова заменяется на 4.7.1. Короче, это юнити заменяет.
Что же делать
>не лгбт
Че?
>Обновления ставишь?
С момента покупки (месяц назад) на ноуте ничего вручную обновлял
Спасибо, получилось
В ШАПКУ!
>графические примитивы
че надо то? https://docs.unity3d.com/ScriptReference/Handles.html это чтоли?
>рисовать тысячи спрайтов на экране, не создавая тысячи объектов
рисуй партиклами, хули. или через GL ебани, или шейдор напиши за пять минут.
>Почему я не умею рисовать графические примитивы или рисовать тысячи спрайтов на экране, не создавая тысячи объектов?
Поправил.
>че надо то? https://docs.unity3d.com/ScriptReference/Handles.html это чтоли?
Это же в редакторе сцены
Это что же за движок такой, в котором еще особые умения нужны для того, что в других одной строчкой кода делается?
в редакторе сцены хуйню рисовать, да. а ещё гизмосы есть.
так то хуй знает что тебе надо. че хочешь то? это?
https://docs.unity3d.com/ScriptReference/Graphics.DrawMesh.html
или это?
https://docs.unity3d.com/ScriptReference/Rendering.CommandBuffer.html
лично я советую почитать про geometry shader и написать хуйню которая бы читала ComputeBuffer, или вертексы меша и генерировала на их местах то что тебе там надо.
это и в юнити делается одной строчкой. вот только скорее вопрос что тебе надо. какого эффекта хочешь достигнуть. вон например хохуилион разноцветных квадратиков без создавания обжектов. а можно и картинку с хуем на их месте рисовать. а можно и атлас картинок с хуем ебануть и анимировать.
Проблема пикрил, у этой функции вперед это z. Но я использую капсулу у которой z всегда сбоку. Мне нужно чтоб вперед было y или -y, чтоб нормально капсулу повернуть. Засунуть капсулу внутрь пустого объекта и поворачивать его пробовал, но у меня капсула с физикой и соединение с точкой сопливым становится. Сопля исчезает при силе джоинта в миллиард, с такой силой взаимодействие с другими объектами невозможно.
Пытался повернуть целевой вектор на 90 градусов по оси х матричным умножением. Только нормально он двигается по оси х, а по остальным говно.
https://www.youtube.com/watch?v=s7FKGgpaiDs
Пытаюсь сделать конечности, которые будут поворачиваться по направлению к точкам. У капсул ось вперед это з, сами капсулы повернуть нельзя.
Засунул конечность в точку и прикрепил фиксед джоинтом. Но от этого конечность двигается как на пружине, настройки джоинта те же самые что и без точки.
Еще пытался повернуть сам вектор целевого направления матричным умножением. Но нормально поворачивается только по одной оси.
Хочу чтоб двигалось как на втором пике и без пружинистости.
Такое получится с кубом, но мне куб не очень хочется квадратные конечности.
1136x756, 0:09
если у тебя уже две оси есть то найди третью ось через кросс-продукт, хули.
например таким образом тут находится третья ось. первые две - движение мышина экране и направление от экрана. в итоге меч всегда смотрит по направлению движения мыши.
>>63208
сую в ComputeBuffer массив всех точек которые хочу написать и рисую простеньким шейдором https://pastebin.com/1TVj9xXp
Например я импортировал 150 унитазов и нажал статик, то они закомбайнятся в один меш изкарабки, вручную их комбайнить в рантайме лишнее?
если имеют один материал то да, будет само батчится в один дравколл https://docs.unity3d.com/Manual/DrawCallBatching.html там конечно всякие ограничения туда-сюда, почитай внимательно
заебись спасибо, а то я уже комбайнер стал писать, ну его тогда
Что-то представил лутбоксы на функционал, подумал, что освещение из лутбоксов не заходит, сделал игру в полной темноте.
На любой же чих надо писать. Триггер просто запускает этот крипт. Кажется так было в 16 году.
А если я делаю 3д игру и не заморачиваюсь вот с такими вот штуками- это сильно хуйово? Или я сам пойму, что это хуйово, когда у меня игра лагать будет?
Хех, спасибо.
Жизнь показывает что в принципе похер, каждый сам решает оптимизировать или нет (но хуевая репутация все равно достается юнити, потому что геймерам на такие вещи паебать).
>но хуевая репутация все равно достается юнити, потому что тыщи нюансов, забыл про одну галочку из ста и фсе, ЮНИТИПИЗДЕЦ!
https://blogs.unity3d.com/2019/02/28/srp-batcher-speed-up-your-rendering/?pubref=twitter-social&utm_source=twitter&utm_medium=social&utm_campaign=engine_global_announcement_2019-02-28_srp&utm_content=blog
https://docs.unity3d.com/Manual/GPUInstancing.html
А что будет с текущим пайплайном? Я правильно понимаю что они в конечном итоге всех пересадят либо на LWRP либо на HDRP, либо на свой кастомный RP?
>либо на LWRP либо на HDRP, либо на свой кастомный RP?
Да, у них теперь нет одного, сразу три варианта нахуй. Хотя я удивлен, что не десять. Вот бы гайд хороший по всем этим оптимизациям, чтобы попорядку 1- поставить галочки гпу залупы в материалах. 2 еще какие-нибудь галочки в другой залупени. 3 в лодах галочки хуялочки
Там вроде не только в галочках дело. Свои шейдеры придется переписывать.
Верным путем движутся в сторону забагованного говна годота.
У них там уже целый зоопарк разного забагованного говна.
А еще этот идиотизм давайте все писать на C# с какими-то лютыми костылями и говнокодом. Так и говорите, что платить C# обезьяне дешевле, чем C++ спецу. Нет, они еще выебываются своими велосипедами ебаными.
Я кстати вот особо не разбирался, но правильно понимаю, LWRP он как HDRP, только для не такой мощной графики/менее требовательных ПК?
Глупый вопрос спросил, сам разобрался. Хз где тут пост удалять, слепой.
Создал HDRP - Visual effect graph работает как надо.
Создал Lightweight RP - Visual effect graph не работает, точнее вроде как показывает окошки свои, но на сцене нет никаких эффектов.
Я хуй его, может быть я что-то не так делаю, но там работает, а там нет. Это нормально, я слоупок и так и должно быть или оно должно везде работать?
>Currently, the Visual Effect Graph runs on the High Definition Render Pipeline in Unity 2018.3, with planned support for the Lightweight Render Pipeline coming in future releases.
Да, я дурак. Сам с собой разговариваю тут.
Светите билдами игры и своим прогрессом, хотя бы скринами.
спасибо
Unity has identified a Remote Code Execution flaw in the Unity Editor. We have rolled out a critical security patch to remediate this issue.
You can select your Unity version and find the appropriate patch with instructions at https://unity3d.com/security#CVE-2019-9197
As with all security matters, we take this situation very seriously. Should any more details be identified, we will update you immediately.
Опять проблемы с кнопкой открытия юнити из юнитистора в браузере.
Снаружи-то заебись, внутри пизда темно.
Добавь источник освещения внутрь.
Ну да, это наебка по факту будет, ну а как бы и чо дальше-то?
Где выбрать? Куда нажать?
Посмотри на скриншот, где юнити. Материал, который идет в комплекте с кубом, какой-то неактивный. Я там ничего изменить не могу.
Накинь другой.
вообще охуеть, материал уже не может сам. ну ладно. жми на чтонибудь в окошке Project > Create > Material. сделается материал. жми на материал, выбери в легаси диффуз, или ещё какую хуйню. перетяни материал на модельку.
Ты вообще мой пост >563359 видел?
Я не хочу назначать материалы в юнити. Я хочу назначать материалы только в блендере,и чтобы при экспорте в юнити моделька отображалсь так, как и в блендере
разумеется я его проигнорировал. материалы блендора - для блендора. материалы юнити - для юнити. не нравится как оно экспортируется - ебись с настройками импорта/экспорта.
но разумеется лучше всего иметь одни и те-же материалы на разных объектах, так что следует пользоваться материалами в самом юнити.
>не нравится как оно экспортируется - ебись с настройками импорта/экспорта.
Блендер не экспортирует в юнити, акститесь.
>Я не хочу назначать материалы в юнити
В официальной справке написано, что юнити не назначает материалы самостоятельно. Не хочет он блядь.
Все же, юнити не игнорирует материалы, который идут в моделькой. Вот этому кубу в юнити я не назначил материалы, и все же видно, что он уловил красный цвет. Некорректно, но все же.
не он же там экспортировал какую-то хуиту но она была настолько бесполезная насколько могла быть https://docs.unity3d.com/2017.2/Documentation/Manual/FBXImporter-Materials.html
Блендер пока не запекает пбр карты. Есть способ, но он состоит из многих уровней, вручную из нодов вытаскивать штук 11 карт и потом в фотожопе объединять. Они запилят годный экспорт в 2.8, но пока нет.
да так то насрать что там куда блендер экспортирует, в этом говне текстуры все равно невозможно делать. лучше субстанс пейнтер спиздить какой.
я к тому что он все равно чето там экспортирует и оно оказывается в юнити.
но зачем для этого нужно было качать ассет? ты пункт создания файлика с кубмапой что-ли не нашел?
Я пользовался до этого скайбоксами, вообще хз. Просто не понял, в чем смысл убирать поддержку скайбоксов, когда в ассетсторе такое разнообразие разных скаев, а я не могу ими пользоваться нормально.
Я попробовал так, нихуя не получилось, в интернете нихуя не нашел.
Cтандартная тема блендер 2.8
Я уже сделал, даун, там все просто конечно, но я все равно в ахуе с того, нахуя они убрали поддержку скайбоксов нормальных.
Какого хуя я вообще что-то обьясняю отсталому, который не понимает, что в HDRP нет ебаной поддержки скайбоксов, и мне приходится тратить время на переделывания скайбокса в кубмапу, вместо того чтобы блядь просто зайти в ассетстор и установить тот скайбокс, который мне понравится.
Иди нахуй короче, еще время тратить на срач с тобой.
Я уже физически устал гуглить, поэтому спрошу тут.
Опишу ситуацию: есть компьютер без доступа в сеть, есть Unity ver. 2018.3.4f1 крякунутая. Так же есть последняя версия asset SteamVR последней версии.
А теперь вопрос: как мне подключить этот asset к юнити офлайн?
Выход в интернет с данного ПК невозможен ни при каких условиях. И вообще как можно перекидывать asset'ы из Unity с интернетом в Unity без интернета.
Сорян за ебанутый вопрос.
скачанные ассеты у тебя в аппдата/чёто-там лежат. ищи, там будет файлик .upackage или типа того, вот, её тебе и нужно скинуть на оффлайн, а в самой юнити есть import package где-то в верхних менюшках, всё просто короче, хуй знает почему не загуглилось у тебя
Скачивай ассеты через юнити, перекидывай на флешку, загружай на комп без интернета, что не ясно?
возьми скачанный файл из
Users\Кирил\AppData\Roaming\Unity\Asset Store
а потом в нужном юнити надови сюда и ткни на нужный тебе фаел.
эта фича с ассетами и сериализацией в юнити же охуительная.
зависит от контекста, как всегда. дай контекст.
например если ты инициализируешь скрипт в Awake и каким-то другим скриптам обязательно надо чтобы он инициализировался перед их выполнением то просто добавь флажок чтобы Awake вызывался только один раз и вызывай его из других скриптов, чтобы когда он вызовется сам то сразу делал return.
или просто не пользуйся Awake. а например инициализируй скрипты иерархично. например чтобы они добавлялись друг к другу в Awake, а в Start начало цепочки вызывало то что надо ему, а то что вызвалось вызывало то что надо ему.
Ну, инициализировать иерархично звучит легче и правильнее всего, правда со временем будет сложно контролировать. Вообще уверен, что умные люди уже придумали некие паттерны проектирования чтобы не возникало таких вопросов изначально, но пока с этим всё плохо, не знаю что читать конкретно об юнити, кроме статей на хабре, лол. Нашел вот недавно этого чувака (кстати русский) github.com/dimmpixeye/ecs, он в своем фреймворке каждый метод контролирует, но для понимания на моем уровне сложно, да и не хочется учиться чужим фреймворкам.
ну, поэтому я и спросил про контекст. хуй его знает же что ты там творишь. лично я пользусь флажками в основном. если А хочет чтобы Б инициализировалось первым то оно заставляет его инициализироватся первым в любом случае. просто и не надо следить за всей иерархией вызовов. но если ты там какую-то хуйню творишь которая отдельно в каком-то менеджере обрабатывается то разумеется нахуй такое.
>>64041
мировую позицию измени лол
Лучше буду постить картинки в треде, чем переделывать скайбоксы в кубомапы, менее пиздецовое занятие.
Я по мануалу полазал, про новую систему мультиплеера только название написано и все.
а все, разобрался
>Верным путем движутся в сторону забагованного говна годота.
Скачал
https://github.com/Unity-Technologies/FontainebleauDemo
Потестить, не запускается, миллион ошибок.
https://assetstore.unity.com/packages/3d/characters/uma-2-unity-multipurpose-avatar-35611
Как оно на практике?
Планируем использовать для кастомизации, пока вроде все устраивает, но хотелось бы послушать про подводные камни.
Съеби в анриал тренд к своим С++ спецам, которые до сих пор ни одной игры не выпустили, кек.
Так пишешь, как будто лично ты выпустил дохуя игр. Но все ведь понимают, что это не так, и ты такое же дно без игор, как и эти твои С++-спецы, но они-то хотя бы знают язык номер один в геймдеве, а ты просто макака, таскающая ассеты по сценке.
А какая разница, кто что выпустил, если демки юнити действительно уже не запускаются. Материалы большинство просто розовые, эффекты из этой статьи не запустились у меня
https://blogs.unity3d.com/ru/2019/03/06/visual-effect-graph-samples/
Это тоже
https://github.com/Unity-Technologies/FontainebleauDemo
Юнитипидар уже совсем обезумел, демка с эффенктами вышла месяц назад, с материалами тоже, а с лесом 28 января. Юнитипидар даже не следит за релизами юнитиговна, а слепо защищает.
Сисярп - самый простой язык из тех, что серьезней школьных джавы с паскалем.
В ютюбе дохуя.
А то он даже на каркас пары комнат(7000 треугольников, 15000 вершин, впрочем я могу и это сократить раза в два) тратит заметное количество времени(7 секунд), в то время как я бы хотел генерировать ну хотя бы 50-60 комнат, а это получается уже займёт около 7 минут.
Если нет то видимо придётся собирать меши из составных частей с кучей лишнего говна, а csg использовать только в тех случаях, где из меша надо что-то вырезать.
один в один текстура на моём доме. реализм!
1056x792, 0:33
о ебать! я смог! как же я собой доволен! неделю исследовал пространство проблем локал авойденса. думал как же мне бы так хитро сделать чтобы агент уклонялся и от других агентов а ещё и от границ навмеша в добавок. и сегодня пошел прогулятся в магозик, а хопа в очереди придумал хуйню что радиальное пространство может иметь конвексные свойства. и всё сразу так хорошо стало, катарсис наступил. наверно продавщица у кассы решила что я наркоман.
теперь у меня есть эта хуйня которая крутится там себе в паре массивов быстро-быстро
Ананас, есть 2д аркада, планирую прикрутить кооп на 2х человек, чтобы мы смогли с друганом играть в суперконту по сети. В какую сторону копать?
Игра детства, фан.
Еще не знакомы с новым баззвордом изобретенным ушлыми маркетолагами юнити чтобы ссать вам в уши? Что же, можете ознакомиться здесь https://blogs.unity3d.com/2019/03/08/on-dots-entity-component-system/
>In my last post, I talked about HPC# and Burst as low-level foundational technologies for Unity going forward
Скажите, пацаны, это же крута, да? Реально, производительность вырастит или наебка опять?
>работать быстрее
На стендах юнитеков. А ты не рефлексируй, а качай новую версию и оплачивай про-лицензию.
Скинь проект, попробую поколдовать.
Вырастет только зарплата у маркетингового отдела юнити.
Судя по темпу разработки, в ближайшие 5 лет ничего не изменится точно.
Лучше в гей мейкер!
Решил сделать подарок на 8 марта своей половинке. Уже девятое, но похуй: летит бумажный самолет. Дергая телефон, аки простату, наводим его на сердечко. После вылезает поздравление
Думаю над воздушными потоками, чтобы интереснее игралось
Только-только установил юнити, установил JDK и планирую наваять интерактивную открытку под андроид
Из скиллов - C# знаю кое-как
Могу потратить часов 12, в запасе турка с кофе и 1,5 литров домашнего вина
это новый каст к ghostbusters ?
На юнити хоть можно программировать на нормальном языке C#, а не на недоязыке GML.
>на нормальном языке C++
Пофиксил шарподауна.
И юнити тут не при чём. Пролетает. Кресты только УЕЧ, КРАЙЭНЖЫН и конечно ГОДОТ.
Никто не заставляет стрелять тебя себе в ногу, главное не быть дауном. С сишарпе же ты максимум можешь похлопать себя по ноге розовым дилдо, влажным от анальных соков, и это не делает его лучше как язык.
Лучше/хуже всегда должно оцениваться в контексте задачи. Если очень важна производительность - с++ лучше. Если важна скорость разработки - к крестам лучше не прикасаться.
Я хочу писать логику игры, а не бороться с утечками памяти и сегфолтами. И если C# не нормальный, то годотскрипт и подавно.
Андрюша, ты? Юнити не сложнее гамака. Только там 2д, это 3д с видом сбоку и костылями. Например, там нет методов рисования примитивов (линия, круг, квадрат) или рисования спрайта без создания объекта. Тут говорят, что все это можно, если ебаться с шейдерами. Еще, например в гамаке есть такая фича, при импорте спрайта можно указать, что он будет использоваться как тайл, и гамак автоматически добавит к нему границу, чтобы при скейле не было щелей между рядом стоящими тайлами. В юнити это надо вручную делать. Долгое время в юнити не было пиксель перфект камеры из каробки, она недавно появилась, но в официальную поставку не входит и, опять же, выглядит костыльным решением. В общем, перечислять еще много можно.
UI, как блядь его сделать нормально. Какого хуя когда я в юнити смотрю на него он нормального размера, а когда из билда играю то все спрайтики/поля/менюшки все блядь маленькое как хуй у лилипутика!
На канвасе стоит оверлей, дело в максимальном размере спрайтов или что блядь?
ПОМОГИТЕ!
Короче перефразирую- как сделать чтоб кнопки на канвасе увеличивались вместе с разрешением экрана?
Ахуеть блядь мне канвас скалер нужен как отдельный компонент, какого хуя ни в одном гайде нет этого, пиздец!
Сделай ебать
ТНН
Ну итого я не увидел профита пересаживаться. Разве что будет повод шарп выучить. Ладно, тут видимо разговоры не помогут и надо просто попробовать сделать игру на юнити. Самому пощупать, сравнить.
Что меня выдало? Мои шизоидные высеры?
1056x792, 1:07
вообще, делаю. но показать нечего. надо уже доделать это ебучее обновление, выложить да и правда лучше игры поделать.
>>64355
переделываю уклонение от столкновений в своей хуйне. пространство это допустимая дельта скорости. от него отсекаются линии генерируемые другими динамическими препятствиями. но надо же чтобы агент ещё от границ навмеша уклонялся. раньше границы чанков не содержали пустых еджей и их нельзя было использовать для того что на первом видео. поэтому я просто использовать навмеш рэйкастинг чтобы узнать есть там че-то или нет. это был рабочий вариант, но хуевый. покажу на видео. если на пути есть навмеш то агент веером проверяет куда воткнутся лучики и проверяет пересечения с дельтой скорости. оно работает нормально то тех пор пока агенты не встречаются на уголках и в каких-то тесных местах.
а чтобы сделать лучше мне тогда наверно 3-4 недели понадобилось бы. теперь я стал умней и мне понадобилось 3 дня чтобы добавить недостающую информацию. но вот ужасная проблема - а как ей воспользоваться то? надо как-то на доступную дельту скорости накладывать тень от границ навмеша чтобы агент не шел в стену в попытках уклонится от другого агента. и чет залип. сначала стал топить в сторону булевых операций с полигонами. и хотел адитивно накладывать отрезок за отрезком. но там всё разумеется пиздец какие тяжеловесные решения.
а надо то всё быстро-быстро и чтобы квадратных корней небыло и кэш-френдли чтобы было и чтобы ненужные для достижения результата куски кода не вызывались. и чет залип на этом говне на добрую неделю. сложна.
>>64366
лол и айзека показывает. неделю с катакомбами ебатся то это довольно немного, если игра про катакомбы. че делаешь то? помню когда хуй про Galak Z рассказывал он там все клёво показал рассказал. https://www.youtube.com/watch?v=ySTpjT6JYFU может чего оттуда спиздиш.
>>64451
а просто выразить через дот продукт forward вектора и velocity вектора не? вообще ололо ты конечно нашел когда начинать делать проект и кому дарить. проебешся пару дней только с изучением api
>>64477
лол вот небось и андрюша подошел. подводных камней нет, юнити сложней гамака но только потому что там больше говна надо подрогать чтобы понять что оно делает и зачем оно надо. всякие кнопоки типа "конец анимации" и прочее разумеется в юнити есть. можешь свои спрайты и прочее хоть в самом юнити анимировать. в профитов пересаживания разумеется много, если хочется чтобы в твоем обсюрити было что-то кроме трупов, плохого дождика и непонятной речки.
но ты это. лучше вот задавай конструктивные вопросы. "как сделать Х имея У".
>>64539
ты это. издателю такие вопросы задавай.
1056x792, 1:07
вообще, делаю. но показать нечего. надо уже доделать это ебучее обновление, выложить да и правда лучше игры поделать.
>>64355
переделываю уклонение от столкновений в своей хуйне. пространство это допустимая дельта скорости. от него отсекаются линии генерируемые другими динамическими препятствиями. но надо же чтобы агент ещё от границ навмеша уклонялся. раньше границы чанков не содержали пустых еджей и их нельзя было использовать для того что на первом видео. поэтому я просто использовать навмеш рэйкастинг чтобы узнать есть там че-то или нет. это был рабочий вариант, но хуевый. покажу на видео. если на пути есть навмеш то агент веером проверяет куда воткнутся лучики и проверяет пересечения с дельтой скорости. оно работает нормально то тех пор пока агенты не встречаются на уголках и в каких-то тесных местах.
а чтобы сделать лучше мне тогда наверно 3-4 недели понадобилось бы. теперь я стал умней и мне понадобилось 3 дня чтобы добавить недостающую информацию. но вот ужасная проблема - а как ей воспользоваться то? надо как-то на доступную дельту скорости накладывать тень от границ навмеша чтобы агент не шел в стену в попытках уклонится от другого агента. и чет залип. сначала стал топить в сторону булевых операций с полигонами. и хотел адитивно накладывать отрезок за отрезком. но там всё разумеется пиздец какие тяжеловесные решения.
а надо то всё быстро-быстро и чтобы квадратных корней небыло и кэш-френдли чтобы было и чтобы ненужные для достижения результата куски кода не вызывались. и чет залип на этом говне на добрую неделю. сложна.
>>64366
лол и айзека показывает. неделю с катакомбами ебатся то это довольно немного, если игра про катакомбы. че делаешь то? помню когда хуй про Galak Z рассказывал он там все клёво показал рассказал. https://www.youtube.com/watch?v=ySTpjT6JYFU может чего оттуда спиздиш.
>>64451
а просто выразить через дот продукт forward вектора и velocity вектора не? вообще ололо ты конечно нашел когда начинать делать проект и кому дарить. проебешся пару дней только с изучением api
>>64477
лол вот небось и андрюша подошел. подводных камней нет, юнити сложней гамака но только потому что там больше говна надо подрогать чтобы понять что оно делает и зачем оно надо. всякие кнопоки типа "конец анимации" и прочее разумеется в юнити есть. можешь свои спрайты и прочее хоть в самом юнити анимировать. в профитов пересаживания разумеется много, если хочется чтобы в твоем обсюрити было что-то кроме трупов, плохого дождика и непонятной речки.
но ты это. лучше вот задавай конструктивные вопросы. "как сделать Х имея У".
>>64539
ты это. издателю такие вопросы задавай.
> просто выразить через дот продукт
Я хотел изъебнуться. Но твой вариант мне нравится куда больше, тем более, что времени мало
По мере допиливания буду отписываться
Ты крут, анон
Как лучше это сделать- скриптом на обьекте или шейдером на материале? Шейдер вообще может работать с расстоянием от игрока до обьекта?
Обьектов будет много, поетому думаю, не будет ли много скриптов на обьектах которые высчитывают расстояние давать просадку на систему?
че ты там сделать то пытаешься? может просто блум ебанешь?
>Шейдер вообще может работать с расстоянием от игрока до обьекта?
может даже с расстоянием каждого ебучего пикселя на нужном тебе материале работать ололо и это почти ничего не будет стоить. шейдор разумеется лучше. если не умеешь писать то скачай шейдорную лапшу.
>Обьектов будет много, поетому думаю, не будет ли много скриптов на обьектах которые высчитывают расстояние давать просадку на систему?
ты бы хоть сказал на какую платформу там, сколько объектов, статичные ли они, или динамичные. хуй его знает же, можно же k-d tree ебануть чтобы не считать расстояние до всех объектов если они статичные, например.
нужен ли тебе там полный градиент или просто хочется чтобы цвет менялся когда игрок близко. можно же и через OnTriggerEnter/OnTriggerExit ебануть например, просто сам игрок триггер будет этот перемещать
о точно а можно же просто на игрока повесить источник света, поставить ему кулинг маску только с нужными обьектами чтобы он только на них светил
>>64572
>кулинг маску только с нужными обьектами
Тоже подумал об этом в самом начале.
>шейдор разумеется лучше.
Ну вот походу пора с шейдерами разбираться, хочу ваще сделать красивый шейдер чтоб он сеточкой такой был четенькой и все двигалось и переливалось.
Спасибо за ответ, буду разбираться тогда.
Или мне надо не растягивать обьект, а ставить миллион стенок, например?
если перетянуть обьект из сцены в папку с проектом то получишь префаб. можешь потом этот префаб совать куда угодно и получать копию хуйни которая в нём. в последних версиях даже наконец добавили человеческий редактор префабов и они могут наследоваться друг от друга.
Игра-головоломка, где задний фон и настройки общие всегда одни у уровней. Просто я создаю новую сцену и она пустая, я думал может быть можно как-то сделать, чтоб создавать не пустую сцену. Но я уже разобрался, походу префабами проще всего. Или сценой дефолтной.
В любом случае спасибо за помощь, приятно, что друг-другу помогают люди тут.
в том какой объект скопируется и к чему будет референсится? https://youtu.be/ibmdm_PoyMA
вообще. оригинал чего? вот есть у тебя в сцене хуйня какая-то. навесил ты там на кубик графона, скриптов, чайлдов ему сунул в довесок. и хочется тебе напиздячить этих кубиков. ты же не будешь каждый раз собирать этот кубик. ты его либо скопируешь, либо сохранишь как префаб и накопируешь куда надо. только если ты префаб в папке проекта будешь менять то можно ещё и все кубики сразу в сцене менять.
а можно ещё лучше - сделать префаб с префабов внутри теперь. когда ты сохранил кубик А, сунул его в кубик Б и сохранил кубик Б. теперь если ты будешь менять кубик А то он будет меняться и в кубике Б.
так ты это. задумай что-нибудь. у меня вот есть идеал, я ебошу потому что хочу чтобы было вот как я хочу. и ты хоти.
или хотя-бы сиди рогалик делай. с фичей.
Я придумал тебе интересное задание.
В юнити есть пекейдж для импорта svg. Надо взять оттуда триангуляцию и сделать библиотеку для риалтайм-отрисовки.
Я вот телепортировал https://github.com/jaquadro/LilyPath за пару часов. Но это кривая забагованная библиотека.
Хватит дрочить свои навмешы. Принеси реальную пользу юнититреду, потому что бесплатных библиотек для отрисовки просто нет.
На самом деле тут никаких секретов нет и ты сам наверное это знаешь - надо лишь начать. Не просто создать проект в юнити, а начать что-то делать, вместо того чтобы весь день играть в игоры млм сидеть на сосаче надо ну хотя бы несколлько часов сидеть в юнити и что-то там ковырять. И так несколько дней, потом это войдёт в пртвычку и ты уже будешь просто тупа чилить за деланием игры - ведь тебя никто никуда не гонит, если ты устал то просто можешь отдохнуть(может дойти до того, что просто посидеть и посмотреть свои наработки, повспоминать что где ты как делал - станет отдыхом)
Вообще на самом деле легко сказать "просто начать делать", ведь начать делать - это нихуя не просто. А все потому, что нельзя делать то чего ты не знаешь. Чтобы сделать любое простое действие - надо знать что за простое действие ты собираешь сделать, если конечно оно у тебя не доведено до автоматизма(т.е. даже чтобы сделать чаы ты же должен сначала достать чашку, вскипятить воду, полодить заварку, а потом залить её в чашке - и каждое из этих действий по отдельнотси ну очень простое, а в совокупности уже немного сложнее). Поэтому перед тем как открыть юнити и тут же закрыть из-за того что ты не знаешь с чего начать - ты должен подумать вот что именно ты прямо сейчас хотел бы сделать(в идеале начать надо с того, что тебе кажется простым - управление персонажем, собрать простой уровень из кубов и т.п. - то в чем ты уверен), вместо "сделать заебись".
А ещё лучше не просто подумать, а ещё и записать для себя примерный план задач(не всю игру а лишь конкретно тот аспект которыф ты хочешь сделать) и разбить каждую из задач на подзадачи.
1032x696, 0:20
да ну нахуй. у меня то это рисование линий имеет утилитарный характер. я не хочу ебстись ещё с рендерингом и углубляться во всю эту срань. я навмеш то стал делать потому что игры хочу делать с хорошим ИИ. просто когда стал делать ИИ у юнити не было адекватных средств для навигации. теперь кстати у юнити есть, но пока ебошил навмеш узнал что в ИИ можно этим микроскопом забивать такие гвозди которые с навигацией юнити уже не забить.
а тут линии рисовать. игры про линии и круги не хочу делать!
лучше закончу следующее обновление, да продолжу делать уже хотя-бы один из проектов своей мечты. уже столько идей накопилось. вон ещё ECS подьехал, вот лучше со всем этим добром что-нибудь сделать.
Ебал я в рот этот идеал, я уже заебался, у меня папок с заброшенными проектами блять под три десятка, и запала и сил творить по пол года уже нету что-то идеальное в мечтах.
>>64779
Знаю это, проходил, еще год назад, есть вордовский док, каждый день делаю список задача, не большой, на пару часов что хочу реализовать, или начать делать, делаю, делаю, и блять потом смотрю что получается, ищу ближайший аналог чтобы было с чем сравнить, и понимаю блеять весь пиздец сука, что нахуй это надо, это либо уже есть, либо реализовано в сто раз круче чем я задумал и на этом фоне просто 0 смотрится то что я делаю. В юнити когда начинаю проект сижу по 12 часов в день ебошу, в студии, блендере, фотожабе, мучу, в итоге пиздецсукаблять, хочу блять творить, но сука такое чуство что когда я родился скилл уёбищности у меня на максимуме с самого начало. Пиздец дошёл до ручки, плачусь на сосаче ебаный рот, пиздецпиздец. Сукаааааааааааааа.
> и блять потом смотрю что получается, ищу ближайший аналог чтобы было с чем сравнить, и понимаю блеять весь пиздец сука, что нахуй это надо, это либо уже есть, либо реализовано в сто раз круче чем я задумал и на этом фоне просто 0 смотрится то что я делаю
А, вот это уже другое дело.
Впринципе тут можно клин клином сделать - достаточно посмотреть какое говно в стиме(и тем более в гугл плее, если ээто твой случай) мало того что вообще есть, так ещё и взлетает. Тут в соседних тредах можно поискать примеры.
Если не поможет - то надо как-то осознать чем конкретно твоя игра будет отличаться от других. Ведь если она чем-то отличается, имеет какую-то свою особенность, то это уже причина её сделать. Ну и ещё неплохо куда-то прогресс свой постить и какие-то комментарии к нему получать, тогда у тебя модет пояаиться какое-то чувство ответственности за свое поделие.
>а тут линии рисовать. игры про линии и круги не хочу делать!
А как ты будешь делать крутой процедурный интерфейс для своей игры? Неужто через unity ui?
Вот тут-то библиотека для рисования и пригодится!
да ладно тебе шило в жопе чтоли сидеть мешает. надо же сказать "хочу хуйню Х". и делать хуйню Х. если она уже сделана то либо купи, либо укради. надо же быть ориентированным на конечный результат чтобы хоть что-то было сделано!
>>64787
да можно и через него. так то он довольно клёвый же. тут ручкой постучал, тут кнопку надавил и уже всё замечательно. лично у меня к нему никаких притензий нет. разве что кривые безье и векторную хуйню в нём и правда неудобно рисовать. но как по мне так проще допилить то что есть чем начинать делать другое с нуля.
вообще у меня ещё накопился приличный опыт и обычного Immediate Mode GUI, где первым сложно воспользоваться всегда есть эта альтернатива с которой через код куда проще работать.
Я тоже так начинал, и вордовские доки, и проектов десяток, и реализации разные, понимаю тебя.
Сейчас просто уже осознал, чего конкретно хочу, и ебашу как могу. Если ты точно не знаешь, чего хочешь, конечно и мотивации максимальной не будет. А так да, пишу каждый день на бумагу, что я делал сегодня, помогает оценивать прогресс. Весь стиль жизни вообще переменил, перестал в игры играть так много, понял, что если хочешь ебашить игры- то надо реально ебашить игры, как на работу ходить. Ток работа, которая удовольствие приносит, как писал анон выше.
Найди свой проект мечты, в котором ты будешь уверен и занимайся им. Главное по силам бери проект.
Ну и не забывай тренировать сам скил геймдизайна- участвуй в геймджемах разных, там обычно темы ебанутые, как раз напрягают кукушку, как например по теме "пульты управления" сделать прикольную игрушку за 2 дня.
Ну и да, мильные камни, разделяй каждый день на мелкие задачи, помогает не распыляться и заниматься только тем, что приближает выход технической демки/альфа/беты игры, а не настраиванию вон той прикольной функции в течении 3 часов, лол.
Да вот после первого десятка и стал ориентироваться как раз на результат, специально выбирая и делая то что можно сотворить за не более пару недель, как видишь я в пизде. Не отрицаю что возможно неправильно все равно рассчитывал что-то
>>64789
Эх, пожалуй вот это единственное в чем ты прав, конечную цель точно не вижу и не ощущаю, расплывчато частями собирается, но не в целое что-то. Насчёт игр, сериалов, опять же двачей, с первым раз в месяцок что-нить запуская, и забивая, разве что сериалы посматриваю со скролом разных форумов. Был опыт у меня треда, и темы, из него я понял что мне не требуется это, ну по типу отчитываться в тему, так как итог предсказуем, сначало пишешь почти каждый день, потом реже и реже.
Ладно хватит ныть мне, а то пиздец, никогда не думал что как побитая шлюха прийду поныть на сосач. Когда у всех ирл и так больше проблем чем у меня
Спасибо аноны.
>специально выбирая и делая то что можно сотворить за не более пару недель
наверно это и есть корень проблем! вот я когда начинал делать навмеш у меня полное осознание того что я нихуя не знаю как сделать то что хочу и что это займет дохуя времени. и даже если я ориентируюсь на результат его все равно сложно получить. а если не получить результат тут, то не могу переидти на следующую ступень.
я то тоже десятки проектов начинал. просто каждый раз думал "вот без этого кусочка пазла всё хуйня".
правда я попал в иную крайность. всё что я хочу сделать требует навмеш. но с навмешем можно ебаться как и с рогаликами - бесконечно. теперь у меня только один путь к успеху - продолжать ебошить. так и делаю от одного выгорания к другому.
1152x800, 0:373,5 Мб, webm,
1144x816, 0:253,3 Мб, webm,
1152x776, 0:223,1 Мб, webm,
1064x764, 0:14
переменчиво. некоторые части написаны довольно неплохо, такие как вокселизация. тогда как триангуляция и поиск пути написаны через жопу. проект только выходит из состояния прототипа. ну и большая разница в производительности между тем что на ассет сторе и в том что у меня сейчас. после следующего обновления производительность в поиске пути будет заметно лучше.
вообще так то вся хуйня что может крутится в параллельных потоках крутится в них. и навмеш не вызывает кода сам, так что можно пооптимизировать частоту вызова нужных функций.
ну и основной упор делаю прежде всего на то чтобы получать максимум функциональности, даже в ущерб производительности. я конечно стараюсь делать более легковесные варианты, но они обычно откладываются на потом.
Почему всем первым делом приходит в голову делать свои коммиблоки?
тянутся к родному!
Не думал просто подцепить Recast, Detour и RVO2? Два первых по идее встроены в Юнити, но недоступны из C#. Для последнего есть реализация на C#, я в одном проекте использовал.
почему все снг-игры это клоны сралкера?
да думал конечно. некоторые куски моей хуйни напрямую базируются на них. и большую часть времени я скорее работаю над их ошибками. например Recast разбивает регионы по принципу flood fill. что приводит зачастую к пиздецовым результатам триангуляции. плюс у меня например написаны отдельно вокселизация примитивов и всякие сферы и капсулы у меня гораздо эффективней разбиваются на воксели. плюс у меня более крутой код который позволяет перекидывать попроще информацию с этапа вокселей в эджи навмеша и довольно много всякой метадаты хранится именно в эджах.
кстати с помощью Recats/Detour был сделан этот ныне мертвый проект https://www.youtube.com/channel/UCHfVoqUJiIrAjW_ENCWsJ_g когда начинал делать свою хуйню большую часть я реверс инжинернул именно оттуда. некоторые ответы кстати рекаст не содержит. например как более эффективно хранить воксели чтобы можно было добавлять новую информацию и не плодить при этом сущности.
сейчас большая часть генерации навмеша у меня базирована на этой работе https://upcommons.upc.edu/bitstream/handle/2099.1/16508/Ramon Oliva.pdf но правда я не делаю этого фокуса с камерами и вокселизацией с помощью z-буффера.
RVO2 я кстати хватал. локал авойденс у меня базируется на нём. но у него есть множество недоработок. например вариант когда у агентов нет пространства для уклонения вообще там сделан отвратительно. поиск ближайших агентов так себе. статичные границы там обрабатываются по тому-же принцыпу что и агенты. делается отступ на радиус агента и всё такое что нахуй ненужно когда навмеш уже сгенерирован.
ну и некоторые вещи там просто отсутствуют. например там нет ничего чтобы толкнуть агентов когда они застряли друг о друга.
все эти проекты довольно крутая отправная точка, но их подходы имеют свои ограничения. я же стараюсь сделать свою хуйню максимально универсальной чтобы у меня небыло проблем с добавлением функционала.
> все эти проекты довольно крутая отправная точка, но их подходы имеют свои ограничения. я же стараюсь сделать свою хуйню максимально универсальной чтобы у меня небыло проблем с добавлением функционала.
А какой ты вообще функционал планируешь?
Вот типа ScriptableObject, но только полезные.
этот вопрос остается открытым и по сей день! прежде всего я хочу всё что позволило бы как можно сильней упростить оценку ситуации о внешнем мире для ИИ в 3D. в качестве целевого жанра предполагается шутан в большом процедурном динамичном мире. так что полезность фич рассматривается с точки зрения того чтобы можно было отображать как можно больше информации о мире через навмеш и как можно больше было способов повлиять на состояние навмеша и способы менять эту информацию. основной фичей остается то что можно отковырять какой чанк навмеша и сгенерировать его заново не трогая остальных частей.
например у меня отдельно существует хуйня для организации логики дверей. можно например в какой-то зоне оставить метадату которая вернется когда путь ищется через эту зону. и если путь ищется через проход двери то можно было бы вернуть метадату в путь, как-то её интерпретировать и отправить агента в другое место. например на видео информация о том как открыть дверь содержится в самом проходе и агент идёт давить кнопку.
или например эта замечательная хуйня когда генерируются розовенькие укрытия. хотя там просто переиспользуется информация вокселей.
или например в следующем обновлении можно будет регистрировать на навмеше какую-то информацию и вернуть аппроксимированную дистанцию до списка объектов не возвращая путь. убирать из генерации пути целевые зоны. локально менять цену пути.
ну а так разумеется у меня дохера далёких планов.
хочу более крутой способ редактировать оффмеш линки. чтобы больше контроля было над тем как генерируются прыжки и чтобы можно было организовать логику лесниц.
хочу flood fill навигацию чтобы можно было посчитать путь докуда то для всего навмеша чтобы тыщи зомбей знали куда бежать не высчитывая путь для каждого из них.
хочу гпу рэйкастинг, чтобы можно было по информации которая учавствовала в генерации навмеша пускать лучики и например смотреть какие из них уткнулись в навмеш а какие хуй знает куда.
хочу более круто генерировать меш самого навмеша чтобы он группировался по нормалям. тогда он будет идти всегда вдоль поверхности и можно будет пускать агентов по сгенерированным вэйпойнтам а они будут следовать вдоль поверхности везде и всегда. а не только на границах навмеша.
в конце концов хочу сферические миры. и чтобы можно было из всяких там менкрафтов взять воксели и быстро-быстро сгенерировать по ним навмеш минуя кучу этапов генерации.
этот вопрос остается открытым и по сей день! прежде всего я хочу всё что позволило бы как можно сильней упростить оценку ситуации о внешнем мире для ИИ в 3D. в качестве целевого жанра предполагается шутан в большом процедурном динамичном мире. так что полезность фич рассматривается с точки зрения того чтобы можно было отображать как можно больше информации о мире через навмеш и как можно больше было способов повлиять на состояние навмеша и способы менять эту информацию. основной фичей остается то что можно отковырять какой чанк навмеша и сгенерировать его заново не трогая остальных частей.
например у меня отдельно существует хуйня для организации логики дверей. можно например в какой-то зоне оставить метадату которая вернется когда путь ищется через эту зону. и если путь ищется через проход двери то можно было бы вернуть метадату в путь, как-то её интерпретировать и отправить агента в другое место. например на видео информация о том как открыть дверь содержится в самом проходе и агент идёт давить кнопку.
или например эта замечательная хуйня когда генерируются розовенькие укрытия. хотя там просто переиспользуется информация вокселей.
или например в следующем обновлении можно будет регистрировать на навмеше какую-то информацию и вернуть аппроксимированную дистанцию до списка объектов не возвращая путь. убирать из генерации пути целевые зоны. локально менять цену пути.
ну а так разумеется у меня дохера далёких планов.
хочу более крутой способ редактировать оффмеш линки. чтобы больше контроля было над тем как генерируются прыжки и чтобы можно было организовать логику лесниц.
хочу flood fill навигацию чтобы можно было посчитать путь докуда то для всего навмеша чтобы тыщи зомбей знали куда бежать не высчитывая путь для каждого из них.
хочу гпу рэйкастинг, чтобы можно было по информации которая учавствовала в генерации навмеша пускать лучики и например смотреть какие из них уткнулись в навмеш а какие хуй знает куда.
хочу более круто генерировать меш самого навмеша чтобы он группировался по нормалям. тогда он будет идти всегда вдоль поверхности и можно будет пускать агентов по сгенерированным вэйпойнтам а они будут следовать вдоль поверхности везде и всегда. а не только на границах навмеша.
в конце концов хочу сферические миры. и чтобы можно было из всяких там менкрафтов взять воксели и быстро-быстро сгенерировать по ним навмеш минуя кучу этапов генерации.
лол а ScriptableObject то пиздец какой полезный. че хочешь то? вот compute shaders например пиздец какие полезные.
> лол а ScriptableObject то пиздец какой полезный.
Я не вижу в нём толку(можешь ли подсказать если он есть?)
> че хочешь то?
Всякую йобу типа ECS и жоп системс.
>вот compute shaders например пиздец какие полезные.
Шо? Шейдеры-то тут причём? Это же уже не по части юнити, а отдельная область.
>Я не вижу в нём толку(можешь ли подсказать если он есть?)
он использует сериализацию самого юнити. в нем охуеть как удобно хранить ресурсы проекта. можно сказать вот здесь у нас короче такая текстура, эти данные, этот префаб. и совать их везде. и всякие клёвые фичи есть. например можно сделать один скриптабл обжект частью другого и хранить информацию удобно. например видишь этот граф справа? >>64788 каждая нода сериализацется в отдельный скриптабл обжект и хранится внутри скриптабл обжекта самого паттерна. и я могу свободно перемещать всю эту хуйню по проекту, запаковывать и передавать другому человеку и так далее. и самое главное оно может сериализовать ссылки друг на друга, что нормально делается только бинарной сериализацией иначе.
>Всякую йобу типа ECS и жоп системс.
вообще на самом деле они не являются чем-то уж столь крутым. массивы со структами и многопоточность были и до этого.
>Это же уже не по части юнити, а отдельная область
сейм щит. можно кинуть туда кучу информации чето посчитать сложное и вернуть. или не возвращать. например сделать симуляцию ткани на них.
но вообще конечно помимо ECS и джобсов наверно надо вспомнить бёрст компайлер https://docs.unity3d.com/Packages/com.unity.burst@0.2/manual/index.html вот это действительно ёба и техномагия.
> например можно сделать один скриптабл обжект частью другого и хранить информацию удобно. например видишь этот граф справа? >>64788 каждая нода сериализацется в отдельный скриптабл обжект и хранится внутри скриптабл обжекта самого паттерна. и я могу свободно перемещать всю эту хуйню по проекту, запаковывать и передавать другому человеку и так далее. и самое главное оно может сериализовать ссылки друг на друга, что нормально делается только бинарной сериализацией иначе.
Вот это уже неплохо кстати.
> вообще на самом деле они не являются чем-то уж столь крутым. массивы со структами и многопоточность были и до этого.
Ну это действительно не что-то очень крутое и инновационное, но это полезная вещь, которая освобождает тебя от переизобретения своей схожей системы и открыв впервые(ну не в первые, а скадем в десятый раз) юнити ты сразу не знаешь что она вообще тут есть - вот таких полезных возможностей которые должны знать олды я хочу.
> сейм щит. можно кинуть туда кучу информации чето посчитать сложное и вернуть. или не возвращать. например сделать симуляцию ткани на них.
Ну это то да, но это ж не юнити, это я и сам знаю.
>>64815
Во, это тоже интересно выглядит, то что надо.
>Вот это уже неплохо кстати.
жа. вообще конечно иметь дело с ебучей сериализацией юнити это боль, но скриптабл обжекты для организации проекта незаменимы. они по сути являются префабами, но для данных, вместо геймобжектов. ну и конечно круто что в них вызываются всякие каллбэки. типа там OnEnable.
>Ну это действительно не что-то очень крутое и инновационное, но это полезная вещь, которая освобождает тебя от переизобретения
да-а-а как бы это сказать. этак можно начать перечислять всю хуйню что сунули в пакадж менеджер и ассет стор. там и обрубок тридэ макса в виде пробилдера и хуйня для пост процессинга и текст меш про. всё это просто заебись. не говоря уже о всей той хуйне что сунули в неймспейс UnityEditor с помощью которой можно на коленке быстро-быстро допилить функционал самого юнити.
а если покопаться то есть даже не документированная хуйня. типа UnityEditor.Graphs на котором сделан UI для аниматора. так что хуй его знает что тебе надо и что может понадобится.
ну и конечно же надо знать о существовании репозитория у юнити https://bitbucket.org/Unity-Technologies/ крайне рекомендую к ознакомлению UI бранч.
>велосипед, который транслирует C# код в ассемблер с simd инструкциями
>вот это действительно ёба и техномагия
это говно костыльное, которое работает только на простых демках. а в юнити какие-то долбоебы, которые пишут собственную платформу для C# кода вместо того, чтобы делать движок.
в юнити взялись за кусок который они не смогут проглотить.
выхлоп от этого все равно никакой для 99% пользователей.
Этот берст сам по себе очень специфический, + он работает только с ECS жоп системами, который должны только выполнять простые арифметические операции над компонентами что еще более специфическая задача.
Охват аудитории тут вообще никакой. Никому это не всралось.
Двачую.
В движке нет самых базовых вещей вроде нормальной поддержки сети, функций отрисовки графики, терейн примитивный не обновлялся с первого релиза. Все пакеты в вечном превью сырые и забагованные. Зато есть векторизация специфического кода для специфических случаев.
Ебанутые в руководстве сидят.
>терейн примитивный не обновлялся с первого релиза
Бесит эта хуйня, люди в одно рыло такие системы делают, можно в юнити хотя бы по одной фиче в год запиливать?
https://www.youtube.com/watch?v=AvZ87w9MwBw
Нет, жди когда они берст компилер сделают через 3 года. Ускоришь свой код складывания векторов.
А пока плати за ассеты. Зря тебе ассет стор что-ли сделали?
Игра сама ну очень простая, там вообще похуй хоть на сервере она будет обсчитывать хоть пир ту пир, так что если в юнити нихуя нету для мультиплеера то подскажите другой движок под это дело. (Хотя я хотел бы в идеале на юнити)
Не могу прислать скрины, сейчас не дома
Представь, что ты заспавнил шарик и бегаешь им туда-сюда по плоскости. Камера дочерний объект от этого шарика. Она намертво привязана к нему
А хотелось бы, чтобы как обычных играх — вместе со сдвигом шарика, двигалась камера, но в некоторых пределах, позволяющих выгодно показать скорость через эти сдвиги. Bouncy на симбиане играл?
Так-то можно самому попытаться накодить, но почти наверняка моё первоначальное видение — говно, и придётся сотню раз переписывать. Хочется побыстрее. Позорное желание, но что есть
>>64972
А в тексте нет? Пиздец как не люблю ютубы. Но за наводку спасибо, в крайнем случае посмотрю на
>ScriptableObject
>ScriptedImporter
Уебки
Очевидный Cintmachine, выстави ему там границы как тебе надо и поиграйся со скриптами, можно добиться очень интересных эффектов.
928x792, 0:19
и тут то я понимаю что вместо ближайшей точки на линии по хорошему надо брать вторую точку равнобедренного треугольника чтобы скорость не снижалась. интересно есть ли способы попроще.
>>64910 >>64913
лично мне бёрст компайлер определенно пригодится. я вижу ему множество применений. compute shader так себе когда дело доходит до коллекций с разными размерами, а тут как раз то что надо.
вообще. вот наконец дали инструменты чтобы делать игры с какими-то сложными вычислениями на цпу. а народу не нравится. а всего то надо делать игры не про графон!
>>64932
лол потому что одному человеку чтобы запилить хуйню вроде рисования дорог на террейне надо надо максимум 2-4 часа. предполагается что подобное говно ты и сам запилишь. хорошо что они ебутся со всякими проблемами производительности вместо хуиты.
>>64983
возможно стоит начать с открытия вижуал студии? иначе твое первоначальное видение так и останется говном. и что самое ужасное - будет говном каждый раз. уж с камерой то ты сможешь совладать.
на физон приделай если дурак. пускай камера болтается на джойнте и имеет пиздецовый драг чтобы не болталась.
>вот наконец дали инструменты чтобы делать игры с какими-то сложными вычислениями на цпу.
Кому нужны сложные вычисления возьмет уеч библиотеку на си. Проблема высосана из жопы.
Те, кому реально нужна производительность, и так ее сделают без ецс и костылей. Ассетотаскателям эта ебля и подавно не нужна.
Вот и получается что у этого говна нет пользователей.
А вот хороший террейн был бы реально полезен.
>библиотеку на си
и охуеет её совать. пользоватся нативными плагинами сродни сованию кочерги себе в жопу. всё нормально пока не глубоко.
а тут дают гораздо более юзабельную хуйню. ну и производительность у этой хуйни конечно повыше чем то что можно получить отключая проверки границ массива, нуллы и всё такое.
>А вот хороший террейн был бы реально полезен.
хуй его знает что тебе там не хватает. починили бы физон деревьев, исправили перепутанные оси, дали бы побольше экзамплов как там под капот залезть и больше то ничего и не надо.
Ты больше юнитиблядей слушай. Тебе и не такую хуйню расскажут.
Ты думаешь всякие hollow knight и escape from tarkov как-то выиграют от ецс? Да нихуя. Им этот дроч на процесорный кеш и simd вообще не нужны, там просто считать нечего
Игры у которых боттленек в процессоре не часто встречаются.
они - нет. впрочем я не считаю их хорошими играми. поэтому я и сказал
>а всего то надо делать игры не про графон!
факторио конечно сложновато будет сделать но уже не так плохо как раньше.
Да я тебе еще раз говорю, что ецс как его делают в юнити - это очень специфическое решение для очень специфических проблем. У игр делаемых на юнити просто не бывает таких проблем! Юнити выбирают за простую архитектуру - хуяк-хуяк добавил компоненты и игра готова. И делают на юнити простые игры. Никто не будет ебаться на юнити с байтоеблей и ецсом. Никто! В юнити занимаются откровенно хуитой сейчас.
>факторио конечно сложновато будет сделать
да епта делаешь кастомный менеджер апдейта с низкой частотой например 10 раз в секунду (больше там и не нужно) и можешь хоть тысячи заводов ставить. Все будет упираться в графон.
>У игр делаемых на юнити просто не бывает таких проблем!
а потом смотришь на лагающее говно вроде oxygen not included, или rimworld и думаешь "хмм наверно надо пеку обновить" да? наверно нет проблем потому что те кто не смогли их решить даже до альфы не доползли.
а может просто из-за засилья бездарного говна стандарты игростроя падают
>да епта делаешь кастомный менеджер апдейта с низкой частотой например 10 раз в секунду
что лол, предлагаешь кусками обновлять? типа вот в этот фрейм у нас обновятся эти заводы, а в этот эти? хороший способ заебать себя настолько чтобы никогда не закончить.
>>65128
Многопоточность и линейное хранение нужных данных в озу - никоим образом не зависят от концепции ецс. Иначе говоря, в компьютере можно и без всяких ецсов параллеить то что тебе нужно и даже линейно хранить нужные данные. А еще если ты решил заняться такими оптимизациями, то тебе вовсе не обязательно бросаться в крайность и для абсолютно каждой хуйни на 0.1мс процессорного времени предусматривать многопоточность.
Собственно у меня тут ещё пара вопросов есть:
1. Могу ли я шарповские средства для параллелинга нагрузки использовать в юнити?
2. Или лучше джобс систем посмотреть?
3. Или в юнити помимо джобс систем ещё что-то есть для этой цели?
я мимопроходил если что
>Могу ли я шарповские средства для параллелинга нагрузки использовать в юнити?
Там все упирается в то, что данные обновлять нужны обновлять из главного треда и вообще это медленно.
Лучше бы в юнити добавили функции для быстрого апдейта батчами трансформов и т.д. А данные в массивах я бы и без их ецс хранить мог.
>Могу ли я шарповские средства для параллелинга нагрузки использовать в юнити?
зависит от того какой версией шарпа будешь пользоваться. так то можно и потоки создавать и тред пуллом пользоватся, мониторами и прочим говном. но например Array.Parallel нету в 3.5 шарпе юнити.
>Или лучше джобс систем посмотреть?
посмотреть если ты собираешься синхронизировать работу потоков в основном потоке.
> rimworld
Прямо сейчас его запустил, вижу мои залоченные 144 фпс, нагрузка максимум 60% на один поток, т.е. мой процессор и 240 фпс вытянет(стоило 240гц монитор взять!)
Правда это почти самое начало игры, вроде неделя игрового времени прошла, у меня пара полей и несколько помещений построено, хуй знает что дальше будет. Но я думаю ничего особо не изменится, потому что когда-то давно я в него играл и не помню проблем(но точную метрику из поздних этапов игры я сейчас конечно не смогу посмотреть).
Игры типа факторио существовали еще во времена одноядерных пентиумов.
Мой целерон в котором и кеша-то почти не было спокойно гонял что-то такое как сейчас помню.
вообще учитывая что API юнити почти не работает из любого другого потока кроме основного (есть пара исключений но так себе) то скорее вопрос в том как много твоё будет взаимодействовать с API юнити. если много то да, лучше джобсы. они на самом деле клевые с этой фичей копирования всей нужной информации в потоки.
>>65137
>апдейта батчами трансформов
а можно просто не пользоваться трансформами, если не надо!
>>65139
поиграй недельку, развей колонию в которой будет бегать пара десятков жителей с одного края карты в другой, замерь фпс когда случится очереденое нашествие сотни другой орков. всякое говно вроде поиска пути там начинает отжирать просто пиздец.
к слову в oxygen not included та-же проблема с поиском пути. после пары сотен цыклов и десятка дупликантов тоже становится не играбельно. правда там эти мудаки только недавно сделали поиск пути многопоточным.
>>65141
факторио несколько подняло масштаб и уровень всего этого. до этого ближайшим аналогом были только всякие tycoon игры. в них разумеется не было всей этой хуиты с жидкостями, дронами и так далее.
>лол потому что одному человеку чтобы запилить хуйню вроде рисования дорог на террейне надо надо максимум 2-4 часа. предполагается что подобное говно ты и сам запилишь. хорошо что они ебутся со всякими проблемами производительности вместо хуиты.
Ты меня разочаровываешь, вроде умный, но такой тупой. Там же не рисование дорог, это отдельная крутая террейн-прога, и кстати он запилил полное встраивание в юнити, ты глянь другие видосики. Совсем со своим патфиндером обезумел.
>лол потому что одному человеку чтобы запилить хуйню вроде рисования дорог на террейне надо надо максимум 2-4 часа.
И каждый из тысяч пользователей будет ее запиливать, и еще тыщи небольших фич, хотя это может сделать один раз один юнитиразраб за пол рабочего дня, и люди не будут тратить впустую кучу времени. Найс у тебя логика.
да знаю я что эта хуйня есть и что она не только дороги рисует. ещё и стоит дохера на ассет сторе. но раз показали рисование дороги - обсуждаю рисование дороги. а то вот в ньюфаго-треде недавно тоже про дороги вспомнили. может это один и тот-же человек и только дороги тебя и интересуют?
вообще если обсуждать World Creator и прочие процедурные генераторы террейна. их всех объединяет один минус - если в них хоть что-то не подходит проекту то он нахуй ненужен. например вот был у меня забавный проект генератора террейна (впрочем он и сейчас есть, кочует из проекта в проект). и мне нужен был специфический способ генерации некоторых его ступеней, которые переиспользовались потом в ИИ. генерируй я это с помощью чужого кода я бы проебался хорошенько с тем чтобы выковырять то что мне надо куда надо. генерируй я это с помощью того что мне дало бы юнити я бы получил хуй с маслом потому как наверняка запрятали бы всё снова в какую-то жопу.
так что жизнеспособность каких-то таких подобных фич пускай лучше решает рыночек на ассет сторе. кому надо - те купят, или украдут нужную им хуйню. единственное что по настоящему надо всем это чтобы это говно работало. а с этим в юнити до сих пор проблемы.
>>65161
некоторые утилитарные вещи можно и просто с вики взять как например это: >>64050
такие мелочи на каждом углу бесплатно лежат.
конечно было бы здорово если бы некоторые мелочи уже присутствовали в юнити, типа там разглаживания террейна полосочкой чтобы дорожки было рисовать попроще. но пускай лучше сделают уже что-то более полезное. они насколько я знаю до сих пор даже не запилили рисование травы с помощью декалей, хотя планировали. вот пускай лучше это запилят, вот это действительно было бы полезно.
640x360, 0:23
если бы в арехе не кричали на каждом углу кто из персонажей гей а кто лесбиянка я бы тоже может и сходил посмотрел. это всё просто ужасно. хорошо что он провалился.
>вот пускай лучше это запилят, вот это действительно было бы полезно.
А вот хуй тебе, ничего делать не будут, сам делай. Ты понимаешь, что ты будешь пилить патфайндер всю жизнь? Ты никогда уже не вырвешься...
>>65166
>а то вот в ньюфаго-треде недавно тоже про дороги вспомнили. может это один и тот-же человек и только дороги тебя и интересуют?
Да, это был я, но я не про такие дороги и террейн. Я увидел в дмц
локации и подумал, что наверняка у них специальные инструменты для их рисования есть, поребрики всякие делать, я просто не знаю. Если вручную моделить, вдруг там производительность просядет. Большой меш на части резать? Гемор какой-то.
>А вот хуй тебе, ничего делать не будут, сам делай.
вообще, они вроде собирались. когда эту хуйню показали https://unity3d.com/book-of-the-dead после этого они и стали ворочаться с террейном. может и ещё чего клёвого запилят. запилили же они оптимизон. и то что вдали террейн теперь не выглядит как говно. и что можно теперь соседние террейны сразу редактировать. вот заебись, вот хорошо сделали. пускай ещё что-нибудь сделают.
>Ты понимаешь, что ты будешь пилить патфайндер всю жизнь? Ты никогда уже не вырвешься...
конечно! стоит сказать что я ни о чем не жалею! с ним в портфолио кстати неожиданно довольно легко найти работу по мелочи чтобы с голоду не помереть, а то что надо допиливать становится все меньше и меньше. так что время которое я могу уделять своим интересам всё больше и больше.
>Если вручную моделить, вдруг там производительность просядет. Большой меш на части резать? Гемор какой-то.
вообще обычно в проекты добавляют всякое там говно чтобы прямо на месте левел десигнер мог разрезать и соединить что ему там надо. оно зачастую ещё и как-то специфично для проекта. так то разумеется левел дизигнерам там надавали каких-то инструментов чтобы упростить им задачу. но вряд-ли оно работало бы за пределами DMC.
вообще то что инструменты делают специфичными для каких-то задач то обычное дело же. например есть интересное чтиво о том как земеля устроена в БФ3. https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc12-terrain-in-battlefield3.pdf интересно пиздец. но подошло бы что-то этакое к DMC? нет конечно.
>интересно пиздец. но подошло бы что-то этакое к DMC? нет конечно.
Поэтому и ненужно, пусть этот огрызок будит, нам и так нравиться!
Будем изъебнуться!
ну так то этот огрызок можно лобзиком обработать до того что нужно. так как добавлять фичи проще чем вносить изменения в чужие, или темболее убирать их.
хотя так то никто не мешает запилить свой собственный террейн. тут был и тот молодец с симуляцией жидкостей на террейне и помню года полтора-два назад был другой хуй который свой террейн делал.
может они хотели сделать хорошую игру. а не очередной платформер. но случился кризис идей. такое происходит на каждом шагу.
Ну не знаю, по-моему на каждом шагу происходит, что чел хочет сделать игру, начинает, и потом что угодно делает, на любые ухищрения идет, придумывает железобетонные оправдания, только бы не пилить игру. Террейны, патфандеры всякие...
а как иначе то? кнопки "сделать заебись" не сделали нигде. а движок это отправная точка, а не готовый инструмент.
Я имел ввиду намеренное избегание игроделанья, творческого процесса придумывания игры, уход в зону комфорта, где есть четкие цели, и ты знаешь как решать.
Ех. Что про что написал вообще не понял, и ладно.
https://www.youtube.com/watch?v=XeV0bmTLacM
У нас на твг не хуже делают
https://www.youtube.com/watch?v=W3aieHjyNvw
Хочу 2д пиксельную РПГ сделать, с ахуенным сюжетом
Для 2D пиксельной РПГ, если она линейная, тебя точно хватит.
с нулевыми.
Так вот когда клиент стреляет, ядро летит и дергается в полете, вибрирует. Виновата конечно моя криворукость и rigidbody, и посему появились вопросы. Можно ли как то реализовать полет ядра по дуге без этого rigidbody? Если же нет, то как избавиться от вибраций?
У меня была идея использовать два метода с двумя разными префабами снаряда, первый метод будет использовать префаб сервер онли и не будет виден игрокам и физика будет рассчитываться только на сервере для реализма попадания. Второй метод будет использовать префаб локал онли скажем так для АНИМАЦИИ ПОЛЕТА, который будет обрабатываться отдельно у каждого игрока просто для вида. В итоге будет при выстреле вылетать два ядра, одно только на сервере со всеми вытекающими при попадании в определенный колижн, другое будет вызываться на всех клиентах и будет показывать полет снаряда. Но встает вопрос с реализацией такого пездеца.
МетодВыстрел(){
CmdМетодВыстрел()
МетодВызоваАнимацииПолета()
}
[command]
CmdМетодВыстрел(){
блаблабла
NetworkServer.Spawn(x)
дестрой()
}
[Client]
МетодВызоваАнимацииПолета(){
NetworkServer.Spawn(x) ИЛИ NetworkServer.SpawnWithClientAuthority с перебором ВСЕХ активных подключений. Насколько будет затратно такое решение?
}
Надеюсь изложил понятно, буду рад любой помощи ибо уже день жизни просрал на это все, мануалы и гуглы. У меня получилось реализовать мою идею только через SpawnWithClientAuthority но я боюсь это лютый пиздец и если будет одновременно около 100 человек то пойдут лаги(инет канал говно на домашней машине конечн).
>>65142
>>65135
Поясните, как делать на Unity двухмерные песочницы по типу террарии, старбоунда, оксиген нот инклудед и т.д. Интересует именно как пилить и обсчитывать сетку изменяемых блоков. В гугле большинство мануалов либо про 3d FPS, либо про 2d платформеры с заранее собранным уровнем, а про то что мне надо в упор не могу найти.
А что непонятного? Тайлами и делаешь, обсчитываешь что нужно и отрисовываешь что нужно.
http://www.gabrielgambetta.com/client-server-game-architecture.html
наверно надо тебе дать эту ссылку, там в целом всё ёмко и с картинками.
но тут всё грустно. не советую пользоваться сейчас UNet и лучше заебошить свою хуйню с помощью шарпа, или воспользоваться сторонними решениями. например фотоном. по этой причине: https://support.unity3d.com/hc/en-us/articles/360001252086-UNet-Deprecation-FAQ
раньше можно было сравнительно что-то сделать этой средней прослойкой. можно было регистрировать свой сорт команд в NetworkServer и NetworkManager пользоваться и оно ещё было сравнительно полезным. но теперь хуй.
>>65548
охуеешь. 2д сандбоксы далеко не самый простой в имплементации жанр. там дохуилион мелких сложных мелочей и все они из разных сфер. ну а так. советую почитать на той страничке https://catlikecoding.com/unity/tutorials/ про Marching Squares. тебе не нужны сами Marching Squares, но там довольно много про то как хранить всё это так чтобы было удобно менять.
а вообще лучше спизди https://forum.unity.com/threads/532699/ расковыряй и посмотри что внутри. наверняка интересное чтиво.
>не советую пользоваться сейчас UNet и лучше заебошить свою хуйню с помощью шарпа, или воспользоваться сторонними решениями. например фотоном. по этой причине: https://support.unity3d.com/hc/en-us/articles/360001252086-UNet-Deprecation-FAQ
Я на самом деле пользуюсь не совсем юнетом, а Mirror https://github.com/vis2k/Mirror. Хороший вариант или все же слезать и садиться на pun?
>Я имел ввиду намеренное избегание игроделанья, творческого процесса придумывания игры, уход в зону комфорта, где есть четкие цели, и ты знаешь как решать.
А есть что-то с чем юнити не обосрались?
Какой-то дебил.
А системы это не объекты, значит?
Сам придумал какую-то архитектуру, сам назвал ее ООП, сам ее опроверг. Феерический долбоеб.
>Знаю
В википедии прочитал, знаток?
Нам важно сейчас, то объект инкапсулирует поведение. Именно это делают его >>65629 системы.
Вся разница только в том, что вместо того чтобы инкапсулировать код еще дальше в компоненты, как мы это делаем в юнити, он весь код вывалил как свои мудя в функции Update(), сделав код более сложным для поддержки.
А, ну и да, говоря, что "мы не используем ооп" он явно имеет в виду что они не используют все эти худшие проявления ооп в виде чудовищного количества классов где все друг от друга наследуется.
Как на передний фон изображение поставить?
В юнитивском ецс это хотя бы имеет смысл, т.к. там обещают прирост скорости. Ты размениваешь удобство и поддержку кода на производительность. Это хотя бы понятно. Пишешь процедурную лапшу, зато все работает быстро.
Но в обычном ецс как архитектуре ты размениваешь хороший дизайн на говно ради чего? Непонятно.
Пиздец, разобрался, order in layer > должен быть
ООП - это парадигма, т.е. в каким терминах мы рассматриваем что-то. ООП рассматривает программу в терминах объектов. Все что нужно закодить в программе - рассматривается как объекты - набор данных с конкретно зашитым кодом для их обработки.
ЕЦС идет врознь этому. Объекты не выделяются по сути. Выделяются сущности, которые состоят из более атомарных компонентов (сугубо данные, без привязки к коду обработки). Выделяются системы, которые не имеют понятия ни о сущностях, ни об объектах тем более. Они просто берут нужный массив компонентов, и применяют над ними обработку. Это уже многое делает для разделения и развязывания лапши в коде. Код будет все еще разобранным конструктором, в котором можно легко убрать или добавить новый элемент. В ООП это уже было бы скрученным/собранным конструктором, с фиксированными деталями, и тебе либо разбирать детали надо, либо добавлять поверх, что вызывает усложнение.
Да, сама система или менеджер ецс будет объектом скорее всего, и вся остальная программа может иметь объекты и написана в ООП стиле. Но сам по себе ЕЦС и его область влияния в программе требует совершенно другого понимания и представления, это другая парадигма.
Ставь им флаг и удаляй потом очередью на загрузке нескт левела из памяти
Для связи
Смотрите какое говно, на реддите 800 плюсов, трава будто водоросли под водой, хотя в книге мертвых уже годно было
https://youtu.be/DDsRfbfnC_A?t=118
1280x720, 0:18
Появляется вопрос, как сделать это нормально?
>вообще едитор часто падает из-за нехватки памяти.
Нужен скрин ошибки.
>Могут ли это быть утечки памяти из говнокода?
Сомнительно.
Ого, вот это ты обьяснил, спс. Я уже кодирую почти пол года, но так особо и не вникал, что за ООП и какая в этом всем разница. Узнал только, что есть F# мультипарадигмальный, необычный какой-то, а есть С#, который в юнити и ООП. И кодил себе все это время, особо не вникал.
Как думаете, если прям в программирование уходить, стоит ли читать про о шаблонах проектирования и порождающие шаблоны, или для игростроя это не надо? Понятно, что скилл растет потихоньку и когда просто фишки разные делаешь для игры, но если вот уходить в программирование глубже, чтоб разбираться лучше, в какую сторону можно еще копать, что думаете?
Алсо, это нормально кстати, что я вот сколько говнокодю, так и не читал ни одной книжки по С#. Пересел на него с Питона и сижу вот до сих пор, общие принципы вывел для себя какие-то. Может быть они и не правильные.
Стоит может быть вообще начать с книжки по C#? Или что как развиваться дальше в этом деле, господа? Или само все придет?
https://forum.unity.com/threads/shadergraph-export.537032/
Типа можно, но с заебами экспортнуть, как я понял. Не все так просто.
> ЕЦС идет врознь этому. Объекты не выделяются по сути. Выделяются сущности, которые состоят из более атомарных компонентов
> Выделяются системы, которые не имеют понятия ни о сущностях, ни об объектах тем более. Они просто берут нужный массив компонентов, и применяют над ними обработку.
Одна и та же хуйня по своему смыслу.
Залупа1 наследуется от ЯИмеюКоординаты полностью эквивалентно объект залупа1 содержит компонент ЯИмеюКоординаты, за исключением типа отношения. Но нам не важен тип отношения, нам важно что отношение имеется.
Если принципиально чтобы все компоненты были в одном массиве - можно в конструкторе каждого компонента добавлять их
>>65706
>Я уже кодирую почти пол года, но так особо и не вникал, что за ООП и какая в этом всем разница.
Погугли, там материала на 5 минут изучения в лучшем случае.
>Узнал только, что есть F# мультипарадигмальный, необычный какой-то, а есть С#, который в юнити и ООП.
Почти на любом языке(из адекватных) можно почти в любой парадигме писать.
>Как думаете, если прям в программирование уходить, стоит ли читать про о шаблонах проектирования
Шаблон проектирования = прикольный полезный приёмчик. Иногда очень ползный. А иногда и вредный.
Ты сам скорее всего некоторыми вещами которые называют шаблонами проектирования пользуешься, просто не знаешь этого.
>Понятно, что скилл растет потихоньку и когда просто фишки разные делаешь для игры, но если вот уходить в программирование глубже, чтоб разбираться лучше, в какую сторону можно еще копать, что думаете?
Смотря чего ты хочешь.
Офк я бы посоветовал побайтоёбствовать в си и поковырять опенгл(не обязательно много), если ты этого ещё не делал.
И обязательно алгоритмы и структуры данных.
> Одна и та же хуйня по своему смыслу.
> Залупа1 наследуется от ЯИмеюКоординаты полностью эквивалентно объект залупа1 содержит компонент ЯИмеюКоординаты, за исключением типа отношения. Но нам не важен тип отношения, нам важно что отношение имеется.
> Если принципиально чтобы все компоненты были в одном массиве - можно в конструкторе каждого компонента добавлять их
Блять не дописал. Короче можно добавлять их в общий список, да. Но суть не в этом, суть в том, что ООП - это не обязательно лапша, ООП - это довольно широкое понятие которое скорее включает в себя и ецс, а не противопоставляется ему. Аналогично оно вклбчает и говно с полиморфизмом и наследованием.
>Залупа1 наследуется от ЯИмеюКоординаты полностью эквивалентно объект залупа1 содержит компонент ЯИмеюКоординаты, за исключением типа отношения.
В каноничном ЕЦС даже нету объекта залупы, ибо не нужен.
Ну блять, очевидно, что в конце концов оно эквивалентно, потому что мы хотим получить одно и то же поведение. Но достигается это разными путями. И тип отношения как раз-таки важен.
Один массив принципиален тем, то локальность данных становится более юзабельной для проца. Можно пойти дальше в оптимизации и сделать не массив структур, а структуру массивов, что позволяет на 100% гонять SIMD.
По сути это уже область data-oriented design (не путать с driven), и ООП далек от ДОД.
а хуй знает, у меня опыта обращения с ним нет. ты и расскажи.
>>65559
>Вряд ли такие штуки на торрентах выкладывают.
с торрентов порой можно спиздить даже бесплатные вещи ололо
https://www.cgpeers.to/ зарегистрируйся завтра, авось найдешь.
>>65561
в целом да. хуёво всё. ну и хуй с этим, им всё равно невозможно было пользоваться.
>>65654
сколько воды а. мог бы просто написать "структы хорошо, массив структов вообще заебись, пишите кэш френдли код".
>>65669
ни краткого описания проекта чтобы оценить объем времени который на него придется проебать, ни требуемых скиллов. будет удивительно если хоть кто-то ответит.
>>65685
ну что же ты. видно же что аксисы прыгают к нулю когда жмешь в другую сторону. хани текущее значение инпута отдельно, а от аксиса только знак бери при управлении.
>>65693
конечно могут. что ты там сделал то.
в ООП обжекты. хуй его знает в какую жопу памяти они засунуты. когда одному обжекту надо чето с другого то разумеется конплюктор лезет в оперативку искать что там надо. обжекты могут быть рядом, а могут не быть. а в ECS магически обжект только один - массив с значениями. его можно хопа быстренько сунуть в кэш процессора, сказать "сделай это имея этот массив" и всё сразу быстро-быстро становится.
>конечно могут. что ты там сделал то.
Сделол приложение для трейдинга и исследований. Грешу на едитор, иногда зависает при попытке запуска в дебуг моде. Может быть с вебсокетами что-то не так. Попробую завтра запустить с десяток инстансов, посмотрю как дело пойдет.
>Они просто берут нужный массив компонентов, и применяют над ними обработку. Это уже многое делает для разделения и развязывания лапши в коде
На простых примерах уровня position = position + 1
что-то знакомое. наверно ты тот анон который задавался вопросами как рисовать график не снимая свитера с пол годика назад.
>>65738
большинству хватит и этого. в конце концов не обязательно всю хуйню переносить в эту хуергу. например когда симулируешь мир и большая часть обьектов даже не имеет репрезентации в сцене.
> в ООП обжекты. хуй его знает в какую жопу памяти они засунуты. когда одному обжекту надо чето с другого то разумеется конплюктор лезет в оперативку искать что там надо. обжекты могут быть рядом, а могут не быть. а в ECS магически обжект только один - массив с значениями. его можно хопа быстренько сунуть в кэш процессора, сказать "сделай это имея этот массив" и всё сразу быстро-быстро становится.
Ты чо рофлишь? Классы - это чисто синтаксическая хрень(даже с учетом наследования и перегрузки методов - ты можешь и сам ручками на си тоже самое сделать со структурами и функциям, а еще можешь написать транслятор который будет переводить нечто вроде yoba.addKek(2) в addKek(&yoba, 2) - и все, вот тебе твой личный ооп), позволяющая рассматривать программу на более высоком уровне абстракции. Физически куда хочешь туда и можешь засунуть их данные, это зависит от средств языка программирования. Вот пишу я на шарпе Жопа жопа = нью Жопа() - я знаю что среда исполнения шарпа из своей "управляемой памяти" выделит где-то кусок, который является абстракцией над куском физической памяти.
С другой стороны когда я на С++ пишу Jopa jops = malloc(sizeof(jopa)1000)(или можно с++ вариант new Jopa[1000]) - я знаю что я выделил линейный кусок памяти, который содержит достаточен для хранения 1000 объектов моего класса.
От того что конкретно в шарпе есть ключевое слово структура и оно отличается от класса тем, что в отличии от класса доступ к объекту ее типа модно получить нк только по ссылке - никоим образом не влияет на саму концепцию ооп, а лишь является странным ограничением конкретно шарпа.
мне кажется ты обдрочился на пллюсы и не совсем понимаешь разницу между тем что такое структ в плюсах и структ в шарпе. на, советую почитать.
http://www.developingthefuture.net/c-structs-vs-c-sharp-structs-vs-c-plus-plus-structs/
1152x696, 0:07
и лерп ебанул лол. а знаешь как ещё можно делать?
axis = Mathf.Clamp(axis + (Time.deltaTime axisSpeed axisDirection), -1f, 1f);
вместо лерпа можно линейно смещать нужную ось на дельту времени.
чтобы значение менялось пропорционально времени, а не дистанции.
или ещё круче - завести публичный https://docs.unity3d.com/ScriptReference/AnimationCurve.html и брать из него прибавляемую дельту чтобы совсем уж контролировать скорость изменения анимации.
а ещё смотри какая хуйня есть https://docs.unity3d.com/ScriptReference/Animator-stabilizeFeet.html будет приклеивать ножки к земле на ебанутых разворотах. можно иметь забавный эффект.
> мне кажется ты обдрочился на пллюсы и не совсем понимаешь разницу между тем что такое структ в плюсах и структ в шарпе. на, советую почитать.
Мне кажется ты посты до конца не дочитываешь.
>>65741
> От того что конкретно в шарпе есть ключевое слово структура и оно отличается от класса тем, что в отличии от класса доступ к объекту ее типа модно получить нк только по ссылке - никоим образом не влияет на саму концепцию ооп, а лишь является странным ограничением конкретно шарпа.
>Мне кажется ты посты до конца не дочитываешь.
не разобрался что-ли. в шарпе структ копируется только по значению. и структ не может быть null. разница в том что если ты делаешь например массив классов, то ты делаешь массив со ссылками. а если ты делаешь массив структов то тогда они будут у тебя линейно в памяти лежать. в шарпе структы не наследуются. и если ты напишешь SomeStruct myStruct = new SomeStruct () то ты не выделяешь новую память.
>>65748
так я же дал ссылку на анимейшон курв уже. он вот просто заебись для таких манипуляций.
Большое спасибо за ответ, буду разбираться.
> не разобрался что-ли. в шарпе структ копируется только по значению. и структ не может быть null. разница в том что если ты делаешь например массив классов, то ты делаешь массив со ссылками. а если ты делаешь массив структов то тогда они будут у тебя линейно в памяти лежать. в шарпе структы не наследуются. и если ты напишешь SomeStruct myStruct = new SomeStruct () то ты не выделяешь новую память.
Но я же именно об этом и написал.
А также написал, что это проблемы конкретно самого шарпа, сама концепция ооп не обязывает выделять память для объектов класса с доступностью только по ссылке.
Есть геймобджект, внутри которого несколько спрайтов.
Задача 1: Надо менять его прозрачность целиком. Сейчас делаю так - вешаю скрипт, в нём ссылки на все спрайты и меняю прозрачность каждого спрайта. Но это неправильно же..
Задача 2: Надо отобразить половину этого геймобджекта. Представляю как сделать с одиночным спрайтом. Сделать новый спрайт, в котором часть пикселей будет с этого спрайта, а часть- прозрачные, но это тож неправильно, наверно.. И с целым так не сделаешь.. Ну или как то уж очень геморройно будет рассчитывать это..
Нутром чую что нужны шейдеры, но как их повесить на геймобджект - чёт не понял..
>вешаю скрипт, в нём ссылки на все спрайты и меняю прозрачность каждого спрайта
Тоже так делал, когда 2Д занимался. Можно без ссылок менять еще, GetComponent<Sprite> делаешь скриптом и внутри уже меняешь, и ссылка не придется делать, получится универсальный скрипт смены прозрачности. Но я сам говнокодер поэтому скорее всего это тоже не совсем верно. Еще не забывай, что есть Анимейшн или Таймлайн, если это какие-то кнопки то можешь прозрачность через Анимации менять прямо из Юнити без кодинга.>>65787
>Надо отобразить половину этого геймобджекта
Ну твой вариант тоже норм. Можешь с шейдерами разобраться. Тоже не эксперт в этом, но тебе нужен материал, на котором висит шейдер. Но для 2Д не нужно так заморачиваться. Как делаешь так и делай, лол.
Сам нашёл ответ на задачу два.
1. Объект, который надо отобразить убирается со сцены и перемещается в другое место.
2. Добавляется вторая камера, в поле зрения которой только нужная часть объекта
3. Изображение со второй камеры накладывается на нужное место в кадре.
Как то так?
С одним спрайтом проблем нет, но если объект из нескольких спрайтов состоит? В моём случае космический корабль (спрайт), на нём спрайты пушек и спрайт силового щита. Всё это должно проходить через портал, так что бы нос корабля исчезал в одном месте и появлялся в другом.
Вариант с двумя камерами не канает.. То есть всё работает, но камеры нельзя повернуть под углом, либо только вверх/вниз, либо только вправо/влево..
Делал такое на другом движке, всё легко и просто, просто накладывается маска прозрачности и всё.. А тут как то...
Вот за это спасибо. Не знал что как отдельный объект можно. Воспользуюсь
Сука ахахаха ебать ты придумал, это реально ад какой-то, ахахаха.
Блин, тоже только хотел сказать про ето. Ну это да, самый логичный вариант, только маску надо делать.
сночало
прототип, кубики и зона со всеми возможными актиностями и активными предметами, на все пишутся скрипты
потом по сюжету все объекты множатся расставляются, накладывается графон дизайн анимации
Только потом уже начинается полировка особенностей же
а тут большинство сразу пытается сделать особенность, забивая на остальное
про что несёшь? Какая ещё "полировка особенностей"? Что такое "особенность"?
Ну и я уж молчу про то что вот так
>прототип, кубики и зона со всеми возможными актиностями и активными предметами, на все пишутся скрипты
потом по сюжету все объекты множатся расставляются
игру не надо делать.
Они разве прям с нуля делают? Разве нет уже наработок?
Что не ясно, сначала должен быть рабочий прототип максимально примитивный, но с возможностью наращивания мяса и уже охватывающий всю игру от начала до конца
никаких шейдеров, анимаций, углубления в просчет полета пули, так игру не сделать
А вот сначала сделав проходимую от и до болванку, можно, потому что имея болванку останится ее только расширять и полировать, вводить усложнения геймплея
А если берешься сразу за полировку камеры то есть риск дропнуть все, потому что сложную рутину нужно делать сразу
В официальных много проблем из-за того что они для старых версий, а тот что рассказывает как рандомно генерировать карты/игровые поля вообще жутчайший пиздец и должен быть о том как делать не надо
>никаких шейдеров
Будто они дохуя много времени занимают.
>анимаций
Если делаешь один и в том числе планируешь делать анимации - то как раз нужно иногда переключаться на другой вид деятельности, в том числе и анимации.
А если делаешь не один - наверное в команде будет кто-то, кто как раз графоном и занимиается.
>углубления в просчет полета пули
Если ты об оптимизации, то отчасти тут можно согласиться. Но лишь отчасти, потому что иногда лучше сразу сделать нормально. Ну и иногда опять же для разбавления нагрузки будет полезно вместо очередной рутины заняться пулями, особенно если есть идея как правильно сделать.
>В официальных много проблем из-за того что они для старых версий
Документацию смотри. очевидно. Там часто есть мануалы с вводными статьями в какой-то определенный модуль.
Ну кароч делаешь твитор и постишь гифы с прогрессом создания, типа вот анимация травы, вот взаимодействие, незвначай тычешь патреоном и ждешь донатсов
Ну давай разберем по частям твои игры )) Складывается впечатление что ты реально пиздящий ассеты юнити-даун )) Вся та хуйня тобою сделанная это просто клоны, разработчик ты комнатный) ) от того что ты много 2д говна сделал, скилл твой лучше не станет) ) ассеты пиздить не мешки ворочить, много вас по чисткам Valve оттаяло )) Про таких как ты говорят: Valve не хотели, Google Play не пропустил) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
Могу конечно. Только я не умственно-отсталый, чтобы вместо делания игры ебашить говно на крестопараше и по сотне раз прописывать рутину всякую.
Ну да, зачем что-то писать, ведь можно тупо купить ассет на все каждый случай жизни
Хуйню спизданул. В нормальной игре на кубиках геймплей не сделаешь, взять для примера какой-нибудь dark souls, там весь геймплей и вся боевка завязана на анимации и их тайминги. Ты не напишешь "скрипты", пока у тебя не будет готового набора анимаций. Ты не задизайнишь нормально уровень без готовой боевки, ибо расположение врагов с учетом их боевых систем будет влиять на дизайн.
Максимум, что можно спрототипировать на кубиках - какой-нибудь симулятор ходьбы, всё.
Срать - это выпускать игры на юнити
Может, лучше ты? Выпусти-ка очередное говно, поржём всем сообществом
Не, лучше возиться с просроченным с# вместо удобных бп
Вам успешно поставлен диагноз!
Ну вот еще и яндекс браузер юзает, ну типикал юнити-дурачок
Виртуальная машина ему зачем-то, интеллиж айдия что-ли со значком pc?
>>65782
ну во первых - у нас тут только шарп. а в шарпе различие между тем что может линейно в памяти хранится, а что нет довольно конкретны. поэтому никаких
>Жопа жопа = нью Жопа() - я знаю что среда исполнения шарпа из своей "управляемой памяти" выделит где-то кусок
во вторых - если писать хуиту вида "если А делай Б, иначе В" это не совсем перегрузка методов. если вернутся к ECS то любой сорт перегрузки методов всегда плохо для производительности. (ну, если конечно они не абстрактны)
в третих - в том что ты предложил нельзя добавлять поля. это такой-же полиморфизм насколько в юнити адекватна сериализация полей.
>>66148
лол что ты там делаешь что аж физон понадобилось оптимизировать. подкрути время солвера для физона, нажми "статик" везде где оно статик, поменяй режим просчета колизий в RB если менял. не пользуйся меш коллайдерами, если пользуешься.
> ну во первых - у нас тут только шарп. а в шарпе различие между тем что может линейно в памяти хранится, а что нет довольно конкретны. поэтому никаких
Но я же именно об этом и писал!
Шла речь о концепции ООП и концепции ЕЦС, которые существуют и вне шарпа. Поэтому повторюсь - то что шарп заставляет тебя выбирать между двумя стульями "сгруппированный кусок данных который мы разрешаем хранить в массиве" и "сгруппированный кусок данных с перегруженными методами и кучей всякой вспомогательной шняги который мы запрещаем хранить в массиве" не предоставляя промежуточный лайтовый вариант класса - проблема шарпа.
> во вторых - если писать хуиту вида "если А делай Б, иначе В" это не совсем перегрузка методов.
Таблицу указателей на функции нужно использовать.
> если вернутся к ECS то любой сорт перегрузки методов всегда плохо для производительности. (ну, если конечно они не абстрактны)
Перегрузка метода = программа будет обращаться в таблицу ссылок на методы этого класса чтобы найти нужный метод и вызвать его. Как бы да, и память лишнюю пожрёт, и время на то что бы перескакивать на нужную функцию потратит, но если и так используются обычные функции, а не инлайн вставочки какие-нибудь один хуй разница не прям очень велика.
> в третих - в том что ты предложил нельзя добавлять поля. это такой-же полиморфизм насколько в юнити адекватна сериализация полей.
О чем именно речь? Если о реализации на си - можно сделать чтобы можно было добавлять, только синтаксис пиздец неудобный будет.
тред что-ли сторожишь лол, вместо того чтобы игры делать
>не предоставляя промежуточный лайтовый вариант класса - проблема шарпа.
да так то лайтовый вариант можно сделать через некоторые ухищрения. в шарпе структы хранят не только типы значений же.
>Таблицу указателей на функции нужно использовать.
да как бы никто не запрещает и в шарпе пользоваться делегатами лол. в структе можно хранить ссылку на метод (желательно статичный) и говорить "пользуйся этим когда делаешь Х" но это надо быть совсем ебанько чтобы заниматся этой хуйнёй.
>Как бы да, и память лишнюю пожрёт, и время на то что бы перескакивать на нужную функцию потратит
на самом деле конечно важно что оно будет делать это вообще. в ECS то методы от данных отделены.
>О чем именно речь?
об этом:
>я на С++ пишу Jopa jops = malloc(sizeof(jopa)1000)(или можно с++ вариант new Jopa[1000]) - я знаю что я выделил линейный кусок памяти, который содержит достаточен для хранения 1000 объектов моего класса.
говорю об размере стака. ты выделяешь кусок памяти под объект размером столько-то байтиков. полиморфизм же не только изменение методов, он так-же подразумевает изменение размера самого объекта.
ну а сравнил с сериализацией юнити потому что ололо в эдиторе она представляет из себя эту хуйню https://docs.unity3d.com/ScriptReference/SerializedProperty.html где буквально плюхнули всё в кучу чтобы это работало как вся эта куча.
уточни, пожалуйста, метрическую систему. как определить уровень игры?
На юнити в среднем только первого уровня удается добиться, максимум второго, даже до флаппи бердс не дотягивает.
Лол, лихо ты рвешься с утра
Никак, это же юнити, что ты там собрался оптимизировать?
Настройка анимаций чуть не половина всей работы.
Это ебать как сложно оказывается, даже при наличии готовых анимаций.
я не выдержу слушать как какой-то мудак час гундит мне в ухо. что там?
>>66306
только одно дело ебатся с анимацией, а другое дело запилить весь важный код поддерживающий игровую логику пользуясь анимациями в духе рогалик-куна.
что по твоему приблизит тебя сильней к готовности проекта? следует ли пердолится с анимациями когда игры нет?
>следует ли пердолится с анимациями когда игры нет?
Зависит от игры. Если геймплей завязан на анимациях (аки дарксоулс, salt & sanctuary), без них и механики особо не будет.
Если это симулятор ходьбы можно не пердолиться.
на самом деле конечно прежде чем начинать пердолится с анимациями следует понять в какую сторону пердолится пользуясь силой прототипов. а для них не очень то надо анимации. а то результат может сильно отличатся от ожидаемого и придется переделывать все по 30 раз вместо 10.
судя по обилию "ue4_memes" на доске прорыв канализаци похоже случился со стороны какого-то дегенеративного паблика в социальных сетях.
всё это просто ужасно.
Прорыв канализации, это когда говноеды что здесь пилят пикселепарашу прутся на стим и засоряют его своим 2д говном
Я? Неее. Я же не пользуюсь юнити. Это ваше, так сказать говно. Насрали в стим суки. Людвиг Аристархович, стим же элитная платформа ну! Идите в ич ои
Тебя уже 4 раза просилм запостить своб игру чтобы доказать что ты не 2д-говень. Ты слился.
Чисто в теории если кинуть на обьект коллайдер, то ты можешь узнавать края коллайдера через скрипт и попробовать что-то делать с этим.
Хотя наверное тебе лучше воспользоваться Cinemachine, там наверное есть какие-нибудь хитрые настройки на такой случай.
Но это так, с дивана мнения.
Вот через коллайдеры как раз и думал - 2 plane невидимых снизу и сверху. Но как то слишком костыльно, может есть что ПОЭЛЕГАНТНЕЕ.
Не, не надо 2 плейна, ты можешь прям на обьект кинуть коллайдер, и через скрипт брать данные об этом коллайдере, когда твой обьект будет вместе с коллайдером расти.
https://docs.unity3d.com/ScriptReference/Collider-bounds.html
Типа такого.
Но это тоже костыль, наверняка есть элегантнее методы
да можно и без коллайдера. баунды много у чего есть. наверно самый адекватный https://docs.unity3d.com/ScriptReference/Renderer-bounds.html
ну и советую посмотреть этого https://www.youtube.com/watch?v=iccMGaIlE5o
Или надо выбрать что-то одно, и оно так не будет нормально работать?
не стоит. если ворочаешь RB то к трансформу лучше вообще не обращаться. там у юнити есть внутренняя магия того какон там обновляет форсы, позицию и прочую хуйню. если собрался менять позицию то лучше пользуйся самим RB. https://docs.unity3d.com/ScriptReference/Rigidbody-position.html
Готовые проекты есть? Если сможешь чего работодателю показать то наверное есть шансы.
зависит от скиллов и того чем можешь подтвердить их. например я тоже самоучка, однако периодически нахожу в своём ящике предложения о работе.
> однако периодически нахожу в своём ящике предложения о работе.
А как работодатели выходят на твой ящик и вообщ на твои проекты?
история о том как проебать почти неделю на поиски не в том месте. не забывайте проверять какой результат более правильный, если правильных может быть больше одного.
>>66484
а хуй знает. через ассет стор стоит полагать. ну и я в своем навмеше оставил закладку "контакты" на видном месте. хотя это конечно не так часто происходит, но происходит.
Хочу сделать бонус, который при подбирании ускоряет игрока на несколько секунд.
1) Использовать для этого корутину, которая будет считать время и изменять скорость игрока, а потом возвращать на место
2) Прямо в скрипте использовать Time.time для отсчета времени и не делать никаких корутин.
Что лучше?
чет оба хуйня. что будешь делать когда 2 раза бонус ускорения поднимешь, например? в апдейте можно добавить времени, но считать повторяющиеся бонусы неудобно. в корутине удобно, но продлить эффект там будет не так удобно.
Всмысле второй хуйня?
Второй способ самый верный и простой. Считать повторяющиеся бонусы - это задача по пгрограммированию для первоклассников.Start: SpeedBonusTimer=0
Update: if SpeedBonusTimer >0 SpeedBonusTimer -=DeltaTime
OnCollision: if collider.tag == "Speed bonus" then SpeedBonusTimer = 15000
Ну и можно разумнее сделать,
при подборе перед увеличением спидбонустаймера смотреть - если спидбонустаймер меньше нуля - увеличить скорость игрока. Если больше - пох.
В апдейте:
Если спидбонустаймер > 0
спидбонустаймер -=дельта
Если спидбонустаймер <= 0
Отнять бонус к скорости
Конецесли
Конецесли
я к тому что код срабатывающий по таймеру не смотрит на предыдущие состояния персонажа. самым верным способом собирать бонусы разумеется является собирание всех существующих бонусов в какую-то коллекцию и на каждом изменении этой коллекции возвращать персонажа в дефолтовое состояние и накладывать все бонусы в правильном порядке заново. а сам таймер когда бонус спадет хранить в самом бонусе который хранится в персонаже.
>я к тому что код срабатывающий по таймеру не смотрит на предыдущие состояния персонажа.
???
Код срабатывающий по таймеру ничем не отличается от другого кода.
Я же написал как сделать чтобы он смотрел на состояние персонажа.
подобного сорта код потом выльется в нечитабельную хуйню на самом деле. в грубом виде система бонусов должна выглядеть примерно так.
Конкретно под пару бонусов и моей реализации хватит.
Если нужна целая система бонусов - то, как сделал ты, точно не надо делать. У тебя не предусмотрена отмена бонуса, линейное ускорение будет конфликтовать с уможением(конечно это легко сделать и с твоей реализацией правильно, но тем не менее у тебя на пике сделано неправильно, это так, чтобы какие-то мимокрокодилы бездумно не скопировали твой код), ну и в дополнение к этому на игроке будет висеть несколько одинаковых бонусов и все они - объекты с перезаписанными методами, брр, а ещё постоянно будет теребиться, сортироваться и ресайзиться(впрочеи конкретно ресайз фиксится заданием фиксированной вместимости) список.
>впрочеи конкретно ресайз фиксится заданием фиксированной вместимости
Хотя нет, не фиксится. Память перевыделяться не будет, элементы же смещаться будут.
да как бы все это опционально и тривиально.
можно например добавить опционально параметр public void AddBonus(Bonus bonus, bool extentTime) и если он true то перебираешь коллекцию с бонусами и если типы бонусов одинаковые то вместо добавления бонуса, добавляешь время от бонуса. функцию отмена бонусов тоже дописать к этой хуйне не долго, так как функция применения бонуса уже написана.
ускорение линейно накладывается первым, умножение последним и это контролируется изменением одной цыферки.
ну и всегда можно ебануть код который вместо абстрактной хуиты и пложения сущностный делает тебе какие-нибудь структы со статичными делегатами. это уже детали имплементации.
как по мне это как раз проще расширить под любую хуйню чем писать говнокод в апдейт и возвращатся к нему десятки раз.
Ну так то согласен, но в любом случае всё зависит от того что вообще нужно. Если как в доте 40 видов дебаффов - тогда такая система необходима. Если одно лишь ускорение да какая-нибудь неуязвимость - пох.
мой опыт подсказывает что диздоки пишутся на салфетках сидя в баре. никогда не знаешь что за хуйню захочется сунуть ещё! хобана сегодня у нас бонус на ускорение, а завтра у нас бонус на ускорение и ускорение которое сильней но жрет хп со временем! а после завтра ещё регенерацию хп добавим! а послезавтра ещё что-нибудь ебанём! так что лучше быть готовым ко всему.
>диздоки пишутся на салфетках сидя в баре
Скорее на туалетной бумаге сидя на унитазе. И чернила всегда под рукой!
Так, пидор с приподнятыми 10см волосами, худое лицо, одеваешься в рубашки, имеешь старый айфон, ходишь с тонким белым наушником в одном ухе.
Геймдизайнеры в барах не сидят. Нормального человека от слова "бар" колбасит. Бары для неуверенных в себе чмошников что насмотрелись фильмов, и думают поход в бар их сделает крутыми
пурити-стайл
лол что ты там делаешь что аж физон понадобилось
прыгающий по планете шар.
Пытался ебаться с чарактер контроллером так как считал это выбором в пользу производительности.
опытом. то как работает абстракция и ссылки до меня отлично дошло когда я делал свою первую систему инвентаря которую пиздил из jagged alliance 2.
и я бы не сказал чтобы какое-то большое количество мозгов для этого нужно было. так что ебош что-то сложней чем три в ряд и заимствуй чужие решения, если не можешь свои.
>Как назыается такая графика
Гравюра вроде.
>и как ее реализовать?
Рисовать в таком стиле/запилить шейдер.
> Вы сами учились всему этому или где-то до этого в универе проходили? Или с опытом пришло?
Сначала ходил на кружок информатики, потом стал часто гуглить что-то в стиле "opengl уроки, c++ ооп, c++ как сделать инвентарь, opengl как сделать загрузку моделей". Понимал тогда не очень много, сам с нуля писал мало и потому пытался всё найденное собрать в кучу и адаптировать. И так постепенно прогрессировал, позже прочитал книгу по с++ чтобы интуитивные знания закрепить, и так далее.
Новому вкатывальщику могу порекомендовать параллельно с игрой читать что-нибудь по шарпу(книгу или может есть видеокурс какой-нибудь) и решать может быть какие-нибудь задачи(сначала конкретно по языку, потом и олимпиадный низких уровней, хотя можно и сразу, как хочешь).
Потому что это 0.0.12 версия, а я жду 1.0.0 версию, потому что между этими версиями может поменятся все что угодно.
да ладно сама концепция то никуда не денется. там конечно сравнительно недавно меняли как вся эта хуйня инициализируется и куда всё пихать, но пользоватся этим можно уже сейчас. https://github.com/Unity-Technologies/EntityComponentSystemSamples они там самплы поменяли довольно сильно. я немного потрогал. вроде нормально.
недельки полторы с навмешем ещё посижу да наверно поделаю проект с помощью ECS и джобсов.
В return of obra dinn такая графига, членосос.
Сферический коллайдер просто.
а чего им подгружаться то. материалы юнити и блендора совершенно разные вещи же. в юнити присваивай материалы самого юнити.
1) сколько игр выпустили?
2) изучали ли вы геймдизайн или просто интуитивно мутите.
3) зарабатываете геймдевом или это хобби или 2ая работа?
> 1) сколько игр выпустили?
0
> 2) изучали ли вы геймдизайн или просто интуитивно мутите.
Интуитивно
> 3) зарабатываете геймдевом или это хобби или 2ая работа?
Хобби/будущая работа
У меня такая же проблема была, я просто материалами юнити решил пользоваться. Если ты найдешь другой способ напиши сюда пожалуйста.
ну я вроде грузил с блендера, только рендерер был blender render, счас cycles попробовал
>там конечно сравнительно недавно меняли как вся эта хуйня инициализируется и куда всё пихать, но пользоватся этим можно уже сейчас.
Да там с каждой версией будут все менять и ломать обратную совместимость, нужно ждать полноценный релиз.
лучше создай материалы в юнити и пользуйся ими. я уже давал аналогичные советы. >>63556
>>66844
да ладно базовые части то наверно не поломают. такие вещи как "архетип" то по моему особо не поменять чисто логически, а такая базовая хуйня это почти весь код. как там оно инициализируется то на самом деле не так и важно. кстати когда они в прошлый раз меняли это то они ничего не ломали, они просто добавили лучше методы. там раньше можно было написать атрибут для статичных функций типа вот его вызывай как только все начнется. а сейчас что-то ещё сделали.
Збазиба, за подсказку с материалами
fixed4 calculate_smooth(float2 ts, float2 uv) {
float2 uv1 = uv;
float2 uv2 = float2(uv1.x+ts.x, uv1.y);
float2 uv3 = float2(uv1.x, uv1.y+ts.y);
float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
fixed4 col1 = lerp(tex2D(_MainTex, uv1), tex2D(_MainTex, uv2), 0.5);
fixed4 col2 = lerp(tex2D(_MainTex, uv3), tex2D(_MainTex, uv4), 0.5);
return lerp(col1, col2, 0.5);
}
void surf (Input IN, inout SurfaceOutput o) {
//fixed4 col = tex2D(_MainTex, IN.uv_MainTex);
float2 ts = float2(1.0 / 512.0, 1.0 / 512.0);
float2 uv1 = IN.uv_MainTex;
float2 uv2 = float2(uv1.x+ts.x, uv1.y);
float2 uv3 = float2(uv1.x, uv1.y+ts.y);
float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
fixed4 t1 = calculate_smooth(ts, uv1);
fixed4 t2 = calculate_smooth(ts, uv2);
fixed4 t3 = calculate_smooth(ts, uv3);
fixed4 t4 = calculate_smooth(ts, uv4);
fixed4 col1 = lerp(t1, t2, 0.5);
fixed4 col2 = lerp(t3, t4, 0.5);
fixed4 col = lerp(col1, col2, 0.5) * IN.color;
clip(col.a - _Cutoff);
o.Albedo = col.rgb;
o.Alpha = col.a;
}
fixed4 calculate_smooth(float2 ts, float2 uv) {
float2 uv1 = uv;
float2 uv2 = float2(uv1.x+ts.x, uv1.y);
float2 uv3 = float2(uv1.x, uv1.y+ts.y);
float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
fixed4 col1 = lerp(tex2D(_MainTex, uv1), tex2D(_MainTex, uv2), 0.5);
fixed4 col2 = lerp(tex2D(_MainTex, uv3), tex2D(_MainTex, uv4), 0.5);
return lerp(col1, col2, 0.5);
}
void surf (Input IN, inout SurfaceOutput o) {
//fixed4 col = tex2D(_MainTex, IN.uv_MainTex);
float2 ts = float2(1.0 / 512.0, 1.0 / 512.0);
float2 uv1 = IN.uv_MainTex;
float2 uv2 = float2(uv1.x+ts.x, uv1.y);
float2 uv3 = float2(uv1.x, uv1.y+ts.y);
float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
fixed4 t1 = calculate_smooth(ts, uv1);
fixed4 t2 = calculate_smooth(ts, uv2);
fixed4 t3 = calculate_smooth(ts, uv3);
fixed4 t4 = calculate_smooth(ts, uv4);
fixed4 col1 = lerp(t1, t2, 0.5);
fixed4 col2 = lerp(t3, t4, 0.5);
fixed4 col = lerp(col1, col2, 0.5) * IN.color;
clip(col.a - _Cutoff);
o.Albedo = col.rgb;
o.Alpha = col.a;
}
> как называется этот алгоритм, что можно почитать по теме
Антиалиасинг, алгоритмов дохуя.
Гугли unity postprocessing, там ТАА сразу модно повесить.
> реализовал свой, но он хуевый.
> fixed4 calculate_smooth(float2 ts, float2 uv) {
> float2 uv1 = uv;
> float2 uv2 = float2(uv1.x+ts.x, uv1.y);
> float2 uv3 = float2(uv1.x, uv1.y+ts.y);
> float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
> fixed4 col1 = lerp(tex2D(_MainTex, uv1), tex2D(_MainTex, uv2), 0.5);
> fixed4 col2 = lerp(tex2D(_MainTex, uv3), tex2D(_MainTex, uv4), 0.5);
> return lerp(col1, col2, 0.5);
> }
> void surf (Input IN, inout SurfaceOutput o) {
> //fixed4 col = tex2D(_MainTex, IN.uv_MainTex);
> float2 ts = float2(1.0 / 512.0, 1.0 / 512.0);
> float2 uv1 = IN.uv_MainTex;
> float2 uv2 = float2(uv1.x+ts.x, uv1.y);
> float2 uv3 = float2(uv1.x, uv1.y+ts.y);
> float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
> fixed4 t1 = calculate_smooth(ts, uv1);
> fixed4 t2 = calculate_smooth(ts, uv2);
> fixed4 t3 = calculate_smooth(ts, uv3);
> fixed4 t4 = calculate_smooth(ts, uv4);
> fixed4 col1 = lerp(t1, t2, 0.5);
> fixed4 col2 = lerp(t3, t4, 0.5);
> fixed4 col = lerp(col1, col2, 0.5) * IN.color;
> clip(col.a - _Cutoff);
> o.Albedo = col.rgb;
> o.Alpha = col.a;
> }
Жесть
> как называется этот алгоритм, что можно почитать по теме
Антиалиасинг, алгоритмов дохуя.
Гугли unity postprocessing, там ТАА сразу модно повесить.
> реализовал свой, но он хуевый.
> fixed4 calculate_smooth(float2 ts, float2 uv) {
> float2 uv1 = uv;
> float2 uv2 = float2(uv1.x+ts.x, uv1.y);
> float2 uv3 = float2(uv1.x, uv1.y+ts.y);
> float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
> fixed4 col1 = lerp(tex2D(_MainTex, uv1), tex2D(_MainTex, uv2), 0.5);
> fixed4 col2 = lerp(tex2D(_MainTex, uv3), tex2D(_MainTex, uv4), 0.5);
> return lerp(col1, col2, 0.5);
> }
> void surf (Input IN, inout SurfaceOutput o) {
> //fixed4 col = tex2D(_MainTex, IN.uv_MainTex);
> float2 ts = float2(1.0 / 512.0, 1.0 / 512.0);
> float2 uv1 = IN.uv_MainTex;
> float2 uv2 = float2(uv1.x+ts.x, uv1.y);
> float2 uv3 = float2(uv1.x, uv1.y+ts.y);
> float2 uv4 = float2(uv1.x+ts.x, uv1.y+ts.y);
> fixed4 t1 = calculate_smooth(ts, uv1);
> fixed4 t2 = calculate_smooth(ts, uv2);
> fixed4 t3 = calculate_smooth(ts, uv3);
> fixed4 t4 = calculate_smooth(ts, uv4);
> fixed4 col1 = lerp(t1, t2, 0.5);
> fixed4 col2 = lerp(t3, t4, 0.5);
> fixed4 col = lerp(col1, col2, 0.5) * IN.color;
> clip(col.a - _Cutoff);
> o.Albedo = col.rgb;
> o.Alpha = col.a;
> }
Жесть
>unity postprocessing
спасибо, все никак в юньке найти это не мог. оказалось проще чем я думал.
Пока что в голову приходит только двумя рейкастами определять на какое расстояние объект надо подвинуть.
что за привычка у людей не давать полный контекст. нет бы сказать "у меня объект формы такой, у меня объект формы другой, такие кондиции, для этих целей". какой совет хочешь то? может просто баунды проверишь? или это?
https://docs.unity3d.com/ScriptReference/Physics.ClosestPoint.html
а может это?
https://docs.unity3d.com/ScriptReference/Physics.CheckBox.html
> "у меня объект формы такой, у меня объект формы другой, такие кондиции, для этих целей".
Суть в том что я сам не знаю заранее его форму, так как он генерируется.
> может просто баунды проверишь? или это?
> https://docs.unity3d.com/ScriptReference/Physics.ClosestPoint.html
> а может это?
> https://docs.unity3d.com/ScriptReference/Physics.CheckBox.html
Да, спасибо, это пригодится.
В идеале я хотел именно тест на пересечение - дано два коллизион меша и мне надо понять пересекаются ли они или нет. Но наверное и этого хватит.
А если я создам его в другом потоке, а потом сделаю Instantiate в основном?
API юнити можно использовать только в основном потоке. Без юзания функций юнити делай что хочешь в любых потоках.
>Суть в том что я сам не знаю заранее его форму, так как он генерируется.
ну так хотябы примерные правила генерации бы описал. а то хуй даже знает. если объект конвексный, то ответ один, если нет то другой.
>В идеале я хотел именно тест на пересечение - дано два коллизион меша и мне надо понять пересекаются ли они или нет. Но наверное и этого хватит.
ну, проверить пересечения треугольников не так и сложно. можешь заимлементить его своими силами.
>>66960
ты не можешь создать геймобжект в другом потоке. API юнити тебя пошлет нахуй. но ты можешь переслать информацию о том что создать в основном потоке и создать уже так, разумеется.
Слева - ну какое-то множество треугольников - фигура 1, справа ещё одно - фигура 2. Мне надо разместить(не руками, а алгоритмом, конечно) фигуру 2 внутри фигуры 1, чтобы получилось типа того что на пике 2(ну или сообщить что это невозможно). Как это лучше сделать?
Причём меня интересуют два варианта:
1. Если фигуру 2 нельзя вращать
2. Если фигуру 2 можно вращать
У меня мозг немного поплыл когда начал представлять как с другого окна взаимодействовать
если честно то ты довольно сложные вопросы задаешь. мне довольно интересно что ты там такое творишь.
в целом наверно для обоих вариантов можно позаимствовать некоторые идеи о best fit rectangle
можно последовательно протестировать границы, предположив что они имеют одну общую сторону
http://www.datagenetics.com/blog/march12014/index.html
но они будут валидны только если одна из фигур конвексная.
если не вращать то хуй знает. наверно можно предположить что фигура 2 находится на одном из вертексов фигуры 1 и толкать пересечениями с другими сторонами вдоль касаемой стороны. и протестировать все комбинации сторон и вертексов. но чето это выглядит как очень плохое решение.
>>66977
лол уж этого говна то на ютубе наверняка навалом
наверно типа такого можно. например есть синяя фигура и красная. можно например выбрать какой-то вертекс, какой-то стороны. и начать проверять стороны. если фигура пересекается со стороной то двигать фигуру вдоль касаемой вертекса стороны. и так последовательно проверять все второны и сохранять разветления. но это чето выглядит пиздец как не эффективно.
>>66982
ну так то да. поэтому смотри сразу несколько.
С какой целью интересуешься?
а, а наверно ещё можно сделать типа суммы минковского. только вместо круга взять форму 2. типа такого, только вместо наружи рисовать вовнутрь.
>>66992
после медитации в потолок. да, наверно это лучшее решение. вообще можно побрутфорсить даже. например как вариация суммы минковского можно растеризовать фигуру 1 и 2, выбрать какой-то абстрактный центр фигуры 2, двигать вдоль границ фигуры 1 центр фигуры 2, вычитать из пикселей фигуры 1 пиксели фигуры 2. оставишиеся пиксели это то куда влезет фигура 2.
по сути то-же самое я делаю для навмеша, только для фигуры в форме круга.
сделать то-же самое делая ротацию фигуры 2 этак по 5 градусов пока не сделает полный оборот. почти нихуя не требует и можно распаралелить хорошо. можно даже на откуп гпу отдать.
>мне довольно интересно что ты там такое творишь.
Я делаю процедурную генерацию карты(на пик пока не смотри, это не то, об этом дальше).
Пока что я чётко продумал что это должно происходить в несколько этапов, вкратце: первоначальная разметка - довольно грубо разбивает карту на сектора и ставит на их границах "коннекторы"(могут быть разных типов - ничего, большая дверь, маленькая дверь и т.п.), детализация разметки - она должна учесть где находятся так называемые коннекторы и сгенерировать ещё одну разметку внутри себя - уже с заданием конкретных типов комнат(коридор - это тоже комната), и дальше каждая комната в зависимости от её типа и того где и как к чему она подсоединяется она собственно доделывается - для неё строится модель и она наполняется контентом.
Так вот, сейчас я пока что всё делаю трёхмерными AABB "комнатами"(сначала сектора - это случайное размещение AABB комнат, и всё что внутри генерируется - тоже из них состоит). С ними легко работать, производительность почти любых операций(поиск пресечений, объединение если возможно) над ними отличная.
И тут есть две вещи которые меня напрягают.
Первая - с таким подходом кажется карта будет не очень интересной(хотя я поизучал карты в alien isolation и doom 3 - это игры на которые я и ориентируюсь, а ещё много разных примеров генераций и "unity sci fi map" - вроде и так должно быть нормально, тем более что внутри каждой такой AABB команты я смогу легко хоть углы гладкие сделать, хоть вообще любой формы комнату собрать - главное ведь чтобы она влезла).
Вторая - я сейчас вплотню подошёл к наполнению комнат(основа более ранних этапов уже почти готова, там по сути уже просто делать новые алгоритмы генерации остаётся и подобрать для каждой зоны подходящие) и тут вытекающее из первого - раз уж структура комнат AABB, значит внутри них надо сделать что-то интереснее - какие-нибудь колонны, дополнительные стенки(не параллельные осям координат, а ещё и под углом не 90 градусов и даже круглые), выступы(в некоторых случаях), подъёмы(типа разный уровень пола) и т.д. И более того - надо на этом ещё и разместить контент всякий. Понятно что я могу сделать какие-нибудь воксели в том числе с довольно большой плотностью - просто чтобы внутреннее устройство комнаты проработать. Но комнат будет много и я не уверен что это вообще удобно и эффективно будет и даст лучший результат.
Зато если сделать всё из треугольников - то по итогу у комнаты будет форма при виде сверху будет например как у той фигуры 1, и тогда что-то ещё необычной формы(фигура 2, пусть будет она конвексная - хотя бы так) надо будет думать уже как правильно размещать и если элемент заведомо большой - то как-то сложна, просто так бездумно вдоль границ его тащить не очень действенно будет наверное.
Ну и да - вот эту часть, внутреннюю проработку комнат я ещё не начал делать(разве что для сборки модели всё что надо есть), поэтому хорошо бы сразу продумать что примерно я смогу реализовать чтобы это не занимало несколько минут расчётов и если такой подход не зайдёт - что-нибудь попроще подумаю.
Кстати сайт вроде 10\10, ща пойду искать там ещё интересные идеи.
>>66985
Да, я думал о чём-то таком.
>>66992
Вот это кстати даже если не поможет - интересная вещь, может найду ей ещё какое-то применение.
>мне довольно интересно что ты там такое творишь.
Я делаю процедурную генерацию карты(на пик пока не смотри, это не то, об этом дальше).
Пока что я чётко продумал что это должно происходить в несколько этапов, вкратце: первоначальная разметка - довольно грубо разбивает карту на сектора и ставит на их границах "коннекторы"(могут быть разных типов - ничего, большая дверь, маленькая дверь и т.п.), детализация разметки - она должна учесть где находятся так называемые коннекторы и сгенерировать ещё одну разметку внутри себя - уже с заданием конкретных типов комнат(коридор - это тоже комната), и дальше каждая комната в зависимости от её типа и того где и как к чему она подсоединяется она собственно доделывается - для неё строится модель и она наполняется контентом.
Так вот, сейчас я пока что всё делаю трёхмерными AABB "комнатами"(сначала сектора - это случайное размещение AABB комнат, и всё что внутри генерируется - тоже из них состоит). С ними легко работать, производительность почти любых операций(поиск пресечений, объединение если возможно) над ними отличная.
И тут есть две вещи которые меня напрягают.
Первая - с таким подходом кажется карта будет не очень интересной(хотя я поизучал карты в alien isolation и doom 3 - это игры на которые я и ориентируюсь, а ещё много разных примеров генераций и "unity sci fi map" - вроде и так должно быть нормально, тем более что внутри каждой такой AABB команты я смогу легко хоть углы гладкие сделать, хоть вообще любой формы комнату собрать - главное ведь чтобы она влезла).
Вторая - я сейчас вплотню подошёл к наполнению комнат(основа более ранних этапов уже почти готова, там по сути уже просто делать новые алгоритмы генерации остаётся и подобрать для каждой зоны подходящие) и тут вытекающее из первого - раз уж структура комнат AABB, значит внутри них надо сделать что-то интереснее - какие-нибудь колонны, дополнительные стенки(не параллельные осям координат, а ещё и под углом не 90 градусов и даже круглые), выступы(в некоторых случаях), подъёмы(типа разный уровень пола) и т.д. И более того - надо на этом ещё и разместить контент всякий. Понятно что я могу сделать какие-нибудь воксели в том числе с довольно большой плотностью - просто чтобы внутреннее устройство комнаты проработать. Но комнат будет много и я не уверен что это вообще удобно и эффективно будет и даст лучший результат.
Зато если сделать всё из треугольников - то по итогу у комнаты будет форма при виде сверху будет например как у той фигуры 1, и тогда что-то ещё необычной формы(фигура 2, пусть будет она конвексная - хотя бы так) надо будет думать уже как правильно размещать и если элемент заведомо большой - то как-то сложна, просто так бездумно вдоль границ его тащить не очень действенно будет наверное.
Ну и да - вот эту часть, внутреннюю проработку комнат я ещё не начал делать(разве что для сборки модели всё что надо есть), поэтому хорошо бы сразу продумать что примерно я смогу реализовать чтобы это не занимало несколько минут расчётов и если такой подход не зайдёт - что-нибудь попроще подумаю.
Кстати сайт вроде 10\10, ща пойду искать там ещё интересные идеи.
>>66985
Да, я думал о чём-то таком.
>>66992
Вот это кстати даже если не поможет - интересная вещь, может найду ей ещё какое-то применение.
Нет это же качать надо. Сначала скажити, смогу я на нем как тга5 зделать, потом скачаю.
лол ну придумал. упоротся вместо вокселей геометрией. тут только удачи пожелать можно. на самом деле я конечно советовал бы представлять комнату как воксели, если хочется охуевшие углы то лучше просто отделять комнаты друг от друга. чтобы у разных участков были просто разные кординатные оси, но все они представлялись как грид. что-то вроде грида в Cities Skylines, который следует за дорогой но сама дорога то ветляет.
минусы геометрии конечно заключаются в том что к ней сложно применять алгоритмы расчитанные на грид. а всякая хуйня вроде клеточного автомата в рандомной генерации довольно сильно помогает.
>Кстати сайт вроде 10\10, ща пойду искать там ещё интересные идеи.
да, он довольно хороший. хотя конечно он не так глубоко как хочется рассматривает всякую интересную хуйню из теории графов которая тебе сейчас бы пригодилась.
ещё наверно посоветую это почитать https://catlikecoding.com/unity/tutorials/marching-squares-2/ про шагающие квадраты. можно представлять комнаты как воксели, просто сделать так чтобы воксели имели нормали. и таким образом добиватся более комплексной формы.
>Вот это кстати даже если не поможет - интересная вещь, может найду ей ещё какое-то применение.
сумма минковского довольно хорошо развита если искать всю хуйню связанную с обходом препятствий. так как там надо генерировать какую-то форму вокруг объекта в форме агента и избегать эту форму. в принцыпе это же можно делать и для того что ты хочешь, то там конечно придется для проверки отражать форму по XY осям и её вычитать уже.
ещё наверно надо посоветовать тебе почитать алгоритмы бинарных операций с полигонами https://en.wikipedia.org/wiki/Boolean_operations_on_polygons
в частности алгоритм Sutherland–Hodgman будет тебе наиболее полезен.
>лол ну придумал. упоротся вместо вокселей геометрией.
Ну типа это исключительно создания более интересного вида комнаты изнутри, чтобы убрать ощущение что тут всё по сетке сделано. В контексте этой задачи воксели меня отпугивают тем, что если комната скажем очень большая например 100х100х8(пусть будет это метры) то куча элементов массива вокселей будут бестолку там лежать и мешать скорости алгоритмов.
Бля, что-то появилось желание пере
>то куча элементов массива вокселей будут бестолку там лежать и мешать скорости алгоритмов.
так то да, но опять же это вопрос способа хранения. всегда можно мерджить одинаковую информацию в один большой воксель. например опять же как это у меня сделано в навмеше - у меня воксель просто имеет min-max значения. и все воксели хранятся используя всего 2 массива. а на этапе комбинации и вовсе 1. плюс всегда можно для разных операций подгатавливать какие-то маски. типа маску свободного пространства, например. и вместо перебирания всего воксельного пиздеца перебирать удобную информацию.
Э, пост отправился.
Короче появилось желание саму структуру разметки карты как на верхнем уровне так и на локальном перевести в воксели с разными уровнями детализации из моих текущих ААВВ комнат - так мне в будущем возможно не придётся изъёбываться внутри каждой отдельной комнаты для получения например диагонального коридора, а я сразу смогу диагональную команту сделать. И к тому же так можно будет больше алгоритмов реализовать - но они будут правда помедленнее, потому что сейчас например комнаты 4х4х2 и 100х100х10 это всего лишь 2 вершины графа и для описания каждой из них надо всего лишь две точки в пространстве. А на воксельной карте тут для должной детализации пришлось бы кучу вокселей делать. А если комнат больше сотни - как-то много получается. Надо подумать.
>ещё наверно посоветую это почитать https://catlikecoding.com/unity/tutorials/marching-squares-2/ про шагающие квадраты. можно представлять комнаты как воксели, просто сделать так чтобы воксели имели нормали. и таким образом добиватся более комплексной формы.
Спасибо, посмотрю.
>ещё наверно надо посоветовать тебе почитать алгоритмы бинарных операций с полигонами https://en.wikipedia.org/wiki/Boolean_operations_on_polygons
Кстати я скачал ассет для таких вот операций и даже немного его доработал что работал больше чем в одном потоке, но я его планирую использовать для построения мешей - уже после того как всё сгенерировано и осталось только построить всё на основе этого.
>например опять же как это у меня сделано в навмеше - у меня воксель просто имеет min-max значения. и все воксели хранятся используя всего 2 массива.
Ну кстати да, но если так хитро делать то не будет мгновенного произвольного доступа по координатам. А хотя с другой стороны может он и не очень-то нужен будет... А вообще даже если нужен - можно заебашить октри какое-нибудь чтобы ну хотя бы не очень долго это было.
Лан, похоже правда лучше пока не поздно в воксели перекатить всё это дело.
Monodevelop - это blender в мире опен сурс IDE. Небольшая команда создала отличную и производительную IDE не уступающую по функционалу топовым продуктам, и уж точно превосходящее всякое тормозное java-говно типа rider.
Проблема в том, что C# не самый востребованный язык, так еще microsoft решили слить эту ide.
Алсо, в любом случае отладки не будет. Поэтому смысла сейчас использовать monodevelop с юнити нет.
>4х4х2 и 100х100х10 это всего лишь 2 вершины графа и для описания каждой из них надо всего лишь две точки в пространстве.
я даже не знаю что ты там такое экономишь лол. если тебе надо в высоту ещё информацию делать то ты кстати можешь делать расширяемый слой вокселей. чтобы например у тебя было что-то вроде
struct MyData<T>{
public int nextData;
public T someData
}
и хранить в массиве
MyData[] data
и допустим в гриде 10 на 10 первые 100 индексов зарезервированы под первый слой. допустим у них если нет информации то nextData = -2. а если там есть дата то -1. а если там есть дата и за ней ещё дата, то там индекс следующей даты которая размещена после первых 100 индексов. и если достиг лимитов массива то просто расширяешь его. ну и периодически можно этот массив переводить в более удобную сортированную информацию. таким образом можно поэкономить память и иметь скейлящийся в высоту грид.
>Ну кстати да, но если так хитро делать то не будет мгновенного произвольного доступа по координатам.
да ладно, просто всё то надо это прочитать весь столбец в этом случае. например у меня воксели хранятся примерно вышеописанным методом. но чтобы вместо рандомного доступа был линейный когда я читаю столбец я перевожу всю информацию в два массива на этапе когда требуется только чтение.
где используя аналогичный пример всего лишь 100 индексов. и там содержится
int start
int length
и другой массив где значения выравнены по столбцам. и столбцы содержат информацию где она начинается в соседнем массиве и сколько там её расположено.
хотя вообще че я распинываюсь. у меня где-то был класс который примерно это делает https://pastebin.com/0EyTyCeU на, почитай. там правда с пуллами, но думаю понятно что они примерно делают. ну и написано так себе. почитай GetOptimizedData и SetOptimizedData
вообще, если ты делаешь закрытые комнаты то с вокселями это даже проще. у меня например воксели содержат информацию о внешней оболочке обьекта. а если у тебя подземелья, то тебе можно наоборот - внутренней информации. вместо min max иметь информацию типа floor, celling и иметь карту пустот.
Ладно, тогда шо юзают с юнити, я хейтер visual studio, подскажи. Тип в книге unity in action автор советует, если выбора ниет придется vs брать хуль
лол что за говно в твоей голове. блокнот (и вариации) используй если VS не нравится. я сидел с монодевелопом он пиздец. ебучие хоткеи работают только в английской раскладке. что за хуйня. где мой сплитскрин. как мне писать код без двух мониоров. ну нахуй, лучше с VS сидеть.
Ладна не пепикай, буду в notepad сидеть, уже лучше чем visual_диплодок на несколько гб качать
> Ладна не пепикай, буду в notepad сидеть, уже лучше чем visual_диплодок на несколько гб качать
Он того стоит.
Покупай с торрентов JetBrains Rider и не еби себе мозг. На нём сами разрабы юнити работают.
>тормозное
У тебя ай3 чтоб в красивой коробочке? Я вот не знаю ни одной IDE, которая может тормозить на минимальном пека игродела. Хотя райдер свой законный гб памяти из-за JVM отжирает, да. Лично я на VS видел фризы, на райдере - нет. IO на райдере просто мгновенное. По сравнению с VS CODE - как будто из Эстонии в Японию переехал.
>VS Code
А, так это ты, Игорян? Ещё бы Notepad++ предложил.
>Хотя райдер свой законный гб памяти из-за JVM отжирает, да.
>IO на райдере просто мгновенное
Сотрудник jetbrains, залогиньтесь
>вот не знаю ни одной IDE, которая может тормозить на минимальном пека игродела.
intellij idea и платные аддоны к ней тормозят даже на топовых меках
Экономический симулятор, есть, допустим, 100 магазинов.
По каждому я делаю класс для хранения информации о текущем состоянии, который будет использоваться для дальнейшего сохранения.
Хочется сохранять информацию о общей сумме продаж и затратах за каждый из дней. Планирую все хранить в List<int>. Иными словами будет 100 магазинов у каждого из которых есть 3-4 List<int>, которые хранятся в памяти.
Скажите, это для современных пекарней же ерунда и лучше даже не заморачиваться о производительности?
собственно, откуда мы можем знать как часто ты будешь обращаться ко всему этому и какие операции будешь производить? в ХРАНЕНИИ этого - никаких проблем.
а вообще пиши код так чтобы все это можно было потом поменять без лишних проблем на что-то получше. то есть пользуйся инкапсуляцией.
Я перекатился. Охуеваю от скупости документации и примеров, донимаю народ в годот-треде теперь глупыми вопросами. Хотя выглядит неплохо (примерно так же). Особенно порадовало, что под винду тебе не надо качать гигабайты. Ну и MIT лицензия. на этом, кажется, плюсы заканчиваются. КОроче, кактус придётся жрать в любом случае. Просто будет отличаться цвет колючек.
Могли перегореть. У меня так сессионка есть. На юнити клиентская часть уже готова (конкретно, сама игровая сцена - меню и переходы надо допилить, + модели нормальные вместо заглушек (т.е. визуал)). Но вот потратил на логику на серверной части раза в 3 больше уже, а там конца и края не видно, пока отложил в дальний ящик. Иначе перегорю - для первой игры это слишком круто. Я не потяну с нынешним количеством времени. Перекатился, делаю сейчас нечто сильно проще (однопользовательское) с, надеюсь, оригинальной механикой и идеей. Посмотрим, что получится.
>не надо качать гигабайты
Емнип через инсталлер юнити с билдом под винду меньше гига надо качать. В любом случае поздравляю тебя с тем что ты решил бросить гейдев, хоть и таким странным способом.
Ты должен ходить с табличкой - всратазм
Были времена когда в гд делали игры, но такие как ты превратили раздел в свинарник.
Работал на идее несколько лет на картофельном fx6100 с 8 гб ОЗУ, и что-то я не помню тормозов. Неужто за три года они смогли это исправить?
Вот хочешь сделать хуйню. Хуй знает, как. Гуглишь - нихуя нет.
Ищешь туторы. Все туторы "часть 1 - как покрасить объект сплошным цветом без учета освещения". Последующие части отсутствуют.
на самом деле это пиздец какое сакральное знание которое надо собирать по кусочкам. почитай тут
https://docs.unity3d.com/Manual/ShadersOverview.html
документация умеренно полезная и содержит примеры.
ещё этот хрен часто шейдоры пишет и фокусы показывает иногда клёвые
https://www.youtube.com/channel/UCJKLCjeujQj-d3JjsbVtkJw
Но я как раз один из тех кто делает игры. А то если игры не делать то в срачах не получается убедительно срать.
>Ищешь туторы
Вот тут-то и обосрался. Надо не туторы смотреть, а получать фундаментальные знания
https://thebookofshaders.com/
http://developer.download.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
В какой раз прихожу к тому, что о геймдеве и движках ютьюб знает больше, чем гугл. Внезапно, но с вопросами начал ходить именно туда, а не в поисковики.
Парадокс, но Гугл на ютьюбные видосы не выводит по запросам.
От кретинов из гд другого и не ожидал
Это нормально наверное... Недостаток уверенности такой... Просто надо продолжать и будь что будет. День за днем потихоньку идти к релизу.
зачем ты её делаешь тогда, если уверенности нет.
вот у меня железная уверенность в своём основном проекте, но только потому что он нацелен на очень конкретную аудиторию. лично я в свое говно определенно играть бы стал.
но хули, поделись че ты там делаешь. тут же полно диванных геймдизайнеров, вместе и решим поебень или нет.
Это не только к геймдеву относится, но на любое гавно/мёд всегда найдутся свои мухи/пчёлы.
>Девелопаны, я ведь не один это ощущаю, иногда кажется, что ты делаешь какую-то поебень, и никто в жизни никогда не будет в неё играть
А ты игры делай для себя, если тебе понравится игра то другим тем более.
Нет, с продвижением разработки ты должен получать все больше положительных отзывов. А так скорее всего действительно говно пилишь как даун.
Как вам музычка?
https://twitter.com/unity3d/status/1107820018962698240
Лучше бы игру замутили
https://twitter.com/LotteMakesStuff/status/1107878191702650881
Выглядит как абсолютное говно из 2008-го.
>а пердели на велосипедиста хуана.
А зачем ты сравниваешь частную компанию с миллиардными доходами и проприетарным софтом и 2.5 любителей пилящих опен сурс проект?
Начал съезжать, пидарасина, то там библиотеки супироптимизированные и лучше не сделаешь, велосипеды нинужны, а тут оказывается нужны, да побольше.
Да мне в общем-то все равно что там юнити делают. Они могут позволить себе все что угодно.
>то там библиотеки супироптимизированные и лучше не сделаешь
Речь была вообще не о том, а о принципах опен сурс разработки. О том, что нужно не свои велосипеды писать с нуля, а брать и контрибутить в другие проекты. Именно в этом потенциальное преимущество опен сурса - в распределенном решении проблем.
У Хуана же типичная философия разработки проприетарного софта. Вот в этом была суть критики, что он пиарится за счет опен сурса, но сам не следует его философии.
Например, если бы Хуан взял bgfx для рендеринга, то внезапно бы оказалось, что в разработке годота участвуют не только Хуан и команда, но также и все коммюнити bgfx! Потому что все, что делалось бы для bgfx автоматически делалось бы и для годота.
Понятна суть?
Так нахуя по-твоему юнити свой велосипед пишут? Ну может есть какой-то смысл в них, а не просто дурак хуан велосипедист?
>Ну может есть какой-то смысл в них
Для Хуана - точно нет.
Юнити могут делать что угодно, потому что у них есть для этого ресурсы. У них таких экспериментальных разарботок не один десяток. И они могут дропнуть их в любой момент без сожалений. Для юнити это просто эксперимент сделать физический движок на их ECS.
Хуан свой обосранный рендер 3 года пилит в одиночку и винит во всем драйверы нвидиа. У Хуана нет таких ресурсов, чтобы пилить велосипеды для забавы.
Это разный уровень. Нельзя их сранивать
+ лицензионные соглашения. unity не может просто взять и юзать любой опенсорс.
Не преуменьшай значение, юнитипидрила, это большие деньги, никто там ради забавы не ведет разработку, это серьезный бизнес и у них есть очень серьезный конкурент. Пилят, значит суперпрофи видят в этом смысл
Да это скорее ты преувеличиваешь значение. Для таких компаний как юнити это ничто. У них там десятки дармоедов на зарплате без дела сидят.
>Как вам музычка?
Вот просто того кто дал добро на эту музыку в роликах сразу казнить надо, это же пиздец
>сколько интересно у них на разработку уходит
Самый маленький процент наверное. На конференции больше тратят.
Хочу сделать анимацию поворота игрового объекта с 4мя шагами по 90 градусов.
Есть ли в Unity простой способ через Animation сделать так, чтобы проигрывалась одна и та же анимация поворота на 90 градусов, но с учетом измененных значений в Rotation компонента Transform? То есть чтобы анимация поворота только прибавляла к текущему значению оси значения, а не брала кейфрейм первого кадра, возвращала ротацию объекта как в первом кейфрейме и заново воспроизводила тот же самый поворот, без учета того, что такой поворот уже был?
игродел мышкой что-ли? анимации же используют локальные координаты, можешь сунуть крутящийся геймобжект в другой геймобжект и крутить второй крутя первый.
transform.Rotate(0, 90, 0);
То есть Unity из под коробки посредством Animator'а такое делать не умеет?
https://unity3d.com/ru/learn/tutorials/topics/scripting/simple-clock
Чтобы начальный кейфрейм мог быть динамическим по анимируемым значениям: Curve -> Keyframe0: Transform.Rotation.Z = Current;
да как бы аниматор он же анимации воспроизводит, а не скриптовый язык чтобы референсить хуй пойми какие значения.
хочешь ротации складывать - пользуйся кодом.
Можно какой-нибудь простой гайд по квантерионам? Я так понимаю, без них никак
Открываю "квантерионы простыми словами", там с самого начала какой-то пиздец с разложением матриц и коэффициентами
Матрицы-то ладно, умножать несложно — знания первого курса ещё живы на пятом. Но хотелось бы, чтобы было не два листа теории с переворотами, а пошаговое объяснение что к чему
>>67500
Вроде между
Curve -> KeyFrame0: Rotation.Z = 0F
Curve -> KeyFrame1: Rotation.Z = 90F
И
Curve -> KeyFrame0: Rotation.Z = OnAnimationBeginValue + 0F
Curve -> KeyFrame1: Rotation.Z = OnAnimationBeginValue + 90F
разницы существенной нет.
Странно, что второй вариант не реализован, ну или не доступен через редактор непосредственно. Было бы здорово...
по моему тебе надо просто пройтись по документации и посмотреть чё там есть полезного.
https://docs.unity3d.com/ScriptReference/Quaternion.html
там не так и много всего.
и внимательно прочитать:
>You can use the Quaternion.operator * to rotate one rotation by another, or to rotate a vector by a rotation.
ну и помнить что кватернион это ротация и что порядок применения ротаций важен.
>>67504
на самом деле какая-то хуйня. я не представляю зачем плодить сущьности и делать лапшу из значений, когда можно просто воспользоваться двумя геймобжектами.
>Открываю "квантерионы простыми словами"
Зачем ты это открываешь? Все, что тебе нужно знать о кватернионах - это значение, в котором хранится вращение. Все.
Ты же не открываешь "float простыми словами" чтобы понять как процессор умножает вещественные числа.
ну блять. кватернион он хуяк крутит, да? крутит круто с учетом того где верх а где низ. из одного поворота в другой. ты такой кубик налево повернул и говориш "хочу кубик повернуть направо". вращаешь кубик слева направо, а он хопа и больше не повернут. потому что лево + право = вперёд. круто, да?
Обычно, чтобы с кватернионами не заморачиваться, в коде проще переводить в эйлеры, менять как надо, используя доходчивые градусы по осям, и потом возвращать обратно.
не соглашусь. манипуляции quaternion > euler + euler > quaternion обычно ужасная срань. все промежуточные ротации лучше иметь заранее подготовленными. и следует делать операции вида quaternion + (euler > quaternion) чтобы повернуть одну хуйню в другую на какой-то эйлер.
А зачем тебе с ними возиться. Все что тебе надо, это знать как объявить переменную с вращением. В юнити там для этого много конструкторов на все случаи жизни.
Тут скорее фундаментальная проблема с пониманием вращения как свойства объекта.
То есть тебе, например, проще представить в голове или на бумаге описать математически вращение объекта именно кватернионами?
>чтобы с кватернионами не заморачиваться, в коде проще переводить в эйлеры, менять как надо, используя доходчивые градусы по осям, и потом возвращать обратно
https://www.youtube.com/watch?v=IVZ2qxmUMMk
Ты ебанутый? Все что тебе надо знать - это ось вокруг которой ты собрался вращать и угол. Кватернионы, еулеры - это кодировка вращения, которая тебя как погромиста на юнити не должна волновать вообще.
У меня чувачек на пике, у него части ног и рук составные и соединены джоинтами. Из-за того что часть ноги составная настройка пик 2 не работает, то есть ляжка и голень сталкиваются друг с другом.
Я не хочу всему телу сразу ставить один слой, мне надо чтоб левая нога сталкивалась с правой.
Делать просто слой для каждой отдельной части тоже не хочу, потому что таких тел в игре будет несколько и если один решил пнуть коленом в ляжку врага, то из-за слоя голень пролетит сквозь ляжку. Тут как раз можно было бы еще один слой для врага сделать, но я хз как.
а ты разве не это хочешь?
https://docs.unity3d.com/Manual/class-ConfigurableJoint.html
>Enable Collision
а хотя я слепой ты и так уже сделал. а е они у тебя коллайдятся то тогда?
ладно, кружка кофе помогла. приношу извинения за флуд.
что у тебя понимается под "составная"? юнити же игнорит чайлдов у болтающегося RB.
>составная
Обжект с ригидом и джоинтом без коллайдера, его ребенок это сам коллайдер (без такой структуры моча и говно). Настройка джоинта видать не работает на ребенка. Вот я хочу чтоб они и не сталкивались между собой, но сталкивались с такими же конечностями от другого тела.
1680x1050, 0:10
она не работает если он сам rigidbody, вроде. сама то настройка отлично работает. может просто не будешь иерархию творить? или просто сделаешь скрипт "убрать иерархию на старте"?
Убрать иерархию не вариант, для джоинта нужен кватернион, функция кватериниона поворачивает объект стрелкой з вперед. У капсулы з торчит с боку, я использую обжект чтоб повернуть капсулу.
Попробуй щас из капсулы убрать коллайдер, оставить джоинт и ригид. А кубику наоборот оставить только коллайдер. Чекнем, может я что-то намутил
1680x1050, 0:09
но это ничего не поменяет. важно только то какие коллайдеры являются чайлдами у RB, а какие у RB в более низкой иерархии. вон переместил джойнт на саму капсулу, убрал у капсулы всё, разумеется ничего не поменяется.
нахуй тебе иерархия для магии кватерниона всё равно непонятно.
1680x1050, 0:11
>>67573
по факту ничего не поменяется даже если джойнт является потомком того к чему прикреплён. разве что не будет дрыгатся, если дрыгать вышестоящий обьект. но так-же не будет с ним коллайдится.
хотя в этом случае можно наблюдать забавную магию трансформации коллайдеров, потому как у квадратика сверху скейл 3, 1, 3
он сам по себе! слава роботам!
Всё, нашел.
Кому надо, чтобы анимация учитывала новое, динамически изменяемое состояние объекта и его параметры - изучать Root Motion. Самое оно. Без костылей и колёс.
может просто называть функции так чтобы их можно было найти максимум по 3 первым символам? что ты там такое хуячишь что аж на 3к строк?
файл в котором больше 100-200 строк - это детектор кодомакаки и признак неумения в архитектуру. файлы 1к строк и больше это уже диагноз.
лично у меня в проекте нет ни одного файла больше 150 строк, это учитывая пустые строки для форматирования и комментарии
>файл в котором больше 100-200 строк - это детектор кодомакаки и признак неумения в архитектуру. файлы 1к строк и больше это уже диагноз.
В демках юнити, где там телка бегала кракозябриков мочила у нее контроллер 800 или даже больше 1к строк, юнитипидары опять признали, что юнитиговно говно.
У меня нет понятий про размер файлов больше 100 строк, это по понятиям юнитидолбоеба юнитиговно.
Это понятия хорошего кода. Причем тут юнити.
Большие файлы это бардак, который невозможно ни прочитать, ни отрефакторить, ни изменить. Это явный code smell и признак отсутствия архитектуры. Что такое вообще большой файл? Это длинные методы и большое количество методов в классах. Общепризнанные антипаттерны.
Вместо разбития задачи на подзадачи, говнокодер хуярит все в один огромный файл.
Кстати да, плюсану. Я думаю это все знают, код должен быть легко масштабируемым и легкочитаемым. А так, когда у тебя гигантский скрипт как ты там разбираться будешь, как менять, сколько головняка. Или сравни, когда у тебя много разных маленьких скриптиков и каждый отвечает за свою задачку маленькую, грубо говоря.
у меня следующая задача - нужно сделать 2д человечка который будет анимироваться по всякому и чтобы ему можно было менять руки/ноги.
можно ли это сделать с человечком который заанимирован через кости в skinning editor?
Глубоко похуй на размер скрипта до тех пор, пока он отвечает за одну конкретную функцию.
аутист если для класса надо реализовать пару дсятков методов ты их по разным файлам раскидаешь?
>ля класса надо реализовать пару дсятков методов
https://en.m.wikipedia.org/wiki/Single_responsibility_principle
>синг респонсабилит принсипл)
>паттернс)
>код смелл)
>антипаттерны)
>смузи)
>акичектю)
>абстракт прокси фактори бим)
>ПАЦАНЫ ПОДСКОЖЫТЕ КАК СДЕЛОТЬ ЧТОБЫ ВРАГ АТАКОВАЛ ИГРОКА ТОЛЬКО КОГДА ОН СПЕРЕДИ
Искал я как то исходник biginteger'а и че ты думаешь? Там 2,5к строк, зато каждый метод за любую херню расписан. Давай перни еще что это кодомакаки написали.
У тебя 2 пути: или выучить это все начать программировать игры. Или до конца жизни сидеть в юнититреде и задавать тупые вопросы.
Выбор за тобой.
То, что ты критикуешь - это многолетний опыт наступания на грабли и выроботанные лучшие практики. У тебя просто нет столько времени в жизни, чтобы самому наступить на все грабли и на личном горьком опыте выучить это все. Поэтому заткнись и иди читай книжки по программированию. Их не для лулзов пишут.
https://www.youtube.com/watch?v=f9v_XN7Wxh8
Классы стандартной библиотеки - это исключения. Это базовые строительные блоки любой программы, поэтому их делают универсальными как швейцарский нож, чтобы пользователи не писали это все сами.
Что угодно может
А значит все остальное не надо делать универсальным и даже если что-то нереализованное понадобилось - костылить на месте(в другом файле), я понял.
Все остальное нужно наоборот делать специализированным. Лучше 10 компоненот делающих простые вещи, чем один супер компонент делающий все сразу
Функционал можно добавить. Простые компоненты можно повторно использовать в другом контексте. А вот код из суперкомпонента в другом контексте не используешь, поэтому единственный способ использовать код из универсального компонента - это добавить в него еще функций и сделать его еще больше, сложнее и универсальнее.
Такой замкнутый цикл говнокода.
сорян но игры это не только код "если нажал кнопку - иди вперёд". если дробить функционал на микрохуйню то рано или поздно потребуется либо менеджер, который всем этим управляет и уже он станет супер-классом. либо это всё превратится в спагетти из ссылок.
единственное разумное требование к коду это чтобы если ты похерил это - не сломалось все остальное.
ало чел очнись в юнити разрешено писать не только компоненты которые ты будешь вешать на геймобжекты
Проигрываю с видосов этого типа
https://www.reddit.com/r/Unity3D/comments/b3h2mn/work_in_progress/
Да и хуй с ним. Кому нужен terrain. Лучше сразу 3 физических движка добавить! Вот это нужная фича.
только хотел выложить, но вы здесь и сами вкурсе
>Unity doesn't store transforms as matrices. Instead it stores a transform as a local position (Vector3), local rotation (Quaternion), and local scale (Vector3). Some things, like shear, can't be represented this way.
Уебки
Мне надо именно shear трансформации сделать
Тут только писать шейдор и оттуда доставать матрицу (делать я это конечно же не буду).
Почему сразу нельзя указать матрицу - непонятно.
что за нелепую хуйню ты творишь? что мешает то? непонятно.
>Мне надо именно shear трансформации сделать
>что за нелепую хуйню ты творишь?
Ты дурак? Мне надо спрайт исказить как на картинке
Экспортить из пейнтера, пересохранять в пейнте или фотожопе, галочки потыкай, настроечки всякие
Кстати, я сегодня вот начал в шейдерах разбираться, там же как раз про эти искажения твои и написано
>геометрия проекции ожидается в гомогенных координатах, которые используют два значения для пикселя на экране (x,y), одно значение для глубины (z) и одно значение для гомогенного пространства (w).
Мне кажется не так уж и сложно написать шейдер, который будет изгибать спрайты твои.
(если что статья https://docs.unity3d.com/ru/500/Manual/SL-VertexFragmentShaderExamples.html)
а просто взять и подрыгать вертексы спрайта через матрицу не?
https://docs.unity3d.com/ScriptReference/Sprite-vertices.html
кстати, если кому интересно то у старого гуи юнити можно даже напрямую матрицы менять
https://docs.unity3d.com/ScriptReference/GUI-matrix.html
через них можно забавно линии рисовать, например.
http://wiki.unity3d.com/index.php/DrawLine
>вместо того, чтобы просто создать матрицу, которую юнити и так нужно создавать, вручную двигать вершины меша
нет, такой способ мне не подходит. я хотел сделать простые эффекты анимации с трансформом, но видимо не судьба.
чтобы получить корректный ответ надо задавать ВЕСЬ вопрос. какие эффекты? эффекты чего? сколько? как? что за хуйню ты творишь что тебе это понадобилось?
может ты просто дисплейсмент шейдор захотел? типа там травку пошевелить, или чтобы миллион рыбок хвостиком махало красиво?
Безуспешно полчаса тыкал в юнити в дизайнере, помог лишь фотошоп Изображения -> Режим -> галочка "RGB" (стояла градации серого).
Пиздос, теперь всегда фотошоп что ли юзать
Над превьюхой бирюзовых звездочек настойки компрессии и формата, выбери compression none для начала.
Не знаю, как это в дизайнере, в пейнтере есть экспорт карт в юнити, все гладенько. Выложи эту пикчу, тоже потыкаюсь.
Сейчас попробовал, создал в дизайнере карту в градация серого, в юнити все нормально, если в фотошопе так же создать тоже нормально.
https://twitter.com/avashly/status/1108821917572710400
>пидары
Меняют имидж, прикидываются типа не пидары, но мы то знаем, что у всех этих девок есть хуи
>Как там 2д? Нормас? Я хотел годот, но не люблю питон.
Говорят, есть какая-то пиксель-перфект камера, с помощью которой делается годное двадэ. Я сам не видел, правда.
мимоОПгодотреда
>Какую игру сделаешь такая зарплата и будет.
Зачем ты его обрекаешь на голодную смерть? Лучше пусть на заводик валит.
Коротко о движке и разработчиков шатающих его.
Проиграл с бомбления ассет флипперов в комментах. Уебки хотят еще и стадию засрать своим говном.
Как хорошо что epic store провел по губам таким.
Ничего не имею против голожопого инди, но таким место на humble bundle'ах всяких и itch.io. Всяк сверчок знай свой шесток.
Какую игру нахуй? Я не хочу игру делать, я хочу код для игры писать за деньги.
Главное что не распидор.
https://www.patreon.com/hedon
Блин, даже ему донят почти 200 бачей за игру
я тоже хочу себе патронов собрать( и пилить с небольшой поддержкой, чтоб не ходить на работу и было что покушать, игру мечты
Ну так пили.
Ненужно, негде этого испльзовать.
Как же проигрываю. Показывают банальные вещи как какую-то революцию. Это не быстро стало, это просто было медленно без возможности сделать быстрее.
Стало обычно блять. Ты такую скорость можешь получить на любом нормальном движке. Тут нет какого-то достижения юнити.
>физическую симуляцию
Но там не физическая симуляция, а какой-то упрощенный алгоритм (с каким-то hashing). Разница в том, что в баннимарке нет коллизий частиц друг с другом. Ну так и он однопоточный на js.
Нет. Не в том суть. Сраниваются разные вещи. Сначала сранивается однопоточный алгоритм + оверхед обновления трансформов и многопоточный алгоритм без оверхеда. Потом вообще сравниваются 2 разные версии алгоритма.
Чтобы при нажатии кнопки возле нпс запускался диалог с облачками над головой нпс и игрока. Должно все выглядеть как пикрил. Для этого нужно объединить OnTriggerEnter и Input.GetKey?
Перерыл кучу гайдов, ничего похожего нет.
на самом деле не особо. для симуляции жидкости конечно вычислительные шейдоры нужны а не физон.
https://youtu.be/Gude_1WJJDQ
>>68564
лол какие трудности. ну, да. сохрани в важном месте переменную что игрок в диалоге, чтобы только один диалог можно было открыть, а управление отбиралось на время диалога. ну и справни облачки над персонажами. для упрощения задачи спавни их в игроков пространстве из префабов, а не в пространстве камеры. а OnTriggerEnter то вообще хуй знает зачем. просто начинать диалог кликом мышки на персонажа не?
Поясняю ньюфагу вешаешь на нужные обьекты(нпс), коллайдеры, делаешь им свойство триггер+ригджбоду is kinematic, потом скрипт на игрока(которому даёшь еще в придачу компонент чарактер контролер, им изи управлять), if OnTriggerEnter, то ставишь переменной своей тру, и высвечивается что типо можно говорить, в этот же момент в update отлавливаешь ifinputgetkeydown, и если игрок нажал нужную клавишу и наша переменная тру запускаешь скрипт диалога. В нём если 2д проще всего по канвасу сделать изображение(облачко)+ текст внутри него, этот текст берётся из твоего скрипта, бля кароч если по пунктам и подробно это надо в ворде писать или блокноте тут заёб в этом уёбищном окошке. Короч в твоей задачи нет ничего сложного, единственная проблема найти картинки(спрайты), код за пару дней разберёшся.
Как вывести персонажа выше моей тайлмапы в 2д? Я уже гуглил, менял слои и их сортировку. Нихуя не помогает.
Карту делал в Тайлед и портировал через Тайлед2юнити.
Order in layer у твоего перса должен быть выше чем у зелёной хрени.
Кинул тебе за щеку парочку, проверяй.
> на самом деле не особо. для симуляции жидкости конечно вычислительные шейдоры нужны а не физон.
> YouTube: Obi Fluid 4 for Unity
Как-то слабовато. Почти то же самое было 7 лет назад в телефонах с тегрой 3.
https://youtu.be/n8tklfzkcDo
>>68579
ну так, эта хуйня и в юнити уже давно. вроде года 4, или больше уже.
ещё тряпки с желе продаёт. и самое клёвое - верёвки https://www.youtube.com/watch?v=kM36Q1m3jSA
хотя конечно такую хуйню можно и самому на коленке сделать, Obi просто продает что-то довольно универсальное. вон например хрен сделал игру про танчик в каше https://habr.com/ru/post/328284/
хотя до Nvidia Flex далеко.
как следующий апдейт на эту хуйню сделаю. ололо решение одной проблемы триггерит другую. переделал как хрянятся еджи для локал авойденса, локал авойденс перестал быть говном, но в процессе поломал рэйкастинг. вообще хуй знает что случилось но иногда еджи дублируются. переделал хранилку для вообще всех эджей но теперь они неправильно сериализуются где-то. или неправильно хранятся. наверно как решу эту проблему то можно уже и закруглятся и поделать игры. столько идей охуительных накопилось.
>>68606
м! https://assetstore.unity.com/packages/tools/physics/nvidia-flex-for-unity-1-0-beta-120425 и правда что-то такое сунули. надо будет посмотреть что там такое интересное. я не следил.
552x480, 0:09
лол наверно даже стоит попросить у тебя эту хуйню просто чтобы понять что ты там вообще делаешь. код хотя-бы дай.
прибавляешь не ту ротацию что-ли? или не в той последовательности? зелёный делает два оборота, желтый один.
В апдейте:
Vector3 direction = targetpos.position - initpos.position;
Vector3 directionsec = secondpos.position - initpos.position;
Quaternion trotation = Quaternion.LookRotation(direction,directionsec);
joint.SetTargetRotationLocal (trotation, initialRotation);
последняя функция найдена на реддите, нужна чтобы джоинт нормально поворачивался
SetTargetRotationLocal идет перед этой и передает space локальный при одном условии
static void SetTargetRotationInternal (ConfigurableJoint joint, Quaternion targetRotation, Quaternion startRotation, Space space)
{
// Calculate the rotation expressed by the joint's axis and secondary axis
var right = joint.axis;
var forward = Vector3.Cross (joint.axis, joint.secondaryAxis).normalized;
var up = Vector3.Cross (forward, right).normalized;
Quaternion worldToJointSpace = Quaternion.LookRotation (forward,up);//изначально (forward,up)
// Transform into world space
Quaternion resultRotation = Quaternion.Inverse (worldToJointSpace);
// Counter-rotate and apply the new local rotation.
// Joint space is the inverse of world space, so we need to invert our value
if (space == Space.World) {
resultRotation = startRotation Quaternion.Inverse (targetRotation);
} else {
resultRotation = Quaternion.Inverse (targetRotation) startRotation;
}
// Transform back into joint space
resultRotation *= worldToJointSpace;
// Set target rotation to our newly calculated rotation
joint.targetRotation =resultRotation;
}
Я бы и рад понять как это работает( пытался сам дописать, но не.
В апдейте:
Vector3 direction = targetpos.position - initpos.position;
Vector3 directionsec = secondpos.position - initpos.position;
Quaternion trotation = Quaternion.LookRotation(direction,directionsec);
joint.SetTargetRotationLocal (trotation, initialRotation);
последняя функция найдена на реддите, нужна чтобы джоинт нормально поворачивался
SetTargetRotationLocal идет перед этой и передает space локальный при одном условии
static void SetTargetRotationInternal (ConfigurableJoint joint, Quaternion targetRotation, Quaternion startRotation, Space space)
{
// Calculate the rotation expressed by the joint's axis and secondary axis
var right = joint.axis;
var forward = Vector3.Cross (joint.axis, joint.secondaryAxis).normalized;
var up = Vector3.Cross (forward, right).normalized;
Quaternion worldToJointSpace = Quaternion.LookRotation (forward,up);//изначально (forward,up)
// Transform into world space
Quaternion resultRotation = Quaternion.Inverse (worldToJointSpace);
// Counter-rotate and apply the new local rotation.
// Joint space is the inverse of world space, so we need to invert our value
if (space == Space.World) {
resultRotation = startRotation Quaternion.Inverse (targetRotation);
} else {
resultRotation = Quaternion.Inverse (targetRotation) startRotation;
}
// Transform back into joint space
resultRotation *= worldToJointSpace;
// Set target rotation to our newly calculated rotation
joint.targetRotation =resultRotation;
}
Я бы и рад понять как это работает( пытался сам дописать, но не.
а это на старте
initialRotation = joint.transform.localRotation;
Если опора неподвижная то все ок.
а, магия дельта-ротаций. ну попробуй с теми-же параметрами Space.Self сунуть.
вон там где if (space == Space.World) меняется последовательность в какой прилагается ротация. в одном случае для локального пространства, а в другом случае для глобального результат.
Я бы и рад понять как это работает( пытался сам дописать, но не.
Если че то ты можешь визуализировать все эти ротации сделав
Vector3 vector = quaternion * Vector3.forward;
и нарисовать через Debug.DrawRay
хотя я не уверен какое там направление у joint.axis
кстати а зачем такие трудности с поиском дельта-ротации? проще же прицепить джойнт на пустой геймобжект и вместо всего этого крутить сам геймобжект, предполагая что целевая ротация равна ротации геймобжекта. чтобы вместо двух ротаций иметь дело с одной.
хотя на самом деле наверно надо просто результат умножить на Quaternion.Inverse (joint.transforn.rotation) или что-то такое. по моему тут нигде не учитывается что сам джойнт будет крутится.
>визуализировать
Отрисовать вектор каждого промежуточного кватерниона?
>какое там направление у joint.axis
Дефолтное, но от поворота осей джоинта ничего не меняется.
>такие трудности с поиском дельта-ротации? проще же ...
Я делал не дельта ротации, я пытался заставить поворачиваться объект к точке, кроме этого кода ниче работающего не нашел. Если сунуть самый первый LookAtRotation в джоинт то ерунда происходит. И мне нужно именно через точки поворачивать а не через еще одну ротацию, у меня в игре будет такая механика.
>>68686
>сам джойнт будет крутится.
Зеленый куб не ребенок красного и джоинт у зеленого. Я ща чекнул, джоинт относительно зеленого не поворачивается.
Но интересно то что если я двигаю золотую и серую точку отдельно то все норм, а если кручу красный куб который родитель обоих точек то дополнительный поворот происходит.
На реддите про эту функцию читал типо у джоинта свое пространство собственное и на него надо доворот делать. Есть ли способы это проще реализовать ну или хотя бы понятнее?
928x578, 0:11
>Отрисовать вектор каждого промежуточного кватерниона?
ну да. а хули нет? так по порядку и разберёшь что оно делает.
>Дефолтное, но от поворота осей джоинта ничего не меняется.
да нет. я не помню какое направление к какому направлению отсылается.
>Я делал не дельта ротации, я пытался заставить поворачиваться объект к точке, кроме этого кода ниче работающего не нашел.
ещё раз. зачем ты пытаешься крутить объект через джойнт когда ты можешь покрутить то к чему цепляется джойнт? ты же имеешь ротацию самого обьекта плюс ротацию джойнта относительно того к чему он прикреплён. к чему такие сложности?
>Я ща чекнул, джоинт относительно зеленого не поворачивается.
>Но интересно то что если я двигаю золотую и серую точку отдельно то все норм, а если кручу красный куб который родитель обоих точек то дополнительный поворот происходит.
проще уже заставить тебя запаковать ассет да выложить в тред всю эту хуйню. чем пытатся понять что к чему у тебя там крепится, какие настройки у чего и все остальное.
928x578, 0:11
>>68681
а-а-а хуй знает что там у тебя не так. вон все замечательно крутится. у тебя Connected Body чтоли красный куб, или че?
ебучий миллион настроек у джойнта. дольше вспоминал какая настройка отвечает за силу ротации.
лол ргхост заблокировали.
https://drive.google.com/open?id=1MxlmfHSJ_Bkw1X_X3Y6xYstycQY5tIL9
на, покрути сам.
>>68693
ЭТО ЧЕ, 300К/НАНОСЕК ГОСПОДИНЫ СПУСТИЛИСЬ С НЕБЕС ЧТОБ НАПИСАТЬ ПАРУ СТРОЧЕК?
Как вы это сделали? Почему я посмотрев кучу туторов многочасовых сделал хрень, а вы за пару минут накидали как надо?
СПС ЗА КОД. Ща буду проверять.
Я тут дебаг линии расставил, но на них нет лишнего поворота, все равно нифига не понятно(.
Красная и синяя это векторы до точек, белая это самый первый кватернион который подается в функцию, зеленая и желтая образуются из осей джоинта, циановая на развилке показывает кватернион с локальным пространством, черная финальная.
https://drive.google.com/file/d/1CK4MG6iaOAkX1H8XH6sY29EStvrKpt-l/view?usp=sharing
Проверяй на какое значение камера повернута по оси У и не давай выйти за предельные показатели.
744x532, 0:28
>>68703
Пощелкал и увидел что у тебя
>>68685
>проще же прицепить джойнт на пустой геймобжект и вместо всего этого крутить сам геймобжект, предполагая что целевая ротация равна ротации геймобжекта. чтобы вместо двух ротаций иметь дело с одной.
Я это не просто так делаю, я из джоинтов собираюсь конечности сделать и потому мне надо чтоб две части были соединены. Если ты понимаешь как кватернионы работают может подскажешь?
Я сделал более наглядный пример.
Просто я думаю создать такой менеджер, и чтоб монетки, к примеру, когда хотят произвести звук подбора, посылали в скрипт менеджера команду воспроизвести звук. Это норм вообще? Или уже все это придумали и я просто не нашел этого еще?
Я тоже пытаюсь все делать по уму и у меня такая же ситуация. И мне вот кажется, что у нас ума мало и опыта нет. Нормальные программисты держат это все в голове, все стейты и т.д.
нахуй держать в голове если можно написать? Можно даже прямо в скриптах написать две палочки // и после них все что нужно
А еще можно написать 3 палочки /// и тебе сделают шаблон для документации метода
Я это понимаю все, уже пишу так, про 3 палочки не знал, я ток про комментирование группами # недавно узнал. А что, типа 3 палочки поставил и у тебя потом в файле с документацией что-то появится или как?
Нет, там появятся появятся теги для описания метода между которыми ты можешь написать описание метода, описание входных данных, описание возвращаемого значения. И потом когда ты будешь в другом месте наводить курсос на этот метод - будет выводиться его описание.
Хуя, надо попробовать. Спасибо за совет.
928x644, 0:23
>ЭТО ЧЕ, 300К/НАНОСЕК ГОСПОДИНЫ СПУСТИЛИСЬ С НЕБЕС ЧТОБ НАПИСАТЬ ПАРУ СТРОЧЕК?
лол это же я, постоянный посетитель треда, хуй-который-делает-навмеш. и на самом деле это довольно тривиальная задача, просто надо немного практики.
>Я тут дебаг линии расставил, но на них нет лишнего поворота, все равно нифига не понятно(.
да ладно продолжай всматриваться. я всматривался и стало понятно. главное понимать что кватернион это вот как пространство повернуть. и вот так через наложения поворотов пространства друг на друга всё и крутится. что все относительно, в общем!
>>68713
а, сразу бы и сказал что инверсивную кинематику для джойнтов захотел. хули, можно спросонья и сделать разминку для мозгов.
на. часика полтора подумал, почитал тот код джойнтов и решил что нахуй. проще напрямую через дельта-ротации.
https://drive.google.com/open?id=1OQUJMmtd1Pd7OxhCfzqpYWXqQDFDseTj
код правда приздец какой грязный вышел, но ключевых значений меньше, так что наверно понятней. я спросонья лучше не могу
а вообще если честно то лучше бы взял что-нибудь вроде https://assetstore.unity.com/packages/tools/physics/puppetmaster-48977 пупет мастера и игры уже делал. разве что тебе интересно самому эту хуйню постичь.
>>68739
ебош в апдейт. делать эту хуйню сразу - проеб времени. сначала прототип, потом когда самому понятно будет как сделать лучше то скопировать вставить код куда надо, или написать по другому проще чем всю эту хуйню сразу делать. просто пиши код так чтобы уже эти манипуляции было сделать легко.
1680x1050, 0:49
алсо. вообще, по моему это слишком сложная задача для неподготовленного человека творить колдовство кватернионов. может проще поделаешь чего? например поделал бы для практики что-то вроде такого. хуйню для маркировки територий, только маркеры не являются геймобжектами. делая такое можно узнать как перевести объекты из одного пространства в другое и это намного проще чем пытаться с наскока научится в голове одну ротацию накладывать на другую. тут тебя от цели отделяет хотя-бы конкретное число операций, а не какая-то мешанина которая усложняется пропорционально числу звеньев.
640x360, 0:01
Ну ты и накатал, ща буду разбирать.
>инверсивную кинематику
Я ее и сам могу сделать, мне просто нужно было узнать как нормально джоинты повернуть. Кажись в твоем коде есть инфа.
>пупет мастера
А если вдруг что-то там не так пойдет то я обосрусь там разбирать от чего, еще больше чем до этого. У меня то идей куча, там не только человек, и конечности не только из 2х звеньев.
С ходу заметил одно отличие между мной и тобой. У тебя плече содержит джоинт который вертит предплечье, у меня наоборот, предплечье содержит джоинт который крепится к плечу. Может быть из-за этого у меня все ломается. Но я делал так потому что плечи тоже надо крепить к телу. Если два джоинта повесить на одно тело то в скрипте их нельзя отличить, скрипт будет у обоих менять значения. Придется делать промежуточные точки между плечем и телом, а я буду так долбится только в крайнем случае.
Спс.
>>68839
Джоинты просят кватернионы. Но так в новой версии, я до этого все тоже самое пытался сделать в юнити пятой версии. Там они просто углы еулера просили, но сами по себе ублюдские были (части тряслись даже если у всех джоинтов нулевая сила и тд) трахался с настройкой а потом забил на долго. В новой версии вместо этого не очевидные повороты, о которых ни из какого туториала не узнать.
>Я ее и сам могу сделать, мне просто нужно было узнать как нормально джоинты повернуть. Кажись в твоем коде есть инфа.
там же все просто вроде. если у джойнта стартовая ротация Quaternion.identity то все что тебе надо указать это как далеко повернуть от нулевой ротации. я тебе оси советовал подебажить потому что там заметно это. например у плеча один из дебагов в начале отображает forward вектор близким к горизонтальной плоскости. вот как далеко он отходит от этой плоскости такая ротация и должна прилагаться относительно начальной ротации.
надо было мне это более очевидно отдебажить. вообще когда с векторами-хуекторами и кватернионами взаимодействуешь то всё куда проще если их дебажить как можно сильней.
хотя с локтем я конечно там хуйни местами понаписал. по хорошему там надо было просто сделать локоть локальным для плеча и брать локальную ротацию, но тогда он не будет так смешно дрыгатся. и там немного кода отведено просто для того чтобы перевести целевую ротацию в локальную для локтя. потому что очевидно надо делать поправку на то что локоть крутится постоянно и надо вычитать его глобальную ротацию.
и эту манипуляцию разумеется и с плечом надо делать если хочешь присоединить плечо ещё к чему-то.
>А если вдруг что-то там не так пойдет то я обосрусь там разбирать от чего, еще больше чем до этого. У меня то идей куча, там не только человек, и конечности не только из 2х звеньев.
там наверно есть хуйня и не только для человечков. хотя конечно хуй знает что сунули. остается поспрашивать на форуме разработчика. или украсть и расковырять.
>С ходу заметил одно отличие между мной и тобой. У тебя плече содержит джоинт который вертит предплечье, у меня наоборот, предплечье содержит джоинт который крепится к плечу.
это же обычная иерархия костей для гуманойдов. когда артисты человечков моделят их иерархия костей начинается с копчика. и на это много причин.
>Но я делал так потому что плечи тоже надо крепить к телу. Если два джоинта повесить на одно тело то в скрипте их нельзя отличить, скрипт будет у обоих менять значения.
лол ну вообще можно просто сделать в теле два геймобжекта на которые крепятся плечи, вместо одного. кстати открою секрет - если сделать публичным ссылочный тип, то ты можешь туда в инспекторе переносить отдельные компоненты. и хватать их не через код а просто сунуть нужный таким образом.
>В новой версии вместо этого не очевидные повороты, о которых ни из какого туториала не узнать
а хуй даже знает как это знание передать. я сам нигде туториала не встречал. у меня порог вхождения был не таким крутым как у тебя, мне надо было просто сначала покрутить вертексы через матрицу, потом понадобилось складывать матрицы, потом делать это уже без матриц, а потом хуяк и понадобилось найти позицию коллайдеров деревьев не имея самих коллайдеров. и вроде и понятно теперь стало.
>Я ее и сам могу сделать, мне просто нужно было узнать как нормально джоинты повернуть. Кажись в твоем коде есть инфа.
там же все просто вроде. если у джойнта стартовая ротация Quaternion.identity то все что тебе надо указать это как далеко повернуть от нулевой ротации. я тебе оси советовал подебажить потому что там заметно это. например у плеча один из дебагов в начале отображает forward вектор близким к горизонтальной плоскости. вот как далеко он отходит от этой плоскости такая ротация и должна прилагаться относительно начальной ротации.
надо было мне это более очевидно отдебажить. вообще когда с векторами-хуекторами и кватернионами взаимодействуешь то всё куда проще если их дебажить как можно сильней.
хотя с локтем я конечно там хуйни местами понаписал. по хорошему там надо было просто сделать локоть локальным для плеча и брать локальную ротацию, но тогда он не будет так смешно дрыгатся. и там немного кода отведено просто для того чтобы перевести целевую ротацию в локальную для локтя. потому что очевидно надо делать поправку на то что локоть крутится постоянно и надо вычитать его глобальную ротацию.
и эту манипуляцию разумеется и с плечом надо делать если хочешь присоединить плечо ещё к чему-то.
>А если вдруг что-то там не так пойдет то я обосрусь там разбирать от чего, еще больше чем до этого. У меня то идей куча, там не только человек, и конечности не только из 2х звеньев.
там наверно есть хуйня и не только для человечков. хотя конечно хуй знает что сунули. остается поспрашивать на форуме разработчика. или украсть и расковырять.
>С ходу заметил одно отличие между мной и тобой. У тебя плече содержит джоинт который вертит предплечье, у меня наоборот, предплечье содержит джоинт который крепится к плечу.
это же обычная иерархия костей для гуманойдов. когда артисты человечков моделят их иерархия костей начинается с копчика. и на это много причин.
>Но я делал так потому что плечи тоже надо крепить к телу. Если два джоинта повесить на одно тело то в скрипте их нельзя отличить, скрипт будет у обоих менять значения.
лол ну вообще можно просто сделать в теле два геймобжекта на которые крепятся плечи, вместо одного. кстати открою секрет - если сделать публичным ссылочный тип, то ты можешь туда в инспекторе переносить отдельные компоненты. и хватать их не через код а просто сунуть нужный таким образом.
>В новой версии вместо этого не очевидные повороты, о которых ни из какого туториала не узнать
а хуй даже знает как это знание передать. я сам нигде туториала не встречал. у меня порог вхождения был не таким крутым как у тебя, мне надо было просто сначала покрутить вертексы через матрицу, потом понадобилось складывать матрицы, потом делать это уже без матриц, а потом хуяк и понадобилось найти позицию коллайдеров деревьев не имея самих коллайдеров. и вроде и понятно теперь стало.
Поэтому ты и ничтожество.
Нужно, чтобы обьект после входа в коллайдер начинал вращаться, а на выходе он имел угол поворота тот, который ему будет задан в скрипте. Как это сделать?
С углами вообще не имел до этого дел, там кватерионы, эйлеры какие-то. Как посчитать разницу между входящим углом и выходящим? Это главное, остальное сам если что додумаю
Почему, когда я пытаюсь добавить абсолютно девственно новый любой скрипт к объекту, всплывает неведомая хуйня с ошибкой "Can't add sccript behaviour AssemblyInfo. The script needs to derive from Monobehaviour!"
В 5 версии такой хуйни не было
с УГЛАМИ дел не имел? охуе-е-еть.
>коллайдер начинал вращаться, а на выходе он имел угол поворота тот, который ему будет задан в скрипте
ты угол поворота,или угол вращения хочешь?
это?
https://docs.unity3d.com/ScriptReference/Vector3.Angle.html
может это?
https://docs.unity3d.com/ScriptReference/Quaternion.Angle.html
>>68926
тебе же написали
>Can't add sccript behaviour AssemblyInfo. The script needs to derive from Monobehaviour!
наследуйся от монобихейвора если хочешь добавлять это на геймобжект. а возможно ты наркоман и у тебя имя класса не совпадает с названием файлика. и это было во всех версиях юнити.
А, вроде нашел Quaternion.LookRotation, попробую с ним поковыряться. Ух эти углы ебань жосткая.
А всё, понял, я скрипт забыл назвать именем объекта, вот ето тупанул. Вот что значит год не притрагивался.
Есть обьект, который летит все время прямо. Хотел поворачивать его в особых зонах внутри коллайдера, летел самолет прямо, залетел в эту зону, бах и плавненько повернул налево, вылетел оттуда и дальше летит себе прямо.
Спасибо за помощь кста, уже голова от этих углов болит.
скайбокс убери и точечные источники света. юнити прибавляет ко всей твоей хуйне все значения пропорционально тому чего и сколько оно там рендерит. это же не хуйня чтобы модельки моделить, а хуйня чтобы отображать их.
алсо, советую почитать уже про ветер. лучше нарежь себе веток да склеивай через tree creator.
>>68937
ну примени к самолету https://docs.unity3d.com/ScriptReference/Transform.Rotate.html
или https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html каждый кадр в таком-то направлении.
о, пофиксил, там все не так просто. Сделал все объекты статическими, запек свет, теперь елка 3.5К вершин
>алсо, советую почитать уже про ветер. лучше нарежь себе веток да склеивай через tree creator.
cпасибо, ща поизучаю это
на самом деле я не думаю что осилишь. юнити довольно глубоко запрятало то как деревья шевелят листочками. проще свой собственный шедор сделать чем пользоваться встроеным. https://docs.unity3d.com/Manual/SpeedTree.html в общем-то делает за тебя всю эту хуйню, но он все-же далек от идеального. лучше открой юнити, GameObject > 3DObject > Tree и посмотри сам на эту хуйню. там можно для листочков меши использовать насколько помню. лучше нарежь с ёлки кусков да здесь собирай.
если че то по моему этот шейдор листочками шевелит https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/CGIncludes/SpeedTreeVertex.cginc
оно там берёт информацию из дополнительных UV карт и толи какую-то специфичную иерархию обьектов просит, толи хуй его знает.
Указал в tree в качестве основного ствола собственный меш, но на него не действует group seed, который влияет на форму. Видимо, чтобы ствол скукоживало, его в его модель нужно кости добавить, хз, изучаю дальше
Да просто интересно.
Также в несколько раз уменьшаются треуголники и вершины когда у directional lihght поставить mode в "baked". Было "realtime"
да ладно какие тонкости то нужны. если есть идея то надо делать. идея сама себя не воплотит.
Чего это они
904x600, 1:00
Смотри, нащупал загадки человечества. Тут дело не в твоем или моем коде, тут сам юнити.
Опять, сделал два тела, соединил джоинтом, повернул оси у тел и оси джоинта в соответствии с мировыми.
Код из трех строк тупа LookRotation по вектору от старта до цели.
Если цель не ребенок объекта в котором джоинт то все норм, можно повернуть этот объект, поворот джоинта сохранится. Но если цель является ребенком объекта с джоинтом то все, юнити потеет и выдает херню, желтая линия это вектор кватерниона джоинта.
Не совсем понимаю логики. Видно как я цель в начале подергал, поменял вектор, джоинт нормально отреагировал. А если вектор меняется от поворота родителя то кирдык.
Вот теперь думаю как с этим работать, наверное где то придется создавать невидимую обездвиженную куклу скелет. Как это скажется на удобстве работы и возможности создавать много конечные тела придется узнавать.
Надо эту деталь в справочники и туторы засунуть.
Как сделать управление, чтоб и на васд и стиком от геймпада в три де кубик двигать
почему я натыкаюсь на сотни решений этой хрени через трансформ, ригидбоди, что за костыли на костылях, где официальное лаконичное решение или какой из костылей лучший?
Поясняю по храдкору. Выкидываешь всю эту хрень нахуй, для кодинга в юнити тебе надо следующее - понимать что ты пишишь, уметь гуглить похожие или отдалённые примеры на инглише, в теории знать ооп дабы не плодить говно код в х10 размере, и юзать поиск по функциям docs.unity3d.com, ВСЁ.
Для совсем аутистов можно даже это убрать, оставить только таскание асетов и копирывание кода из ютуб роликов.
1680x1050, 0:22
я смотрю до тебя всё не доходит что всё относительно. код дай. или запакуй в ассет и дай всю сцену. я уже не представляю что у тебя там за нелепые проблемы.
следи за разницей между синей линией и синей палкой. и желтой хуйнёй. это та разница которую надо дать джойнту. очевидно же.
https://drive.google.com/open?id=1UXknU9fjm60ruAtYvBlpw0Mwn2hrZVGw
>>69159
а как без этого то? как без конструкторов, ООП, полиморфизма и прочего? это всё - надо. например вот надо тебе кнопку для интерфейса. не простую, которую нажал-отпустил и она сработала, а такую чтобы она каждый кадр пока давишь на неё срабатывала. как это проще всего достигнуть? наследоваться от кнопки и сказать "ебош каждый кадр", конечно же!
а вообще мой тебе совет: решай проблемы по мере их появления. обращайся за помощью когда чувствуешь что пишешь хуиту. но для начала тебе надо начать писать эту хуиту.
>код дай
tPos = target.position - transform.position;
Quaternion tRotation = Quaternion.LookRotation(tPos);
forearmJoint.targetRotation = tRotation;
Написал же что код простой.
>я уже не представляю что у тебя там за нелепые проблемы.
>это та разница которую надо дать джойнту.
Да не, теперь проблем нет, спасибо.
>>69240
дык ты это. не забывай. когда с кватернионами дела имеешь - надо знать где ВЕРХ. верх это очень важно. кросс-продукт очень полезен для того чтобы знать где верх, где низ, где право, где лево.
а взаимодействуя с локальными ротациями надо понимать как перевести ротацию в локальное пространство для другого объекта.
очевидно что в том что ты понаписал верх хуй знает где. и ротация никак не становится локальной.
Мне же лучше всего сделать сериализацию через XML? Или есть какие-то другие функции в Юнити сейчас? Как лучше всего записывать позицию обьектов на уровне, чтоб их позиция потом в файле получалась?
А то в интернете много разных варинатов, я просто думаю, какой лучше использовать, чтоб побыстрее файл этот обробатывался.
чуть подробней. что представляет собой то что ты собрался расставлять? просто префабы, или они как-то структурированны? монетки например? тебе это только для эдитора, или ещё и после того как проект сбилдишь надо?
Типа монетки, да, собираемые игроком обьекты. Никак особо не структурированы, несколько видов префабов просто.
Вообще я собираюсь писать редактор уровней, и файл мне нужен будет для того, чтобы игроки смогли строить свои уровни и делиться ими. Но это пока только в теории все, мне же сейчас надо разобраться с расставлением и сохранением монеток по уровню. Но последующая масштабируемость кода была бы не лишней.
Так что, есть идеи какие для такого?
ну если они имеют конкретные префабы, а не какая-то мешанина то сделай себе какой-нибудь структ типа
[Serializable]
public struct MySerializedData {
public int prefabID;
public Vector3 position;
public Quaternion rotation;
}
и сохраняй себе их в лист. и напиши интерпретацию этих айдишников туда-сюда. при увеличении масштабов тебе конечно придется в этом случае более внимательно следить че какой айдишник там репрезентует. сериализацию уже по вкусу, желательно чтобы можно было редактировать через блокнот, хотя для чего-то такого можно даже свою собственную написать.
для чего-то очень дохуя повторяющегося можно и отдельно лист завести куда и вовсе только позиция объектов сохраняется, чтобы ты такой вжух заспавнил сразу много монеток зная что вот тут только монетки сохраняются.
а вот базу префабов что там эти айдишники репрезентуют храни в ScriptableObject, так как там можно заебись хранить референсы на ресурсы проекта.
> есть идеи какие для такого?
Я всегда сериализую специально созданный для таких целей массив, в котором элементы представляют собой чётко обозначенные данные, которые могут меняться в игре.
Допустим, у меня есть префабы монеток и, скажем, грибов. Я не буду сериализировать сами эти префабы, ибо в файле будет много лишних данных, которые мне не нужны и которые будут увеличивать размер файла.
Я сделаю массив, в элементы которого будет помещаться такой словарь {"ItemType" : "", "Position" : ""} Далее, я сделаю две процедуры: 1) на сериализацию, которая будет обходить все префабы по выделенному мной критерию и записывать из них свойства в файл (собственно говоря, сериализировать), 2) на десериализацию, будет доставать данные из файла и будет создавать несуществующие экземпляры из соответствующих префабов, либо обновлять свойства существующих.
Плюс метода: я полностью контролирую содержание файла данных, не допуская записи в него гигов лишней хуйни. Например, я могу в файле держать вообще говоря разнородное содержание: Часть элементов корневого массива - это свойства подбираемых объектов (айди карты/уровня, позиция, тип, цвет, величина), другая часть - это свойства врагов (айди карты, позиция, состояние, хитпоинты), третья - свойства персонажа игрока (айди карты, позиция, состояние, хитпоинты, содержимое инвентаря, журнал). И т.п.
Минус метода: это всё таки велосипед, который может проигрывать в скорости встроенным в шарп методам. Но кого это ебёт на пентиуме 100500 с эртээкс 2К?
Опередил.
Привет, тредю, пишем с друзьями игру, и возник вопрос: какой метод программирование профитнее, ООП или процедурное?
на юнити хоть? для чего? вы учитывайте что если вы ILL2CCP пользуетесь то с процедурным погромированием можно себе и в ногу выстрелить.
да, на юнити. для себя, просто нравится.
>ILL2CCP
а вот что это такое, я лично пока понятия не имею, потому что все, что я сделал с юнити на данный момент, это скачал его. сейчас учу сисярп
тогда не забивай себе голову этой ерундой. ебош пока работает. пока учишь ЯП как раз таки надо стрелять себе в ногу как можно чаще.
конкретно в юнити лучше всего всегда работал дата-ориентированный подход. когда ты всё свое говно в структах держишь и обрабатываешь одной жирной функцией всё сразу. и они сейчаснабирает популярность со всеми этими ECS, многопоточностью и так далее.
спасибо, анон, добра тебе.
Все объекты static, не двигаются, поэтому нет смысла делать realtime освещение
Суп /gd/, кто знает в unity c# есть какой вариант сократить определённый набор строки в короткое название? К примеру есть кусок кода "GetComponent<NameScript>().", в скрипте он пишется овер дохуя раз, и порождает большую кашу(из-за изменения структуры пришлось половину скрипта перенести в новый скрипт, и теперь такие траблы), так вот, есть ли варик как-то его сократить дабы в студии не мешалось это? По типу "GetComponent<NameScript>()." = Stn или типо того и далее бла-бла-бла.
Не пизди, GetComponent возвращает ссылку на экземпляр существующего компонента, а не класс.
https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
А не пашет у тебя потому, что ты не знаешь, что такое экземпляры и чем они отличаются от классов.
Интересует именно момент надевания хомута на модель.
Осёл без хомута и осел с хомутом - это две разные модели или координаты хомута обычно хардкодятся?
Общий кейс: голая модель персонажа. На него нужно надеть штаны перетаскиванием. Как технически это реализуемо?
кстати а че ты там столько раз компоненты то хватаешь? не кешируешь чтоли?
>>69309
лол вообще охуеть какие вопросы уже задают. хомут это обычный геймобжект, одевается он на геймобжект-слот который имеет какую-то ротацию/позицию и информацию че туда сунуть можно. когда игрок тыкает на слот таская предмет в руках то предмет уничтожается и создается заново но уже в слоте и всей экстра-хуйнёй что делается при надевании кординатах и позиции слота.
конкретно для персонажей это немного сложней. потому что хомут конкретно в этом случае просто куча кубиков, они никак не деформируются при движении. для персонажей там обычно отрывают куски меша вместе с костями и приделывают новые, но разумеется это не единственный подход.
Объясняю, тупица, импорт готовой сцены с наложенными в ней материалами/текстурами производится в unity, но по дефолту она их не грузит, как мне запилить шобы всё автоматом подхватывало, пробовал в инспекторе ковырять, нишо не получилос
Тебе в годот тред
Почему none если в файле 3d модели запакованы материалы и текстуры, которая unity распознаёт
Так и пиши подробно, пидарасина, напрягаешь людей своей ленью и тупостью. Хоть бы у тебя ничего не получилось, сука, проклинаю твою мамку на смерть.
Хорошо шо я детерменист и точно знаю что ты еблан. Возможно ты опять не понел, но я тебе (такой тупице) прямо напишу что твой пук с дивана абсурден. И я тебе советую больше здесь не высовываться, раз твой моск напрягается от моих вопросов. Место тебе в /b/
>моск напрягается от моих вопросов
Не мозг напрягся, даун, а напрягаешь переспрашивать тебя, ты даже это не понял, кусок говна. Понятно почему у тебя материалы не подгружаются, ты же долбоеб.
в рот тебе слил
Просто как сходить посрать:
Штаны скинятся на скелет тела и импортируются в хуюнити, делоешь префаб.
Когда надо одеть штаны - инстансишь префаб куда-нибудь в рут тела и назначаешь skinnedmeshrenderer кости тела к штанам. И никуда координаты двигать ненужно, оно само встает.
Если надо оптимизон то меш комбайнить конечно еще надо бы.
AssetDatabase.Dublicate()
или как то так, посмотри, там много функций. Но этот класс не для рантайма
давай начем с самого простого. Нахуя тебе корутина?
ты что то напортачил при экспорте. Юзай fbx и если уже юзаешь его, то поройся в настройках экспорта своего 3д редактора.
Понел в чем проблема
https://www.youtube.com/watch?time_continue=1&v=6NzeTnz6UG4
а че мешает то? трудно но можно (но не стоит того). ещё и нвидия вон свой рейтрейсинг проталкивает, с ним то вообще заебись.
>ещё и нвидия вон свой рейтрейсинг проталкивает, с ним то вообще заебись.
Это технология будущего, когда средняя видюха будет его поддерживать?
>>69446
>а че мешает то? трудно но можно
Ты пробовал? Я просто пробовал, не получается. Там много подводных, волоски должны бросать тень друг на друга, в движках это расстояние больше чем вся прическа, то ли отдельно как-то нужно мутить контактные тени, то ли еще что. Удивительно, конечно, делают профи.
Работает как залупа
>Это технология будущего, когда средняя видюха будет его поддерживать?
разумеется не скоро.
>Там много подводных, волоски должны бросать тень друг на друга
а зачем тени от волоса на волосах то. главное чтобы темным внутри становилось. можно предварительно посчитать эти затенения с нескольких углов и интерполировать относительно направления света. как это делается например для крон деревьев. так то вариантов дохера как сделать красиво.
>>69474
а синхронизировать то как собрался. хочешь безопасности в потоках - используй массивы, а не листы. а ещё volatile используй.
>>69476
это брейкпойнт.
Типикал юнити разработчик.
Есть один ригидбади и коллайдеры. Пик1 и пик2 - эти вот ваши коллайдеры и ригидбади, на пике3 - мой говнокод персонажа. Собственно в чём проблема: мой ебучий персонаж не реагирует на коллайдеры и всё равно проходит сквозь всё. Шо делать, я не понимаю. В гугле все ньюфаги не понимают как работает аддфорс, так что ответа внятного я не нашёл.
Лол, добавил и пофиксилось. Спасибо. В гайдах, которые я смотрю, не было ничего про добавление коллайдера персонажу. Мда блять
Мог бы сам догадаться.
В последней части анимирую босса.
http://websketches.ru/blog/2d-igra-na-unity-podrobnoye-rukovodstvo-p8
До всего этого дошел нормально, код подправил где надо.
Тут тоже основные косяки кода исправил вроде, но выглядело кривовато.
Например в анимации Hit не мгновенно передвигались нужные спрайты. Но большую часть проблем убрал.
Однако босс совершенно не крутится в режиме игры.
Тобишь не вертится в анимации атаки и не покачивается в идле.
На сцене все анимации отображаются корректно.
В чем там дело?
Вот оригинал туториала на инглише с более-менее работающим кодом, который я и использую.
https://pixelnest.io/tutorials/2d-game-unity/animations-1/
https://rutracker.org/forum/viewtopic.php?t=5709690
Unity в действии. Мультиплатформенная разработка на C#. 2-е международное издание 2019 RUS
Unity Колаборейшн же.
https://rutracker.org/forum/viewtopic.php?t=5709690
Unity в действии. Мультиплатформенная разработка на C#. 2-е международное издание 2019 RUS
Анончик, а ссылочка то битая.
ты зачем пост продублировал
ниче не битая, скачал только что. Прочитал пару страницу. Но так непривычно читать русскую документацию. Скачал оригинальную на английском
В смысле, сайт рутрекера не открывается? Так его ж зароскомнадзорили давным давно. Гугли способы обхода
https://coursehunters.net/course/kniga-unity-v-deystvii-multiplatformennaya-razrabotka-na-c-2-e-mezhd-izdanie
Есть два стула. На одном работа нормальная, стабильная, с высокой зарплатой овер 100к месяц, но тяжелая и довольно грязная. На другом - работа на себя, попытка сделать игру вместе с другими людьми, идея открыть свою студию и пилить проекты самые разные.
На какой стул сесть, как вы думаете? Стартовый капитал в любом случае небольшой есть, для начала хватит
Так я и пришёл в геймдев, потому что ноулайфер. Если бы была возможность нормального заработка, нормальной жизни, давно бы женился, купил дом и детей растил, а так живу своим миром.
мимокрокодил 32лвл
Он бросит работу, проест сбережения, назад не возьмут и будет бомжевать и верещать, что игрострой погубил его жизнь.
Мои игры в голове, как и весь мой мир.
>Не вариант, работа слишком сложная.
Я имею ввиду, если деньги есть, делай руками других, студентоты какой-нибудь.
А... Ну так страшно, вкладывать деньги, не факт же что выстрелит игра и вообще кому-нибудь понравится. Хотя это такое...
Перекат делать будем, господа?
Бросать работу тем более высокооплачиваемую страшнее. Шараг полно художественных, там можно концептов заказать, так же моделек. Ну не знаю, хочешь бомжевать, дропай ради гейдева.
Может тебе надо чтобы ассеты и создавались сами по дефолту?
В Юнити 2018 убрали возможность импортировать какую-то часть из Стандартных Ассетов в проект. То есть Assets > Import Package > ...пусто блять...". Осталось только Custom Package там.
А раньше там было "Cameras, Characters, Effects etc... Куда это все делось ? Почему этого нет сейчас? Я так понимаю теперь только можно импортировать весь стандартный ассет целиком через assetstore?
Сука пизда ебаная весит дофига и каждый раз ее всю импортировать??? Там нельзя выбрать просто папочку с персонажами потому что много зависимостей от других скриптов и эта хуита так просто не импортируется. ПАМАГИТЕ
Нет обновлений - нет проблем.
мы не игры делаем, а страдаем, читая и смотря туториалы пытаясь запилить ту или иную фичу.
Обновление движка в процессе разработки - это событие осознанное. Сами разрабы не рекомендуют обновляться, если нет нужны в каком-то конкретном фиксе либо фиче из новой версии.
Игры крупнее платформера от васяна666 я бы за пределами LTS-версий вообще запретил.
От нагрузки же зависит. С нулевой нагрузкой, как тебе, вероятно, и нужно, под ключ - в районе ляма. С поддержкой - можно и за 200к функционирующую версию прадукта запилить. Подводные самые обычные - неквалифицированный хуесос возьмет леньги и сделает пердящее разваливающееся говно.
Собсн всё норм, но одну хуйню ники не догоню. Значит речь о текстурах. Вот, например в тридэхе я накидал хуйню из восьми разных кубов. И хочу на всех них ебануть текстуру_нэйм. Чо происходит. Все кубы обтягиваются текстурой одинаково X1. Можно потайлить, но потайлю для одного кубика - попидарасит остальные.
Раньше я как-то делал такое, что текстурва отлипает от UV и ложится на все объекты с одинаковым тайлингом.
Памахи блядь вспомнить, пездец же я ебал. пол-бороды вырвал уже, ну
Это копия, сохраненная 10 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.