Прошлый тред: >>858668 → (OP)
Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page
На Unity сделано много замечательных игр - Valheim, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity?
- C#
- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity?
- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
Обучение по книгам
Обучение языку C# книги на русском языке:
1. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин
2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев
3. C# для чайников Автор книги – Джон Пол Мюллер
4. Unity и C#. Геймдев от идеи до реализации Автор: Джереми Гибсон Бонд
5. Язык программирования C# 7 и платформы .NET и .NET Core Авторы: Филипп Джепикс, Эндрю Троелсен
Для людей абсолютно не знакомых с движком есть 3и основные книги на русском языке:
1. Разработка игр на Unity 2018 за 24 часа Майка Гейга
(Знакомство с движком, изучение редактора, создание 4х простых игр практически без кода, отличное пособие для полных новичков).
2. Изучаем C# через разработку игр на Unity. 5-е издание Харрисон Ферроне
(Пошаговое освоение всех базовых знаний по программированию на языке С# в редакторе юнити, создание одной игры стрелялки от первого лица, написание искусственного интеллекта врага, книга переведена не совсем корректно и порой встречаются не просто опечатки, а серьёзные неточности перевода.)
3. Unity в действии. Мультиплатформенная разработка на C#. 3-е межд. издание Хокинг Джозеф
(Правильное построение архитектуры кода для сложных проектов, углублённое изучение программированию на C#, создание 4х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)
>- На каких языках я могу писать скрипты для Unity?
>- C#
Все, ушла легенда... Это виток новой истории!
В юньке каждый год что-то меняется, причем кардинально. Уж раз в год можно обновить список литературы.
Почему на пикче логотип Unreal Engine?
заманивать анрилодетей и показывать им болт
@ Не знаю, как правильно
@ Поначитался блять советов мудрых, итоги.
@ Ведь все пишут, как не надо, и как неправильно, а как правильно и как надо никто не пишет, это же надо иметь умения учителя и вообще прилагать усилия, но с хуяль тебя должны учить. Только обсирать могут.
Че? Тебе что надо сделать?
Ты тот чел с наивным - вот мой гитхаб посмотрите че не правильно и как правильно?
Ты много просишь.
Мимо
Моего кода вообще нет в сети, ведь я начитался/насмотрелся умных проггеров, и не могу дописать проекты. Я вижу косяки, но я не знаю, как писать без этих косяков. А просто доделать лишь бы доделать не могу себя заставить. Если уж и писать, то писать правильно
Ясно. Иди на хуй, клоун.
видимо хорошо живёшь, ну и гейдев тогда тебе зачем? было бы тебе нечего завтра жрать, я бы посмотрел, как бы ты запел
Ну и кем же ты работаешь?
а ты ввалился в геймдев в надежде что тебе жрать будет чего?
братан а ты хорошо продумал свой бизнес план? а если твой игорь не взлетит?
может сначала стабильную работку найдешь?
молодец
Если указать леермаск, то это будет менее ресурсоёмкая операция, или нет разницы?
Знатоки, помогите!
Пытаюсь задать параметр скорости анимации через функцию: animator.SetFloat("name", value). Создал параметр типа флоат в аниматоре, в нужной анимации повесил его мультиплаером на значение скорости .
Но это нормально срабатывает только если вызывать функцию в Update().
В Awake() и Start() - никакого эффекта. Я решил, что возможно параметры аниматора инициализируются в первом апдейте и попробовал вызвать SetFloat() в корутине с задержкой в секунду: после секундного ожидания скорость действительно меняется, но только на 1 цикл анимации, после чего скорость снова стандартная.
По умалчанию в инспекторе значение параметра =1.0.
private void Start()
{
StartCoroutine(SetAnimationSpeed(10.0f));
}
private IEnumerator SetAnimationSpeed(float animSpeed)
{
Debug.Log($"Animation speed 1: {_iconAnimator.GetFloat("animSpeed")}"); //=0
yield return new WaitForSeconds(3f);
_iconAnimator.SetFloat("animSpeed", animSpeed);
Debug.Log($"Animation speed 2: {_iconAnimator.GetFloat("animSpeed")}"); //=10
yield return new WaitForSeconds(3f);
Debug.Log($"Animation speed 3: {_iconAnimator.GetFloat("animSpeed")}"); //=1
}
да, разбивка по леерам снизит тебе CPU загрузку
https://pastebin.com/MzAY2ZHM
Потом планирую из update вынести в корутину, чтобы не часто, а также отключить вычисления, если объект не виден на камеру.
Просто думаю как и что с их помощью можно оптимизировать, какие подводные и какие ограничения. Они же на плюсах пишутся.
Если удастся оптимизировать хотя-бы поиск ближайшего объекта из листа, то будет уже хорошо
можно но многовато ебли. посмотри лучше в сторону il2cpp
В коде у тимлида метод StartGame имеет комментарий "Старт игры".
>В коде у тимлида метод StartGame имеет комментарий "Старт игры"
Весело тебе будет.
Да главное чтобы деньги платили или ты бесплатно пашешь?
Платят. Я бы даже сказал, что не обижают, но там от нагрузки, не оклад.
Отличный тимлид, и джуны учёные.
>В коде у тимлида метод StartGame имеет комментарий "Старт игры".
Что не так? Если там генерация документации по коду, что бы ты написал?
>>861139
>А как должно быть?
Очевидно, либо DamageAdd(), либо Change_Health(). Чтобы единый стиль был.
Если смотреть по API юнити, подразумевается, что должно быть DamageAdd().
>>861059
>ужас с RAM у движка при загрузке
Это тебе пусть в движкосраче пояснят, а то здесь забанить могут за это.
>>859223
>@ Знаю, что мой код неправильный
>@ Не знаю, как правильно
Так ты и бугурты не знаешь как правильно писать. Тебе бугурт-сенсей нужен?
Вот, бесплатная демонстрация первых двух строчек:
ЗНАЮ, ЧТО МОЙ КОД НЕПРАВИЛЬНЫЙ
@
НЕ ЗНАЮ, КАК ПРАВИЛЬНО
Дальше сам.
>как правильно и как надо никто не пишет
Правильно - это чтоб работало или чтоб поддерживать можно было?
В геймдеве не принято вылизывать код до идеала. Просто говнокодишь от души, чтобы запускалось на большинстве компьютеров и не падало с ошибкой в 99.9% игровых сессий. Чтобы не было существенных утечек памяти и чтобы потом можно было добавить новую фичу за конечное время. Всё. А вылизывание до идеала оставь академикам, которые изобретают новые алгоритмы, которые никто потом на практике не использует.
ОСОБЕННО если ты инди. Все привыкли к тому, что ААА-говно тормозит и падает, а у инди и графики толком нет, и тормоза с падениями больше и чаще, чем у ААА-говна. Можешь вылизать код игры, когда соберёшь достаточно продаж, тогда хомячки обрадуются: "оооо, наконец-то оптимизацию подвезли, вот разработчик молодец какой, респект, не то, что %ААА-корпорация%, которая 10+ лет не может баги в своей дойной корове пофиксить и оптимизацию завезти". Ты вообще поиграй в игры, посмотри, какие у них отзывы и как на это влияет качество кода. Вот ЯндереДева за качество кода говном поливали, драму устраивали, а он всё равно деньги получает за разработку игры, которая растянулась на долгие годы из-за его говнокода, и преданные фанаты у него всё ещё остались (в данный момент на патреоне: 574 patrons, €1970 per month). Так что забей на качество кода и занимайся творчеством, а не вылизыванием алгоритмов.
>В коде у тимлида метод StartGame имеет комментарий "Старт игры".
Что не так? Если там генерация документации по коду, что бы ты написал?
>>861139
>А как должно быть?
Очевидно, либо DamageAdd(), либо Change_Health(). Чтобы единый стиль был.
Если смотреть по API юнити, подразумевается, что должно быть DamageAdd().
>>861059
>ужас с RAM у движка при загрузке
Это тебе пусть в движкосраче пояснят, а то здесь забанить могут за это.
>>859223
>@ Знаю, что мой код неправильный
>@ Не знаю, как правильно
Так ты и бугурты не знаешь как правильно писать. Тебе бугурт-сенсей нужен?
Вот, бесплатная демонстрация первых двух строчек:
ЗНАЮ, ЧТО МОЙ КОД НЕПРАВИЛЬНЫЙ
@
НЕ ЗНАЮ, КАК ПРАВИЛЬНО
Дальше сам.
>как правильно и как надо никто не пишет
Правильно - это чтоб работало или чтоб поддерживать можно было?
В геймдеве не принято вылизывать код до идеала. Просто говнокодишь от души, чтобы запускалось на большинстве компьютеров и не падало с ошибкой в 99.9% игровых сессий. Чтобы не было существенных утечек памяти и чтобы потом можно было добавить новую фичу за конечное время. Всё. А вылизывание до идеала оставь академикам, которые изобретают новые алгоритмы, которые никто потом на практике не использует.
ОСОБЕННО если ты инди. Все привыкли к тому, что ААА-говно тормозит и падает, а у инди и графики толком нет, и тормоза с падениями больше и чаще, чем у ААА-говна. Можешь вылизать код игры, когда соберёшь достаточно продаж, тогда хомячки обрадуются: "оооо, наконец-то оптимизацию подвезли, вот разработчик молодец какой, респект, не то, что %ААА-корпорация%, которая 10+ лет не может баги в своей дойной корове пофиксить и оптимизацию завезти". Ты вообще поиграй в игры, посмотри, какие у них отзывы и как на это влияет качество кода. Вот ЯндереДева за качество кода говном поливали, драму устраивали, а он всё равно деньги получает за разработку игры, которая растянулась на долгие годы из-за его говнокода, и преданные фанаты у него всё ещё остались (в данный момент на патреоне: 574 patrons, €1970 per month). Так что забей на качество кода и занимайся творчеством, а не вылизыванием алгоритмов.
>Очевидно, либо DamageAdd(), либо Change_Health(). Чтобы единый стиль был.
Если смотреть по API юнити, подразумевается, что должно быть DamageAdd().
Походу еще один тимлид, пацаны. Чиста парню подчеркивание никрасива, а то что семантика метода не отражает его назначение, а да ихуй с ним.
1920x1080, 0:30
Есть ли нормальный полноценный курс, который позволит мне с нуля создать нормальную 3D гонку?
За то время что я вкатываюсь в геймдев, я успел посмотреть курс itProger по созданию стратегии, видео малопопулярных ютуберов по созданию управления машины, курс Сакутина по C#.
И везде только часть информации.
Из Юнити ассетов я собрал трассу, добавил на нее сначала машину, которая отвратительно управлялась, потом добавил другую, которая управляется чуть получше (хотя тоже не ахти).
Теперь надо искать видео как добавить соперников, потом - как сделать гонку, в которой будет отображаться время забега, позиции игроков, и кто первый пересек финишную черту.
Потом - как к этому прикрутить возможность отображения лучших результатов.
И для этого придется перелопатить тонну видео и статей.
Может быть существует самый информативный, самый лучший курс по Unity, который позволит создать нормальную 3D-гонку?
Для гонок тебе надо все 2 ключевых вещи.
1. Это реализовать приятную механику вождения для игрока.
2. Решить что будет с АИ, либо выдать ему такую же меху как игроку и чтобы он управлял, или имитировать его управление.
Всё остальное это обычный базис юньки.
>Теперь надо искать видео как добавить соперников, потом - как сделать гонку, в которой будет отображаться время забега, позиции игроков, и кто первый пересек финишную черту.
Попробуй не искать видео, а включить мозг.
Ты опоздал лет на 10. Жанр гонок мертв, сейчас котируется или сверхреализм с топовым графоном, или сверхреализм в поведении авто, симулятор. Ни то, ни другое ты в соло не запилишь, поэтому лучше забей, и переключись на другие жанры. Лучше запили клон my summer car в Торжке, было бы ахуенно.
попробуй взять готовый опенсорс на тему (с людумдаревов каких или еще где) и поковыряться в коде. это и быстрей и понятней чем видосики (когда поймешь что ничего сложно него и код надо тупо ЧИТАТЬ чтобы понять, а не выдумывать и не додумывать)
После этого начинаешь шерстить весь manual/ScriptingApi и обнаруживать доселе невиданные плюхи.
1. Смотреть базовые уроки по созданию простейших игр, типа floppy birds, и при этом чтобы чел воспроизвел реализацию этого.
1.1 Навернуть пару книжек, не слишко мудренных.
2. Прочитать манул от корки до корки. Некоторые специфичные главы (AR, VR) можно пропускать, если чел точно знает, что это ему(пока) не нужно.
3. Прочитать скриптинг api.
После этого можно приступать к игре, не задалбывая всех встречных вопросами - а как? а почему? а можно ли?
ps
Да, я понимаю, надо уметь гуглить, и я всегда гуглю, но иногда просто невозможно уместить свои хотелки в поисковый запрос
Можно еще проще. Смотрит любой список видосов как делается игра, и делаешь дальше сам, гугля проблемы в процессе, т.к в любом случаи они будут.
434x266, 0:11
>1.1 Навернуть пару книжек, не слишко мудренных.
>2. Прочитать манул от корки до корки. Некоторые специфичные главы (AR, VR) можно пропускать, если чел точно знает, что это ему(пока) не нужно.
>3. Прочитать скриптинг api.
и много ты запомнишь без практики, дура ебаная?
Лучше пока не думай об этом.
> Если удастся оптимизировать хотя-бы поиск ближайшего объекта из листа, то будет уже хорошо
Тем более не думай.
есть системы нижнего уровня, которые прокручивают компоненты и меняют в них дату, а по завершению на сущности вешают пустой компонент-флаг
системы которые зависят от актуальности даты в другом слое выше делают запрос на сущности с этим компонентом и после своей уже обработки убирают компонент
как идея посаны? в теории и дата будет актуальной и не надо прогонять вообще все сущности с нужными компонентами
Есть ли смысл постоянно обновлять версии юнити? Сижу на 2021.3, думаю обновиться но тоже не хотелось, чтобы всё, в теории, послетало после обновы
Не знаю как все, но я одержим обновлениями, каждый день чекаю новую версию, если есть качаю не думая. Хз, может это болезнь.
За пару лет такой ломки самое страшное что было это udr попидорился с материалами и пришлось заного все материалы переназначать. Всякие внезапные ошибки в скриптах и несовместимости решались переустановкой либо юньки или самого пакета в менеджере.
>семантика метода не отражает его назначение
Что тебе не так-то?
Я вижу это так:
ChangeHealth() - меняет уровень здоровья, запуская анимации шкалы здоровья, может проверять порог максимального здоровья, запускать событие смерти при нулевом уровне и т.п.
AddDamage() - помимо вызова ChangeHealth() может отображать на экране эффекты урона, заставлять персонажа издавать крик боли, проверять пробитие брони, снижать урон в зависимости от брони и т.п.
Heal() - помимо вызова ChangeHealth() может отображать на экране эффекты лечения, регулировать эффективность лечения в зависимости от имеющихся повреждений, качества лечилки и т.д.
Это просто разные слои абстракции. Где-то ещё выше по абстракции будет Hit() и UseHealthPack(), которые вызывают AddDamage() и Heal() соответственно, но ещё делают другие дела.
Если в коде один метод вызывает другой и больше ничего не делает - это не бесполезный код, это плейсхолдер для возможных будущих фич, которые сейчас не нужно или некогда реализовывать.
А назначение методов пусть в документации будет написано. У вас же есть документация на игру?
Неплохо бахаешь. Давно игры делаешь?
ну ты конечно сравнил марио и ивана из мухосрани с мечтой сделать свою лада рейсинг клаб
Я сначала думал накинуться и разбомбить этого документоведа по пунктам, а потом подумал, а нахуя мне дарить человеку шанс вылезти из этого болота бесплатно? Плати пять тыщь и я обоссу каждый пункт этого эталонного примера.
>Пацаны, у вас как вообще на работе происходит.
Прихожу на работку, мне говорят вот мы тут нового лоха наняли за копейки. Ну я скидываю ему какую нибудь задачку, типа сделай мне игру целиком. И иду чилить в сауну с девками.
Ну ладно, дали мне тз. С виду декомпозируется на 3 класса, срок неделя. Есть ощущение, что я за час сделаю.
Звони тому кто дал задание, пусть поясняет че хочет
я рад
че, тоже хочешь? там кстати есть места скорее всего.
Эй, пс-с, чувак, подь сюды, есть один альтернативный двиг, ну, ты понимаешь, "игровой" как мы между собой его называем, да, с оч-чень интересными свойствами при использовании, во-от, и да, первая, гм-гм, я имею в виду, бесплатно, совершенно бесплатно, скачивай и пользуйся без регистрации, легавые ничего не заметят, честное слово, потом ещё захочешь, а к нему, движку тобишь, аддончики есть, угу-угу, бесплатные аддончики, бери пока нас не застукали здесь, ну всё, бывай, расходимся в разные стороны, ты меня здесь не видел.
Не понял, а зачем вам вообще этот Юнити хаб? Установщики всего что тебе нужно качаешь и пользуешься.
Ты за 1000 рублей сделал задание? А насколько оно сложное было? Сколько времени примерно потратил?
Бля, ты что серьезно не знаешь как установщик скачать? Таких вкатунов я еще не видел. https://unity.com/releases/editor/archive
Я не прошу вычислять, просто скажите, это нормальная задача для джуна? Я себе все извилины стёр, походу не быть мне в геймдеве...
ЗЫ: все сферы с rigidbody и на них действует гравитация
> Я не прошу вычислять, просто скажите, это нормальная задача для джуна
Неа
Я ток не понял, ты должен именно рассчитать или можешь в юнити симуляцию запустить? Коллайдеры другие на сцене есть? Гравитация естл? 3д пространство?
Ты не в состоянии решить задачку для 6 класса школы? Это вообще не требует программирования.
Абсолютно пустая 3D сцена, только две сферы в рандомных позициях, есть гравитация. Запуск игры не нужен, если только для проверки. Я должен написать формулу, как я понял, где должен передать позиции сфер/радиус/силу, и на основое всего получить время и позицию столкновения, если оно вообще произойдет.
Да впрочем я уже забил на работу. Надо походу высшую математику долбить вместе с физикой.
Какая еще блять математика и физика.
Запускаешь таймер в 0 кадре. Регистрируешь событие столкновения двух сфер и сохраняешь текущее время и позицию точки столкновения.
Это не для джуна задание, а для дебила-вкатыша, на знание API и вообще вменяемость.
Я не программист, и то бы сделал такое за полчаса.
Но ладно, забил так забил. Все равно на этой "вакансии" наверное не деньги платят, а просто за энтузиазм работаешь.
>Регистрируешь событие столкновения двух сфер и сохраняешь текущее время и позицию точки столкновения.
Ебать ты умный. Вот только надо рассчитать время и позицию без запуска юнити.
Короче, закрываешь юнити, и надо все решить на листочке.
Пиздец у тебя душка конечно.
Воооот у меня заебись. У меня тимлид работает через FindObjectOfType. Лол. Очень надеюсь, что мне не придется работать с его кодом. Потому что я категорически не хочу так опускаться. Ту игру, которую там делают, я могу соляного написать по нормальному ООП, солидом, с архитектурой готовой к расширению. Но там другие стандартны разработки.
>надо все решить на листочке
сразу же на этом моменте встаешь, говоришь что-то типа "я вам перезвоню" и уходишь.
Во идеально, тогда давай пиши как её решать, а мы посмотрим.
Какие уравнения надо составить чтобы из них можно было получить решение?
Пчел, я раскидываю их по школьникам, мне не надо помнить как именно рабы их решают.
Тем более я не собираюсь выкладывать решение, чтобы он с ним потом ко мне же пришел )))
Если тебя это обратует, то без гугла я ее не решу.
Ну ладно, раз сам ссышься то я тогда накидаю уравнения.
Только я еще и упростил задачу чтобы меньше писать было: она теперь двухмерная и у первого шара начальная скорость направлена по оси Х, а у второго по оси Y.
Казалось бы все номрмально выводится ваще изи, итоговое решение берем из расстояния между кругами, только вот в итоговом уравнении получается корень из многочлена 4й степени.
А если бы было трезхмерное пространство, то был бы корень из многочлена 6й степени.
Ни то ни другое на листочнке не решается(ток если там специально дали удобные числа чтобы все посокращалось), это надо вбивать в вольфрам альфа.
{
public Rigidbody sphere;
public float forceMagnitude = 10f;
private Vector3 initialPosition;
private Vector3 initialVelocity;
private Vector3 acceleration;
void Start()
{
initialPosition = sphere.transform.position;
initialVelocity = sphere.velocity;
}
void FixedUpdate()
{
sphere.AddForce(Vector3.forward forceMagnitude, ForceMode.Force);
Vector3 deltaVelocity = sphere.velocity - initialVelocity;
float deltaTime = Time.fixedDeltaTime;
acceleration = deltaVelocity / deltaTime;
}
void Update()
{
float t = Time.time;
float x = initialPosition.x + initialVelocity.x t + 0.5f acceleration.x t t;
float y = initialPosition.y + initialVelocity.y t + 0.5f acceleration.y t t;
float z = initialPosition.z + initialVelocity.z t + 0.5f acceleration.z t * t;
transform.position = new Vector3(x, y, z);
}
}
{
public Rigidbody sphere;
public float forceMagnitude = 10f;
private Vector3 initialPosition;
private Vector3 initialVelocity;
private Vector3 acceleration;
void Start()
{
initialPosition = sphere.transform.position;
initialVelocity = sphere.velocity;
}
void FixedUpdate()
{
sphere.AddForce(Vector3.forward forceMagnitude, ForceMode.Force);
Vector3 deltaVelocity = sphere.velocity - initialVelocity;
float deltaTime = Time.fixedDeltaTime;
acceleration = deltaVelocity / deltaTime;
}
void Update()
{
float t = Time.time;
float x = initialPosition.x + initialVelocity.x t + 0.5f acceleration.x t t;
float y = initialPosition.y + initialVelocity.y t + 0.5f acceleration.y t t;
float z = initialPosition.z + initialVelocity.z t + 0.5f acceleration.z t * t;
transform.position = new Vector3(x, y, z);
}
}
x = x0 + v0x t + 0.5 ax t^2
y = y0 + v0y t + 0.5 ay t^2
z = z0 + v0z t + 0.5 az * t^2
где:
x, y, z - координаты объекта в момент времени t
x0, y0, z0 - начальные координаты объекта
v0x, v0y, v0z - начальные скорости объекта по x, y, z соответственно
ax, ay, az - ускорения объекта по x, y, z соответственно
t - время
Для объекта с компонентом Rigidbody в Unity можно получить начальные координаты и скорость с помощью соответствующих свойств transform.position и Rigidbody.velocity. Ускорение объекта может быть получено из свойства Rigidbody.acceleration.
Применяя силу к объекту с помощью метода AddForce, ускорение объекта изменяется, что влияет на его скорость и координаты. Поэтому, чтобы точнее рассчитать траекторию объекта, необходимо использовать метод AddForce вместе с вычислением ускорения.
Ниже приведен пример кода, который демонстрирует использование формулы для расчета траектории объекта с компонентом Rigidbody в Unity, применяя силу к объекту с помощью метода AddForce:
Уверен что это решается намнооого проще.
Например найди пересечение в проекции на ось x, потом проверь ось y.
В юнити у вас есть механика и вам надо её делать, а вы дрочью страдаете. Если не можете сделать меху, то дропаете её и реализуете то что надо, иначе так и продрочитесь до старости не выпустив игру.
Дэбил, ему работу такую задают. Вот придумал геймдизайнер гиперказуалку где надо сталкивать шары но он хочет подкручивать чтобы они не сталкивались и игрок покупал алмазики. А ты такой я не умею. Да и похуй, пинка тебе под зад, у них очередь вкатунов.
Чего сложного?
Буквально одно уравнение - ты еще раз обрати внимание на дано, там во все уравнения ниже все подставляется. Просто из-за самоц сути задачи тут надо решать уравнение 4-6 степени
>Например найди пересечение в проекции на ось x, потом проверь ось y.
Неа, никаких вторых проверок, это сразу не сработает. Тут суть в том и есть что надо получить опередленный x И y, потому что это шары а не точки.
Если по уму, то у тебя сцена должна быть засрана кучей таких объектов, а от каждого объекта еще быть грозди таких объектов.
пустые го для этого и нужны
а так если тебе позиция например не нужна ты можешь свой компонент с корутинами хоть на камеру повесить
Архитектурный анон.
Мне нужно обработать в цикле массив допустим с 87500 элементами. Делаю свой поиск пути, с алгоритмом а* разобрался и сейчас оптимизирую это. Если я одним циклом делаю это, то хоть и очень дорого выходит, но все работает нормально. Но если сразу делаю вложенные фор, чтобы сразу работать после этого цикла с кластерами данных, то у меня юнити виснет намертво, хотя по логике и там и там в фор происходит одинаковое количество итераций.
В чем я не прав? Почему это работает именно так?
Вводные width=350, height=250. squaresWidth=7, squaresHeight=5, squareSize=50.
ОЙ БЛЯТЬ СПАСИБО. Я ходил полдня думал.
Пропадают поля со скриптаблов, пустыми становятся, поэтому прокинутые в инспектор вызывают ошибки. Странный баг.
Перетаскивай через окно проекта в юнити, а не в иде.
Отваливается, потому что без мета файла их перетаскиваешь, а если делать через юнити то и метафайл перетащится
Через юнити перебрасывал, но рили надо было попробовать с метой или с удалением метафайлов
https://github.com/superunitybuild/buildtool
ручка выглядит как залупа
852x480, 0:12
Я с помощью LineRenderer делал
В графике такие вещи называются декалями.
Тимлид не знает про эвенты? Вам бы поменять его, желательно побыстрее.
У мня лид так делает. Юнити эвентами причем.
Звучит разумной оптимизацией, в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы (обычно лулзов доставляет если там еще и поиск по строковому названию). Конечно можно доебаться что а как же архитектура, связность... Но во первых это же игра а не сайт сбербанка. Вряд ли вдруг появится новый контроллер или все начнет перетряхиваться в дереве. Во вторых если это казуалка какая нибудь, это все равно код пишется один раз на выброс и многолетняя поддержка не нужна, а важнее тайм ту маркет. Итог - тимлид не зря свою икру ест.
Существуют сайты с реквестами?
Пробуй реализовать базовые механики различных игр. Ту же шутер механику. Чарактер контроллер для адвенчура. Матч-3. Или механику нынче популярного Vampire Survivors.
Да не ссы, я их не одно провел уже.
Хочу расписать свой метод, как я пишу какой то функционал.
Сначала я тупо на листочке раписываю все возможные функции, которые мне могут понадобиться, даже с вероятностью 0.001%.
Их может быть штук 20. Так вот, реализовал я это все, и хоть в продакшн сразу, но нет, я писал без каких либо паттернов, с самоповторами, на скорую руку. И теперь, когда я вижу картину целиком, я вижу, где я могу вынести отдельные классы, где организовать контроллер, связи, и в итоге получается добротная система без повторов с расширяемостью и т.п.
ХЗ, мне так легче, чем заранее спланировать и сразу сделать готовую гибкую систему, возможно, спецы с высшим образованием и опытом 15 летом и могут это сделать заранее, но я нет.
632x360, 3:22
На сколько базовым оно должно быть чтобы не стыдно было показывать как портфолио? Последний раз в пересобирал чужую демку из говно-движка в годот, пикрил, могу пересобрать в юньку, но хз если зачтется при таких вводных
> Звучит разумной оптимизацией
Никакой разницы в производительности нет. Вопрос весь заключается в том, что от чего зависит. Лид предлагает круговую зависимость - когда все друг от друга зависит, челы выше говорят, что зависимость должна быть лишь одна.
> в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы (обычно лулзов доставляет если там еще и поиск по строковому названию).
Сервис локатор или поиск чего либо по строке это сразу досвидос на собесе. Ес че челы выше ни про сервис локатор ни про строки ниче не говорили.
> Конечно можно доебаться что а как же архитектура, связность...
Не можно а нужно.
> Но во первых это же игра а не сайт сбербанка. Вряд ли вдруг появится новый контроллер или все начнет перетряхиваться в дереве. Во вторых если это казуалка какая нибудь, это все равно код пишется один раз на выброс и многолетняя поддержка не нужна, а важнее тайм ту маркет. Итог - тимлид не зря свою икру ест.
Пчелидзе годные прототипы с хорошим удержанием всегда развиваются дальше. Если студия выкидывает игру сразу после релиза - значит релиз неудачный. Если студия все игры выкидывает после релиза - значит она такой себе пример для подражения и должна что-то менять.
А если писать говнокод даже там где изи(те же трудозатраты) сделать норм, как в этом примере, то ебнешься потом игру развивать.
>Никакой разницы в производительности нет.
>прямой вызов по ссылке vs прожевывание событий через конвееры
Ну ок, мы вам перезвоним ))
Игра после релиза просто продается, продается, раскручивается рекламой и продается. В 99% там ничего не дорабатывают. Иногда вставляют новые картинки не меняя код. Я же написал казуалки, а не какой нибудь факторио.
> >прямой вызов по ссылке vs прожевывание событий через конвееры
Какие нах конвееры сынище, один лишний колл функции для ивента. Ты с ума сошел? Ты в курсе скок у тебя рендер тред жрет? Вот посмотри, и не будешь больше на хуйне экономить.
>>866260
Нихуя, с апдейтами можно с аудитории еще долго деньги качать если игра хорошо зашла и ее не удаляют.
Как ты себе представляешь ивент без шедулера который их раскладывает а потом рассылает?
Каво нах? Паттерн обсервер слышал ебать? В списке харнятся методы которые надо заколлить.
форыч (сабскрайбер ин сабскрайберс) сабскайбер();
У тебя форыч уже бесплатный стал? Добавление удаление в списки тоже? Сам твой цикл где находится, в вакууме?
> У тебя форыч уже бесплатный стал?
Можно считать бесплатным, его работа эквивалентна перескокам по адресам методов.
> Добавление удаление в списки тоже?
Выполняется один раз при подписке и отписке)
> Сам твой цикл где находится, в вакууме?
Запускается при колле ивента
Я тебе еще раз говорю посмотри сколько жрет рендер тред а потом сходи с ума с этими бестолковыми оптимизациями.
Ой не тот скрин держи подробнее. Ток сознание не потеряй с того что ивенты аж быстрее получились
Ну так если у тебя рендер все жрет (который на минутку на ГПУ а не ЦПУ), то чего ты вообще возбудился, тогда получается как угодно говнокодить можно.
Семен с самоподдувом незаметен.
> Ну так если у тебя рендер все жрет (который на минутку на ГПУ а не ЦПУ),
Я же сказал рендер тред а не рендер.
Ты в курсе ваще что перед тем как видеокарта чето нарисует - процессор должен ей выдать задачи, а перед этим еще и подготовить сцену к рендерингу и выполнить куллинг?
Так вот это всё порой довольно тяжелая задача и именно она часто является ботлнеком в играх. То что ты там наэкономишь с шизы по типу той что мы обсуждаем - вообще не заметно по сравнению с реально тяжелыми частями игр, как например подготовка сцены к рендерингу.
> тогда получается как угодно говнокодить можно
Говнокод/неговнокод это в первую очередь не про оптимизацию, а про организацию кода и архитектуру. Конечно это несколько связные вещи, поэтому надо компромиссы искать, но в данном случае я хочу сказать, что не использовать ивенты потому что якобы они дохуя жрут(тезис, на которыц я изначально отвечал) - это глупо, потому что это просто пиздежь и не правда.
За профессионалами это тебе в годот, там сеньоры на C++ все сидят.
сразу на шину присаживайтесь и не ебите себе мозг этой кругодрочкой
вот норм реализация для примера
https://github.com/velik97/EventBus/
Что это такое?
Максимальная хуета.
Скриншот крайне дебильный.
Не, понятно что аллокации это плохо, но для прилия можно было бы и 10к микрокорутин запустить а не одну.
>Расшифруйте что на пике
юнитя посасывает и разработчики не хотят это фиксить, пытаюсь разобраться, почему так
Начни с leetcode codewars. Если что то побольше - audio manager, resource manager, windows controller, camera controller и т.д.
> audio manager, resource manager, windows controller, camera controller
whatthefuckamireading.jpg
Зато без всякого говна типа Many GC Spikes, Memory Alloc + Huge Overheads и 14.6ms per frame
а) value.Get<Vector2>()
а также
б) GetComponent<Zalupa>()
Короче, а возвращает Vector2, а б) Zalupa
> Зато без всякого говна типа Many GC Spikes, Memory Alloc + Huge Overheads и 14.6ms per frame
Нутк есть микрокорутины и юнитаск с которыми таких проблем нет
Generic
Судя по всратому названию метода, все таки еще мидл.
VS
float fromFloat = (float)(object) from;
Kek уже занят
>Только джуны уже не нужны бизнесу
Все кто хотел вкатиться давно вкатились, остались дегенеративные зумерки которых я бы даже в макдак не взял работать.
А как дело сейчас обстоит с покупкой ассетов из РФ? Если никак то где их можно скачать? Кто какие места знает?
Если принципиально купить, а не спиратить - то масса сервисов, где за тебя люди с иностранных карт покупают, а ты им оплачиваешь с процентами на российскую карту. На Авито смотри. Если совсем богатый - то оформи казахскую или армянскую карту и покупай сам что хочешь.
Кстати, кто-нибудь делал стриминг рабочего стола ПК например на смартфон?
Я видел в ассет сторе, но цена меня мягко сказано огорчила.
Или может гайды какие есть как такое с нуля сделать? Я только понимаю что нужно 2 приложения, одно выступающее сервером и запущенное на ПК, а другое клиентом и запущенное на смартфоне.
Также я видел один интересный потому что бесплатный ассет ( https://nexplayersdk.com ) позволяющий воспроизводить на почти любом объекте выбранный видеоролик или даже видео с ютуба, стим с твича и т.д. Но я вообще не понимаю как захватить рабочий стол и самое главное передавать команды мыши и клавиатуры.
гугли OBS API - оно открытое. ну или в сурсы можешь залезть
готового под него тоже полно в апсторе (вьюверов)
Посмотрел. Пока выглядит очень сложно и непонятно, тонны кода на C и C++. Нахуй такое.
Думаю буду использовать RDP клиент - Sharp RDP, Free RDP или встроенный от майков если заработает конечно. Пока я не совсем понимаю куда и как мне полученные данные выгружать.
Я вот запилил дебагер https://pastebin.com/hp0CvU87. Результат на гифке
update() {
GUIDebug.I.Print("hehe1", "LOL");
GUIDebug.I.Print("hehe2", Time.time.ToString());
GUIDebug.I.Print("hehe3", Time.deltaTime.ToString());
}
Решил я сделать возможность плавного изменения значения с А до Б за определенное время, используя функцию Whatever.Lerp().
А и Б могут быть разных типов, например, если они Vector3, то должен быть задействован Vectror3.Lerp, если они float-ы, то Mathf.Lerp, и т.п.
Короче, типов несколько, а различие между ними только в расчете Lerp, поэтому если и должен быть дубликат, то только в функции расчета значения на текущий момент времени.
В итоге родил такое решение https://pastebin.com/Rbe6zcUf
В полевых условиях (пикрил) работает заебись.
Теперь я смогу джуном устроится?
1. Напрашивается паттерн FluentBuilder
2. Не ясно что внутри Lerp - оно дергает Time.time что ли? Если да, то я бы лично так не делал - а если я хочу сделать его непривязанным или поивязанным к таймскейлу для анимации в ui?
3. Нету возможности проверить, закончилось ли оно. А надо.
Ну а так ваще для подобного есть дотвин
что он (должен) делать:
follower следует за leader, копируя все перемещения но медленнее в зависимости от fraction
в тепличных условиях работает как надо, но когда допустим загружаю сцену в которой leader перемещается то начинается грязь, позиция follower совершенно не там где ожидал.
потому что дир присваивается неправильное значение и судя по всему предыдщуй позиции тоже.
Короче все хуйня - RDP оказывается даже 60 фпс не выдает. Какой пиздец...
Буду свое пилить, по UDP, а то и по вообще своему протоколу поверху IPv4 (потому что ждать ответа с другого конца после каждого пакета по TCP это совсем бред какой-то).
Буду стримить экран через SharpAvi, потом кодировать через MJpeg или через Mpeg4, потом шифровать через AES и отправлять на другую сторон. Проблему с кейфреймами решу просто посылая сразу 5 одинаковых фреймов один за другим, посмотрю короче.
Если на стороне сервера чисто виндовая приложуха, то на стороне клиента напишу прямо на юнити по сути там только дешифровшик, TCP клиент для общения (хотя скорее всего там не TCP будет, а тот же самопильный протокол) и набор из нескольки команд:
1. Отправить пароль в зашифрованном виде.
2. Получить ответ что все ок.
3. Получить ошибку с причиной что не ок.
4. Каждую секунду сигнализировать что клиент не сдох.
Ты че епта в своих 20 строчках разобраться не можешь? дядя? тебе не стыдно нахуй?
Хочу сделать виртуальный дом (хотя тут скорее подойдет слово космическая станция или замок) здорового человека в котором можно кастомизировать вообще все и вся (вплоть до материалов стен и цвета мебели) который ты будешь сам строить из ассетов в рантайме, а также пользоваться виртуальным рабочем столом ПК и в идеале чтобы весь этот "дом" работал на железе шлема виртуальной реальности. По крайней мере я надеюсь что получится так сделать - все же железо шлема не идет ни в какое сравнение с полноценной видеокартой и процом на ПК.
Потому что те решения которые в данный момент есть выглядят как какие-то демки.
Я предварительно почекал какие есть "бесплатные" ассеты - 95% покроют готовые ассеты, самое сложное это как раз удаленный рабочий стол сделать потому что пока что планирую ограничится просто строительством.
Распространять буду через бусти по подписке.
Спрошу в рамках кирильства.
А какие-то сетевые игры вы пилили на юнити? Такие чтобы с централизованными серверами. Сколько это примерно будет стоить в месяц? Понятно, что зависит от нагрузки, но хотя бы примерно.
Зависит от игры, архитектуры и кучи всего.
Есть рабочих 2 игры в данный момент.
1 Это мобилко донатная игрулька, арендую сервачок за 2к, на нём запущена сервер билд игры.
2 Это мини рпг ммо с донатом тоже, для него по аналогии но уже за 5к.
Разработка игр делалась так - Делаешь игру, и потом для неё же компилишь сервер билд, можно сразу под винду если лень трахаться с линуксом. Платежи либо через гугл делаешь + апи от юников, либо же если хочешь сэкономить и вообще траблы с выводом + сторонняя платёжка, их куча.
В общем сложность игры, это само создание + от типа игры ебля с оптимизаций и синхронизацией, т.к нужно решить как ты планируешь держать игроков. Далее покурив немного гайдов билдишь сервер билд и арендуешь любой сервер, хоть дома.
Это актуально только для выделенного, если хочется локалки или пертупир то надо реле и комнаты от любого апи из коробки.
Короче лучше всего напиши что за игру ты хочешь сделать в вакуме и там уже подкину решения и затраты. В сухом остатке это минималка от 1к до 10к в месяц.
> Такие чтобы с централизованными серверами
Не нужно
https://playfab.com/
https://www.photonengine.com/
Сейчас бы ставить свой бизнес в зависимость от стороннего облака, которое может закрыться по щелчку пальцев.
А на чем делал?
И сервер билд это как, типо саму игру на юнити билдишь так чтобы не игра запускалась а в виде сервера???
Это кажется что хорошее решение, но в реале адский гемор и постоянные траты на любой пук.
С таким же успехом Юнити может закрыться по щелчку пальцев. Нужно срочно пилить свой движок!
>>868083
> но в реале адский гемор
В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет. А вот если бы я создавал свой бекенд, свою сеть, тогда представляю какой пиздец бы меня ждал. Скорее всего я бы тогда вообще игру не запустил.
>С таким же успехом Юнити может закрыться по щелчку пальцев.
Может, и даже лицензию может отозвать. поэтому нормально пользоваться опен сорс дивжками. Но тут все проще - хотя бы пиратку сможешь скачать, а если облако отключат, то все. И что дальше, будешь переписывать сетевой код с нуля.
>В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет.
Конечно нет, ты же мамкин фантазёр безигорник, еще бы у тебя были проблемы.
>В моём реале с онлайном 20 тысяч и ежедневным DAU несколько сотен тысяч что-то адского гемора нет.
А это твой пост выше про 10к? Деревянных я надеюсь. Если так то это очень оптимистично и дешёво.
Я так то вроде понимаю как на пальцах закодить неткод с предикшеном и откатом, но вот чо т не могу поверить что все эти сторонние SDK настолько гибкие.
Вот у нас есть несколько сцен, вот экземпляр персонажа на каждой из них который находится в начале сцены(точка А) и переход на другую сцену(точка В). Персонаж переходит в сцену2 и оказывается в начале сцены 2(точка А сцены2).
Как реализовать что бы при переходе обратно на сцену 1 персонаж оказывался в точке В а не в начале сцены?
Я так понимаю что надо как то ебаться с ДонДейстройОнЛоад
> А это твой пост выше про 10к?
Нет. У меня на фотон и плейфаб уходит тысяч 6 долларов. Зависит от месяца.
Нет смысла вкладывать силы в написание своей сети и своего бекенда на начальном этапе. Если игра взлетит и будет целесообразно перейти на свои решения - тогда ок. Хотя я знаю неудачный опыт чуваков, которые по 600 тысяч $ в лучшие месяцы зарабатывали. У них была целая команда для разработки сети, но в результате они перешли на обычный Photon Server.
Создатели War Robots вроде смогли таки уйти полностью с Photon, но, бля, они и зарабатывали ежемесячно больше миллиона долларов. У них огромная команда.
>надо как то ебаться с ДонДейстройОнЛоад
Лучше со скриптабл обжектс. Изейшее решение.
https://www.youtube.com/watch?v=BFYRUDk6TDs
Ответ очевиден - у тебя должна быть более общая игровая сцена, которая не исчезает.
Тем не менее людям нравится.
На твг даже кубам бы проебала
Я считаю, что движок надо учить так:
Смотришь тутор по интерфейсу, покупаешь плеймейкер в ассет сторе, ставишь себе цель - сделать флэппи бёрд.
И не смотришь типов из интернета, которые за один ролик делают флэппи бёрд, а сам ставишь себе маленькие задачи: "заставить птицу падать" и вот гуглишь. Учишься на собственных ошибках, лучше запоминаются штуки до которых ты сам дошел.
Делаешь игры, закидываешь на итч, копишь портфолио, хвастаешь им перед работодателями, получаешь отказы, продолжаешь копить порфтолио. В какой-то момент порфтолио станет до того солидным что начнет приносить достаточный доход для жизни, и вот получается ты сам работу и создал.
Ебать где ты это выкопал
Мда. Даже смотреть на это больно.
Он же через полгода не вспомнит что за что отвечает если что подправить надо будет. Я бы лично сделал бы класс и туда все это говно бы запихнул и потом бы просто вызывал нужные свойства.
Что такое котёл?
>>868930
Мидлы тут? Подскажите что тут можно исправить? В первом случае я даже хз че делать, если ему реально столько переменных нужно чтобы формулу расчитать. Декаплить от гейменеджера по-любому как-то надо, это сразу читабельность повысить в разы. Даже если надо 100500 переменных передавать в каждую функцию, если они все с семантическим названием будут, уже пизже будет. Но как еще улучшить хз.
>>868930
Тут опять же декаплинг, чтобы кликбай не ссылался на this, а получал параметром айдиешчку, ну и для разных функций и их айдишников я бы наверное хэш-мапу сделал.
Что-нибудь реактивное или обсерверное подтянуть и оно само по текстовому конфигу будет составлять формулы. За день делается.
В юнити вопросы где к примеру для расчета баффа или какой либо формулы нужно 10050 переменных делается просто.
Это дело разбивается по паре скриптов, которые обслуживают определенные области формулы, и в конце результат от каждой из них присылается в главный менеджер.
Тут может помочь только смена профессии. Потому что автор вроде достаточно долго занимается программированием, но до сих пор является соседом спанчбоба. Тут не по Сеньке шапка явно. Это настолько позорище, что срать захотелось даже.
Если по теме, то в самом начале уже 1.2.3.4 это уже должны обрабатывать последовательно 3 класса, 4 выносится в отдельный метод. Вся остальная формула разбивается на классы, там штук 10 судя по всему. Они тупо последовательно считают, но можно и декоратор ебануть.
Надеюсь это декомпилятор что-то вменяемое так распидрил.
Выше этого полотна можно использовать ссылки на скрипты и переменные, приведя таким образом даже такое в читаемое и удобное состояние.
> Ивенты
Использовать C# ивенты в классах низкого уровня такое себе. Лучше просто обсервера кинуть. Какой-нибудь IPlayerObserver с нужными методами. И потом внутри его вызывать:
_observer?.OnTakeDamage(value);
Вообще то это он тебя вывел, вебмакака.
>в геймдеве часто имеет смысл сохранять в агенте ссылку на менеджер, чтобы не дергать все эти хипстерские сервис локаторы
Чо это за хуйня?
Вы думаете сервис-локаторы - это когда .GetService каждый тик вызывается? Зависимость прокинется один раз при создании агента. Всё. Чем это отличается от кэширования, блядь, какое нахуй кэширование. Сука мне жопу разорвало, чел просто сохраняет ссылку в переменную и называет это "кэшем".
Просто охуеваю с вас чертей.
>Мидлы тут? Подскажите что тут можно исправить?
Список модификаторов. Представь как у тебя скорость атаки в РПГ считается - там есть массив бафов от оружия, спелов, и они в определённом порядке применяются к базовому значению.
В зависимости от контекста можно рассмотреть событийную модель, когда значение будет пересчитывается только изменяется один из компонентов.
https://github.com/CyberAgentGameEntertainment/NovaShader
https://github.com/snozbot/fungus
https://github.com/EsProgram/InkPainter
https://github.com/keijiro/StableFluids
https://github.com/artnas/Unity-Plane-Mesh-Splitter
https://github.com/CiaccoDavide/Unity-UI-Polygon
https://github.com/mob-sakai/ParticleEffectForUGUI
https://github.com/ErnSur/UI-Toolkit-Plus
https://github.com/naelstrof/UnityJigglePhysics
https://github.com/keenanwoodall/Deform
https://github.com/ElasticSea/unity-fracture
https://github.com/OskarSigvardsson/unity-delaunay
Схоронил, спасиб.
Вот кстати чё так мало игр где можно ломать всё, крушить, это же пиздец как стимулирует обезьяний мозг.
Так поебать на телефоний, на компах такого тоже нема! Едиснтвенно что вспоминаю это Red Faction
Мен фо вор, гейтс оф хелл. В какой еще игре можно сорвать башню танка с погона превратив танк в кабриолет?
teardown ещё, но это воксельный калич и вроде как только с 1 механикой - это разрушение и всё
>Ни то, я имел ввиду чтобы механика крутилась вокруг разрушения энвайронмента, а не чтобы танчики тупо взрывались.
Дык там тоже этого хватает - постройки, заборы и прочие укрытия разрушаются, ландшафт деформируется (образуются воронки, валятся деревья и все в таком духе).
Промазал тредом. Извиняюсь.
Номер лицензии вшивается в билд. Но в целом
> всем насрать
Не знаю были ли вообще прецеденты, когда за это кого-нибудь выебли. Они больше денег въебут на суд. А если ты заработал на игре нормальные деньги, тебе уже проще купить лицензию.
Если ты из РФ то можешь смело делать на пиратской.
1680x1050, 0:57
кстати нет ли у кого интересных текстов на тему погодных симуляций?
*Много ли чего можно сделать
Окей, зачёт, просто я именно имел ввиду чтобы весь геймплей крутился вокруг разрушений. Тут это скорее как приятный бонус, ты всё-таки концентрируешься на тактиконе и позиционировании войск. А разрушаемый энвайронмент просто учитываешь при этом.
Кстати да. Какой вообще в этом смысл? Даже тёмная тема уже давно бесплатная.
это все так збс только в пустой сцене выглядит а на деле индюки не могут шАААкалы не хотят
Берешь тупа либу (качаешь с нугета) под .netframework или .netstandard и закидываешь в проект. Должно работать
Дополню, закидываешь прям в папку Assets, это должно вызвать ребилд в юньке (или руками ребилдни, если не случилось)
И всего то 6 строчек кода.
А я когла гуглил готовое решение - там такие каши попадались.
Вот почему если я что-то и беру стороннее, то только довольно мощное, где работали несколько человек в течении долгого времени и до сих пор обновляют.
А изобрести свой велосипед это нормально, ведь тебе не надо разбираться в чужом коде, дабы что внести/поправить.
Ну тут вообще как повезет.
Например, взял готовый сторонний ассет, сэкономил пару дней, и все хорошо, но только если босс не скажет, так, а давай сделаем еще вот такое. А "вот такое" это стороннее не поддерживает. И теперь тебе надо изучить архитектуру этой либы, и писать там что-то свое.
Да
> Мне нужно наследоваться от этого базового ScriptableObject?
Да, почему нет. Пример на пике.
Ещё тебе лучше хранить айдишники строк, вместо самих строк. Это нужно для локализации и для удобной вычитки текста.
Однажды ты вместо var будешь писать float/int/string и при этом не испытывать каких либо внутренних противоречий. Так ты поймешь, что познал дзен программирования
а public вместо [serializefield] private??
Однажды ты вместо var будешь писать var name : float/int/string, вот тогда действительно поймешь.
5$ доллоров в час?
ну это неплохо.
ну вот смотри.
5 долларов это 377 рублей.
Рабочих часов в месяце 126 ч, значит, этот чел заработает
126*377 = 47502 рубля в месяц.
В год - 570 024.
За два года он станет миллионером!
зато не бесплатно.
это немного мотивирует делать.
потом будет 20. потом 50. но это неважно.
какаая разница сколько заплатят. получить деньги за любимое дело - приятно, неважно какая сумма
Ошибаешься. Как раз всегда чем меньше оплата, тем больше ебут. Вот кого, по твоему, сильнее ебут, уборщика в маке или топ менеджера?
ГДЕ ВЗЯТЬ МОДЕЛИ РОССИЙСКИХ ДОМОВ ДЛЯ ЮНИТИ?
Switch case кринж
А вот
var a = jopa switch
{
q =>
w =>
e =>
}
база
> Если вот у меня например есть 100 разных пушек с разными типами атаки, которые нужно прописывать в коде. Как будет более правильно? Юзать Enum и ScriptableObject со switch кейсами?
Скорее всего каждый тип атаки должен быть своим классом, в него каким-то образом должны прокинуться зависимости на инициализации, и у него должен быть метод атаки.
Дальше зависит от твой игры, можно в коде это сделать адекватно, либо делать атаки скриптабл обжектами и закидывать скриптабл обжект оружия.
В коде это можно делать например так
RegsiterAttackType(WeaponType, IAttackType)
Вместо класса IAttackType может быть фабрика если тебе надо чтобы инстанс был разным для разных юзеров
И потом сделать валидацию, что на все типы атаки зареган класс.
> IAttackType
Думаю, правильнее будет IAttackStrategy. А твой вариант больше для enum подходит в плане именования.
Лично я сделал бы как быстрее и проще, а именно не ебя мозг свитчем. Поменьше слушай пиздаболов.
Деанон?
А с чего Юнитеки должны ответственность нести? Это ты будешь спрашивать с продавца. В случае чего ты сможешь подтвердить, что купил ассеты, далее тебе их нужно будет заменить.
А деньги ты кому переводишь?
Думаю тут не так все просто. яндекс такси насколько я помню выебали за такие штуки, когда они брали деньги, но пытались сделать вид что не отвечают ни за что, а просто знакомят пассажиров с водителями.
Хуёво ты думаешь. Если у тебя в банке спиздят деньги, то банк не будет тебе ничего выплачивать, понимаешь? Тебе нужно будет в суд обратиться, чтобы поймать мошенника и уже с него взыскать деньги.
Так же и здесь. Сначала владельцы авторских прав могут засудить тебя и взыскать с тебя n-ю сумму. Далее ты подаёшь заявление на автора ассета, так как он ввёл тебя в заблуждение и взыскиваешь уже с него n-ю сумму. Юнити по сути тоже как потерпевший будет.
Если у банка спиздят мои хрянящиеся деньги (ну реально взломают хранилище и вынесут), то еще как выплатят
> ну реально взломают хранилище и вынесут
Какое нахуй хранилище? Если ты в ячейку положишь деньги или драгоценности и их спиздят, то тебя нахуй пошлют. Будешь через мусоров искать вора и с него требовать деньги.
Ну смотри наглядно: ты кладешь деньги в банкомате на карту, при тебе этот банкомат выносят грабители, ты идешь в соседний банкомат и снимаешь ту же сумму что положил. Проблемы?
Никто ничего не будет тебе расширять, в России решения судов иностранных государств не признаются, а пиратство ИС недружственных стран неформально даже приветствуется, а формально находится пока в серой зоне.
Ну смотри наглядно: у тебя со счетов твоего банка спиздили 10 миллионов рублей. Кто их тебе вернёт?
Так то в 2021году был скандал, когда через ассет сторе продавали рипнутые из других игр модельки. Конечно после тем на форуме и реддите это все поудаляли, но всем было похер.
https://forum.unity.com/threads/list-of-ripped-models-stolen-models-on-the-asset-store.1163021/
https://www.youtube.com/watch?v=_SlxfspF96I
Всё возместят, три раза, и еще за моральный ущерб миллион дадут
https://www.banki.ru/blog/malyhin/10618.php
Нужно следить за тем, что ты покупаешь в ассетсторах. Да даже банально фрилансеры могут наебать, подсунув какой-нибудь закопирайченый контенте.
>Да даже банально фрилансеры могут наебать,
У меня еще веселее есть история. Я придумал главного персонажа для игры, и прорабатывал эскизы.
А потом я случшайно наткнулся на старую игру, и понял, что это персонаж оттуда, просто я играл 10 лет назад и забыл, а потом подумал что я его придумал.
> и Юнитеки, и ты - будете потерпевшей стороной.
> банк становится потерпевшей стороной и он вам при этом нихуя не должен
признание потерпевшим по уголовному делу не освобождает от обязанностей, которые возникают у банка в гражданско-правовой области. Вопрос заключается в том, какие обязательства на себя взял банк, а не кто там где-то потерпевший.
Юнитеки в данном случае скупщики краденого, то есть соучастником.
1. Иногда сайт юнити просто висит и там ничего не работает, у меня такое было с asset store. Это не связано с санкциями и блокировками
2. Используй другой VPN (Psiphon, например)
Спасибо за совет !
Нормальный код ДО рефакторинга, когда отрабатываются какие-то геймдизайн концепции. Потом можно будет и по отдельным методам распихать и от мэджикнамберс избавиться.
Мне тысяча километров до Крыма и иногда по пол-дня вместо окошка логина или ассет стора белое окно, как на скрине, так что это не всегда связано.
Назови его Грогор
У меня много моделей у которых автоматически UV2 генерируется. Но лайтмапы все равно хорошо пекутся. Только вот после запекания одних и тех же моделей но в разных сценах возникают проблемы. На старой сцене UV будето бы съезжает в сторону и появляется всякая гадость на краях развертки.
Да, при запекании каждой сцены meta файлы ассетов меняются, там значение padding каждый раз новое.
Как фиксить?
1. нажать extract textures, если текстуры внутри fbx (а так fbx умеет? я не помню)
2. если они не внутри fbx, то импортировать их в юнити
Дайте годный туториал по стримингу.
>1. нажать extract textures, если текстуры внутри fbx (а так fbx умеет? я не помню)
Кнопка неактивна, либо не умеет, либо их нет в данном файле.
>2. если они не внутри fbx, то импортировать их в юнити
А как? Я закинул их в один каталог с материалами, в один каталог с моделью - ничего не изменилось.
В итоге в редакторе в проекте фпс просел со 100 до 60. Пару раз запускал на старом диске, сохраненный на новом диске проект. Там все также выдает 100фпс стабильно. На новом - 60. Переставил юхаб и сам юнити - нихуя не изменилось.
Гоню на новый юнити хаб. Старый двадцатого года, который на старом диске стоял, сейчас скачать не дают. Думаю в нем причина. Пиздец, как неприятно.
у тебя шиза
юнити хаб вообще можешь удалить, это просто список проектов и версий редактора
скорей всего, у тебя vsync включен
Нашел VSync Count в Project Settings > Quality > Other
Переключил его с Every V Blank на Dont Synk - фпс не изменился
Это оно?
Там же нашел параметр Anti Aliasing и сделал ему Disabled - фпс сразу вырос до 150. Это немного радует, но не знаю можно ли так делать, с учетом, что у меня карточная игра с картинками целиком в UI. Не будет ли проблемсов потом?
ЗЫ.
Погуглил немного. Я прав в информации, которой я нарыл?: Неизменным считается параметр vertical field of view, то есть, на мониторах всех разрешений высота игрового мира будет одинаковый. А вот horizontal всегда будет разный, в зависимости от aspect. То есть на ultra wide он может достигать хоть 180 градусов
Если про визуал скриптинг то нет не стоит, нужно откинуть все визуальное говно типо нодов или листов событий как в констракте и сразу хардкорить с сишарпой. Иначе просто несколько лет потратишь и все равно к скриптингу придешь, потому что самое сложное это не представления и синтаксис, а сами алгоритмы, а они везде одинаковые. Качай райдер и учи, чем сложнее будет, тем быстрее научишься. Главное много повторять
Такой же точно основной диск с системой и драйверами, но новый. На обоих работает система. Я их менял физически в ноуте и проверял один и тот же проект на обоих по очереди.
И версия юнити одна и та же? И драйвера видеокарты, например. И тот же рендеринг бэкенд. И такой же уровень загрузки процессора и видеокарты?
Стоит все также, но VSync уже без галочки. Если ее включить, то фпс проседает с 60 до 55-57.
Вообще в Project Settings > Quality > Other достаточно много параметров (тени например мне совсем не нужны - у меня имитация теней спрайтами). Попробую с ними поиграть, хотя отключение сглаживания уже подняло фпс сразу почти на 100 единиц. Но надо еще поковырять
В любом случае спасибо, более-менее понял куда копать
Да все такое же. Единственная разница - на новом диске меня принудили поставить новый ЮХаб и в нем сразу последнюю стабильную версию юнити. Хотя потом я в этот хаб уже поставил нужную мне версию и на ней запускал один и тот же проект, перекидывая его флешкой с диска на диск и меняя диски в ноуте физически для сравнения.
Если проблема не в хабе, то скорее всего они в самой юнити где-то выставили или сняли, какую-то галочку. Т.к. на старом ноуте я нужную версию не скачивал, а в свое время год назад где-то обновлялся до нее с более древней версии. То эта галочка могла там встать автоматом, перекинув настройки, с древней версии. В новой же версии я скачал их предустановки. Думаю, проблема в этом.
>И такой же уровень загрузки процессора и видеокарты?
Это не сравнивал, т.к. установщик винды и драйвера с одной флешки и все вроде как встало нормально.
До этого наебался с заменой самого диска в ноуте - купил в Озоне, походу восстановленный (и с виду не очень новый), долго пытался его разбить на локальные диски - но ничего не получалось. В итоге оформил возврат и в итоге купил диск в ДНС, на который все поставилось сразу. Проебал с этим озоном кучу времени просто в никуда, так что пока лезть в дебри не буду, вроде как решение найдено, буду копать в том направлении
Ладно я, у меня комп мощбный i5 9400f 1660super, а вот на какой нибудь бомжатской коробке у чела просело бы до 10 fps, и он бы обосрал меня в отзывах.
Оно вам надо?
Вот и не ставьте эту галочк.
Также ориентируюсь на фпс во время разработки, и было пару случаев когда из-за алгоритма поиска и отображения проседало фпс с 300 до 100 и ниже, сразу чекал этого и фиксил, так-бы не заметил, работало всё как часы.
При нажатии на кнопку такой-то объект должен появляться или исчезать. Ко кнопке привязал скрипт, но ничего не работает. Помохитэ.
собственно сам скрипт
выдели кнопку в сцене или в списке слева, в компоненте Button если его нет то добавь этот компонент этого объекта(кнопка) там еще плюсик нажми добавить объект и в появившемся окне переключись на вкладку сцена (вторая из двух), затем найди там и выдели сам этот же объект. окошко с выбором закроется.
потом чуть правее там же (где плюсик, справа) - строка, нажми на нее выползет списочек, найдешь в нем свой скрипт(который уже должен обязательно висеть на этой же кнопке) и дальше нажав на него найдешь нужный метод ButtonCliked (), который и выделишь.
теперь при нажатии на кнопку будет срабатывать твой метод, ты правильно сделал его паблик иначе он не будет показан
собственно у тебя на втором пике, во втором окошке должен стоять вызываемый метод ButtonCliked (), а не имя скрипта со () хз как ты вообще засунул его туда
Спасибо!
Делаю систему переходов между сценами.
Как реализовал: переход между сценами инстансит из префаба GameObject GatesTeleporter (DontDestroyOnLoad) который в зависимости от true или false перенесет персонажа либо туда либо сюда и дейстройнется на следующем кадре.
Возможно система черезжопная, но пусть будет так.
Проблема: нужно что бы галку true либо false в GatesTeleporterScript вешал сам переход , но он, по непонятной мне причине, вешает эту галку не на свежесозданный объект а сам префаб.
Как фиксить?
Инстансит объект с настройками координат и углов поворота .
Думол-думол-не придумол.
Подскажи. С меня котик
Котик попытался убежать, но я его поймал
нейродегенеративное заболевание добралось до создателей мобильного движка
https://create.unity.com/ai-beta
Дак если бы он был отключен, то на всех скринах одинаково было бы. Но я тыкал и отдельно запекал, цифры те же. Там вообще странно, даже если просто камеру вниз увести, чтобы объектов не было видно, и наклонять - такая же хрень. Смотришь вниз, там пустота, он миллионы рисует и тормозит
1050ти
Сука, юнитя заебало, я хотел игруху изометрическую сделать, камеру наклоняю, хуяк в два раза фэпэсы падают, что это вообще за хуйня? Уверен нигде такой хуйни нету
А ты не наклоняй и всё. Движком нужно умело пользоваться, не выебывайся с наклонами всякими.
Ну так ты хоть посмотри что у тебя на экране написано, стату включил, а сам и не читаешь. CPU 37ms
Значит на видекарту ваще пох, причем тут твоя 1050ти? Игра цпу баунд.
Что это значит? Это значит, что надо открыть профайлер и посмотреть что там такое творится. Подсказка - "saved by batching:0". Думай.
>CPU
7700к
Ты можешь сказать какую галочку нажать, чтобы когда камера вниз смотрит не было пиздеца или нет? Я что должен быть экспертом в этих рендерах, нахуй мне это говно
> CPU 37ms
Это когда все сферы видно, нахуй ты мне про это вообще, жопой читаешь что ли. Там и должно лагать потому что 36кк. Я про первые три скрина говорю
Бляя. В материале gpu instancing вруби хотя бы и уже лучше станет.
> Я что должен быть экспертом в этих рендерах
Ну как экспертом, на ютубе видос на 15 минут глянуть, потом погуглить минут 10 что не понятно, потом еще видос на минут 10 и все, ты достаточно эксперт для этого
> нахуй мне это говно
Ну это уж к тебе вопрос, если ты хочешь графон выжимать то хотя бы базу должен знать, или быть готов узнать, иначе ниче не получится
> Там и должно лагать потому что 36кк. Я про первые три скрина говорю
Сынище, ты видишь что видюха это все переваривает не заметив и имеет во всех случаях время кадра 3мс?
Т.е. если бы процессор не делал какую-то подозрительную работу(выше уже написал как поправить), у тебя бы было 333 фпс вне зависимости от поворота камеры, видюхе ваще пох на твои сферы, наваливай еще, она даже не заметит.
>>872055
>>872131
Нет, короче нашел причину. Такая хуйня шо я того рот ебал. Чтобы вы думали? А? А? !? Это короче солнышко ебучее. Можно камеру не вращать, а солнце вращать и такая же хрень происходит. Когда направления совпадают, тогда максимум миллионов. Вот и думайте, вот и покумекайте, сынишки, это вам не там, юнити вас быстро на колени поставит и фпс заберет
На стене этой повторяющейся комнаты будет издевающаяся надпись "ЭТО НЕ ТА ЖЕ САМАЯ КОМНАТА, ПРОСТО ИДИ ВПЕРЕД". Но он никогда не дойдет, лол.
Однако, если чел из комнаты пойдет назад, он попадает на предыдущуй уровень, который он прошел.
Знаете какое решение? занести в эту повторяющуся комнату какой-нибудь предмет из того предыдущего уровня, чтобы надпись "ЭТО НЕ ТА ЖЕ САМАЯ КОМНАТА, ПРОСТО ИДИ ВПЕРЕД" стала ложной, ведь теперь, если игрока запорталить снова, он по идее не должен увидеть тот предмет, раз это "другая комната"
Короче мою игру никто не пройдет, да и похуй
зы, если интересно, могу еще про какую-нибудь головоломку рассказать и показать, я таких штук 14 придумал, реализовал пока 6
Прикольно
Очень интересно! Делай тред со своей игрой, обязательно подпишусь, и стану тестером, люблю такие игры.
В найденном гайде объяснялось что PlayerPrefs.SetInt записывает полученную переменную, но что бы ее сохранить надо дополнительно использовать PlayerPrefs.Save.
На основе этих знаний сделал так:
На Start методом PlayerPrefs.getInt устанавливается переменная State. Если State==1 сразу запускается метод Die()
при убийстве врага Die() переменная State меняется на 1. State скармливается PlayerPrefs.SettInt.
PlayerPrefs.Save повесил на событие которое дергается когда персонаж проходит чекпойнт.
Однако при повторной загрузке уровня, без дергания чекпойнта ранее убитые враги все равно имеют сохраненный State ==1 хотя PlayerPrefs.Save не использовался.
Вопрос:
Я неправильно понял гайд и SetInt все равно сохраняет переменную без PlayerPrefs.Save? Зачем тогда вообще PlayerPrefs.Save?
Я все понял правильно но где то проебался в коде?
А ты уверен, что PlayerPrefs.Save вообще вызывается? Проверь дебаг консолью. И проверь, какое значение туда сохраняется.
Вообще советую сделать по уму, и создать менджер который держит в себе списки всех мобов. Далее во время сохранения/загрузки чекаются и списки и спавнятся те которые живые. Можно хранить это дело тупо одной стринг строкой.
Save сохраняет в момент вызова Save, но при выходе из игры также происходит сохранение переменных.
Чел, ты в плеер префс сохранил 1, если ты после этого не перезаписывал значение на другое, он у тебя и остался равным 1 после перезапуска приложения. Судя по твоему коду, ты не перезаписывал ничего, а просто выдергиваешьс свою единицу из памяти раз за разом.
>PlayerPrefs.Save.html
Никогда не используйте юнитивское ванильное сохранение в реестр, это полное дерьмо как по функционалу и работе с данными, это худшее решение на ровне с тем чтобы просто давать код игроку который он бы сам вписывал.
Есть куча стандартных вариантов записи сохранения в файл и чтение из, и делаются они в 2 клика.
1280x720, 0:30
https://assetstore.unity.com/packages/tools/ai/gpt-ai-integration-243729
>$25
Дорого нынче услуги по передвижению кубов стоят. Проще нанять за эти деньги индуса который сделает тебе игру с гораздо лучшим соответствием запросу.
Посчитай кол-во спрайтов, врагов боссов, их анимации, найди аниматора соответствующего уровня, посмотри ценник и умножь.
Я просто хочу понять, как так получается, что Plants vs. Zombies стоила всего 100К, а капхед 2,5КК. Разница в 25 раз!
главное правило работы с юнити, как можно меньше соприкасаться с их АПИ и тогда многих проблем можно избежать. Надо воспринимать юнити как систему управления граф. ассетами и билд систему и не более.
Ну так ты сравни анимации лол
И даже на саму разработку механик и баланс такой игры как кап хед надо куда больше ресурсов
Кстати 100к это чет совсем мало, наверное маркетинг не учитывается, или его почти не было
А какие есть примеры реальных более-менее серьезных проектов на годоте? Мне просто показалось на первый взгляд, что он какой-то больше для обучения, чем для реальной разработки
gamemaker
Если тебе Allegro было достаточно, то уж для 2д ртс точно хватит.
На годоте хоть сколько то масштабную 2д ртс невозможно написать без переписывания самого годота.
Unity + LeoEcs/Morpeh/Dots - и по производительности и эффективности разработки выебет все популярные движки в нулину.
Оптимизация - это баззворд.
Что конкретно под оптимизацией ты хочешь подразуметь?
> Хочеца чтобы и на утюге играли
Если в игре есть физон, то как ты там ентити с системами не оптимизируй, если проц говно - физон будет считаться долго и дропать общий ФПС до 15 даже на топовой РТХ печи 4090.
Мне не нравится тенденция когда спрайтовые платформеры требуют 3гига оперативы и 512мб видеокарты. Это как у ГТА4 требования
Тенденция вполне рыночная. Рыночек порешал утюги с калькуляторами.
О, а там может быть еще старая версия ecs под предыдущей лицензией, до того как он удалил репу
Выглядит как рандомная хуйня которая сломается на продакшене у 99% юзеров.
Единственное рабочее - это ДОТС и тот в непонятном стейте. Но хотя бы рабочий. А вы какие-то нахуй никому не нужные репы с 10 звёздами находите.
>Пчел, попробуй читать и осозновать прочитанное.
Чо там осознавать, вы же в говне копаетесь. Не удивлён что у вас всё всегда ломается.
Игра 2д, и все данных хранятся на созданных объектах пустышках на которых висят скрипты.
Вопрос, на сколько пагубное влияет около десятка тысяч пустых объектов со скриптами на сцена для производительности? Больше вопрос относится к мобилко гейменгу, вроде как фпс не просаживается, но интересует не нагружает ли так сильно цпу эти самые объекты? В них нет апдейт методов или чего такого, это просто данные.
бамп
>пару сотен объектов с логикой, которые связаны ниточками из ссылок друг на друга в виде дерева
кринж
>не нагружает ли
https://docs.unity3d.com/Manual/Profiler.html
Вот этот все правильно сказал >>872839
Но я еще добавлю:
> и у меня на сцене пару сотен объектов с логикой, которые связаны ниточками из ссылок друг на друга в виде дерева
Скорее всего это было бы удобнее в коде делать.
> так-же в игре у меня создается большое количество игровых объектов в виде архитектуры и хранения данных.
Скорее всего им не обязательно быть монобехами ваще.
> Вопрос, на сколько пагубное влияет около десятка тысяч пустых объектов со скриптами на сцена для производительности? Больше вопрос относится к мобилко гейменгу, вроде как фпс не просаживается, но интересует не нагружает ли так сильно цпу эти самые объекты?
Не сильно
>но и покупать за 55$ не особо хочу
Ну так воспользуйся полнофункциональной ознакомительной версией и сам уже реши стоит тебе его покупать или продолжить пользоваться полнофункциональной ознакомительной версией нет.
https://www.file-upload.com/ql4vxgp91vs8
Опустить Обхорканных ПидаRustов
я из него пользовался ровно одной функцией, но есть ещё такое
https://github.com/dbrizov/NaughtyAttributes
>>872947
Конечно есть
https://ddownload.com/6m6y81rmp8qq/Rainbow_Folders_2.unitypackage
Обнаружьте уже гугол штоле.
Это не какие-то мои секретные ссылки, это ссылки со всем известных сайтов с полнофункциональными ознакомительными версиями ассетов, которые вы можете попробовать, и если понравится, то купить в ассетсторе конечно же.
Я гуглю в тысячу раз лучше чем ты. Посмотри на вес, ты обосрунькался.
Бывает, учись лучше гуглить
>Я гуглю в тысячу раз лучше чем ты.
Ну так гугли себе ассеты, а не видосы как твою мамку ебут бомжи и срут ей на грудь.
Это юнитек просто слегка подпиздывает. Для самого древнего европейца это норма тащемта.
Вот его же сообщение с форума юнитеков и на его скрине у него версия 2.3.1 весит 1,16 мб.
Следующая версия после этого была как раз 2.4.0 и в ней какие-то мелкие изменения и на 2 файла меньше, так что не могла она в 2 раза в размере увеличиться.
Может это размер после извлечения пакета. Может этот юнитек в ассетсторе к ассету фото своего члена прилагает, а ознакомители фото не стали распространять, а только пакет с ассетов выложили.
Я в душе нее ебу, у меня юните даже не установлено.
Пиздец, помогаешь людям по доброте душевной даже мимо проходя, а они ещё и выёбываются.
Короче не ленись гуглить что-то кроме порнухи с твоей мамкой и бомжами и будет тебе счастье.
Ну ты перец, нашел кому помогать, конечно, и в чем, лалка.
512x512, 0:02
От души душа в душу!
Капец ты быдло агрессивное. Я качал и по ссылке и предыдущие версии, там ошибка, в редакторе папки невидимыми становятся и в package manager не отображается ассет, хуйню какую-то советуешь скачивать
Короче, есть один компонент А.
Ему можно передавать объекты (А.Add(GameOjbect)), и он будет вызывать события, когда с этими передаваемыми объектами кое-что случится.
И вот тут проблема. Например, компонент B добавил несколько объектов, и компонент C, и оба подписались. Но беда в том, что они оба будут получать уведомления. Например, что-то случилось с объектом, который добавил компонент B, но уведомление об этом объекте получит и компонент C.
Поэтому, в B и C надо добавить проверки, что уведомление связяно с их объектом. Короче, проблема в том, что надо как-то разграничить, чтобы не получать уведомления о событиях не своих объектов.
В принципе, это работает, просто как-то странно получилось.
Поэтому я пошел дальше, и в метод Add добавил второй параметр делагат. Например
В B.cs:
A.Add(gameObject, B.Zalupa);
void Zalupa(GameObject g)..
В С.cs:
A.Add(gameObject, С.Her);
void Her(GameObject g)..
В итоге получилось, что вместо подписок будут вызываться эти делигаты. Проблема в разграничением решена.
Короче, в чем я не прав?
Я сейчас думаю, либо так оставить. Либо сделать компонент A префабом и вернуть события. То есть, если компоненту B понадобился А, то я просто создаю префаб, и B подписывается на этот префаб. Если компоненту С понадобился А, то я создаю еще один префаб А, и С подписывается на этот префаб.
В итоге первый префаб А отправляет события только В.
А второй префаб А отправляет события только С.
Вообще, я бы хотел, чтобы А не был ни компонентом, ни префабом, но он должен уметь делать монобешные штуки...
Я бы в идеале хотел так
class B {
void start() {
A a = new A();
a.someEvent.addEventListener(Kok)
a.Add(a);
a.Add(b);
}
void Kok() {}
}
class С {
void start() {
A a = new A();
a.someEvent.addEventListener(Lol)
a.Add(x);
a.Add(y);
}
void Lol() {}
}
Так в юнити чате тебе ж уже подсказали правильно. Тебе не надо ими обоими подписываться, подписываешься только тем чем нужно и все.
Хотя с учетом того что ты тут пишешь, лучше напиши конкретнее чего ты хочешь добиться этими махинациями
1920x980, 0:30
Ну расскажи как, если бы я знал не спрашивал бы
public void Set(SetType);
Просто майки пока ленятся
АХАХХА я помню 2 или 3 года назад почти тоже самое написал и скинул это же видео, сука реально теория мёртвого интернета в действии, у тебя кстати щас какая версия ИИ стоит на борту?
Ты рожден для большего. Нужно перекатить юнититред не с одной буквой, а чтобы прям было написано анриал, внукам будет рассказывать про такой вин
Как же ты подгорел
_controls = new MyControls();
_controls.Player.Enable();
А если в другом скрипте тоже нужно инпут считывать, тоже так же создавать, или как-то из первого скрипта брать?
Как это вообще делать? На данный момент, я жто так представляю:
Пишу программу с игровой логикой на c# и ставлю его на линукс на триал впс, как-то соединяю его через фотон с клиентской игрой на unity. Это так делается, либо есть способы проще?
Дерзкая попрошайка с ничего обосрала просто. Ну ок сученок, я тебя запомнил, буду тебе специально хуевые советы давать.
если делаешь под стим, то посмотри в сторону https://wiki.facepunch.com/steamworks/
я сделал на нем сетевую игру через организацию лобби прямо в стиме без серверов, но сторонние сервера там тоже вроде можно пристраивать, насколько я помню
До переустановки системы проект был собран под Universal Windows Platform
После переустановки системы и юнити, в юнити проект автоматом с какого-то хуя стал под PC, Mac & Linux Standalone
Знаю что можно его перевести назад, но опять же с какого-то хуя он при этом становится на 40% тяжелее
Вопрос: не может ли это как-то влиять на заметное падение ФПС в редакторе?
Ничего ты не даешь, гнида, только спамишь своей тупизной, зачем мне твои вопросы про сам думаешь, я таких как ты советчиков сразу нахуй посылаю, там твое место, гнилой уебок
Забей на этого козла. Лучше силы направь на работу.
По вопросу твоему, лучше всего создавать новый экземпляр импутсистем в каждом скрипте, в котором предполагается его использование. Так получается хороший контроль инпутов. Все гибко.
Сделай InputSystem в виде синглтона (можно обернуть в static class). И спокойно обращайся к нему из любого класса.
Выучил С#, и планирую следующие 8 месяцев (не считая апрель) выпасть из мира и пилить свою первую мобильную порашу. Концепт написал сразу хороший, гача игра с "бесконечным" прогрессом и полем обновлений. Этапы разработки тоже разделил. Ну не суть, короче у меня появились вопросы, надеюсь вы как более опытные ответите на них.
1. Какие мощности сервера нужны, если я собираюсь хранить у себя: стату\прогресс аккаунта, весь лут аккаунта, проверять на легитимность запуска матча, а также если получиться дроп после матча. Сам матч будет на смартфоне происходить.
2. Защита от читов. Поскольку я собираюсь в будущем вводить простенькое пвп и ебать какие сложные данжи, с редким довольно лутом, хотел бы как-то защититься даже от потенциальных читеров. Как оно там происходит на ваших мобилках?
Короче, хочу сделать игру красиво, без какого либо пейвола и дебильных реклам.
Очень интересует вообще тема читов. Поскольку я собираюсь вводить прям рейтинговый подбор для ПвП в будущем. Сезонные причем, и бесплатно как хартстон раздавать уникальные шкурки, которые никак потом не добыть.
А так в целом игра будет скорее про пве, с партийными ивентами в далеком будущем.
"Видео" анимация, "компьютерная" анимация, или как-то по другому ?
>1. Какие мощности сервера нужны, если я собираюсь хранить у себя: стату\прогресс аккаунта, весь лут аккаунта, проверять на легитимность запуска матча, а также если получиться дроп после матча. Сам матч будет на смартфоне происходить.
На самом деле не большие, В 3к месяц должно хватить.
>2. Защита от читов. Поскольку я собираюсь в будущем вводить простенькое пвп и ебать какие сложные данжи, с редким довольно лутом, хотел бы как-то защититься даже от потенциальных читеров. Как оно там происходит на ваших мобилках?
Читерить игру буду с помощью эмулятора андроида на ПК, никто ломать игру играя на мобилке не будет. Ну либо готовый какой нибудь чит скачивать что в принципе равноценно.
Прежде чем защищать игру, надо примерно представлять как её будут ломать и что будут видеть ломатели.
Далее уже из этого строить защиту.
Не беру в пример простой взлом с помощью подобия артмани или читэнджина, а именно самописный стафф для работы с функциями и объектами.
Все критичные данные нужно хранить на сервере это раз. Клиент является по сути одной обёрткой UI и всякими мелкими таймерами это два. Это если кратко.
Обычно на сервере хранятся помимо данных глобальные состояния клиента, и критичные таймеры, чтобы если клиент попытался отправить пакет того что он не может сделать дропнуть его, к пример открыть инвентарь в бою если это не предусмотрено игрой, но возможно сделать отправкой пакета, либо заспамить каким либо действием таймер которого есть лишь на клиенте, а на сервере не применяется.
По своему опыту скажу что защита строится уже после того как ты оформишь архитектуру и будешь видеть где что можно заэксплоить, ну и конечно тестеры нужны, самому за всем не уследить, ну и без опыта в любом случае будут фэйлы, не существует защиту которую нельзя сломать. Параллельно с защитой делаешь какой нибудь анализатор данных в игре для админа, или сторонний, желательно в табличках, и чекаешь подозрительные аккаунты по ним что упрощает, либо всё это дело автоматизируешь. Опять же логи важных действий. В мобильных играх это также решается тем что всякая торговля и глобальные действия не доступны сначало, а открываются игроку позже, и человеку нужно время чтобы прокачать аккаунт (Мин 30-40), тем самым сильно усложняя жизнь взломщикам, т.к бан потеря времени.
Если будут более конкретные вопросы пиши.
>1. Какие мощности сервера нужны, если я собираюсь хранить у себя: стату\прогресс аккаунта, весь лут аккаунта, проверять на легитимность запуска матча, а также если получиться дроп после матча. Сам матч будет на смартфоне происходить.
На самом деле не большие, В 3к месяц должно хватить.
>2. Защита от читов. Поскольку я собираюсь в будущем вводить простенькое пвп и ебать какие сложные данжи, с редким довольно лутом, хотел бы как-то защититься даже от потенциальных читеров. Как оно там происходит на ваших мобилках?
Читерить игру буду с помощью эмулятора андроида на ПК, никто ломать игру играя на мобилке не будет. Ну либо готовый какой нибудь чит скачивать что в принципе равноценно.
Прежде чем защищать игру, надо примерно представлять как её будут ломать и что будут видеть ломатели.
Далее уже из этого строить защиту.
Не беру в пример простой взлом с помощью подобия артмани или читэнджина, а именно самописный стафф для работы с функциями и объектами.
Все критичные данные нужно хранить на сервере это раз. Клиент является по сути одной обёрткой UI и всякими мелкими таймерами это два. Это если кратко.
Обычно на сервере хранятся помимо данных глобальные состояния клиента, и критичные таймеры, чтобы если клиент попытался отправить пакет того что он не может сделать дропнуть его, к пример открыть инвентарь в бою если это не предусмотрено игрой, но возможно сделать отправкой пакета, либо заспамить каким либо действием таймер которого есть лишь на клиенте, а на сервере не применяется.
По своему опыту скажу что защита строится уже после того как ты оформишь архитектуру и будешь видеть где что можно заэксплоить, ну и конечно тестеры нужны, самому за всем не уследить, ну и без опыта в любом случае будут фэйлы, не существует защиту которую нельзя сломать. Параллельно с защитой делаешь какой нибудь анализатор данных в игре для админа, или сторонний, желательно в табличках, и чекаешь подозрительные аккаунты по ним что упрощает, либо всё это дело автоматизируешь. Опять же логи важных действий. В мобильных играх это также решается тем что всякая торговля и глобальные действия не доступны сначало, а открываются игроку позже, и человеку нужно время чтобы прокачать аккаунт (Мин 30-40), тем самым сильно усложняя жизнь взломщикам, т.к бан потеря времени.
Если будут более конкретные вопросы пиши.
Да
Понял, спасибо. А так вообще, в целом трейда в игре не будет. Никакого. Может когда нибудь что-то типа аукциона попробую сделать, но скорее нет, чем да. Постараюсь сделать игровой процесс всегда "от зп до зп", чтобы вроде бы как-то идет прогресс, но иногда нужно будет опуститься на пару уровней ниже, чтобы вернутся на прежний уровень. Ни донатом, ни трейдом чтобы это нельзя было исправить.
Донат пока планирую в виде гачи и скинов. Ну, и соответственно можно будет крутить за игровую валюту, которая будет фармится в матчах.
Ну лан, я щас распланирую всё за этот месяц и засяду по хардкору.
Анимация
Сап юнитач. Поясни за анимацию.
Работаю в бленде, анимирую сам, через инверсную кинематику, закидываю в движок и всегда обсираюсь. Ноги скользят по земле даже в идле.
Пробовал через слои, ставить галочки на самой анимаци, чтобы только ноги опирались на землю ничего, не помогает.
Проблема системная и тянется уже несколько лет, в дефолтных проектах или скелет миксамо без инверсии или с инверсией, но почему то не скользит.
Странно, что на годоте такой проблемы в принципе нет.
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
Перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
>>874000
ебобо?
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
перекат >>873990 (OP)
Как запихнуть getcomponent часть в перменную, чтобы написание было, как обычно на шарпе/джава скрипте
в стиле
n.firstName=""
Так делаешь просто тип переменной :
private StatsNPC _sNpc;
И далее _sNpc=RandomObject.getcomponent<_sNpc>();
_sNpc.name=Bob;
Можешь так-же передавать ссылку на этот тип через скрипты как и с любой другой переменной.
Вообще это лучше делать через конструкторы и подобную хуиту, но для начало можешь не запариваться.
Тебе тут надо инстантиейтить не GameObject, а конкретный объект - тип(компонент), в нем будет поле с сcылкой на StatsNPC тип, которую ты прокинешь через поле, так ты сможешь например через метод Init передавать все данные в виде параметров:
[SerialazeField]
private Character _npcTemplate; <= сюда закидываешь префаб с компонентом Character
Character newNPC = Instantiate(_npcTemplate);
newNPC.Init("Bob", "Bobber", "Female")
====================================================================================
class Character
{
[SerialazeField]
private StatsNPC _stats;<= сюда перетаскиваешь компонент StatsNPC прям с Character gameobject
public void Init(string firstName, string surName, string sex)
{
_stats.firstName = firstName;
_stats.surname = surName;
_stats.sex = sex;
}
}
====================================================================================
Можно ли имея GameObject получить его скрипт при этом без указания названия скрипта?
То есть: У меня есть геймобжект Enemy к которому приляпан EnemyScript и Enemy2 к которому приляпан Enemy2Script. В обеих скриптах есть переменная State.
Enemy и Enemy2 собраны в GameObject{} Enemyes.
Как можно сделать что бы цикл пробежал по массиву GameObject[]Enemyes и "дернул" каждый из скриптов?
Котенька для привлечения внимания
Создаешь новый лист, бежишь по всем массиву и дергаешь все компоненты скрипты в него, как самый простой вариант
Но нахуя
Если уровни будут генерится бесконечно, например мы будем ехать час и нагенерим 200 уровней (и столько же удалим) мы окажемся на координате, например 10000.
Вопрос, насколько сильно это нагружает игру и где вообще мы едем. То есть, сохраняется ли "пустое" пространство, на котором были предыдущие уровни и какую часть этого пространства видит/обрабатывает игра?
Как вообще можно понять это "пустое" пространство? (пикрил)
А если один куб на -3.40282347E+38f, второй на 0, а третий на 3.40282347E+38f, между ними объектов нет. Что между ними?
Но ведь от одного куба можно "долететь" до другого. Полет будет по чему? По пустоте?
Алсо вопрос. Как определять размер объектов? Вот например условный 1 юнит это сколько? Например какая моделька больше, гг из ведьмака или гг из гта?
>Но ведь от одного куба можно "долететь" до другого. Полет будет по чему? По пустоте?
"Полет" это аналогичное перемещение по 3 координатам.
>Алсо вопрос. Как определять размер объектов? Вот например условный 1 юнит это сколько? Например какая моделька больше, гг из ведьмака или гг из гта?
Полностью от того как настроишь скейл зависит.
>"Полет" это аналогичное перемещение по 3 координатам.
То есть игра хранит координаты первого куба, второго и объекта, который летит. А также все координаты (расстояние) между ними. Меньше координат (расстояния), меньше нагрузка, разве нет? Ну например если кубов будет не 2, а 2кк
>Полностью от того как настроишь скейл зависит
Как понимать размерность скейла?
Если грузануть 2 разных модели со скейлом 1, они могут быть разного размера.
Тогда при одинаковом скейле как понимать размерность?
>То есть игра хранит координаты первого куба, второго и объекта, который летит. А также все координаты (расстояние) между ними. Меньше координат (расстояния), меньше нагрузка, разве нет? Ну например если кубов будет не 2, а 2кк
Основная нагрузка приходится на оперативу, чем больше объектов тем больше загрузка оперативы, но только при условии что кубы статичны, если они не статичный то нагружаться будет еще и проц, но современным процам посчитать перемещение 2кк кубов это вообще не задача, больше всего же будет нагружаться ГПУ которой придется кубы в зоне видимости рендерить.
>Если грузануть 2 разных модели со скейлом 1, они могут быть разного размера.
Скейл это не только скейл в юнити, но еще и скейл в 3д редакторе в котором эта модель делалась.
То есть если объект будет "лететь по пустоте" и кроме него в "пустоте" ничего не будет, то нагрузка не будет меняться и можно лететь бесконечно? Типа как генерация карты в майнкрафте, только без генерации карты
Если взять модельки условно со скейлом 1, будет какая-то разница в производительности, если уменьшить их до скейла 0.005 или увеличить до скейла 10?
>То есть если объект будет "лететь по пустоте" и кроме него в "пустоте" ничего не будет, то нагрузка не будет меняться и можно лететь бесконечно?
Да, не будет. Но чем больше точек будет в объекте тем будет выше постоянная загрузка.
>Если взять модельки условно со скейлом 1, будет какая-то разница в производительности, если уменьшить их до скейла 0.005 или увеличить до скейла 10?
А тут уже от наличия/отсутствия камеры зависит - чем больше полигонов рендерится тем больше нагрузка на ГП. Если камеры не будет то и модель не будет двигаться то нагружаться будет только оператива, если будет двигаться то еще и ЦП.
При условии что действие в if выполняется игроком скажем, раз в 2-3 минуты.
Если if (или объект) один и если if-ов (объектов) 1000?
Триггерится будет при соприкосновении?
Впринципе без разницы, поскольку даже 1000 if-ов в апдейте не особо грузит кпу пока не выполняется. Но лучше ничего в апдейт не сувать когда можно избежать этого
>Триггерится будет при соприкосновении?
Да, а можно как-то еще триггерить? без сарказма вопрос
Да, как сделаешь так и будет тригерится хоть при нажатии кнопки, хоть при повороте камеры. Это из разряда "можно, но зачем" и обычно не нужно
Ну лан, то что лучше на триггеры чем апдейты я сказал. Могу сказать еще очевидную вещь, что проверки колайдера ну к примеру пули и стены, лучше вешать на каждую пулю(включая запуск разрушения стены) чем на каждую часть стены для оптимизации
А так, у них новый тред тут >>873990 (OP), и если нужно больше ответов разных лучше спрашивать там
У меня настроения постить в нем нет никакого даже после всего это времени, поэтому в закладках только этот
Он разве 32 битный, или я не тот скачал. какого хуя он вообще работает тогда?
Где можно почитать побольше про этот оператор "?"
int a;
bool x;
void Check()
{
a = x ? 50 : 100;
}
пасиб)
Долбоебы соевые капхед рисовали как мультики старые. Руками, а потом сканили. Конечно денег попилили дохуя.
А как угодно говнокодить можно.