24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны? - Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны? - Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity? - На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity? - Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры? - Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать? - Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты? - Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с 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 лицензию.
- Движок Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка. http://www.ozon.ru/context/detail/id/34792570/ Также посмотри на видеотуториалы с официального сайта: https://unity3d.com/learn/tutorials Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь: http://catlikecoding.com/unity/tutorials/ Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху: https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов: https://noobtuts.com/unity В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Сап, есть проблема, настраиваю 2d физику, когда объект после прыжка приземляется на коллайдер, он в этот самый коллайдер немного входит как бы и затем резко выходит, буквально на несколько пикселей, тем самым визуально сам спрайт как бы немного проваливается в землю, и при приземлении и и удержании клавиши бега видимо из-за этого проваливания он на мгновение тормозит. Я догадываюсь, что надо снизить gravityscale, что бы его не сильно швыряло в этот коллайдер, но мне это не удобно, потому что он gravityscale у меня там физика прыжка скачет. Такой вопрос, может можно как-нибудь по другому пофиксить такое кратковременное "проваливание" в коллайдер при немного резком ударении об него.
>>481060 >из-за этого проваливания он на мгновение тормозит Так ну это сейчас внезапно пофиксилось добавлением материала с нулевым трением на мой прыгающий объект(решал проблему залипания в стену во время прыжка). Но вот это кратковременное проваливание никак не могу решить, я уже и массу и гравитацию объекта менял, игрался и так и сяк, мне надо чтобы он быстро падал, но при этом он в любом случае немного уходит кратковременно в коллайдер земли, это не красиво выглядит. ЧЯДНТ? Алсо, масса = 1, gravityscale выставляю не больше 3.
>>481060 Программно попробуй пофиксить. В FixedUpdate проверь, если провалился, ручками его телепортируй на ноль. FixedUpdate вызывается как раз перед просчетом физики. Авось не взорвется ничего (может надо будет переключить режим на кинематику и обратно), но я не специалист.
Поставил хуюнити, поясните вот что, с тестового небольшого проекта шиндоус формс в два файла переташил код в юнити, первое, нельзя использовать async, второе, нельзя использовать using Newtonsoft.Json. Как быть то, мне нужно по апи данные получать и в апдейте выводить, сам то апи класс юнити не использует и идет себе особнячком, не пойму как прикрутить, вопрос наверное простой.
>>481103 Да короче я додумался сменить метод обнаружения столкновений с дискретного на непрерывный и проваливаться конечно перестало. Смущает, что этот метод более затратный, ну да хуй с ним, у меня не много объектов будет в сценах
Сап, пагни. Искал ответа в прошлом треде но он утонул. В общем, суть такова: знакомлюсь с с#+unity. Собрал какой-то первый мини-проектик. Аналог Flappy Bird. Когда запускаю игру в Юнити-Scene - все играет, не лагает и вообще ведет себя так, как мне требовалось. Сбилдил. Закинул на тестовый самсунг А5. Все очень лагает, дергается. Анон посоветовал открыть Профайлер. Открыл - пикрилейтед. Куда глядеть дальше?
>>481240 Бро, я запустил проект с открытым профайлером. Но немного не понимаю, в чем проблема. Пикрилейтед - моя догадка что проблема в памяти. Но как быть дальше?
>>481242 Котаны. Воспользовался Профайлером. Нашел кажется свою проблему. Дело в нагрузке на CPU. Я так понимаю этот параметр очень сильно завышен. (Vievers.FixedUpdate на пикче - это основной скрипт, в котором инициализируются объекты на сцене и т.д.). До этого он был просто Update. После замены на FixedUpdate загрузка в профайлере упала примерно на 20%. Подскажите, как бы мне снизить данный параметр? Заранее извиняюсь за свои нубовопросы.
>>481286 В общем решил. Проблема крылась в том, что я в основном скрипте получал ссылку на другой скрипт не кешируя его. Требовалось везде закешировать такие вот вещи. new = FindObjectOfType<Walking>();
Продолжаю делать кликабельный текст. Вроде бы текст должен быть правильный и всё такое, но его не видно. Я создаю меш с помощью текстгенератора и несложной конвертации в треугольники заливаю в CanvasRenderer.SetMesh. Есть два предположения, почему не работает: либо нужно сетмешить в апдейте, либо я в какие-то ебеня меш оффсетаю по ошибке (оффсетать позицию текста нужно для того, что из сгенерированного по позициям большого окна текста мелкие куски-строки в маленькие кликабельные окошки засунуть). Либо ещё какая-то хуйня. Кто-нибудь делал меш для УИ и отображал его в ректангле? Как это делается по-нормальному?
>>481399 >кликабельный текст Вот бы в юнити был юайный элемент, по которому можно кликать, и на котором был бы размещен текст... Да не, слишком это сложно.
>>481485 Это если не хотим делать подсветку отдельных слов и т.п. Идея-то твоя норм, но у меня как бы уже всё готово, только меш в уи не отображается. Вертексы текста генерируются верно, - позиции новых окошек правильный выходят, - но с самим отображением проблемы. Мне не нужно где-нибудь вертексы апплаить, как нужно апплаить новосозданную текстуру? Какая-то ерунда, если CanvasRenderer.SetMesh в апдейт сунуть, тоже ничего не даёт.
>>481568 DisableRectClipping ничего не даёт, ничего не даёт и UploadMeshData, без разницы, в апдейте или нет, CanvasRenderer банально не рендерит заданный меш.
>>481656 Какие ещё переносы? Я не модифицирую генерируемый юнити текст, я его же и беру, а в нём переносов. У меня проблема не в том, как разбить, как перенести и т.п., у меня меш не воспринимается канвасрендерером. Вот гляди. Когда юнити вбирает в себя текст, он автоматом проводит его через текстгенератор и автоматом же выводит на экран то ли в виде текстмеша, то ли в ещё каком виде, но в любом случае это - меш, который идёт в канвасрендерер. Я беру базовый текстгенератор и пытаюсь созданный им меш всунуть в канвасрендерер. По итогу ошибки никакой не выдаёт в логе, но ничего не видно ни в игре, ни в редакторе.
Как можно уничтожить объект кликом мышки, но при этом с проверкой столкновения, чтобы нажатие кнопки обрабатывалось только если игрок стоит впритык к объекту?
>>481774 >>481778 Ты ловишь нажатие мышки в тот самый момент, когда происходит этот твой OnCollisionDetected. Тебе нужно отдельно ловить стояние впритык, и если есть стояние впритык, то отдельно ловить нажатие мышки. Банально сделай булеан для стояния впритык, делай трю, когда OnCollisionDetected, и делай фальз, когда игрок отходит от объекта. Затем в апдейте делаешь проверку на буль стояния впритык, и если да, то проверяй на Input.GetMouseButtonDown(0)
>>481839 >Ты ловишь нажатие мышки в тот самый момент, когда происходит этот твой OnCollisionDetected. Т.е. ты проверяешь, нажали ли мышь, в тот самый фрейм, когда коллижн сработал. Поэтому и не работает.
Сап, продолжаю бороться с физ. системой в 2D. Я тут наговнокодил таки алгоритм, что бы при отпускании клавиши бега, velocity у ригидбоди обнулялось по иксу и не обнулялось по игрику(чтобы в прыжке не тормозил). Это я делал для того, что бы при отпускании клавиши бега, игрок на земле резко тормозил, а не скользил. Добавил условие, если !Input.GetButton("Horizontal") && rb.velocity.y == 0 то обнуляем велосити. НО, теперь возникает проблема. Когда я НЕ отпуская клавишу "вперёд" нажимаю клавишу "назад", игрок не тормозит и продолжает бежать. Мало того, при последующем отпускании клавиши "вперед", игрок прежде чем сменить направление продолжает скользить. Ладно, тогда я добавил в предыдущее условие проверку: Input.GetAxis("Horizontal") == 0 или отпущена клавиша "Horizontal", тогда обнуляем velocity ригидбоди. Ну при этом всё вроде бы заработало, но побегав с минуту я увидел, что всё-равно иногда игрок проскакивает и начинает скользить. Видимо при одновременном нажатии клавиши "вперед" и "назад" и затем отпускании какой-нибудь одной из них, горизонтальная ось не всегда резко переходит в ноль. Короче, не знаю понятно ли написал, но может поможете придумать алгоритм, что бы при осуществлении движения игрока методами физ. системы, игрок резко тормозил при отпускании клавиши, и: -если нажата клавиша "вперед" - бежим вперед -если при нажатой клавиши "вперед" нажимается клавиша "назад" - останавливаемся. Вообще возможно ли используя Input.GetButton("Horizontal") сделать четкое условие, что если нажаты одновременно две клавиши, то возвращаем резко ноль?
>>481923 Короче отбой ребята, все это хуйня > всё-равно иногда игрок проскакивает и начинает скользить Я сейчас просто зашел в настройки проекта в InputManager, и там во вкладке Horizontal поднял параметр Sensitivity с 3 на 30, и все перестало проскакивать. Я так понял это скорость, с которой ось изменяется от 0 до 1, я её увеличил, и теперь быстрее проходит время с которым ось уходит в 0, и теперь успевает просчитаться обнуление моей скорости после смены направления. Правильно ли я понял?
>>481933 >Полагаю, двигаешь через AddForce, в ригидбади Dynamic стоит Да. C кинематикой все еще больше усложнится, коллизии проверять неудобней, или я не прав?
Хелп, гд. Есть у меня скрипт NodeNet, который хранит лист Node, каждая нода хранит связи с другими нодами. Получается такая сетка. Есть кастомный инспектор для этого дела, который на сцене рисует сетку в редакторе. Так вот, я хочу, чтобы по клику на Habdle-се точки открывался инспектор для неё. Хочу сделать это через Selection.ActiveObject = node. Но для этого Node должно наследоваться от UnityEngibe.Object. Наследоваться от MoboBehaviour или от ScriptableOvject - плохая идея, если наследуюсь от Object и создаю инстансы через new, возвращает null. Чеделать, пасаны?
>>481949 >>481951 А если у меня в сети будет около 5000 точек, юнити не будет охуевать, когда при выборе точки будет открываться окно Project с 5000 scriptableObject-ами. Если можно их как-нибудь скрывать, такой вариант меня бы вполне устроил. Вот взять например AnimatorController, там при выборе каждого стэйта или дерева смешивания открывается его инспектор, все эти штуки BlendTree, Motion и.т.д. наследуются от Obkect. Как они создаются?
>>482115 Когда создаёшь новый скрипт, не открывай его сразу, а переключись на студию, тогда вылезет окно, мол, надо обновить список файлов в проекте. После этого скрипт корректно встанет, и всё будет подсвечиваться.
Посоны, поясните за Adventure Creator. Не, квест не делаю, ненавижу квесты. Просто не хочу писать свою диалоговую систему и систему управления несколькими камерами в сцене, синхронизацию с анимацией персонажей и т.п. для создания крутых кат-сцен. Кто работал с ассетом, как впечатления? Открытый ли код? Документация норм? Много ли багов? Какие подводные камни?
>>482278 Лол, а если напишу что из России? Вообще не продаст? >>482281 Крутая штука. Но меня все же беспокоит диалоговая система. Текст надо где-то хранить и организовать, выводить на экран побуквенно и желательно с возможностью проматывать назад. Менюшки интерактивные для вариантов выбора ответов. Создатель приключений, главным образом, этим полезен, а не работой с камерами, звуками и анимациями.
>>482305 Хочешь, я тебе свой велосипед дам попользовать? Заодно скажешь, как оно и чего не хватает, буду благодарен за фидбек. У меня там нодовый редактор есть с параметрами, условиями и ивентами на переходах
>>482307 Fungus. OK, посмотрю его, может лучше подойдет.
>>482313 А что не выложишь в стор свой велосипед. Может даже бабла на этом поднимешь, если ценник задирать не станешь. Без обид, анон, но мне для коммерции инструмент нужен, а не для развлечения. И этот инструмент должен быть с документацией, поддержкой, комьюнити и, желательно, несколькими годами разработки.
class ClickableText : Text, IPointerClickHandler { [SerializeField] UnityEvent m_OnClick; // это событие пропихни в реализацию интерфейса //сижу с мобилы, дальше писать лень
>>482703 >как вертексы через канвасрендерер Никак. Канвас рендерер рендерит только канвас итемы. Не понимаю что ты хочешь делать? Добавь меш рендерер и все. Вроде еще нужно режим поменять на режим с камерой.
>>482705 Режим с камерой (как я понял) нужен для "существования" УИ в той же вселенной, что и нормальные 3д объекты сцены. Меш рендерер нужен для 3д объектов сцены, т.е. ты предлагаешь высунуть мою хуетень из мирка УИ в 3дмирок с дополнительной ёблей по высоте. В принципе попробовать стоит (если других предложений нет), но переход всего УИ на другой тип камеры... ну, это будет больно. Слои не работают (а я их где-то там использую), высоту мануально выставлять, опять бояться, что рейкастер будет детектить кнопки там, где их нет. >Канвас рендерер рендерит только канвас итемы. Но во всех вопросах/ответах было сказано, что в канвасрендерер можно сувать меши и/или вертексы (если версия юнити старая) и что он должен рендерить. А ещё было дохуя неотвеченных вопросов, где канвасрендерер ничего не отображал.
>>482710 >Режим с камерой (как я понял) нужен для "существования" УИ в той же вселенной Для этого нужен режим world. Камера нужна, чтобы рендерить канвас камерой (например, с пост-эффектами)
>Меш рендерер нужен для 3д объектов сцены, т.е. ты предлагаешь высунуть мою хуетень из мирка УИ в 3дмирок с дополнительной ёблей по высоте. Так ты как-бы собрался рендерить 3д объекты? Это правильный способ. По другому ты не сделаешь. Рейкаст и т.д. можно настроить. Хотя бы добавить просто rect transform. А вообще гугли EventSystem
>>482710 >в канвасрендерер можно сувать меши и/или вертексы Да, ты просто делаешь свой объект дочерним в иерархии и можешь использовать экранные координаты. Ничего другого canvas в принципе и не делает
>>482748 Короче параша ебаная, ему там сертефикат не нравился, потом другая неведомая хуйня вылезла. В общем скачал готовую либу с гитхаба и все завелось с первой копипасты. Завтра буду разрабатывать анус дальше.
>>481026 (OP) Сложный скриптинг. Еще 3 месяца назад пытался освоить unity(c#). Всё получалось. Пусть элементарные кубики, но я их двигал по сетке сам, писал код. Хоть и простенькой но самостоятельно. Затем 2 месяца было некогда заниматься. Сегодня не смог создать абсолютно ничего. Очень сложный скриптинг. Всё через костыли. Задача была создать на пустом холсте слайдер от (1 - 320) и добавить второй элемент text, чтобы выводить туда значение позиции Slider. Напрямую через событие слайдера это сделать разумеется невозможно. Создал пустой скрипт добавил в него два глобальных объекта (public GameObject S) и (public GameObject T). Далее долго ломал голову как инициализировать эти переменные соответственно чтобы объект S унаследовал слайдер, а Т объект текстовое поле. Перетянуть этот скрипт на слайдер, а потом в соответствующие поля назначить Slider1 and Text1 соответственно? или как то иначе? а затем необходимо через Update считывать позицию бегунка слайдера?
Очень плохо, что нет нигде самоучителя с логически законченными программами. Разумеется чтобы они были коротенькими. Т.е. Если речь в уроке идёт о Transform. То необходимо писать целиком весь код от начала и до канца, или хотябы схемотично уазывать куда какой скрипт подключать. Не надо ограничеваться скупыми:
Урок номер 8 "Трансформация" void Start() { // Start the enemy ten units behind the player character. transform.position = player.transform.position - Vector3.forward * 10f; } "Всё ребята молодцы, всем успехов" Далее урок 9.... Так не учат, господа. Я никогда не стану учить новый ЯП, пока не выучу НАИЗУСТЬ примеры консольных "Хеллоувордов" того или иного языка. Идти дальше, можно лишь познав азы - на зубок. В Unity, я нигде не видел простых примеров. Либо скупое описание как в примере выше, либо сразу делают игру. (PS. Боже, какое горе что delphi и прочие паскалеподобные IDE не могут компилировать в APK. В жизни не стал бы осваивать эти заморочки C#'ые)
>>482868 Я не пытаюсь выглядеть умнее. Костылём, я называю отсутствие прямого обращения к свойству элемента(ов). Как к примеру в других IDE. В Unity же так: Хочешь присвоить событие нажатия кнопки - пиши отдельный скрипт. Концепция сложная очень. По крайней мере для движка ионизирующегося как для новичков.
>>482865 Да все мучаются с ним. Нет поддержки нормальной. Help'ы скупые. Я собственно хелпами и недоволен. У меня не к движку претензии, а к хелпам в основном. Движок может и нормальный, но освоить его должным образом, до уровня "сел и пиши игру" - оч сложно. Теми уч. материалами которые есть в об доступе. В основном все его осваивают по принципу "Я видел, так кто то делал уже".
>>482886 Я собственно и не собирался делать игру на Unity. Мне необходимо было просто переписать одну из своих программ сделанную ранее под windows, чтобы пользоваться на android. Простая прикладная программа для работы с данными, в принципе ничего сложного. Чтение строк из memo и обработка нажатий кнопок. Думал просто на Unity ПЕРЕреализовать это. Помню просто что в unity есть элементы UI и чисто на кнопочках и текстовых полях думал собрать.
>>482890 Освоил все по официальным докам, че там сложного-то? Забиндить событие на метод монобехевиора это блять пиздец нетривиально чтоль? От какого нибудь WPF или Vue.js ты бы наверное вообще порвался нахуй.
>>482712 >>482713 Поменял рендермоде канваса с оверлея на камеру. Нихуя не изменилось, только все кнопки уехали в ебеня за пределы экрана, а текст так и не отобразился. Походу, надо как-то в картинку конвертить вертексы. Хз, что с производительностью будет.
>>482864 >Напрямую через событие слайдера это сделать разумеется невозможно. Создал пустой скрипт добавил в него два глобальных объекта (public GameObject S) и (public GameObject T). Далее долго ломал голову как инициализировать эти переменные соответственно чтобы объект S унаследовал слайдер, а Т объект текстовое поле. Перетянуть этот скрипт на слайдер, а потом в соответствующие поля назначить Slider1 and Text1 соответственно? или как то иначе? а затем необходимо через Update считывать позицию бегунка слайдера?
сделай какой-нибудь класс наследуемый от монобихейвора, сделай в нем метод типа public void OnSliderValueChange(float value). название метода похуй. тогда если ты слайдеру сунеш геймобжект с этим приклепленным компонентом и выбери этот метод сверху. теперь когда значение слайдера будет менятся то будет вызыватся тот метод и туда соваться значение слайдера. ты бы лучше в треде вопросы задавал конкретные, а не ныл что хуйня-говно
>>482903 > сделай какой-нибудь класс наследуемый от монобихейвора, сделай в нем метод типа public void OnSliderValueChange(float value)... Спасибо за совет. Попробую. Но уже чуть позже, я уже на sketchware пилю сижу приложение. А за совет спасибо.
> .... теперь когда значение слайдера будет менятся то будет вызыватся тот метод и туда соваться значение слайдера. Вот так я и педставлял примерно. Но я думал что необходимо событие change ловить в самом слайдере. А не создавать класс с наследованием от слайдера. > ты бы лучше в треде вопросы задавал конкретные, а не ныл что хуйня-говно Да стрёмно просто как-то. Вопрос ведь ламерский и я сам это осознаю. Тут ведь все уверенные пользователи unity, a я салага. Вот и очконул.
Сука блять, два дня бил стены головой, пытаясь понять с какого хуинского мой карактер контроллер не двигается в билде, но в едиторе все норм. Путям копания в говнах интернета удалось установить, что это изза того что я выключил всинк. Где-то под капотом хуюнити, все мои Time.deltatime операции делались так быстро, что были практички равны нулю. Пришлось на старте игры захардкодить фреймрейт в 60, и теперь в билде что с всинком, что без, все работаит. Юнитиребенок познает мир короче.
>>481140 >ThreadPool. кстати о нем. у меня когда он создает треды юнити неожиданно начинает делать что-то под капотом и фризит. в профайлере интернал говно всякое. вот тут в какую сторону смотреть я даже не знаю.
>>482913 >Вот так я и педставлял примерно. Но я думал что необходимо событие change ловить в самом слайдере. А не создавать класс с наследованием от слайдера. но наследоваться от слайдера и не надо. наследоваться надо от монобихейвора чтобы была возможность класс прилепить на геймобжект. юнити там потом само хитро смотрит через рефлексию есть ли подходящий по сигнатуре метод, когда ты слайдеру сунеш геймобжект и компонент. и если есть то предлагает тебе его. можно конечно наследоваться от слайдера и делать так, но нахуй оно надо если у юнити такая клевая фича с делегатами уже есть. хотя был тут один интересный человек которому не нравилось как там кнопка работает. эти делегаты можно и через код делать с помощью Slider.onValueChanged.AddListener. кстати у юнити UI опенсорсный https://bitbucket.org/Unity-Technologies/ui можешь почитать, если интересно.
>Да стрёмно просто как-то. Вопрос ведь ламерский и я сам это осознаю. Тут ведь все уверенные пользователи unity, a я салага. Вот и очконул. да как бы весь тред для того чтобы задавать тупые вопросы. и иногда хвастаться достижениями. задавать тупые вопросы и отвечать на них важно. иногда не ты один не знаешь ответ на вопрос, но другим просто не так надо как тебе.
>>482916 лол даже интересно стало в каких кондициях ты такие результаты получил. я делал всякую хуйню, но такой не видел.
>>482918 >лол даже интересно стало в каких кондициях ты такие результаты получил. Я пытался заставить персонажа не двигаться, пока он полностью не повернется в сторону движения. Поэтому ввел условие, что пока персонаж не повернется, скорость равна нулю (в билде персонаж поворачивался кстати, но не двигался). Я не знаю, что конкретно ломалось, потому что я новичок и говнокодер, пизжущий код с unity answers.
>>482927 Мораль токова короче - изменение/отключение vsync в quality settings (а так же low/meduim quality в билде по дефолту) может повилять на ваши вычисления с deltatime.
Какого хуя ваш лучший в мире энжин втихушку сбрасывает флажок что текстура читаема с CPU из параметров импорта когда билдишь под ведродид? Говно ёбаное, пол-дня.
>>483067 Ага. Мне надо было вытащить маску из альфа-канал с 3-ого MIP'а . Пришлось вместо этого рендерить в текстуру, делать ReadPixels и так читать. Буквально тащить через анал.
>>483072 > не закешировать статически что тебе надо при билде или > генерировать мипы динамически на ебаной мабиле, а потом их вытаскивать на проц Какой-т пиздец, я блять даже не знаю что хуже, я бы с тобой рядом в метро не сел.
>>483073 Этосамое, текстура как бы импортируется и у ней уже мипы все посчитаны. И мне как то не очень интересно тратить время на прикручивание вытаскивалки этой маски в ScriptableObject какой нибудь, всё через анальный юнитевский папйплайн. Но, блядь, предупредить могли бы всё равно. Алсо упражнение: прочитай-как мне спрайт из Asset Bundle.
>>483074 Теперь я знаю в лицо того, кто ебёт мне батарейку на самом деле нет, у меня ипхоне. Пиздец сложно вытаскивалку маски перенести в папочку Editor. Просто в ахуе, просто.
>>483075 Ага. Потому что её потом надо встраивать в билд. И не говори мне что держать копию текстурки в оперативке - это прямо таки невозможный расход ресурсов и получение byte[] два раза за всю сессию из этой копии и такой же предрасчитанной чем то отличается, ага.
Сап, юнаны. Есть точка А. Как найти точку Б, зная расстояние между ними и угол? Наверное вопрос из школьной программы матана. Алсо можно ли найти угол между точками относительно камеры? (Например на пике от А до Б угол ~125%)
Котаны, подключил AdMob, но столкнулся с одной проблемой. Когда показываю "interstitial" рекламу, то игра ставится на паузу. Можно как-то этого избежать? Мне нужно, чтобы игра продолжала работать.
>>481026 (OP) Заинтересовался AR но появилось несколько вопросов: 1) Я могу сделать рейкаст от экрана до отрисованого объекта? Например нажал на отрисованую кнопку/объект и что-то произошло 2) Я видел варианты когда отрисованый объект крепится к рисунку на листочке или к игральной карте есть ли возможность крепить объект к любой ближайшей плоскости (игральная карта, тетрадь т.д.) и брать информацию об угле наклона объекта, его координаты етц. 3) Планирую работать с ведром, есть 2 кроссплатформенных сдк(ведро,иОС) - vuforia и 8 wall, и чисто на ведро ARCore, что лучше? 4) Есть ли вообще смысл пилить что-то на AR?
>>483559 Ого, спасибо большое! >>483560 Изначально я не думал вообще об создании игр такого жанра, однако в АР вижу реализацию примерно такой: Есть виртуальный бордель Можно грабить корованы который отображается на любой плоскости, например стол здание можно строить, естественно в верх, нужно поднимать кэш, следить за путанами етц, во время игры можно за всем наблюдать крыша-стены определенного этажа становятся прозрачными Джва года жду такую игру
>>483643 Жду видос. Алсо я бордель скорее, примерно, в вот таком виде представлял себе. прикрил Хотя если сможешь, распиши, пожалуйста, более подробно как это взаимодействие должно происходить мне действительно интерестно >AR - ебёшь Hatsune Miku у себя на кухне
>>483702 AR - как название говорит, расширенная реальность. То есть кухня твоя, а к ней добавлены игровые ништяки с привязкой к местности. В тех же очках твои кагбэ руки (в юнети они тоже game object, которые работают в связке rigid body/collider, а значит, двигая их, можно взаимодействовать с прочими объектами на сцене.
Толкнуть няшу, чтобы та ёбнулась на пол. Тут триггерится анимация, что она плачет. Если ее в течении 10 сек не пожалеть (погладить по голове теми же VR-руками, она переключится в rogue mode. Но можно теми же "руками" взять фаллоиммитатор и уебать ей им.
Всё утро искал причину проблемы с перемещением персонажа, видимых ошибок в коде нет, отдельные тесты проходят нормально, дебагинфа в норме, но в одной определённой ситуации навмеш агент просто переставал перемещаться. В конце концов подвигал маркер дестинейшена - идёт нормально. Вернул в старую позицию - идёт нормально. Ощущения будто жигули ремонтируешь.
>>483874 Нахуя писать свой движок, если можно просто не юзать парашу для конченых даунов навмеш, встроенный неткод и т.д., но юзать все остальное, что сделано заебися?
Прочитал/посмотрел всё это: 1) Могу сказать что на видосах хуита которую без контроллеров хрен реализуешь По поводу скана рук могу лишь сказать то что это вполне возможно но не у каждого в кармане gtx1337 i13 228gb ram 2) По поводу взаимодействия, есть два стула: нажатие на экран, нажатие на кнопки-триггеры в пространстве 1 вариант будет играться как кот-том, думаю понятно. 2 вариант будет выглядеть примерно так: https://www.youtube.com/watch?v=Fgd21lbhikU Есть ещё вариант когда ты подходишь к персонажу и что-то происходит
Аноны, помогите пожалуйста, только ссаными тряпками не бросайтесь хочу написать игру на юнити, но вообще не понимаю код, работу с программами и прочее, в школе где я учился информатика была никакующая, следовательно у меня даже базы нет. с чего начать изучение? книги по конкретному языку почитать? или для меня уже всё проебано и мне в геймдеве делать нехуй? пока только сидел рисовал спрайты для своей хуйни, но к юнити не прикасался
В AR сам боженька как бы велел перемещаться по реальной местности, видя ее. Программе не надо "рисовать" твой аватар ни на кухне, ни в комнате. Но надо трейсить твои перемещения, чтобы виртуальные объекты, созданные в игре, видели и реагировали на тебя.
Грубо говоря, чтобы Мику поворачивалась точно на тебя и шугалась, если почувствует приближение твоих волосатых лап. Контроллеры на тебе передадут соответствующие данные твоему двойнику-невидимке на сцене в игре
Необучаемые, adobe наебал флешеров и все их наработки нахуй. Не, давайте еще раз выберем закрытый инструмент с ебнутой лицухой, что ядро движка может предоставлять только владелец.
>>484166 Кого Adobe наебал, валенок ты тупорылый? Adobe завтавили убить флеш потому как все главные игроки заявили о том, что больше не будут поддерживать это дырявое говно. Лучше бы сидел в своей глухой пещере и не квакал
Bolt предоставляет полный визуальный сценарий для Unity, позволяя художникам, дизайнерам и программистам создавать механику игрового процесса и интерактивные системы без написания одной строки кода.
>>484166 А в чём сложность будет перекатиться на что-то другое? >>484204 >программистам По-моему, как раз проще написать немного кода, чем строить и настраивать огромный граф
>>484204 Он давно есть, на сколько я знаю, в нём есть проблема: если девы закинут проект и не дай бог у вас половина игры на болте сделана тогда вам придётся навсегда остаться на текущей версии юнети
>>484220 Кстати забыл сказать тебе что твой контроллер охуеннен, правда я не представляю каким образом сделать перчатку, в смысле чтобы любой человек мог скачать твоё приложение и уже иметь возможность полноценно играть Алсо я здесь пока что буду сидеть, буду плодить на ведро мини игры, для портфеля.
>>484226 Перчатки, ясное дело, на коленке не сделаешь.Один датчик стоит 13 долларов, но он охуителен по качеству и скорости реакции. Так не просто гироскоп+акселорометр+компас, но и кастомный процессор, который делает так называемую sensor fusion. То есть по алгоритмам вычисляет из потоков данных всех трех собственно абсолютное положение в виде кватерниона. Это значение передаётся соответствующей кости.
Для перчатки надо по датчику на фалангу в идеале. Но можно и упростить.
Я больше думал о создании кастомных анимаций, которых просто нет
Хочу запилить свою библиотеку с всякими инструментами для кодинга, Так, чтобы она лежала в отдельном проекте и можно было бы на неё ссылаться из разных проектов, желательно с возможностью изменения исходников библиотеки из этих самых сторонних проектов. Только вот не получается ничего. Почти. Даже если я в иде-шке подключаю эту мою либу, юнька всё равно говорит, что не видит либы. Всё потому что у неё свой компилятор. Пока придумано два варианта. Можно копировать дллку либы в юнити проект, но это херовый вариант так как после кажлого изменения либы нужно заново собирать и копировать эту дллку. Ещё можно делать символическую ссылку на дллку и тогда её вручную копировать уже не придётся. Но это тоже херовый и гдючный вариант. Короче ваши идеи.
>>484257 Я подобную задачу решил через симлинки. Просто, быстро, никаких глюков. Из минусов, если поменялись пути то надо будет эти симлинки править, и так просто на другой машине не развернёшь проект.
Как я и писал, вариант этот херовый, хоть и рабочий. Хотелось бы что-нибудь автоматическое чтобы изменил либу, нажал плей в юнити и оно само там перекомпилило, позысовывало дллки куда надо.
>>484433 По идее автоматом рекомпиляция ассембли происходит, если Юнити замечает, что используемый скрипты изменились. Скрипты должны быть в ассетах и прикручены к чему-то
>>484204 Ну заебись, теперь художникам не нужны кодеры. Лучше бы сделали такой инструмент, чтобы кодерам не нужны были художники. Например нейрочеть, которая генерирует модели и арты на основе текстового описания.
А вы занимаетесь кодоблудием в Unity? Используете инъекцию зависимостей, юнит-тесты и прочую лабуду? Или как разработчик Celeste, хуярите по 4к строк кода в одном классе?
>>484554 иногда пишу юнит-тесты, иногда DI, иногда хуярю по много тысяч срок в одном классе. надо же всё делать по мере надобности. а почему ты спрашиваешь?
>>484554 Пол года на юнити. Про инъекцию только теорию смотрел. В текущем проекте средней величины вполне и без неё всё норм. Как и без тестов. Самый большой класс - это 1к строк, но он внутри разделён на 3 части. А так стараюсь дробить логику на довольно мелкие и, по возможности, независимые компоненты.
>>484550 Да на самом деле не особо. У нас на работе 3 проекта на одном ядре. Пердолинг возникает только когда кто-то выпиливает в один из проектов какую-нибудь фичу, а потом все вдруг решают, что неплохо бы её в ядре иметь.
>>484613 Когда открываешь скрипт, пишешь переменную, например Vector3, он её не видит, не автозаполняет, сама vector3 не подсвечивается зеленым в воркспейсе как и class : monobehaviour. Также из других скриптов нельзя сделать getcomponent<class>, его там просто нет. Не знаю, с чем это связано.
Посоветуйте что мне делать, есть пустое пространство по котором будут летать корабли, для целеуказания прибытия я использую Physics.Raycast и примитив plane что бы точка была на одной высоте, но так как plane я не буду использовать, я пробовал сделать чтобы без Raycast но как видно по вебм таргет появляется в конце луча, я не знаю какие мне делать вычисления чтобы таргет был на нужной высоте а не в конце луча, была мысль сделать просто gameobject его растянуть на всю ширину и использовать Raycast, но карта будет большая и это наверное будет не оптимально.
>>484661 >>484659 А, понял, тебе нужно получить точку где Ray соприкасается с указанным plane?
В таком случае, у plane должен быть Collider, дабы рейкаст вернул результат. Представь себе plane - твоя посадочная площадка, у нее полюбому коллайдер будет. Вот ты рейкастишь простым лучом в нужно направлении, и получаешь резулльтат, который либо null (нет столкновений), либо возвращает RayCastHit с данным. Вот на основе этих данных что угодно твори (если нуль - то нихуя)
Чому ваш движок проёбывает нахуй цвета? Ебанём френель земле, небу и даже Аллаху, но ручку скрутить это уебанство разработчику не дадим. Жопа сгорела просто.
>>484666 >А, понял, тебе нужно получить точку где Ray соприкасается с указанным plane? Это у меня уже сделано, но меня интересует возможно ли это сделать без Raycast и plane, как то разработчики делают чтобы в космических стратегиях появлялся таргет на нужной высоте и месте но там нету никакого plane, просто пустое пространство.
>>484669 >как то разработчики делают чтобы в космических стратегиях появлялся таргет на нужной высоте Ну так а в чем дело? Точку относительно чего вычислять будем, знаешь? К примеру, корабль игрока - задаешь вектор направления, задаешь длину и пожалуйста, вычисляешь конец вектора относительно координат игрока.
>>484674 Походу надо править исходники стандартного шейдера, других путей нет. Влом - пиздец, пока покрасил roughness чуть менее белым - серый блик, вымывающий цвета, стал поменьше, поклал хуй.
Как понять что не дает Марио пройти дальше? Просто появляется невидимая хрень перед ним в какой-то момент, прыжком решается конечно, но что-то не очень. На Марио висит обычный 2D Box Collider, на граунде Tilemap Collider, если повесить тоже 2D Box Collier такая же проблема.
Ну и приложу строчки кода, который отвечают за движение, может в них проблема. Я пару дней всего в Юнити, если что. Спасибо.
>>484882 Во-первых, сделай combined collider for Tilemap, у тебя сейчас каждая тайле по коллайдеру на харю. Во-вторых, вангую, что логика гравитации немного опускает трубочиста на пару пикселей вниз и он влепляется в коллайдер пола, прыжок это фиксит, конечно.
Вообще, используй двойной вид - Game Scene и Editor Scene вместе, что бы увидеть что там
>>484885 Меня тоже смутило, то что там на каждый блок идет отдельный коллайдер, но как сделать его комбинированным так и не нашел. Да и сейчас гугл по запросу combined collider for Tilemap ничего не выдает. Не подскажешь?
И сейчас пытаюсь настроить физику. Первое что пришло в голову, так это повесить материал на коллайдер земли со значением Boiciness 0.0001, чтобы 100% Марио вылетал из коллайдера земли, только теперь Марио колбасит немного, если продолжать сталкиваться с блоком сбоку. Буду думать над этим.
Наткнулся на довольно простой и годный курс (бесплатен) для совсем зеленых. Вроде как просто перевод офф. туториалов, но если для начала, то вроде неплохой, для изучения интерфейса и базовых элементов в юнити.
Парни, вот набросал я тут прототип тауэр дефенса с разными видами юнитов, и с их апгрейдами и с разными видами противников. Вам показывать стыдно, потому как я не художник и у меня просто кубики стреляют по шарикам, но не суть. Можно ли такое показывать при приёме на работу? Сознание не потеряют от смеха? Или там надо чтоб графон, музон, постобработка и Аллах?
>>484989 Да он имел ввиду прототипы из JS, хак для реюзабельности кода к ООП имеющий мало отношения. Непонятно как в его тупой башке префабы с этим смешались.
>>485007 > полагаю это зависит от того на кого ты собрался устраиваться. на погромиста или артиста На погромиста, конечно же. Желательно на юньке, но вряд ли в нашем Зажопинске на ней что-то делают, так что пробую куда-нибудь пристроить свою задницу удалённо. Так что кужно хоть какое-нибудь обоссанное портфолио, которое потихоньку клепаю.
>>485018 Хуй знает что дрочить на софтварном кодерстве. Я писал несколько хуёвин плюс курсачи и диплом, но писал их для себя. Несколько утилит для экономии времени. >>485019 > ебанул бы чего ещё помимо тавер дефенса Есть ещё тетрис, змейка, сапёр и ещё одна хуерга, которую даже не знаю как описать. Экспериментировал с матаном, в результате есть проект, который просто генерирует разное говно. Интересно это только мне. Суть не в том что чего-то не хватает, меня интересует нужно ли покупать/воровать/рисовать модельки/текстурки для прототипов или же всем похуй.
>>485024 И то верно. Ладно, буду думать что ещё пиздануть. Что там обычно в качестве тестового задания спрашивают? Чтоб, как говорится, два раза не вставать.
>>485037 Хуёво знаю. Разве что MVC могу вспомнить, адаптер, медиатор, фабрику, обсёрвера и декоратора. Ну и синглтон, понятное дело. Надо бы действительно вспомнить это дело, а то с универа уже больше 10-ти лет прошло.
На автомобиле висит риалтайм рефлекшн проба. Как заставить её не влиять на окружение? Размер бокса в 0 поставил, всё равно объекты светятся, об которые бьёшься.
>>485089 Есть 4 точки Есть точка игрока. Вычисляешь длину вектора от игрока до каждой точки Находишь самую удаленную и генерируешь матрицу и можешь там свой любимый рендомный алгоритм забабахать для выбора точки
Короче, простой вариант: создаешь спавн-поинты где нужно, на пустых местах, при загрузке левела популируешь список в каком-нибдуь йоба GameManager и в процессе спавна просто проверяешь координаты точки against координаты игрока и спавнишь там, где расстояние удовлетваряет.
Если нужен вообще охуенный рендом, не привязанный к спавн-поинтам,то будет затратно. Нужно будет: а) найти удаленную точку б) кастнуть коллайдер размером с моба, дабы убедиться что не спавним его внутри чего-то с) спавнить
Если с первого раза получилось то мб и в 16мс уложимся если мобов немного. А если 20-30? А если с первого раза нихуя? Каждый кас тбудет пиздец
Анон, есть примитив - куб или пирамида. Как отображать только их ребра и больше ничего? При этом, чтобы были видны все, в том числе и ребра задней грани. Каркас модели.
Быдлокоданы, есть массив объектов (40 штук), у объектов есть публичный bool, который на каждом выставлен в false. Надо взять 10 рандомных объектов из массива и выставить там этот самый bool в true. Казалось бы - бери Random.Range от ноля до длины массива и ебошь 10 раз. Но вдруг рандом несколько раз выдаст одинаковое число. Как максимально трушно решить эту задачу?
>>485151 var x = new Random(); i = x.Next(blah); // первая генерация int c = 0; while (array.value != true && c < 10) { array.value = true; i = x.Next(blah); //custom shuffle if you want c++ }
>>485162 Но вообще да, грамотное ООП-решение - это завести у объекта, который перебирает коллекцию метод, в котором будет перебираться набор уникальных рандомных значений. Внутри этого метода будет своя коллекция (ака список).
>>485167 А хули ты будешь делать? Ок, допустим у тебя есть правильно выделенный array, contiguous, 40 рыл. Ты генеришь рендом от 0 до макс. границы в lenght и добавляешь объект в отдельный List<>. А дальше что? Если выпадет опять 10, нужно проверять на Contains и в случае с List - это линейный поиск. И даже если это мелочь, у тебя все-равно будет цикл аналогичен while{} потому как проверка на Contains.
Ок, возьмем List как начальный массив и HashSet. Тут казалось бы проще, можно роллить что угодно, из List удаляешь, в hashSet хуячишь, но для каждой операции ту будешь аллокатить новый лист и потом тебе нужно будет переобавлять их обратно в начаkьный List из HashSet - эти операци тоже недешевы
Берётся копия одного списка, суётся в список. Рандом указывает на кондедата. Тот копируется и из списка изымается. След.рандом проводится с оставшимися
Кстати, я правильно понял что если мне нужен бесконечный цикл для спавна врагов, то его надо делать в корутине? Потому что похоже, что если провернуть это в апдейте, то всё к хуям зависнет, потому что оно не отрисует следующий кадр пока не выполнит этот самый цикл (то есть никогда).
>>485298 >>Update лучше не засорять >лолщто. если у тебя в update() делает больше одной вещи, ты что-то делаешь не так Жопочтец? Жопочтец! Я и говорю "не засорять"
>>485151 >Как максимально трушно решить эту задачу? Гляжу в дотнете такое ООП-безумие, что даже для рандома есть свой класс. Я заглянул в референс, а там вот какое есть: >NextBytes(Byte[]) Заполняет элементы указанного массива байтов случайными числами. Так вот тебе и трушное (байтоёбское) решение: генерируй массив байтов нужной тебе длины (равной длине массива твоих объектов) получай случайное заполнение байтами, проверяй на соответствие маске, маска должна содержать столько нулей, сколько тебе нужно. И наконец, накладывай кучкой этот массив на булевое свойство твоих объектов, где очевидно 1 = тру, 0 = нетру.
>>485231 Никаких циклов внутри игры, основанной на главном цикле. Если тебе нужны циклические действия - цикл у тебя уже есть. Переформатируй своё мышление под эту парадигму. Тебе нужен бесконечный спавн врагов? Ты делаешь функцию, которая добавляет одного врага, если прошло N секунд времени. Чтобы считать секунды, твоя функция принимает параметром дельту времени. Это не зависит от движка. Это везде так, где используется главный цикл.
>>485464 Видимо он запутался на каком-то из этапов: 1. Resources.Load() десериализует объект из префаба, но не добавляет его на сцену (я так понимаю повторные вызовы возвращают одну и ту же ссылку, объект хранится где-то в кеше). 2. Instantiate() клонирует существующий объект и добавляет его на сцену.
>>485467 >Это везде так, где используется главный цикл.
Эмм, ты из криокамеры пишешь? Просто в движках и в юнити в частности - давно уже джоп-пулы, гатхер-скаттер, системы, вотэто вот все и single-main-loop - прямой путь к core i7 в минимальных требованиях и отсосу с портом на мобилки.
>>485298 Лучше так >void Update() { if ((elapsed += Time.deltaTime) >= time) { elapsed -= time; SendMessage("OnTimer"); }} и сохранить как компонент. Тогда можно добавить таймер к любому объекту просто добавив компонент
>>485469 Ты долбоёб? Он всё правильно написал. Твой код в юнити однопоточный и будет таким еще лет 30, потому что многопоточным кодом 99% разработчиков отстрелят себе ноги. На другие ядра юнити кладет физику, скиннинг, партиклы и прочую парашу, которую кодишь не ты.
>>485480 >многопоточным кодом 99% разработчиков отстрелят себе ноги А ты у нас такой особенный из 1%? Ну-ка покажи свою многопоточную логику на правильном движке твоего выбора.
>>485480 >Твой код в юнити однопоточный и будет таким еще лет 30, потому что многопоточным кодом 99% разработчиков отстрелят себе ноги. На другие ядра юнити кладет физику, скиннинг, партиклы и прочую парашу, которую кодишь не ты.
Юнитиговно и юнитинеосиляторы во всей красе. Концепция "ядро на систему" - это 2005-2006 год и тормозящий движок первого суприм командера. С тех пор прошло стопицот GDC, грегори уже две книги своей воды написал, охуенно-сложные системы уже для даунов разложены по полкам.
Но юнитидебилам СЛОЖНА и у них сингл-треад-луп. Теперь понятно, чего у них такое тормозное говно и почему все жалуются.
P.S. почитал, у них джобсистем только в этом году появился, а про DOD они до сих пор загадочно перешептываются как про какую-то магию. Это пиздец, они даже не понимают какое они дно.
>>485483 см >>485481 Реквестирую твои многопоточные игры. Под "многопоточностью" я имею ввиду логику игры, а не то, что и так оффлоадится на другие ядра любым движком по дефолту.
>>485469 Тебе всё равно нужен как минимум Composition Root. Алсо, без главного цикла определять более-менее точно порядок исполнения намного гемморойнее.
Вангую - максимум что он покажет - это кластеризацию по пространству в том самом геймлупе, которого у него якобы нет и заем таски по кластерам и закономерный просос с распараллеливанием в большинстве случаев - потому что ирл кластеров будет всего два - то что и так куллится и нахуй не нужно - и то что на экране и взаимодействует практически по схеме "каждый к каждому".
>>485490 > >Вангую - максимум что он покажет - это кластеризацию по пространству в том самом геймлупе, которого у него якобы нет и заем таски по кластерам и закономерный просос с распараллеливанием в большинстве случаев - потому что ирл кластеров будет всего два - то что и так куллится и нахуй не нужно - и то что на экране и взаимодействует практически по схеме "каждый к каждому".
Коданы, всегда надо делать проверку на наличие компонента у объекта? Даже если я точно на 150% уверен что он там есть? Например, если я в скрипте игрока дрочу его риджидбади - надо ли мне в скрипте перед дрочкой проверять есть ли на нём этот самый риджидбади? Я ж точно знаю что есть, иначе играть вообще не получится, ясен хуй что я на него этот компонент нацепил. Как оно с точки зрения хорошего тона? Чтоб сразу привыкать.
>>485550 > Сначала ты GetComponent a потом чек нулль Да, я об этом и говорю. То есть таки надо проверять даже если я на библии готов поклясться что этот компонент там будет всегда?
>>485550 > может быть пиздец незаметный Какой незаметный пиздец может быть, если при первом обращении дотнет выкинет тебе null reference exception красной строкой в логе?
>>485552 > таки надо проверять Не надо. Лишний код. При тестировании увидишь эксепшн.
>>485553 >Какой незаметный пиздец может быть, если при первом обращении дотнет выкинет тебе null reference exception красной строкой в логе? К тому что заебешься вылавливать где этот null если nullcheck'ов НИГДЕ не будет.
Ок, тебе похуй что там в Editor'е творится и тв проглотишь nullref А что клиенты будут в релиз-билде делать? Дрочить на exception message?
>>485570 > заебешься вылавливать где этот null > ЗДЕЛОЛ GETCOMPONENT > @ > НЕ ОБРАТИЛСЯ К НЕМУ СРАЗУ ЖЕ Хороший код, че сказать.
> тебе похуй что там в Editor'е творится Тебе похуй что там у тебя в игре, тестировать нинужно, я понял.
> клиенты будут в релиз-билде делать Действительно, что клиенты будут делать если у объекта игрока нету ригидбади, который 100% должен быть. Играть дальше, наверное.
>>485570 > А что клиенты будут в релиз-билде делать? Наблюдать красиво нарисованное кастомное окошечко "ой, извините, тут у плеера внезапно компонента пропала" которое ты делаешь для каждой абсолютно невозможной ситуации в коде, так? Зачем вообще в языках делают эксепшны, м? А про ассерты ты даже не слышал?
>>485575 >которое ты делаешь для каждой абсолютно невозможной ситуации в коде, так? Да. Для КАЖДОЙ, где клиенту или пользователю не нужно сообщать об этом эксепшоне. Например, ты пишешь либу или фреймворк и клиент использует данную либу для запроса данных, которые он знает несовместимы с тем, для чего либо предназначена. Проиходит парсингш еррор и либа возвращает клиенту эксепшон, что бы он знал, какой он хуй.
А когда твое ебаное унылое говноподелие на Хуюнит валиться с nullref или другим экспешненгом потому как ты (а точнее -твой код), даун тупорылый, пытаешься двигать GO с Rigidbody на котором этого Rigidbody нет - ты тупой хуй.
>>485580 > ты пишешь либу или фреймворк Иди пиши либу или фреймворк по работе с данными, хули ты тут вообще забыл?
Откуда лезет столько даунов с максимализмом головного мозга, которые не написали ни одной игры, но готовы часами вещать об анти-паттернах и как их не заебывает делать нуллчеки и превращать коллекции в readonly в каждой второй строчке.
Почему в реальных конторах нигде нет такого охуительного нет паттернового кода?
>>485586 Ты кроме своих постов нихуя не читаешь, дегенератина? Антипаттерн от другого дауна, такого же тупорылого как ты.
Сказали же блять что на объекте всегда есть ригидбади, всегда. Сука, как его может не быть? Очень хочу посмотреть на твой охуительный код, который проверяет что x == 4 после int x = 4; Только вот нет у тебя кода нихуя, только фантазии, уебок.
>>485589 > То, что ты присобачил Rigidbody не дает гарантии, что он будет runtime Пример, когда юнити само убьет у меня ригидбади, который я добавил в студию.
Я же не виноват, что ты настолько тупой, что сам не помнишь как ты что-то удаляешь и вынужден как даун проверять, "ой бля не удалился ли ригидбади? а может я плиту не выключил? или дверь не закрыл?". Нахуй ты вообще живешь?
>>485589 > Ебись потом Алсо, увидеть и отдебажить практически невозможный нуллреференс эксепшн - это же так сложно! Ты слепой и настолько тупой, что не умеешь этого? Нахуй ты живешь x2?
>>485594 SendMessage даун, иди нахуй, я уже заебался тебе ссылки накидывать какой ты дегенерат. Просто уйди уже. Если ты и нуллчек дегенерат - один и тот же даун, то мне просто всё ясно.
> повторно использовать этот код Повторно использовать код, который работает с RigidBody БЕЗ RigidBody? Ты совсем ебанулся там?
> Будешь копипастить? Только в манямирке дегенератов, не писавших никогда ничего сложнее змейки строить неюзабельный лес абстракций всегда лучше чем копипастить.
>>485231 да можно и в бесконечной корутине вызываемой на старте. на самом деле даже лучше, но не стоит забивать этим голову
>>485468 юнити ещё подгружает префаб при первом обращении по ссылке к нему. можно засрать производительность таким образом забавно
>>485480 лол "99% разработчиков отстрелят себе ноги". и это с тем что предлагает шарп где столько уже сделано для тебя?
>>485570 >К тому что заебешься вылавливать где этот null если nullcheck'ов НИГДЕ не будет. можно писать RequireComponent и юнити само убедится что всё на месте. проверки на null нужны, но не тут
>>485573 > НЕ ОБРАТИЛСЯ К НЕМУ СРАЗУ ЖЕ но обычно GetComponent делается на старте же только. и не всегда надо обращаться к нему там
>>485597 допустим мне надо сделать взрыв гранаты, который разбрасывает предметы пока ты там будешь извлекать ригидбоди я просто сделаю sphere cast и отправлю всем коллайдерам сообщение, а на толкаемые объекты добавлю компонент добавляющий force rigidbody
>>485605 > и это с тем что предлагает шарп где столько уже сделано для тебя? Шарп не предлагает ничего для корректной concurrency. Concurrency - это просто только в фантазиях максималистов-первокурсников. По факту разработчики языков только недавно начали понимать, что на локах далеко не уедешь не отстрелив себе ногу - http://jordi.inversethought.com/blog/advent-of-d/#day18
>>485635 >Шарп не предлагает ничего для корректной concurrency. Concurrency - это просто только в фантазиях Да так-то у Шарпа дохуя всего для минимизации проблем. Anynca/wait экосистема, семафорслим и аналоги, Read/Write Slim lock'и и абстракции в виде concurrent-коллекций.
>>485639 > concurrent-коллекций Ну это единственное, что поможет тебе не отстрелить ноги. Еще immutable collections и ФП стиль туда же. Семафоры не помогут тебе не написать скрытый пиздец, который будет дедлочиться через полгода в релизе из-за недетерминизма.
>>485637 Не имеет отношения к твоему дегенератскому подходу к однопоточному программированию в юнити.
>>485643 >Не имеет отношения да это обычный враппер над тредами с producer consumer коллекцией для сообщений. в с# такое за 10 минут делается. никто в 2018 не будет ебаться с тредами. вам асинхронное программирование дали
>>485643 >Ну это единственное, что поможет тебе не отстрелить ноги. Дык Concurrent Collection как бы все-равно банальная абстракция над Rуad/Write lock'ами. Без них все-равно никуда, хуле.
>>485645 > игра неотделима от понятия изменяющегося состояния И что мешает тебе сделать это в ФП? Все делаешь через потоки данных, новый стейт времени t+1 никак не меняет стейт времени t.
>>485654 > Без них все-равно никуда, хуле Лучше писать на проверенном и оттестированном кучей юзеров фундаменте от M$ или Александреску, чем самому. А не быть самоуверенным первокурсником, у которого > в с# такое за 10 минут делается
>>485657 Да ладно, делать-то делается, проблему с конкуррент-процессингом у всех есть. Immutable collection не панацея, о их дерьме достаточно написано
>>485655 >Все делаешь через потоки данных, новый стейт времени t+1 никак не меняет стейт времени t. Когда ты думал несколько лет над формализациями игр в фп, а юный первокур решил все за 5 минут.
>>485666 > Когда ты думал несколько лет над формализациями игр в фп, а юный первокур набыдлокодил флаппибёрд на юнити за два часа, выложил в аппстор и ебёт шлюх на бали Починил, не благодари. Развелось диванных в моем гд, пиздуйте в пр нахуй, здесь игры делают.
>>485673 Когда я тебя пидарну из онального рабства, и стану сам в одиночестве грабить корованы грести бабло на твоём поделии, мне же его и дебажить придётся.
Поэтому только скрепный сисярп. Соглашуть на playmaker
>>485698 >Это говно Сделай лучше Monogame живее живых, Celeste вон нан ем срубила тонны sales А ты там и сидишь в Мухосранске и ползарплаты только за коммуналку отдаешь
Блядь! Почему это гавно не отображает на андроиде кнопки? Вчера пол дня ебался, результата ноль. Мне надо код кодить, дизайн дизайнить, а я дни трачу на неведомые баги. В гугле нашёл только безответные вопросы. Кто-нибудь сталкивался с подобным, куда хоть смотреть? Ошибок нет никаких, во встроенном плеере всё заебись, почему на телефоне и в эмуляторе не отображается ни хуя?
Такой вопрос: делаю мини-игру, (кубик постояно прыгает, нужно управлять влево-вправо кубик чтобы попадать на платформы, иначе геймовер(endless runner)) как сделать прыжки кубика таким образом чтобы всегда на центр платформы падал? Я пробовал юзать рб но когда проверил интервал времени между касаниями к платформам всегда была небольшая погрешность (1,6-1,75) Что с этим делать? (просто если идёт ~50 платформа, кубик не попадает на платформу)
Посоны, пару тредов назад кто-то рассказывал что на каком-то собеседовании ананаса захуесосили за foreach вместо цикла со счётчиком. Так вот, есть у меня тестовое задание и нужно мне из списка удалить элементы по определённому условию. Как сделать чтоб мне не поводили вялым по губам? Через RemoveAll, через foreach или через цикл?
>>485814 Сорян, учил юнити по докам и их собственным туторам. Из курсов знаю только трекер cgpeers, слушаю оттуда Lynda и Pluralsight по всякому 3д моделингу.
>>485816 Я бы бахнул функцию, которая принимает два List, делает второму Clear и написал бы обычный фор, который добавляет во второй список элементы по отрицанию условия.
Потому что блять пошли они нахуй ебаные оптимизаторы, у меня в конторе дошли до того, что ебали за любое выделение памяти. Если что говоришь, что на мабилках так и надо, а то GC гроб гроб кладбище пиздец.
>>485816 >Посоны, пару тредов назад кто-то рассказывал что на каком-то собеседовании ананаса захуесосили за foreach вместо цикла со счётчиком. Ты больше мемы слушай, так вообще молодцом вырастешь, дебилойд. Тупые пидары, которые собеседовали того идиота, похоже настолько отстали от жизни, что не знают, что баг с foreach давно пофиксен в Unity. Более того, тупые пидары вообще не знают, что IL разлагает foreach на IEnumenator. Это же блять каким дебилом надо бытб, что бы ВООБЩЕ в коде enumenator-функционал не юзать. У них и корутины подти - злоУВОЛЮНАХУЙ.
Сука терпеть ненавижу таких тупых местечковых крестяьн
>>485819 >>485821 Что-то вы нервные какие-то. Наверное оставлю RemoveAll, там всё в одну строчку делается > l.RemoveAll (n => !n.isMarked); Вроде элегантно и без лишней конструкции. Скажут что хуйню написал - попрошу пояснить.
>>485816 Единственный вариант модифицировать коллекцию в цикле - это обратный (отрицательный) for() либо же там еще есть аналог итеративныого генератора который простые смертные нахуй не юзают.
Либо так, либо через две коллекции. Но нужно понимать, что если эту коллекцию что-то должно или может читать во время удаления (другой тред), но будет пиздец.
Пример: есть одна коллекция, read-access всегда thread-safe, если коллекция не меняется. Thread 1: читает коллекцию Thread 2: итератит через коллекцию (читает) и собирает лист того, что удалить Thread 2 ждет сигнала что можно удалять (ил ждет освобождения лока\семафора) Thread 1 завершила чтение и сигналит, что можно хуячить, брат Thread 2 хуячит быстро
>>485822 >foreach выделял память до 5.5 Не 5.5 а до 5.4.3f ВКЛЮЧИТЕЛЬНО
>корутины выделяют память и сейчас А ты у async/await state machine overhead посчитал? А у обычных тасков? И к чему твое заявление, если нет противного - что лучше? Хуй.
Настало время для регулярного напоминания о том, что не стоит оптимизировать то, что не тормозит. Будут тормоза - открываете профайлер, смотрите, где конкретно проблема, разбираетесь, фиксите.
>>485657 >А не быть самоуверенным первокурсником, у которого >> в с# такое за 10 минут делается Но это и правда делается за 10 минут. Алсо, в C# есть Barrier, который предназначен именно для этого, и это намного лучше сообщений.
>>485847 >Слово "стек" тебе говорит о чем-нибудь? Какой блять стэк даун тупой, ты если List с 4mil пропустишь через REmovaAll он, думаешь, тебе тоже на стеке зааллочит (куда нихуя это не влезет)? Валенок тупой
Собрался делать игру @ Качаешь какой-нибудь стратегический тулкит чтобы разобраться @ Пару месяцев разбираешься, охуевая с имён классов навроде GameState, GameStateOnStart, GameStateOnStartExpanded и т.п., которые делаются простой финитстейтмашин, но при этом за эти тулкиты платят огроменные бабосы и на этих тулкитах делают десятки игр
>>485635 Прочитал я наконец твою поебень и: >D absolutely shines here! >proceeds posting the same architecture as ReactiveRx on C# with events Wow, КАКОЕ НОВОВВЕДЕНИЕ ПРФМО ТАКИ УБИЦАВСЕХ ЯЗЫКОФФ
Also >goto dropped
Ты давай, там, десткий сад заканчивай и школу, анон.
>>485964 >Goto используется в диезе, но тебе на первом курсе препод, видимо, сказал нельзя, а до второго курса еще полгода. Classic. Да, преподом был мужик с именем "читабельный, со смыслом, код". Всю жизнь меня учит. Тебе, вестимо, не повезло. Ты, поди, тот самый хуй, у которого "var Peremennaya" kek
>>485965 >var Peremennaya Может кто-нибудь по-быстрому пояснить разницу между задачей List<string> s = new List<string>() и var s = new List<string>()?
>>485971 Здесь var лучше, потому что меньше букв, легче читать. А вот здесь var current = ProcessPoeben(); хуже чем Huita current = ProcessPoeben(); потому что в первом случае глядя на это ты не знаешь типа переменной, и приходится либо убирать var, что неконсистентно - где-то var, а где-то тип, либо вносить тип в название переменной или функции, что тупо.
>>485995 Могут обоссать. Когда у тебя сильно-типизированном языке названия переменных вида currentHuita, nextHuita, aHuita, bHuita, рука сама к ширинке тянется.
Как адекватно реализовать прыжок блока, когда мелкий Марио об него ударяется головой? Я нацепил на блок Animator нацепил на него контроллер, сделал две анимации для него(покой и прыжок при ударе головой). Анимация прыжка блока сделана через изменение Transform объекта, потом я понял, что придется менять для каждого кирпичика свойства анимации и это, по-моему, не очень.
>>486003 > придется менять для каждого кирпичика свойства анимации Не очень понимаю о чём ты. Из кирпичика с компонентом Animator ты делаешь префаб, потом у тебя все кирпичи такие, с одинаковой анимацией и одинаковыми триггерами/параметрами.
>>486007 Видимо у меня руки из жопы и я что-то сделал не так. Кирпичи, в таком случае, работают из одной анимации BrickUp, которую я сделал для первого кирпича.
>>486027 Попробуй убрать курвы для ненужных тебе Position.x и Position.z, оставив только анимацию Position.y, конечно у тебя все кубики в одно место ими анимируются. Ща сам попробую
Блять, у тебя ведь на них коллайдер и так висит, добавь простое условие обработки события, когда марио-хуярио бампится головой снизу - и не нужа никакая анимация.
>>486035 Это не работает, юнити говно. Короче, суешь каждый куб в парента, внутри парента у куба координаты (0,0,0), анимируешь y, анимация анимирует все 3 компоненты, но и похуй, т.к. ты берешь и расставляешь паренты по x и z.
>>486037 Но нахуя? OnCollissionEnter/OnTriggerEnter банально делаешь чек на то, какой частью хуя Марио въебался и либо нихуя не делаешь, либо через трансформ делаешь возвратное смещение. Вешаешь скрипт, хуячишь префаб - и все. Накой хрен тут тебе анимация вообщзе.
>>486027 Очевидно, что у тебя все кирпичи на одну точку бампаются. Делай бамп релативненько к кирпичу. ХЗ, какой у тебя там код, но должно быть просто.
>>486047 Вот это подрыв. Нахуй я вообще тут распинаюсь, помогаю кому-то сделать правильно, даю ссылки, скриншоты, если всякие дегенераты засрут всё своими > делай бамп релативненько вместо http://answers.unity.com/answers/302428/view.html
>>486050 > Нахуй я вообще тут распинаюсь, помогаю кому-то сделать правильно, даю ссылки, скриншоты, если всякие дегенераты засрут всё своими Это нормально. Хоть и заёбывает, да.
Пытался через код сделать прыжок блока, смог только отправить этот блок в космос, а вернуть уже не смог. Решил что через анимацию будет легче сделать, но и тут проблемсы нашлись. Буду делать через парентов, довольно просто, только Иерархию немножечко захламляет. Спасибо.
>>482712 >>482713 >>482898 Может кто-нибудь детально расписать, как мне моё горе исправить? Очень продуктивненько делал разную другую чушь, отложив на потом эту проблему, но теперь пора бы и её уже решить. А то невидимые текста как-то сложновато править и нажимать, ага. Смена рендермоде в канвасе ничего не даёт. Ядаже перелопатил код на локальные координаты везде, чтобы нормально отображалось, но бестолку. >Продолжаю делать кликабельный текст. Вроде бы текст должен быть правильный и всё такое, но его не видно. Я создаю меш с помощью текстгенератора и несложной конвертации в треугольники заливаю в CanvasRenderer.SetMesh.
>>486046 В процедурной анимации есть свои преимущества. Easing. Ее легко параметризировать, менять скорость, высоту бампа. Заебешься там свои кривые двигать.
>>486057 Mesh - это обычный mesh, который ренедрится MeshRenderer компонентом. Непонятно что тебе надо. Ты можешь вообще не использовать канвас и изменять координаты меша через camera.WorldToScreenPoint() и наоборот.
2 камеры нужны просто затем, чтобы рендерить ui-меши одной камерой, а игру другой - чтобы не двигать ui-меши каждый раз. Если ты добавишь меш дочерним элементом на канвас, который рендерится камерой, то ты получишь то же самое, только сможешь двигать меш сразу экранными координатами.
>>486065 Ну хуй знает. Я вот сценку набросал, без этой галочки кубики пытаются прыгать только в той точке, где была сделана анимация. А с галочкой - сам видишь как на видео.
>>486067 Я хочу отобразить сгенерированный меш в УИ через загрузку в КанвасРендерер. Это просто текст, он мне нужен 2д. Пишут, что можно делать через канвасрендерер, но у меня не выходит.
>>486065 >>486068 Вот, короче. Левый кубик прыгает там, где записывалась анимация, правый - вынесен в сторону. Снимаю галочку и его сносит на позицию левого кубика, то есть туда, где писалась анимация. Так что посмотри внимательнее, может ты где-то что-то упустил. Потому как лично у меня эта хуйня работает. Ну или делай через пэрэнта, в принципе это не страшно.
>>486062 > easing Типы кривых, полностью настраиваемые тангенты.
> легко параметризировать, менять скорость, высоту бампа Нинужно/делаешь 2-3 кривые/делаешь маленькую часть в скрипте, где меняешь амплитуду/скорость кривых.
> Заебешься там свои кривые двигать. Заебешься менять циферку и ждать перекомпиляции.
Почему по-твоему все анимации в серьезных пакетах вроде Maya делают через редактор кривых и даже процедурные вещи через нодовые визуальные редакторы вроде MASH? Потому что это гораздо удобнее чем печатать 2, ой быстро, 3, ой медленно, как же заебало колесико компиляции, ааааа.
>>486080 >Но зачем? Потому что хочу знать позицию слова в тексте, иметь возможность менять коды на нужные мне картинки и т.п. и т.д. У меня большая часть кода готова, позицию знаю, вертексы все имею, но загвоздка в самом отображении.
>>486080 >>486084 У меня примерно такой же код и есть. Не нашёл по ссылке, где меш апплаится в канвасрендерер, правда. Мне только этот момент и нужен, блджад.
>>486075 Подумал, может это от того, что у тебя анимация срабатывает по событию, а у меня сразу и зациклена. Сделал срабатывание по событию (по ЛКМ) - всё работает. Так что ищи где чего нахуевертил.
>>486087 Ну, блядь, canvasRenderer.SetMesh(workerMesh). Выше какой-то VertexHelper сидит ещё. Я не понимаю, что юнити не нравится в моём коде, ей богу. Надо найти какой-нибудь рабочий пример и попытаться от него плясать. Мда.
Где вы берете бесплатные звуки для ваших игор? Вот мне надо множество звуков оружия, по запросу в гугле free sound effects находятся только сайты с подпиской за бабло. Если с этих сайтов выдернуть звук без подписки, это сильно плохо? Может, есть годные беспланые на самом деле хранилища звуков?
>>486107 Если бы я понимал что-нибудь из тех текстовых файлов на гитхабе и как в них ориентироваться, я бы наверное не задавал таких вопросов в треде :)
>>486117 Ну и забей, эта новомодная PlayableGraphs параша все равно не нужна, тем более новичку. Любители советовать bleeding edge херню или дегенеративно-альтернативные подходы к программированию, или вопящие про оверхед в марио, лол, по которой нет ни уроков, нихуя могут просто нахуй пойти.
>>486137 За 2 минуты и не написав ни одной строчки кода, пока ты не сделал нихуя, кроме визга на весь тред про оверхед как же сделать чтобы было намного лучше.
>>486141 >"Вот сейчас ты забиваешь гвозди молотком. Ладно, хуй с ним, а что если это будут не гвозди, а сваи? Тот-то же (поднимает указательный палец вверх с важным видом)! А вот если бы у тебя был копёр с самого начала..."
Есть CapsuleCollider. Как сделать, чтобы при уменьшении высоты, грубо говоря, он скукоживался только сверху, а не с двух сторон одновременно? Надеюсь вы поняли.
>>486177 И чего ты тут линканул? Типа какой-то весомый аргумент? Своих нет? Что самое смешное, автора говнопоста сразу-же обоссали и он даже линканул это: http://stdray.livejournal.com/74041.html
>>486178 Хммм, наверное (если по-простому) только офф-сетить его относительно GO к которому он привязан, т.е. - уменьшаешь на нужную величину - смешаешь центр (в local space GO) вниз по локальной (!) оси Y. То есть даже если твоя капсула жопописькой к верху - коллайдер должен все-равно правильно смешаться
>>486254 слушай, ты тупой что-ли, или школьник? на. http://rgho.st/6kcMNn66w это делается так. я тебя уже и носом ткнул и так и этак, а ты все равно не понимаешь.
>слушай, ты тупой что-ли, или школьник? Там была просто функция, я не настолько продвинутый юзер, чтобы на основе одной функции выстроить остальную логику.
>>486357 тогда начни с вещей попроще чем задумал. или если тебя ткнули носом в ответ а ты не понял что видишь то спроси "как пользоваться этой хуйнёй?". тут целый тред желающих отвечать на тупые вопросы.
твой вопрос был связан с геометрией которую в школе изучают, а ты зачем-то достал микроскоп и принялся гвозди им забивать. ладно бы хорошо забивал, так хуйню же творишь.
>>486177 Больно читать такие статьи, сразу понимаешь что ты нихуя не шаришь в паттернах и вообще ты дно, а взрослые дяди делают всё совсем не так, как ты.
>>486465 Паттерны - это костыли к уебищной реализации ООП в современных языках. Если ты не пишешь в каноничном ООП стиле как конченый уебан а в юнити, тащемта, ECS, например, то тебе нахуй паттерны нинужны. Вот, например, в ответе на статью http://stdray.livejournal.com/74041.html нормальный рабоче-крестьянский код без всяких ебаных паттернов.
>>486483 > в юнити, тащемта, ECS, например Ну вот в том и дело, что я в каноничном ООП не писал уже столько с универа, что половину нахрен забыл, как и все паттерны. А в юньке это всё почти не нужно, даже в официальных туториалах любой сложности никто так не пишет.
>>486483 >нормальный рабоче-крестьянский код без всяких ебаных паттернов Это и есть паттерн. Суть возражений петросяна по ссылке в том, что он умеет находить золотую середину между проектированием и живым кодингом. Перфекционистов собственно, никогда не любили. Это тех, которые детально продумывают, как будут делать свою работу, годами, веками, палец о палец не ударив. И здесь ни программирование в целом, ни какие-то из парадигм - не при чём. Перфекционист так же и топя за ECS будет прокрастинировать, рисуя красивые схемки, как у него всё шикарно получится одной строчкой, но ни единой строчки так и не напишет. Короче. Мораль в том, что надо меньше пиздеть, а садиться и делать игоры.
>>486489 >А в юньке это всё почти не нужно Декомпильни код Cuphead и сиди охуевай, как оно не нужно.
Для сравнения: Hollow Knight использует весьма криво имплементированный singleton Cuphead использует наследие (абстрактные классы используются в качестве интерфейсов), подобие изоляции как в IoC .
Результат: у HK были сотни патчей (за это же время с момента релиза), Cuphead разгрузил только 2.
>>486492 Не, ну наследие то понятно, сам его юзаю есть абстрактный класс юнита с базовым функционалом, общим для всех, от которого наследуются юниты разного типа уже со своими уникальным мелочами, я больше про многоэтажные схемы нахуеверченного всего остального.
>>486496 Ну там так и есть, короче, ILSpy/DNspy в руки и смотри, если нужно. К слову. у Cuphead были свои dedicated-кодеры, известные уху "разработчики" только арт да анимацию делали (ну и кириллами Чадами были)
>>486506 Господи, такая хуйня. Когда эти ебаные кириллы наконец поймут, что дизайн кода > +10 мс производительности, которая будет стоить в 100 раз дороже чем простой и понятный код на сообщениях.
>>486509 >Когда эти ебаные кириллы наконец поймут, что дизайн кода > +10 мс производительности, которая будет стоить в 100 раз дороже чем простой и понятный код на сообщениях.
+10мс - это очень дохуя. Это минимально играбельные 30фпс вместо 20фпс. Это значит не придется кроить их на кастрации ассетов/дизайне уровня/мыльце вместо грофона.
геймцикл в 43мс - это уже 23 фпс и неиграбельный пиздец.
И похерив производительность в пользу кококо все по архитектуре хуяк хуяк и в продакшн мне придется где то эти 10мс вырезать. Это либо придется переделывать уровень, переделывать количество объектов, урезать графоний, и прочая хуета которая в и тоге выиливается в гораздо большее время.
Проблемы начинаются, когда этих +10мс скапливается несколько десятков, а некоторые из них ещё и перемножаются. Только многие начинают волноваться и лепят оптимизацию 0.01мс, а большая часть копируемых из бложика в бложик советов по оптимизации в юнити направлены на оптимизацию 10 аттосекунд.
>>486520 Когда начинаются проблемы, ты открываешь профайлер и переписываешь медленные скрипты. Но не наоборот, оптимизируешь все с начала разработки делая нечитаемый пиздец.
>>486518 10 мс взяты с потолка. bottleneck у 99% игр в шейдорах, а не в коде. Очевидно, что для игор с миллионами объектами нужно оптимизировать архитектуру. Очевидно, что этого не нужно делать для игр, в которых число объектов редко бывает больше сотни.
Оптимизация тут ровно одна - избавление от жирных объектов и несеквентального доступа, чтобы кеш дышал. Но тырпрайз-макакам похуй - они сначала запердолят архитектуру в которой пиздец и кешмисы на каждом шагу, потом пытаются свой фрактал спасать микроаптимизациями, наиболее тупые начинают думать что сисярп-тормозное говно и переносят проект на уеч, где уних сллучается ровно такой же фрактал отсоса, только еще и с сегфолтами и даже выученные simd-интринсики их не спасают.
>>486491 > надо меньше пиздеть, а садиться и делать игоры > дизайн кода > +10 мс производительности, которая будет стоить Вот-вот. Пока мы делаем игры, сендмесседж-даун даже не знает, какое время занимает 1 цикл на 60 фпс.
>Когда начинаются проблемы, ты открываешь профайлер
Вот типичный подход тырпрайз макаки - думать после того как случился факап.
Открываешь макак такая профайлер и видит рандомные пососы при доступе к объектам. Потому что ентити-хуентити и твои объекты рандомно разбросаны по памяти рантаймом. И в зависимости от того на каком уровне кеша происходят миссы, просос достигает от незначительных наносекунд до сотен микросекунд.
Точнее, нет, макака этого подъеба не замечает и сразу весь луп меряет - получается астрономическая хуета. Видать надо оптимизировать кококо алгоритм. Макака начинает выкраивать в алгоритмах по микросекунде. Что макаке дает те самые +1-2фпса о которых макака тут же строчит батхертнутые посты про "кококо аптимизация нинужна ничего нидает, байтоебы зазаза".
При том что ебать байты то и не требовалось, не требовалось переходить на плюсы и писать далее там асмовые вставки. Всего-то требовалось подумать над данными и их размещением в памяти.
>>486530 Все так, только тормоза от объектов бывают в 1 игре из 100, каких-нибудь казаках. Тут сендмеседж даун прав.
> оптимизировать кококо алгоритм > выкраивать в алгоритмах по микросекунде Это не так делается, обычно это происходит примерно так "бляяяяя нихуясе тут же O(N^3), пойду дам кому-то пизды"
>>486521 Да, но для этого код должен быть модульным, иначе переписывание одного скрипта вызовет переписывание ещё десятка, а дальше и всех остальных. Так что минимальные представления о архитектуре твоего проекта нужны, просто вываливать спагетти в скрипт не стоит.
>>486537 > около сотни - двух на весь уровень Если ты возьмешь себя в руки и посчитаешь байтики берем 200 объектов по 50 интов в каждом это 200 50 4 = 40000 байт, а потом посмотришь на скорость современной памяти и размеры кешей, то поймешь, какой ты долбоеб.
>>486538 >> около сотни - двух на весь уровень >Если ты возьмешь себя в руки и посчитаешь байтики берем 200 объектов по 50 интов в каждом это 200 50 4 = 40000 байт, а потом посмотришь на скорость современной памяти и размеры кешей, то поймешь, какой ты долбоеб.
Чому люди быдлокодят макаронный сурс вместо того, чтобы, купив бажесвеный Playmaker на деньги с мамкиных завтраков, дебажить машины состояний персов и вхор...
Чому люди такi дурнi...
Планирую замутить АИ уличной шлюхи, засунуть ее в префабы и спавнить, когда мне скучно и не с кем поговорить
>>486595 Ml-agents: Unity Machine Learning Agents [1658 stars on Github]. Courtesy of Arthur Juliani, Deep Learning at Unity3D
Unity Machine Learning Agents позволяет исследователям и разработчикам создавать игры и имитационные среды для машинного обучения используя Unity Editor с помощью простого в использовании API Python.
Делаю раннер, сделал генерацию уровня, но введу того что после клика GameManager.instance.gameStarted станет true и ещё пару ифов тоже выполнится invokerepeating вызывается чуть позднее и персонаж не допрыгивает до платформ, что делать?
>>487114 Объясни мне как ребёнку. Я в юнити тыкал полгода назад, так мне до сих пор приходят всякие туторы, но это письмо я прочитал. Сам сейчас пилю игру на рпгмейкере, как клинический художник и графоман, но т.к. логикой проблем нет, то думаю, что мог бы в графики типа блупринтов. Вот мне и интересно, это действиетльно настолько сильный инструмент, что позволит мне всю игру (платформер с элементами внки) описать без кодинга?
>>487116 >но это письмо я прочитал Какое письмо, блять.
>то позволит мне всю игру (платформер с элементами внки) описать без кодинга? Hollow Knight на 80% был сделан на PlayMaker FSM. Правда, почти год спустя я слышал они переписывают все это дело без использования PlayMaker - слишком глючен был. Но в целом - ответ да.
Очередной заскок Юнити, спешите видеть! Нет порядка уничтожения объектов, нет даже порядка уровня "вызвать везде OnDisable, потом OnDestroy", что логично потому что мы хотим иметь логику в OnDisable. Ёбаные 2 часа дебага чтобы потом реализовать это самому за 5 минут. Почему Юнити такая параша, а?
>>487153 И толку? Он Destroy уже вызовет и убёьт мои текстурки которые надо сохранять. >>487158 Работа ёбаная. >>487162 Работает. Иначе бы у меня видеопамять потекла.
>>487161 Это первое что вызвало отвращение к Юнити. Скачал. Установил. Хочу сделать проект. Мне пишут "зарегистрируйте учётную запись". Ну ебаный в рот! Закрываю нахуй это говно. Немного остыв иду на сайт Юнити. Долго регистрируюсь, подтверждаюсь. Наконец запускаю Юнити ещё раз. Создаю новый проект. Ввожу логин и пароль. Смотрю там статистика какая-то для проекта. Выключаю нахер. И в этот момент логин и пароль исчезают!!! Чувствую себя кретином. Замечательное знакомство с Юнити.
Здарова ребятишки Делаю игорь для мобильных, и щас задался вопросом на какой версии "билд" делать. Большая часть была сделана на версии 5.5.5 (Про пиратка) но я проверил на 2017 и 2018 (Бесплатная лиц.) всё работает так-же. Использую 2 ассета ценой в 30 и 60 вечнозелёных, заплатить за них мне не жалко ибо они того стоят. Меня смущают постоянные обновления ассетов и самого Unity, в которых много лишнего (для меня), и ещё их зонды со сбором статистики.
Получается есть 2 стула: Выложить билд сделанный на пиратке со спизженными ассетами и положить хуй на всех. Или же как порядочный лох человек заплатить за всё.
И вообще как они узнают и узнают ли пока каких-то больших денег не начнёшь рубить? Вообщем дискач на эту тему
>>487173 Так зарегал бы на левую почту. Как будто тебя анализы сдавать просят. Я у них облако засираю своими поделками, например, а все свистелки и переделки лучше смотреть на YouTube на их же канале.
Пацаны короч как вызывать функции в основном потоке из вторичного? Я хуй знает, ждать овтета от ассинхронной функции в основном потоке не могу, так как фризит игру. Была идея в фоновом потоке складывать делегаты в безопасный контейнер, и дрбчить оттуда уже в апдейте с основного, но хуй знает, идея кажетая так себе.
>>487267 Корутины - это второй поток. Они не выполняются асинхронно. И они являются единственным нормальным способом написания кода с continuations в отличие от велосипедов всяких довничей с потоками и асинками.
Открывый хотя бы иногда документацию по классам стандартной библиоотеки, погромист мамкин. А лучше вообще возьми за привычку по полчаса в день читать по вечерам доки, пока не выучишь все неймспесы наизусть.
>>487253 >Я хуй знает, ждать овтета от ассинхронной функции в основном потоке не могу, так как фризит игру. Зачем тебе ждать в основном потоке? Жди в async методе. Фича async методов в том, что они захватывают syncronization context и продолжаются в том треде, в котором были вызваны. Это сделано чтобы было удобно обновлять UI на формочках. В принципе в юнити можно сделать точно так-же, если это уже не сделано по дефолту. Нужно просто указать сделать и указать syncronization context треду.
>>487328 Хуюк. Дебил ебучий, откуда мы знаем что там нахуевертил тот мудила, который писал этот урок? Или давай в студию тот ассет, что у него прикручен, или иди нахуй с такими тупорылыми вопросами.
>>487327 >Нужно просто указать сделать и указать syncronization context треду. Да и не нужно, по-умолчанию возобноляет на том же потку в том же Synchronization Context UNLESS ты указал ConfigureAwait(false)
>>487253 >Пацаны короч как вызывать функции в основном потоке из вторичного? Я хуй знает, ждать овтета от ассинхронной функции в основном потоке не могу, так как фризит игру.
Есть два стула две очереди. В одну ты пишешь команды для working thread, из второй читаешь отчеты о проделанной работе. Пиздухаешь команду в очередь, далее твой тред заннимается своими делами изредка поглядывая в ответную очередь на предмет "не сделалось ли чего".
Вот как пример, у тебя дохуища летающих мух (деревьев) и прочей параши, надо бы их откуллить шоб движок не охуел, твой основной поток (геймлуп) оценивает - "да, чет дохуя, дай-ка я напрягу другие ядрышки и дает им задачу - "вот вам каждому такой-то срез коллекции поеботы, прокатайте его через фрустум, SetVisible(false) всем неудачникам, а альфасамцам - всем выстваить по халявной анимации, о результатах доложить в очередь номер 2". Дальше геймлуп занимается своими делами - расчитывает AI там, префабы спавнит и изредка поглядывает в очередь с результатами.
Никаких проблем с синхронизацией, дедлоками и прочей парашей. Так делается у всех нормальных людей.
>>487351 >Никаких проблем с синхронизацией, дедлоками и прочей парашей.
Если главному потоку больше нечего делать кроме как ждать ответа от воркеров, а воркеры еще не выполнили свои таски - то не дедлок ли происходит, а, петушок?
>>487360 Главный поток проверяет очередь сообщений неблокирующим вызовом. И вообще иди почитай что такое дедлок в вики.
В принципе, он прав, можно нахуевертить оффлоад бакграунд задач в поток и связь на сообщениях, но это стоит делать только в самом крайнем случае, когда вообще нет никаких способов снять нагрузку с цпу. Что бывает редко юнити сама куллит дохуя, без твоего участия, например. Потому что если ошибиться или сделать систему чуть сложнее, чем нужно - можно хлебнуть боли с плавающими багами, от которых ты просто охуеешь. Люди не зря пишут - что concurrency - это не просто.
>>487389 >Ради интереса замеряй сколько миллисекунд занимает цикл проверки нахождения 1к объектов во фрустуме камеры.
Насколько я понимаю, особо нихуя, раз все уже давно от древовидных организаций сцены отказались и теперь делается тупо брутфорс-куллингом коробок по фрустуму и дальше уже всякие рендер-бейсед техники микрокулинга типа софтварного рендера в малом разрешении (как у фростбайтов) или хардварных occlusion query.
>>487521 > Monobehaviour это когда ты скрипт пишеш там ввреху двоеточие стоит и написано Monobehaviour без этого работоть не будет > GameObject а это уже когда в крипте ты там пишеш допустим GameObject бла бла бла то есть уже как обьект типа там камера например
>>487210 Да не в том речь, я не ананимас-фелосаф, почту от Юнити скрывать не собирался. Речь о том, что там было неочевидно, что регистрация не обязательна. Если бы я щёлкнул чекбокс раньше, я бы сразу начал изучать редактор, а не тратил время на регистрацию, копя раздражение к разрабам, чтобы в конце почувствовать себя кретином, который зря регистрировался.
Спасайте. Создал пустой геймобджект на сцене - это стартовая позиция. В его координатах я инициализирую игрока. Но никак не получается передать объекту rotation этой стартовой позиции. Игрок всегда появляется с rotation (0,0,0). Как же правильно передать угол одного объекта другому?
Можно ли два разных объекта с разными анимациями и контролерами объединить в один? Что я хочу сделать: юнит берет в руки оружие, тут я скриптово делаю оружие чайлд объектом, и в зависимости от оружия чтобы была уникальная только для него перезарядка. Но, насколько я знаю, два аниматор контролера между собой конфликтуют.
>>487786 >Благодарю, но чем плох invokerepeating? Не знаю хуже такой способ или нет. Я сам делал через invokerepeating, и получилось, что впереди появлялось дохуя объектов, которые слишком быстро удалялись(удаление обгоняло персонажа и камеру). Высчитывать точное время я не стал, и просто взял код из туториала.
Наша регулярная рубрика "ебанутые заскоки Юнити" снова в эфире! Итак, в ролях билд-сервер на Дженкинсе на маке и wwise в проекте. Что-то в Wwise по неведомым (пока) причинам кидает исключение при сборке, которое пропадает где то в недрах Юнити и не ловится. Угадайте что делает Юнити? Правильно! Выдаёт наружу ответ "всё ОК" и дженкинс считает билд состоявшимся! Охуеть, ага.
>>487787 У меня сейчас уже пофиксил была проблема когда первый вызов опаздывал на 0,333-0,5 секунды решил способом: создал переменную lastPrefab, в ней хранится позиция последнего созданного префаба, и просто + z дистации последнего префаба и рандомил x Если делать способом как в видео хранить колво существующих префабов я обычно создавал empty в которой и создавал платформы т.е у платформ, родителем становилась empty , весил на empty скрипт и считал сколько внутри чайлдов .Lenght
Юнитаны, такой вопрос. Добавил AdMon в свое приложение. Блок рекламы в футере отображается - все норм. Блок рекламы межстраничной я запускаю в меню проигрыша. И вот тут вопрос: иногда оно всплывает когда и требуется - в момент проигрыша поверх кнопок рестарта игры. А иногда после смерти не появляется. Оданко подгружается в момент игры.
Я понял, что очень херово пишу код. Полез пилить свой прожект сразу после прохождения туторов noobtuts и за это пиздец как стыдно, пользуясь гуглом и официальной документацией. Так вот, есть какие-нибудь рекомендации по улучшению навыка кодинга?
>>488113 Иногда смотрю стримы, как другие пилят свои игры, и вижу что у них код сложнее, чем у меня, применяют всякие кодо-фишки. Я вот так не умею, то есть знаю как это делается, но применить на практике не могу, делаю какие-то глупые решения. Тут наверное опыт решает, но как мне набраться хорошего опыта, если я пишу говно-говно код.. Вон там анон выше предложил книгу Совершенный код, много о ней слышал, наверное настало время еще раз прочитать.
Поясните идиоту, нахуя нужны UnityEvent'ы. Ну или скажите, почему они здесь не нужны.
У меня есть куча событий, ScriptableObject'ы, которые, на бумаге, должны хотя бы вызывать окошко посреди игры и извещать игрока о том, что он обосрался/молодец при соответствующих условиях. максимум: вызывать окошко с вариантами действия.
Вроде как всем этим событиям нахуй не надо знать, что есть какой-то там UI, потому что они просто передают туда List с описаниями для окошек, может быть на выходе принимают информацию о нажатых кнопках (и то можно с кнопки передавать это говно(?)).
Следовательно, как это реализовать? Создавать отдельный менеджер ивентов? Или где-то сделать статичный UnityEvent, на который подписан UI, и через который каждое событие будет делать Invoke(eventStuff)?
>>488189 Делаешь все через MVVW идеологию. Используешь юнитиивенты как ивенты + биндинги. Например, у view model делаешь ивент "ебануть окно", подписываешь на него view (UI).
>>488189 На самом деле в твоем клоне крестиков-ноликов нахуй не нужна изоляция данных, это просто отговорка что б не делать игоры а пилть супер-архитектуру.
Как организацию работы со сценами делают по всем правилам, где посмотреть в подробностях? Мне для платформера. Я себе за пару минут придумал только сделать стринговый массив с названиями сцен, а в краях экранадобавить триггеры, заходя в которые вызывается нужный элемент массива и передается в SceneManager.LoadScene
>>488187 что не так? 100 лишних байт? зато нормальное декларативное решение. я просто на объектах указываю состояние, которое ты изменяешь в коде. на каждый объект можно навесить свои компоненты (разбивани блоков, стрельба) без возни с хардкодом и проверками. для марио это идеальное решение
>>488192 Спасибо, заодно начну читать про эти самые модели. >>488194 Меня не ебет изоляция данных, мне нужно, чтобы было удобно. Чтобы я мышкой правил события сейчас, и чтобы код для пользователя был быстрым потом. Потому что кодить я люблю, но геймплей делать я люблю больше.
>>488200 А можно просто в отдельном классе держать состояние модели марио со спрайтами и коллайдерами и запиливать в стек новый экземпляр класса при поверапе. Нахуй делать ещё один гейобъект то, мм?
>>488200 > что не так? Все не так. Во-первых, ты, оопшная дегенератина, даже не подумал об аниматоре, просто потому что ты никогда на юнити нихуя и не делал. А самое главное, ты даже не пытаешься разделить представление от данных.
Любому, кто кодил хоть что-то сложнее змейки понятно, что логика паверапы, хуяпы и геймобжекты, которые находятся на уровне представления, должны быть разделены.
>>488208 > в отдельном классе держать состояние модели Это верное решение.
Анон, добавил на сцену Image, который рисуется через Sprite Render. С помощью скрипта я меняю значение альфа-канал между 0 и 1 и получаю либо полностью видимое, либо полностью прозрачное изображение. Можно ли добавить на пикчу какую-нибудь маску, чтобы менять альфа-канал только по ней и делать изображение прозрачным в отдельных его частях?
>>488217 С ходу могу придумать только такое решение - ты делаешь финальную маску в альфа-канале, а потом пишешь кастомный шейдер для рендера спрайтов он простой, исходные коды щейредов можно скачать в архиве загрузок Unity с параметром, который скалирует альфу от 1 до значения маски.
>>488229 Пошли виляния жопой. Сначала кубы кодом анимировали, теперь анимацию паверапа из марио уберем или будем костылями навешивать, потому что за каким-то хуем оопущенцу понадобилось джва геймобжекта, чтобы они еблись сендмесседжами, обязательно, без этого никак. Какой же ты дегенератина, просто пиздец.
>>488231 что такое анимация поверапа по твоему и почему ее нельзя сделать используя разными объекты насколько я помню в марио просто переключается спрайт маленького-большого марио
>>488235 > почему ее нельзя сделать Можно. И сендмесседжами можно пердолиться. И текстурки в пеинте можно нарисовать. И шуруп молотком забить.
Только вот нормальные люди, не ебанутые, делают все соответствующими инструментами. Анимации - стейт машиной аниматора. Клипы - кривыми. Паверапы - стеком эффектов в коде.
И только конченые ебанаты-сектанты везде видят повод сунуть побольше своего говна.
Сижу на версии 5.5.5 но слежу за обновлениями, до недавнего времени не интересовали за исключением Vulkan который завезли в версии 5.6. Якобы он экономит заряд батареи на мобильниках. Так ли оно или это очередной макретинг и утка?
>>488198 Всё правильно делаешь. Чтобы не снашаться с массивом, вешай логику триггера + загрузку сцены прямо на него, то есть на объект.Дай объекту название сцены. Сможешь передвигать их и между сценами
>>488148 хм, наверно лучше использовать collision enter/exit, чтобы узнать, на земле ли персонаж, или в прыжке, чем рейкастить каждые 20 мс. Если сработал exit - значит персонаж прыгнул или вылетел, если enter - земля снова под ногами. Хотя хз, тоже новичок, надо самому попробовать
>>488305 Я пробовал так, но тогда получалось, что если Марио при прижке боком касается объекта с тэгом ground, то он считает, что он на земле и позволяет прыгать. А как проверять какая сторона коллайдера касается я не понял..
>>488306 > юнити не позволяет Что юнити не позволяет? Вручную спрайты анимировать собственным менеджером анимации? Написать собственный астар? Просто пиздец.
>>488316 Что в спрайтовой игре без навмеша и аватара с костями никак. Иначе процедурный код. Переписывай. Также, чем больше объектов и сообщений между ними, тем намного лучше. Факт.
>>488317 unity это такой toolbox. я беру инструменты из него, чтобы наиболее просто и эффективно решить задачу. ты какой-то поехавший велосипедщик. ничего, с возрастом и опытом это пройдет, я надеюсь.
>>488321 Ты код в папке ai зацени, автор даже в процедурный код не смог - у него АИ - это такая огромная простыня на каждый уровень со всеми врагами итемами, евентами и прочим .
>>488320 Откуда нам знать, что этот даун >>488318 в своих ооп маняфантазиях имеет ввиду? У него любые термины могут значить что угодно, и менять значения между постами когда его в говно макнули ебалом. При этом, ему ваще похуй, что в 2д нет никакого навмеша и он там нинужен, например. Главное ебануть какие-то общие слова, декларативность там, ооп, сообщения, процедурный код плохо. В любой тред заходит, кстати, юнити, уеч, годо, даже ГЕЙМПЛЕЙ.
Он походу из мира интырпрайза пришел - где оверхеднутый код из фабрик абстракций - абсолютная норма, ведь можно еще и за откат с дружественной фирмой клиенту к этому говнокоду еще и топовых серваков на 4 зиона продать.
В мире геймдева, впрочем, всеп что он получит - это единицы в апсторе/плеймаркете по причине "какого хуя марево с грофоном денди тормозит на моём хуавее/айфоне4g?????"
>>488325 так это по сути один огромный игровой скрипт, в котором шаг за шагом написано как должна вести себя игра. может это и эффективно в плане производительности. вот только чтобы сделать другую игру, тебе придется писать весь этот скрипт заново. опытный дизайнер же собирает свою игру как лего из готовых и независящих друг от друга компонентов.
о производительности должны заботиться парни из юнити. если я выбрал юнити, значит меня устраивает список платформ и я не собираюсь делать игру на сегу лол.
>>488327 >может это и эффективно в плане производительности. вот только чтобы сделать другую игру, тебе придется писать весь этот скрипт заново.
И с таким подходом написано дохуища хитов.
> опытный дизайнер же собирает свою игру как лего из готовых и независящих друг от друга компонентов.
И на выходе получает 2д парашу с требованиями кукурузиса.
> о производительности должны заботиться парни из юнити. если я выбрал юнити, значит меня устраивает список платформ и я не собираюсь делать игру на сегу лол.
>>488326 Скорее он пришёл из мира 7б, потому что говорит двумя общими предложениями, которые увидел где-нибудь на хабре, додумывая остальное своей развитой молодой фантазией. Я помню ещё в древние времена подобных ентерпрайзеров видел на XNA форуме.
>>488357 Так тебе уже всё сказали, лол. Почитал ваш срач и так и не понял, нахуя тебе два разных ГО для Марио. Да, это работает, да, это быстро для пользователя. Но какой в этом смысл, если стула у тебя два: 1. Дублировать код для каждого ГО. Как минимум скорости-то у них разные, всякие фаерболы ещё есть. 2. Держать свойства для ГО в контроллере. Тогда почему бы не держать там же размер коллайдера, спрайты?
>>488365 Баффы/дебаффы нормальные люди делают через стек или несколько стеков эффектов. Получил баф - положил в стек со временем. На каждом кадре обновляешь бафы/дебафы в стеке, время вышло у кого-то? Вытащил.
При любом изменении этого стека финальные параметры - по сути кеш состояния чара - посчитанные полные резисты, дамаг etc. пересчитываются из этого стека полностью - вычисляясь сверху вниз. Можно при каждом обращении к параметрам пересчитывать из стека, тогда кеш ненужен, но это медленее. Можно навешивать ивенты на изменение стека/финальных параметров, чтобы запускать соответсвующие анимации.
Таким способом можно реализовывать систему эффектов любой сложности, хоть вов, хоть пое, из-за правильного пересчета состояния перса не будет никаких проблем, например, с отменой-накладыванием процентного баффа, когда характеристики "уезжают". Делить код стоит по классам эффектов данные эффекта каждые в своем классе эффектов, по группам финальных параметров чара резы, доты, дамаг-модифаеры - выполняя пересчет стека несколькими отдельными методами, пропуская в каждом нерелевантные элементы, или деля стек на несколько если их элементы не влияют друг на друга.
>>488377 Ну и да, "стек" эффектов он немного не в смысле информатики 8 класса, а в смысле - "упорядоченный список". Элементы в разных случаях могут и в середину вставляться, главное чтобы был всегда одинаковый порядок вычисления статов - например, базовые статы -> скиллы + число дамаги -> скиллы +% дамаги -> шмот +число дамаги
Господа игроделы, поясните за такую вот хуйню: 1) Если я хочу реализовать разные заскриптованные моменты, уровня падающих с потолка ящиков когда ГГ рядом проходит или чего-то такого, мне надо для каждого такого действия свой скрипт писать? Мне просто кажется, если таких действий наберется много, получится соответственно много скриптов разных, и это в итоге повлияет на производительность игры сильно. 2) Насчет производительности- юнити сильно страдает от разных ошибок новичка при создании 2Д игрушек? А то боюсь что так вот натворю хуйни через годик, и окажется, что оно все лагать будет как крайзис на пентиуме 4.
Пока что все, спасибо за внимание, кто ответит- лучи добра Вам.
>>488384 > много скриптов разных, и это в итоге повлияет на производительность игры сильно Число скриптов почти не влияет на производительность. Влияет что ты делаешь в Update() каждого из них. Если у тебя там просто if(IsInsideBBox(player.localPosition)), то хоть 10000 хуярь, похуй.
> юнити сильно страдает от разных ошибок новичка Зависит от ошибок. Сишарп сам по себе компилится в очень быстрый код. Пока у тебя везде все O(N) - ваще похуй. Если у тебя начинаются вещи O(N^2) типа "посчитать каждый с каждым, на 1000 объектов", то соснешь. Или если выделять много памяти в куче, например, создавать на каждом кадре new Something[1000];
>>488384 И еще сразу добавлю- а что насчет заскриптованных сценок? Я как представлю, что надо, чтоб их сделать, так волосы на голове дыбом становятся. Как все эти штуки в правильные моменты включать, камеру двигать и все такое. Это ж какие скрипты должны быть большие походу... Кто сталкивался с таким, как это вообще реализуется, сильно тяжко?
>>488388 Понял, точно, С# же быстрый, совсем забыл за это. А насчет тысяч обьектов это точно не про меня, вроде по мелочи всего накидал. Спасибо большое за ответ.
>>488382 >"стек" эффектов он немного не в смысле информатики 8 класса Но для марио конкретно лучше стек. Получаешь поверап, в стек закидывается новое состояние марио, к которому можно обращаться. Время действия поверапа закончилось - стейт поверапа убирается сверху и марио возвращается в стейт, в котором был до этого.
>>488406 >>488408 >О ГОСПОДИ ОН ДОБАВИЛ ЦЕЛЫЙ GAME OBJECT!!! почему вы не понимаете, что это ничего не стоит? вы так говорите, как будто я майнер в игру добавил
>>488428 > О ГОСПОДИ ОН СОЖРАЛ ЛОЖКУ ГОВНА, БОЖЕ Я СЕЙЧАС ПРОБЛЮЮСЬ > почему вы не понимаете, что для меня это ничего не стоит? я и кастрюлю говна съем!
>>488431 ты заебал. ты не понимаешь, что это такой дизайн юнити: все есть объекты и обмен сообщениями. сами авторы движка сделали такой фреймворк и нужно ему следовать. нахуя ты свою процедурную ссанину тащишь в юнити? иди пиши на своем SDL супер-быстрые программы.
>>488433 Ты ебанат, тебе сказали уже 25 раз, что в юнити ECS, сука. И компоненты - это не геймобжекты, пидор ты шелудивый. И сендмесседж - ебанутое наследие десятилетней давности, когда в юнити еще была параша вроде unity script и boo. Конченый ты дегенерат.
>>488433 > обмен сообщениями Никаких сообщений в юнити из коробки нет. Есть только вызовы функций, которые идут в стек, и юнитиивенты, которые идут в стек. Насчет SendMESSAGE:
SendMessage() is at least 100 times slower than calling a function directly, and this number increases as more scripts and functions are available on the object. If you can find the script you need ahead of time, do so and then call the function directly.
Я вот смотрю на етих господ >>488435>>488433 , и думаю, мне что, тоже надо будет настолько глубоко погрузиться в эти реки безумия юнити движка, чтобы писать нормальные игры, или нет?
>>488454 >>488456 Да вы дауны тупые, слушайте больше рендомных говноедов на анонимной имидж-борде для имбецилов-девственников.
Вон, разраб Celeste недавно код PlayerCOntroller зарелизил, там вообще пиздец творится. А чувак ведь игры 20 лет делает и вообще, живет этим так нехуево (не Нотч, но сотни тысяч продаж имеет)
А теперь ложите 2+2 и поймите, что похуй, как написано, главное что работает и приемлимо. Так всегда в гейдеве. А стремиться к идельаному коду можно всю жузнь
>>488457 >разраб Celeste недавно код PlayerCOntroller зарелизил, там вообще пиздец творится ну это понятно. единственное в чем автор этого говна хорош - это в пиаре. я честно говоря прихуел от того, что у дженерик платформера с пикселями на пол-экрана в 2018 году столько внимания. да даже геймплей митбоя был интереснее. кому автор чемоданы заносил, не понимаю. или герой его игры - трансгедер-гей?
>>488457 >похуй, как написано, главное что работает и приемлимо программирование - это ремесло. и как человеку, посвятвишиму свою жизнь этому - мне не похуй, как написано. речь о профессиональном искусстве. я тут говорю о профессионализме, а не о зарабатывании денег. качество кода не измеряется заработанными деньгами, это вообще 2 разные плоскости.
>>488468 но ведь даун это ты. какой-то дурачок привел привел с хуевым кодом, которая заработала много денег как образец для подражания. 1. это не аргумент, потому что такие - это единичные исключения из правил. и если анон наговнокодит хоть 10 таких celeste, он не заработает и 10% ее прибыли. 2. умение писать хороший код всегда лучше умение писать хуевый код. это: быстрее, дешевле, надежнее (меньше багов)
нужно стремиться писать хороший код, а не тешить себя манямирком о миллионах долларов, написав и продав кусок говнокода. что не так?
>>488472 Поинт Celeste в том что геймплей > код. Достижение хорошего геймплея плохим кодом (неизбежно при итерациях) лучше чем хороший код без геймплея. Плохой код без геймплея это червь-пидар конечно.
>>488464 Так игры не про это. У тебя код — это работа, манифестация труда. А у геймдева это инструмент, ничего больше. Можно сказать, что тут движок обсуждают и что чувак с клоном Марио тот ещё долбоеб, но какая разница, если пользователь не заметит, а Марио-кун продолжит лепить говно.
>>488483 Кстати да, мудрая мысль. Код- прежде всего инструмент для геймдизайнера. Конечно, если ты кодер в геймдев компании большой и работаешь над ммо нового поколения, то да, код грамотный там будет очень важен. А так, если ты делаешь платформеры, то примитивного кода вполне достаточно, работает- и то хорошо. А уже со временем стоит развивать свое мастерство. И решать, что для тебя важно качать, кодерство или рисование, или может быть, ты просто генератор гениальных идей, и тебе все это не надо.
>>488495 > работает- и то хорошо Нет. На 2 kloc макарон ты уже плаваешь в багах и не можешь добавлять новые фичи, охуеваешь и бросаешь гейдев к хуям. Кодинг - самая неблагодарная и выматывающая часть, минимизировать проблемы в ней необходимо, иначе перегоришь.
Стремление к хорошему коду — проклятие для одиночки. Одно дело, когда ты в команде программистов выстраиваешь сложную игровую систему, а другое, когда ты один пишешь код и начинаешь выстраивать "идеальную" структуру. Это просто проклятие. Завидую тем, кто не заёбывается и просто пишет код. Кто понимает, что это всего лишь инструмент.
У меня в одной игре 900 классов было написано. А мог бы с пользой потратить это время.
>>488506 Хоспале, это что за игра такая? РПГ небось? У меня вот другая проблема- я начинаю только с юнити разбираться, и меня мучает чувство, что я делаю что-то не так. В основном касательно кода, так вот сижу, мудрю скрипт какой, и все время мысля летает вокруг, типа я все не так делаю и неправильно, и потом оно рано или поздно перестанет работать и запускаться. Уот. Все наоборот в общем.
>>488506 хороший код = простой код. пример с кодом марио https://pastebin.com/RP58Zrum сложный и чем больше поверапов, стейтом будет, тем более код будет походить на лапшу с сотнями строк. пример с двумя объектами простой. проще нельзя придумать.
>>488506 Да мне так вообще пох, я буз понятия что там такое ООП, ECS, хуялы-муялы, DI и прочая чепуха. Я выучил синтакс сисярпа и хуячу как знаю.
Я и до этого не заморачивался особо, а теперь каждая строчка быдлокода удовольствие доставляет - так и вижу как на другом конце земли свинорылый упырок с жиру бесится.
>>488508 Лол, я так три дня думал, как мне хоть как-то запилить взаимодействие между двумя компонентами. Набросал что-то от балды, потом код особо не открывал, но все в уме перебирал, какие вообще варианты есть. Только потом понял, что все уже написано, обдумывать нечего.
>>488483 манифестация труда программиста - это программа. ты собрался делать программу не умея программировать и не желая учиться. ты или очень самоуверенный или очень глупый. ты не понимаешь что-ли, что это как собраться нарисовать картину не умея рисовать? твои навыки - это твои инструменты. без навыков рисования ты в лучшем случае нарисуешь палочного человечка. без навыков программирования все твои ИГРЫ МЕЧТЫ будут оказываться клонами марио и примитивным платформерами.
>>488514 "Игра мечты" — это бред. Когда геймдев думает про игру мечты, у него там явно не простенький платформер всплывает в голове.
Я вот хочу РПГ с открытым миром, чтобы была генерация мира как в Dwarf Fortress и пачка свойств для культур, которые будут собираться в страны. И все это с хардкорной боевкой. И магией. И стволами. Охуенно ли это? Наверное. Сделаю ли я это один? Да ни за что в жизни.
Я это к тому, что геймдизайнер должен понимать лимиты кода и среды разработки, но ему важен результат, а что там под капотом — не настолько важно. Важны иммерсивность, играбельность, геймплей.
С таким же успехом можно перекатится в /pa/ всем тредом и обсуждать разные стили графона.
>>488519 если твои лимиты - это рисовать палочных человечков, то твои геймдизайнерские проекты будут однообразными, мягко говоря. это прямо влияет на результат
>>488522 Ты не сравнивай дома с апельсинами. На примере других игр как минимум я знаю, что можно сделать платформер с ролевой системой и процедурной генерацией. Типа Dead Cells, например.
Я не придумываю в голове систему и думаю: "Надо посмотреть, можно ли написать это кодом". Я прекрасно знаю, что код умеет делать все эти вещи, мне просто нужно нагуглить какой-нибудь паттерн и с чем его едят, сесть и сколотить игру.
Поэтому есть тенденция на накликивания вещей мышкой, поэтому вообще есть удобный GUI: потому что Unity — это инструмент геймдизайнера, а никак не программиста. Программированием гемдиайнер помогает себе создать тот user experience, который он хочет. Безусловно, если делать кучу процедурщины и сложные ролевые системы, потребуются дополнительные знания, но они опять же гуглятся. Или, в конце-концов, можно просто найти человека, который все это сделает, потому что он шарит в коде, а не в играх.
>>488524 И я понимаю, что чувак с Марио моет загнать себя в проект из дошираков, но при масштабах его поделки это не имеет значения. Марио прыгает и хорошо бегает, гумбы приятно давятся — вот это важно. Когда он возьмется за более серьёзный проект, он и так поймёт, какой он был идиот и как надо было сделать изначально.
>>488510 Да, очень просто делать два объекта, копируя всю логику, а в случае добавления стейтов добавлять ещё гейобъекты, копируя всю логику снова. Простата как есть.
>>488550 А я люблю обмазываться не свежими ассетами и дрочить. Каждый день я хожу по market place с жестким диском для ассетов и собераю в него все ассеты которые вижу. На два полных диска целый день уходит. Зато, когда после тяжёлого дня я прихожу домой, включаю компьютер, включаю UE4…ммм и загружаю в него свое сокровище. И дрочу, представляя, что меня поглотил единый организм ассет. Мне вообще кажется, что ассеты, умеют думать, у них есть свои семьи, города, чувства, не оставляйтеся их в market place, лучше приютите у себя, говорите с ними, ласкайте их…. А вчера сидя за UE4, мне преснился чудный сон, как будто я запустил игру, и она прератилось в ассеты, персонажи, уровни, музыка, все из ассетов, даже небо, даже Аллах!.
Не могу пользоваться ассет-стором вообще, кстати. Кажется, что там говно/не подходит/все сделали до меня. Даже не открывал ни разу, все делаю сам. Это лечится?
>>488699 >1. перемещаться Векторная переменная "Скорость" уменьшается с каждым фреймом на дельту времени умноженную на константу затухания скорости. Кнопки управления задают (заново в каждом фрейме) вектор направления, затем вектор нормализуется, умножается на скалярную константу увеличения скорости и результат прибавляется к скорости. >2. атаковать в направлении движения угол поворота спрайта персонажа вычисляется из вектора направления, полученного выше. >3. возможность менять оружие. Миллионы вариантов. Самый простой - держать массив с оружием в памяти и по нажатию на кнопку перебора оружия шифтить массив, а по нажатию, например, на цифровые клавиши, выбирать элемент из массива. После чего поверх спрайта персонажа рисуется спрайт оружия с индексом из этого массива. > >Непонятно как связать смену оружия с анимацией. Что тут непонятного? Заводишь анимации смены оружия и добавляешь через конечный автомат.
Анон, я импортировал в проект стандартный ассет ThirdPersonController, связанный с игровой моделью EthanBody. У этой модели есть модель очков, которую легко удалить. Я хочу вместо этих очков сделать, например, шляпу и перетащить ее на макушку персонажа. Но что бы я не менял в параметрах Transform этих очков или Skinned Mesh Renderer, ничего не меняется. Ни размер очков, ни координаты. Сами цифры изменяются, двигаются координатные вектора, но сами очки намертво прилеплены к одному и тому же месту. Как же мне изменить модель?
>>488740 Господа, может подскажете, какой функцией реализовать замедленное скольжение по стенам для 2д платформера? Стену нахожу, попробовал через .AddForce и типа добавлять силу направленную вверх. Но получается дичь какая-то. По идее это что-то простое, но не могу никак в этих transform.position и Vector функциях разобраться, движение пока что сложно понимаю. В какую сторону копать то, что именно изучить, какую функцию?
>>488560 >игру ты с пижжеными модельками все равно не зарелизишь школие не может в EULA спойлерзаноси 5% и делаешь что хочешь внутри единственного игрового движка
>юнити то кусков говна без графона, шейдер три, блюпринтов, побольше будет фиксанул
>>488770 > дизайн героев > от всем известной игры > одинаковый у тебя и десятков тысяч школьников Хуита без задач. Любой, кто будет использовать эту парашу в своих кириллоподелиях автоматически признается обоссанным.
Нормальные, уважаемые люди берут зебру, маю и пеинтер и делают своих персов сами.
>>488750 Можешь при соприкосновении боком со стеной уменьшать gravityscale, а при нажатии прыжка, пинать его по нужному вектору в бок. Алсо, если используешь родную физику, тогда к объектам с динамическим ригидбади лучше не применять трансформ для перемещения
Выделяю партикл систему - играет. Выделяю другой объект - не играет. Выделяю партикл систему, нажимаю замочек - играет. Выделяю что-то другое, инспектор показывает партикл систему, система НЕ ИГРАЕТ.
>>488772 дебич никто не собирается воровать чара для левых игр хотя индусы чето такое питались спросить лол
тут полностью заряженные герои, есть даже мешы под фх, т.е добавь пару лапшичек логики и у тебя рабочий ААА чар, которого можно изучать и реверсить тупой ты блять школьник
иногда надо высовывать голову из своего говнокода с ублюдским синтаксисом для нелюдей и думать о чем то более важном для создания игры
>>488860 Когда уечедаун называет кого-то школьниками это само по себе смешно, но ИЗУЧЕНИЕ АССЕТА ЧАРА - новое слово уеченауки. Можно скачать и изучать ассет, такое юнитипетухам и не снилось! Ору блядь.
>надо высовывать голову из своего говнокода с ублюдским синтаксисом для нелюдей Всё ждал когда ты упомянешь блюпринты как причину превосходства уеча над унити, впрочем уечедебсы предельно предсказуемы и несут один и тот же бред.
>>484542 >Ну заебись, теперь художникам не нужны кодеры. Лучше бы сделали такой инструмент, чтобы кодерам не нужны были художники. Например нейрочеть, которая генерирует модели и арты на основе текстового описания.
А вот и первый программистишка начал что-то прозревать. Все верно, игру на 90% делают артисты, которые пишут сюжет, рисуют арты, моделят модельки, рисуют текстурки. Программистишка в геймдеве - это такой чернорабочий, для грязной работы об которую белым людям зашкварно руки марать. Всего то наступил такой момент, когда появилась возможность частично программистишек заменить - и тут же такой баттхерт.
>>488863 >>488865 иди шарпик подрочи, делай свою хуйню целый день, что я сделаю за 15 минут, а на релизе будешь удивляться чому ты в говне и всем похуй, да потому что ты жалкое ущербное чмо без технологий, без графона, без юзабилити, с компанией-маркетологом, ссущей в уши кококо бест чойз фор мобалй двеловпмент пфф, подотри слюни уебок еще полгода назад у вас тут пластинка была помню как раз за мобайл, минвайл фортнайт уже летает на гейфончиках и скоро будет на роботе воевал с шарпой, вместо геймдизайна
просто признай что ты тратишь время на хуйню, твой скилз уперся только "разработчикам" старкова, переводить "игру" на МИНОРНУЮ упи-версию ЦЕЛЫЙ ГОД ахахах блять дебилы сука, и им за это еще и платят, сука такие же мытые малолетние дегроды как ты
>>488874 >кек, ты же гадкое патлатое существо без вкуса и чувства прекрасного, что ты можешь создать? Я скриптер на юнити - значит, я уважаемый актуальный программист!
>>488880 занимаюсь архвизом, и мне блять страшно подумать что для ссаного ивента открывания двери или выключения света с кнопки, перемещения объектов, рантайм смены текстур обоев, цвета смарт материала, мне бы пришлось пердолиться с шарпиком пишу скриптики на питоне если что и шарпик реально самый убогий из всех языков
>>488881 >ссаного ивента открывания двери или выключения света с кнопки, перемещения объектов, рантайм смены текстур обоев, цвета смарт материала А потом появляется проблема не связанная со стандартным блюпринтом и ты пердолишься с плюсамину то есть не ты, а погромизд
>>488883 >сэкономленное время потратишь на переубеждение заблудших школьников, только посмотрите на жидис18, эти маркетутки завозят графон, ноды, шейдеры и лапшу, вот это поворот
я хочу что бы все поняли — пользоваться продуктами компании которая сама нихуя не делает — лютый зашквар
блендер делает мульты шмая и мертвый макс нет, они могут только купленный игровой движок ебнуть, я про спинграйд или как его эпики делают эпичные шутаны, теперь и на мобильных устройствах и да для всех сука конченных и немеющих читать ненарусском поясню что уеч так же может в аркадки 2д хуиде, и производительность будет зависеть от кашицы в ваших тупых головах а что делает упитя? демку рендеханную на суперкомпьютере?
а за ее плечами куча забагованого безвкусного говнища на маркете и гринлайте из дефольтных ассетов просто потому что школьники как то там заговнокодили чето там купили и распустили хвосты, но нет, это путь нездорового человека
Анон — выбирай светлую сторону! Думай о конченом продукте и количестве ресурсов. Ни в коем случае не думай что строчки текста заменят художественные скилзы.
>>488886 >проблема не связанная со стандартным блюпринтом проблема эпиков, они фиксят баги
но фишка в том что в моем пайплайне нет таких проблем и не может быть я не пытаюсь создать неевклидовое пространство или еще какую нибудь ебливую говнокодерскую безсполезно аутичную хуиту , не считая фундаментальных типа всратого ворлд маппинга, понятно что есть позишн мапа, но мне бы хотелось прорыва в этом месте
но нет и похуй, я всегда смогу найти ТВОРЧЕСКОЕ решение проблемы, закрыть кустиками или не использовать тайлы или использовать но в другом меше, с ручной разверткой
>>488899 в глаза не ибись, еще раз перечитай каждую строчку
мне было нужно и я изучил питон ровно на том уровне что бы редактировать чужие аддоны и писать свои скрипты для блендаря
сшарп же просто не имеет задач, кроме дрочки в отличии от роскошного С и более замороченного С++, языки внушающие уважение, а С синтаксис так и просто радует глаз
если ты хочешь сделать быстро игрушку бери качай нормальный движок и ДЕЛАЙ ИГРУ сука, не дрочи
>>488901 лолирую с твоей школьной причинно-следственной связи
>>488876 Ну-ка проясни мне за O(n) и про отличие сборщика мусора в УНИТИ от .NET, актуальненький ты наш. Типичный УНИТИ-кодерок нихуя не знает и воротит такую хуйню что волосы на яйцах шевелятся.
>>488906 Сам по себе язык, разработчики которого уже забыли какой парадигме следуют и с каждым новым релизом ебут разработчиков компиляторов и комунити в рот, это страшно. Но когда кто то берёт и лепит сверху невнятну ебанину с запредельным уровнем связанности - это за грунью разумности.
>>488907 Не, ну ты прололируй и скажи как делать что то не про открывание дверей и зажигание света по нажатию кнопки на уече? Что, если я хочу сделать свою рпг мечты вроде пилларов? Ждать пока эпики пофиксят и возвращаться потом?
Нахуя мне нужен движок для создания ААА шутанов и говна под мобилки, если я не хочу делать ААА шутаны или говно под мобилки?
>и ДЕЛАЙ ИГРУ сука Сам сперва игру сделай, а потом кукарекай, чепушила. Вот прям возьми, быстро сделай и утри тут всем нос. А то пока что движок просто чудо и мечта, но адепты пишут скрипты для блендера и занимаются изучением ассетов.
>>488911 >Ждать пока эпики пофиксят и возвращаться потом? Сурпрайз: ты в принципе можешь пофиксить сам, не дожидаясь когда Господа Разработчики соизволят дойти до твоего бага. Был у меня баг с Юнити, когда лайтмапы скомпилированные на Windows, если собирать игру на Маке, просто пропадали. Багрепорт, все дела - ответ через полгода "А у вас баг ещё есть?". Нет блядь нету - потому что УНИТИ тоже уже нету. Вообще главное отличие уеча от унити - с уечем не надо воевать, он работает так как ты ожидаешь. Любая игра на УНИТИ - абстрактная фабрика костылей.
>>488913 >он работает так как ты ожидаешь Да, сделал кнопочку открытия двери - она открывает дверь, нет нужной фичи - прикрыл кустиком. Что ожидал, то и получил.
>>488911 >если я хочу сделать свою рпг мечты вроде пилларов блять ты конченый, разуй глаза и посмотри на скрин сука
а если хочетшь ртс(которой нету в присетах) на тубике есть челик который подробно в одно рыло все расписывает
ебанный ты ишак прекратить вырывать мои ответы из контекста
я занимаюсь архивизом, снизь поликаунт(/локни лод1 в один клик), пожми текстуры(локни мипы), добавь ай противников(в удобном графе) и игра готова ее техническая часть
>>488917 >нет нужной фичи открыл бепехи и дописал, разрабы топят за лапшу сильнее чем за кресты и в своем же пайплайне их активно используют, тем самым покрывая с головой любую мою задачу как геймдизайнера
на лапше даже калькулятор написали лол и код при этом довольно аккуратно выглядел
>>488920 >и игра готова Ну так сделай давай. Можешь ещё взять ассеты с моделями на 12кк для изучения.
>на тубике есть челик который подробно в одно рыло все расписывает А как же нажал кнопку и в один клик сделал? Это ж что пердолиться надо будет?! И если всё так просто, то где все РТС на уече?
>>488860 > изучать и реверсить > ригованного и анимированного под ААА чара > реверсить Просто пиздец, что этот даун несет? Хинт: если хочешь научиться моделить, текстурить, риггить и анимировать - смотри курсы по тому, как это делаешься, на cgpeers можно скачать бисплатно.
> воевал с шарпой, вместо геймдизайна > воевал > не осилил один из самых простых и удобных языков современности > осилил питон хммм что же не так? > рантайм смены текстур обоев > пердолиться > 1 строчка > пердолиться > блюпринты лучше шарпа Яяяясно. Бесноватый я-не-программист.
> занимаюсь архвизом > архвизом > нихуя не знаю в погромировании, нихуя не знаю в пайплайне игор > визги на весь тред > не тот тред А, ну всё понятно. Пошел нахуй отсюда.
>>488925 >открыл бепехи и дописал То есть сперва мы против копания в скриптах - взял и в один клик сделал, а теперь мы берём и дописываем, маня? И всё отличие в том, что в одном случае уже есть открывание двери, а во втором нет?
>на лапше даже калькулятор написали Охуеть! Когда GOTY?
>>488926 >Ну так сделай давай. иди спроси у мамки что такое бюджет, его планирование и на сколько рублей ты сжираешь борщика
дегрод плз, научись отличать логику геймдизайна, от кор гемплея, и то и другое лапшуется, просто требует разного количества ресурсов
>где все РТС на уече? там же где все остальные, нахуй никому неупершиеся гниют в яме забвения
>>488930 >мы против дрочьки гадкой сишарпы, лапша же няшная и хорошая, недавно вот запилил часики или вот десскрин, просто в качестве отдыха от основной ремесленной работы, там буквально на один экран лапшы получилось, ну и самый кайф это наглядно смотреть как скрипт бежит по нодам в дебаг режиме ^_^
Что пердолики визуальной системы погромирования забыли в моем ламповом юнити-тжреаде? Начинает казаться, что юнитидауны - боги погромирования просто и взрывают ICPC в свободное от построения инновационных архитектур кода игор время.
>>488932 > буквально на один экран лапшы > целый экран лапши > 1.5 ифа Вся суть просто. Блюпринт-дегенераты, неспособные открыть книжку по погромированию, официально объявляются обосанными.
>>488699 Короче, сделал анимацию на лютых костылях.
>>488716 Твои советы с практической точки бесполезны. Я спрашиваю как конкретно на юнити делать анимацию в зависимости от движения. Как конкрентно сделать анимацию атаки в 4-х направлениях так, чтобы можно было заменить спрайт оружия.
>>488939 Тебе надо набрать неофитов, чтобы дальше по пирамиде подняться, лол? Заценю уеч как-нибудь потом. Методом тыка выбрал Унити и уже наполовину сделал что-то нормальное. Сейчас переносить это все на другой движок — гарантированно забить хуй в процессе и опять пинать хуи пару месяцев.
Хуй знает, что у тебя за нелюбовь к шарпу и юньке. Вопросы характера "как мне анимацию для 4-ех направлений сделать" возникают только у тех, кому лень полистать документацию.
>>488965 годное предположение лол, но нет, просто привычка фосс юзера, платить за софт светом или советом
ну а тут откровенный обман и ввод в заблуждение, представь насколько бы мир стал лучше без унити?
ну и писать игры на шарпе это так же как писать на питоне, просто глупое занятие
>переносить это все на другой движок — гарантированно забить хуй в процессе абсолютно точно, но уже сейчас советую начать поглядывать гайды с офф канала тубика, они лучшие, потом уже можно смотреть всяких мимохуев
>>488969 >June 25, 2014\t найс трай дрочила, еще можешь поплакать что порталы для лайтмаса завезли только в 11 версии, а мальтибаунс скайлайт и вовсе сделал в одно лицо какой то малазийский чурка и его нереально крутую разработку добавили вот буквально в 17 версии(актуальная 19)
>>488965 >Вопросы характера "как мне анимацию для 4-ех направлений сделать" возникают только у тех, кому лень полистать документацию. Ну сделай, блджад, кукарека. Ты даже не в осознании понять что это нихуя не просто. Ты не умеешь практически/алгоритмически мыслить над решением проблемы. Вскукареки "возьми вектор, добавь спрайт" это не решения. Давай конкретное решение мне!
>>488965 В документации ничего про это нет и не будет. Умение сделать "анимацию в 4 направлениях" от движка вообще никак не зависит. И это главная проблема всех юнити-погромистов - они нихуя не умеют кроме копипасты туториалов.
>>488973 >Давай конкретное решение мне! Моя работа стоит $20 в час например. Готов сделать систему перемещения персонажа с сменой оружия и всем этим за неделю.
>>488981 > И это главная проблема всех юнити-погромистов Причем тут Юнити упырок тупой. Или ты намекаешь что UE4 настолько примитивен, что они там сию задачу в два клика мышкой решат?
>>488981 > от движка вообще никак не зависит Еще один охуенный теоретик, уровня архивизарда. Им завезли меканим, но им сложно даже открыть туториал по нему.
>>488981 Да при чем тут документация? Документацию не ебет, какой там у тебя случай, она описывает базовый функционал. Если человек вообще не понимает, что может делать язык вместе с приблудой от Юнити сверху, какая нахуй разница, что ему говорить? Он же просит за него написать игру, и дело не в движке, в ленивом долбоебе.
>>489009 Бля, читаю жопой, но надеюсь ты понял, что я имел ввиду а итоге. Никакие топовые движки, в которых все есть искаропки, не помогут подобным людям.
>>489010 Fixed State Machine. Можешь погуглить конструкцию switch-case, можешь банально через if'ы прописать. Нажал "вверх" — поворачиваешь GameObject наверх. Надо атаковать — прицепи триггер-квадрат перед Линком, когда он мечом тыкает. Ну или потом изъебнись так, чтобы триггер следовал за мечом. Спрайты, скорее всего, через аниматор настраиваются, т.к. мне нечего анимировать, ничего не подскажу.
>>488984 Меканим для анимаций, ты не должен использовать его как замену FSM. Потому что анимация и состояние персонажа - два разных слоя, анимация представляет состояние персонажа но не является им. Пример атака оружием. У тебя очевидно должен быть коллайдер для определения попаданий, который тебе надо включать/выключать в процессе атаки. Триггеры для включения/выключения могут быть событиями приходящими из анимации. Потому что это открывает тебе возможность не знать какое именно оружие у персонажа и какую именно анимацию атаки он играет.
>>489035 Пусть сначала хотя бы каноничную реализацию FSM в меканиме освоит. Если он начнет сейчас еще делить на две машины, одна для анимаций, вторая для состояний - то вообще охуеет. Хотя, такое деление, конечно, правильное.
Но для начала > Триггеры для включения/выключения могут быть событиями приходящими из анимации. вот так вполне сойдет. А состоянием можно управлять и без FSM, там 1.5 чиселки у него, угол, координаты.
>>489048 У меня 2 спрайта, которые я меняю в зависимости от пройденного расстояния. Например прошел 1 метр и остановился на спрайте 1, прошел 1.2 метра и остановился на спрайте 2. Как ты это сделаешь в аниматоре?
>>489049 Мы про Юнити или вы два дебилойда все еще про УЕ4 в Юнити треде пиздите?
Если первое, то в самом аниматоре, обособленно - никак, нужен скрипт, который будет считать пройденный путь и указывать аниматору стейт. И это ПРАВИЛЬНО, нехуй аниматору быть еще одним скриптовым бэкендом.
ВЫ ТАМ СУКИ ТУПЫЕ СОВСЕМ ОХУЕЛИ СО СВОИМИ МОДЕЛЯМИ И ПАРАДИГМАМИ НУКА СЪЕБИТЕ НАХУЙ ДАУНЫ
Использую виртуальные оси, ну те которые в Input, и проблема такая, мне нужно задать разные действия например на положительную и отрицательную кнопки, если делать просто через GetAxis, то выходит, что это значение плавающие, и после отпускания какой-нибудь кнопки, оно не сразу возвращается в ноль, можно конечно ускорить этот "возврат" изменяя параметр сэнситивити, но один хер работает баговато, есть ли другой способ получить доступ к негативной и положительной кнопкам, в методу Input.GetButton можно задать просто саму ось, вписав ее название, других перегрузок вроде не увидел. А мне бы доступ к полям в этой оси, чяднт?
>>489052 >указывать аниматору стейт Как аниматоу указать стейт. В аниматоре время, а мне нужны фреймы. На бумажке предлагаешь записывать отметки времени?
>>489067 Ну смотри, у тебя еба-куб, он белый. Нажал ЕДТИ, прошел 1ед - он стал черный, спрайт поменялся на черный, да, братиш? Ну вот бля, делаешь в аниматоре 2 стейта, один с таким-то спрайтом/набором спрайтов, жругой с другим. Настраиваешь блендинг их при смене.
Затем, такой, хуяк, из скрипта, по условию, банально выставлешь любой стет, который нужно и он меняет его на нужный. А если бледндинг сделал - крисиво меняет клево, да?
Какую программу выбрать для 3D моделирования и максимального удобного экспорта в Unity? Ну и чтоб через несколько недель-месяц вкатывания в эту программу можно было запилить небольшую локацию для 3D платформера, а может даже и персонажа смоделировать до этого пока еще не думал. У меня опыта с 3D совсем мало, было дело пару лет назад двигал кубы в Cinema 4D, до моделинга дело не дошло.
>>489091 Скажи как. Может и сделаю. Пока что с Animator'ом слишком много boilerplate'а получается чтобы убрать все ненужное из него и заставить работать со спрайтовой анимацией. Я лучше на своих костылях как нибудь пока.
>>489094 В Maya экспорт в юнити 1 кнопкой. Очень простая в освоении, и перса там можно намоделить, зариговать и анимировать хотя, лучше, конечно еще зебру освоить. Насчет блендера не знаю, на мой вкус он какой-то пиздецовый, но экспорт в юнити тоже на изи.
>>489096 Я вот и смотрел в сторону Maya. Интерфейс, мне кажется, там очень легкий для новичка. С чего начинал в Maya, можешь что-нибудь порекомендовать типа гайдов?
Я одного не пойму, если ты нубас, который даже FSM впервые видит, то нахуя лезть сразу в таки дебри, где ты по граблям танцуешь? Для вас же, ёпвашумать, сделали туториалы, ну посмотрите их, почитайте. Нет, блять, буду сразу как купил рояль пытаться заебашить Шостаковича и охуевать почему не получается.
там искать в торрентах: Pluralsight/Digital Tutors, Lynda
что надо: modeling, uv unwrapping, rigging, animation
если учить зебру, то гайды по zbrush, там же. еще понадобится уметь retopology (из high в low poly), делается в Maya.
текстуринг/покраска: я использую allegorithmic substance painter. Для текстур земли и пр. substance designer, у него есть хорошие гайды на сайте юнити.
Как сделать атмосферное освещение, ну типа, шоб от моего цветастого омни окружение окрашивалось? Чё-то не робит оно у меня в 2017 юнити, раньше работало.
>>489091 Да можно и проще. Анимация сама же останавливается в последнем кадре, если она не зациклена. Или можно просто сделать стейт с клипом из одного необходимого кадра.
>>489105 > цветастого омни > омни Что это? Сам не ебу как настраивать realtime GI, если что, но думаю надо копать в эту сторону если ты не про обычный источник света
>>489110 Ой блять, ну даже хуй знает. Может быть вот это? https://www.youtube.com/watch?v=jNiCEUisrRM Давай ещё кукарекни что это под старую версию. Всё то же самое работает и в последней версии. Вам дали машину состояний, дали скрипты, дали меканим. Нет, буду тупить и даже не пытаться разобраться.
Как сделать чтобы 2d объект поворачивался туда где курсор мыши находится с пределом скорости поворота? Скопипастил скрипт но он боком ориентируется (надо на 90 градусов еще повернуть). И он как то 2 сторонами ориентируется, а надо одной
var mouseVector = new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z - mainCamera.transform.position.z); var mPos = Camera.main.ScreenToWorldPoint(mouseVector);
>>489138 >transform.position.z - mainCamera.transform.position.z Это чего вообще? У тебя top down, так? Значит X/Y навигация, Z залочена на трансформ и по ней ротация вокруг своей оси.
Это >targetRotation.x = 0.0f; >targetRotation.y = 0.0f; убери, а просто залочь(freeze) ротацию GO по X/Y в его свойствах.
Координату Z надо оставить родную, ее, по-моему, вообще трогать не надо.
>>489143 Залочил в ригид боди, но без обнуления его по всем осям колбасит.. Но вопрос не в этом как мне сместить попорот на 90? А то мой кораблик не носом а бортом на врагов наводится
>>489145 >Но вопрос не в этом как мне сместить попорот на 90? В смысле? Ты хочешь ВСЕГДА разворачивать его на 90 градусов? А если угол между проекциями его текущей ориентации и кликом мыши будет меньше 90, будет переповорот тогда?
>>489138 вообще, довольно трудно будет объяснить тебе все трюки с которыми это было бы сделать просто. проще показать. http://rgho.st/8SRygLXgm на красная линия будет поворачиваться за синей с фиксированной скоростью.
>>489178 хотя наверно стоило ещё скриншот кода приложить. а то ведь в треде ленивые есть, не скачают не посмотрят.
все что тебе реально надо знать для движения в нужную сторону это собственно сторона в которую надо двигаться, а её можно получить если взять знак от Z оси кросс-продукта. а дальше всякие клевые трюки. если множить кватернион на вектор то это равносильно тому что повернуть этот вектор на этот кватернион. можно ещё кватернионы кстати складывать, если перемножать их. таким образом можно например ротацию не только складывать но и вычитать.
>>489214 Хотя у тебя работает и вне нуля.. Возможно проблема в том что я вешаю скрипт не на камеру а на корабль, и там как то неправильно пересчитывается проекция координат мыши в пространстве..
private void Render(TextGenerator tg, TextGenerationSettings tgset) \t{ \t\tcRend.Clear(); \t\t \t\tMesh mesh = new Mesh(); \t\tVector3[] vertices = new Vector3[tg.verts.Count]; \t\tColor32[] colors32 = new Color32[tg.verts.Count]; \t\tVector2[] uv = new Vector2[tg.verts.Count]; \t\tfor (int i = 0; i < tg.verts.Count; i++) \t\t{ \t\t\tvertices = tg.verts.position; \t\t\tcolors32 = tg.verts.color; \t\t\tuv = tg.verts.uv0; \t\t} \t\t \t\tmesh.vertices = vertices; \t\tmesh.colors32 = colors32; \t\tmesh.uv = uv; \t\t \t\tmesh.triangles = new int[tg.verts.Count/4 x 6]; \t\tfor (int i = 0; i < tg.verts.Count/4; i++) \t\t{ //converting one quad into two triangles \t\t\tmesh.triangles[i x 6] = i x 4; \t\t\tmesh.triangles[i x 6 + 1] = i x 4 + 1; \t\t\tmesh.triangles[i x 6 + 2] = i x 4 + 2; \t\t\tmesh.triangles[i x 6 + 3] = i x 4; \t\t\tmesh.triangles[i x 6 + 4] = i x 4 + 2; \t\t\tmesh.triangles[i x 6 + 5] = i x 4 + 3; \t\t}
Может кто пояснить, почему канвасрендерер не отображает ничего? У фонта точно есть материал, вертексы точно генерятся, треугольники тоже точно генерятся. Если задавать всё ручками, то работает, но если брать из текстгенератора, то вдруг нет.
Можно ли сделать так чтоб если спрайт над зеленым, то он станвоится красным, а если над красным то зеленым, НУ ВЫ ПОНЕЛИ. В случае релейтеда, это 1пиксельная черная линия.
>>489285 Можешь создавать ригидбади из кода и сразу заносить в массив. Можешь в Start() ригидбодей вносить их в массив. Можешь ещё что-нибудь придумать.
>>489294 Чет стремненько. Объекты то могут уничтожаться, теоретически. Лист протухнет.. Может сообщения слать? Если объект уничтожается он жи отписывается от источника сообщений? Или нет, интересно кстати.
>>489295 Запоминай объекту айди в массиве ригидбадей и в OnDestroy() удаляй объект из массива. >сообщения Зачем, когда всё делается очень банальным образом?
>>489097 >Maya Привыкают жрать говно что бы работать в корпорациях, если инди для себя, то все всегда и везде выбирают блендар, потому что не надо ловить стрелочку гизмо, потому что уже все включено, и даже динотоп(динамический скальпт) лучше в блендаре, потому что не надо как уебку кликать по пустому канвасу, не говоря о том что сама по себе зебра тот еще космический корабль, который тебе придется изучать
кароче у блендаря тотальный кастомайз и хоткеи, плюс можешь накатить пайменю и настроить их под себя, дописать скрипты или спиздить, все бесплатно или стоит копейки
>>489290 >>489259 Я сейчас ебанусь нахуй Изъёбами сохранил копию текстуры фонта, подставил вместо самого фонта для отрисовки, в меше все комбинации увишек перепробовал - НИХУЯ. Не хочет рисовать, и всё тут! Простой пример с задачей вертексов ручками работает, а как пытаюсь большой массив запихнуть - так пустой экран. Я понятия не имею, чего CanvasRenderer'у не нравится. SetMaterial, SetMesh. Квадраты в треугольники, перенести вертексы, перенести увишки. Дело не в текстуре, потому что у меня и так уже проверенная копия текстуры фонта, не в шейдере, тоже проверено, так в чём блядь дело? Что там вообще сбоить может?
>>490082 >>490084 Я заплакал. Я mesh.triangles менял каждый по отдельности вместо того, чтобы залить новый массив. Нужно mesh.triangles = newTriangles было, суканахуй. И ни один не заметил за неделю (или две?). Я тут чуть с ума не сошёл. >>490084 У текстгенератора в каждом вертексе verts содержатся позиция, цвет и т.п. В меше используются параллельные массивы с позициями, цветами и т.п. Это просто конвертация из одного формата в другой.
Вопрос такой. Допустим, у меня есть объекты, которые могут менять своё поведение и свойства (под свойствами я подразумеваю значения переменных). Поведение и свойства независимы. Т.е допустим 8 вариантов поведения и 8 вариантов свойств = 64 варианта объекта. С изменением поведения все понятно, делаю классы состояний и когда нужно меняю ссылку на какое-то состояние. Объект делает что-то типа Update(currentState(this)). Т.е поведение определяется кодом и хранится в нем же. Но что делать со свойствами, которые по сути есть данные? Определять сериализуемую структуру с необходимыми полями, создавать массив и в эдиторе заполнять поля? Звучит довольно удобно, задаешь сколько хочешь разных вариантов свойств, на изичах меняешь нужные значения в любой момент и все такое, но как передавать объектам эти свойства? По хардкодному индексу в массиве? А если индексы проебутся/поменяются? Каждый раз лезть руками править 3 на 7? Вводить какой-нибудь тупой enum, с числом значений по числу вариантов свойств? Но это значит, 10000 видов свойств - 10000 значений enum. Также это значит каждая смена свойства - поиск по массиву. Что делать, посоны?
>>490373 Нихуя не понял, но передавай твой объект со свойствами как базовый тип обжект, а в классе с поведением просто касти его в нужный тип и пользуйся свойствами.
Прошлый тред: [ссылка]
Официальный сайт: 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 сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты?
- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с 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# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.
- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol