Ответы пользователя Даниил Басманов — Хабр Q&A
Геймдизайнер-телепат
При открытии сцены и загрузке из ресурсов Юнити ищет все связанные объекты и загружает их в память, просто так хранить ссылки без загрузки нельзя, можно только хранить самодельные идентификаторы и грузить по ним объекты из ресурсов когда надо. Ещё можете попробовать Addressable Asset System, этот пакет сыроват немного, но может помочь.
Ответ написан
Теоретически Rust, но он ещё свеженький, инфраструктура по части игр не развита. Может быть через пару лет что-нибудь для него и появится.
Ответ написан
Теоретически можно, на практике никто так не делает. На практике на питоне игры в принципе не делают, только визуальные новеллы с помощью RenPy. Раз в пять лет появляется одна инди-игра на питоне, но не более, инфраструктура создания игр на питоне очень скудная. Не так давно появилась поддержка питона для движка Godot, можете попробовать, но, вообще говоря, на многое не рассчитывайте. В контексте игр рассматривайте питон чисто как учебный язык с малой практической ценностью.
Ответ написан
1. Посмотреть официальные туториалы.
2. Посмотреть как сделано в официальных примерах.
3. Написать своё или купить готовое.Ответ написан
Комментировать
По базовым вещам вроде навешивания компонентов и созданию кубиков — актуальны, всё что касается графики — нет. Есть туториалы поновее, посмотрите на этой странице те, что сверху с картинками, их делали не так давно. Ниже в подкатегориях сборная солянка, там могут и старые попасться. Ещё много хороших туториалов есть на сайте Catlike Coding.
Ответ написан
Комментировать
Разработчики игры N в своё время сделали хорошие туториалы по физике.
Ответ написан
Комментировать
Для движка Unity есть тулкит для машинного обучения. Можете либо сделать обёртку для игры под юнити, либо почитать исходники тулкита и использовать наработки оттуда.
Ответ написан
Комментировать
За внешний вид игры отвечает несколько ролей. Если выделять кого-то одного, то, наверное, это арт директор. Он, разумеется, не решает всё сам, стилистика разрабатывается совместно с геймдизайнерами, продюсерами, художниками, программистами и всеми остальными причастными. Всё зависит от организации, если команда очень большая, то артдир может выступать в роли менеджера, который раздаёт задачи и референсы подчинённым художникам, а они уже рисуют концепты и моделят. Либо артдиром может быть главный художник, который сам делает все основные вещи, а остальные под него подстраиваются. Бывает так, что в команде нету художников-фантазёров, тогда общее видение может храниться в голове геймдизайнера, и он берёт на себя немного роль артдира.
В любом случае все вопросы решается совместно командой, чтобы излишние художества не похерили геймплей и наоборот.Из необходимых знаний нужно как минимум уметь рисовать или моделить, сразу в артдиректоры никто не идёт, да и не пустят. Композиция, свет/тень, цветовая теория — вся эта стандартная художественная база. Ну и желательно иметь хорошую фантазию и уметь быстро делать наброски. Когда общий процесс разработки художественной части станет понятен, можно двинуть немного в сторону геймдизайна: поизучать UX, дизайн уровней, поанализировать чужие работы. Ещё могу посоветовать посмотреть доклады на канале GDC, там полно презентаций на эту тему.
Ответ написан
Возможно, только зачем? Если хочется прям один в один, то можете id Tech 3 взять, он есть в открытом доступе. В общем случае, на любом движке можно добиться любой стилистики, просто где-то придётся дольше возиться, а где-то меньше. Геометрию игрового мира можно воспроизвести без проблем везде, самое сложное это система освещения, вам придётся раскапывать старые алгоритмы и костыли, которые использовались двадцать лет назад. Можете попробовать поискать разбор рендеринга в id Tech 3, наверняка есть статьи.
Ответ написан
Комментировать
Двусторонний шейдер делается легко, за это отвечает инструкция
Cull Off
, подробнее про куллинг можно почитать здесь. Нужную вам прозрачность можно получить с помощьюalpha:fade
, если говорить про surface-шейдеры, с другими шейдерами будет немного сложнее. Ниже обычный шаблон шейдера, который я немного подчистил и добавил две недостающие инструкции.Shader "Custom/NewSurfaceShader" { Properties { _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} _Glossiness("Smoothness", Range(0,1)) = 0.5 _Metallic("Metallic", Range(0,1)) = 0.0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 // Выключаем куллинг, чтобы меш рисовался с двух сторон Cull Off CGPROGRAM // По с равнению со стандартным шаблоном в конце добавилось "alpha:fade" для получения прозрачности #pragma surface surf Standard fullforwardshadows alpha:fade #pragma target 3.0 struct Input { float2 uv_MainTex; }; fixed4 _Color; sampler2D _MainTex; half _Glossiness; half _Metallic; void surf(Input IN, inout SurfaceOutputStandard o) { fixed4 color = tex2D (_MainTex, IN.uv_MainTex)*_Color; o.Albedo = color.rgb; o.Metallic = _Metallic; o.
Smoothness = _Glossiness; o.Alpha = color.a; } ENDCG } FallBack "Diffuse" }Если хотите побольше узнать про шейдеры, то можете почитать The Book of Shaders и соответствующий раздел мануала. Ещё есть хорошая серия туториалов на эту тему.
Ответ написан
Комментировать
Если проверки на наличие стены нету, то могу предложить только реверснуть алгоритм рисования лабиринта, по всей видимости, это модифицированный алгоритм Брезенхэма. Я про него даже писал статью, код можно посмотреть здесь. Вам нужно просто немного условие рисования поменять.
Ответ написан 2018, в 13:53″> более трёх лет назад
Комментировать
Никак не сделать, мало того, что все инструменты для террейна работают только в редакторе, дак ещё и сам террейн был написан много лет назад и с тех пор не обновлялся. Если хотите менять террейн в рантайме, то надо писать свои инструменты, берёте Terrain.terrainData и вперёд. Либо поищите плагин в магазине.
Ответ написан
Икс никуда не смещён, это ноль в экспоненциальной записи, просто из-за иерархии трансформов и другого математического шума ваш float сполз в сторону на очень маленькое значение. Результат побитово отличается от нуля, но по сути всё равно им является. Ещё может быть так, что это чисто визуальный глюк интерфейса RectTransform, вы же всё-таки не anchoredPosition меняли, а работали через родительский класс, вот так и получилось.
Ответ написан
Если расширение есть, то так быть не должно. В Preferences студия выставлена?
Посмотрите в инструкции, всё ли сделали.Ответ написан
Либо Vuforia, либо ARCore/ARKit. Первый вариант работает на всех устройствах, второй только на самых новых и надо писать отдельный код под каждую платформу. Мне думается, что стоимость лицензии вуфории перекроет расходы на самописный код. Ещё можно взять Unity, там есть обёртка над аркором и аркитом, но количество целевых устройств всё равно будет маленьким.
Ответ написан 2018, в 11:07″> более трёх лет назад
Комментировать
Если вуфория не распознала, значит она положение этого маркера определить не может, следовательно либо маркер плохой, либо условия освещённости не очень. Информацию о похожести из вуфории не достать, так что либо меняйте маркер, либо меняйте вуфорию на что-то другое.
А насчёт вашей идеи с пятнышком, вы вообще в курсе, что в картинке с камеры цвет на половину спектра туда-сюда может ездить в зависимости от того, как баланс белого настроится? Вуфория вообще цвет не использует, она и маркеры все чёрно-белыми хранит.Ответ написан
Комментировать
А не надо SpriteRenderer масштабировать, у вас для этого камера есть, её фруструм и меняйте. Выберите базовое разрешение, под него всё сверстайте, а для других разрешений меняйте Camera.orthographicSize.
Ответ написан
Комментировать
Вариант первый — сдублировать материал в редакторе или рантайме и поменять значение, но это ударит по производительности.
Вариант второй — использовать MaterialPropertyBlock и Renderer.SetPropertyBlock, это самый производительный вариант, но надо писать скрипт и иметь ссылку на нужный рендерер.
Нужное вам свойство называется_MainTex_ST
, это Vector4, менять его можно с помощью Material.SetVector либо MaterialPropertyBlock.SetVector.Ответ написан 2018, в 14:50″> более трёх лет назад
Кладёте ScriptableObject’ы в папку Resources, грузите с помощью Resources.Load по строке с ID. Либо делаете публичный массив на каком-то скрипте и складываете в него все объекты, а дальше поиском по массиву достаёте нужный.
Ответ написан
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- Следующие →
|