Emerald Powder

Emerald Powder

На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь!
Туториалы по созданию законченных игр, по реализации какой-то механики, обзоры новых версий и инструментов, и просто рассуждения и рассказы на касающиеся GameDev'a темы. В основном видео связанны с Unity 3D, но я стараюсь рассказать и о других альтернативах

Пікірлер

  • @zhivoder915
    @zhivoder9154 күн бұрын

    Спасибо, правда час промучался, не мог понять почему у меня вставляется не там где надо, а оказывается, что есть зависимость от Scale объекта, пришлось умножить все координаты на LossyScale

  • @NEKALINKA
    @NEKALINKA5 күн бұрын

    Жаль, что видео больше не выходят

  • @Saltant
    @SaltantКүн бұрын

    Ну по видосам чел не бомж, умеет могёт, а это в 99% случаях означает что работает на дядю и некогда ему ютубами вашими заниматься, деньги сами себя не заработают. На ютубе сидят в основном те кто тут заработывает или инфоцыгане (некоторые из них тож зарабатывают). Геймдев жрет кучу времени сам по себе, я тож делают игры, скоро релиз в стиме, если бы у меня был ютуб такой канал - то я понятия не имею как найти время пилить еще и видосики, это нереально.

  • @NEKALINKA
    @NEKALINKAКүн бұрын

    @@Saltant ну, я примерно так и думал. Но все равно жалко. Контент классный

  • @Saltant
    @SaltantКүн бұрын

    @@NEKALINKA Да, один из немногих русскоязычных каналов по кодингу и юнити в том числе где видосы реально чего то стоят, а не просто видос ради видоса. Так что, я смотрю как выходит, можно и раз в год, мне торопиться некуда :)

  • @TerfSt
    @TerfSt7 күн бұрын

    Как же похожи номер 5 и номер 78 игровых механик.

  • @vladr8968
    @vladr89687 күн бұрын

    За что ты назвал прототайп старой игрой?

  • @txdd21
    @txdd218 күн бұрын

    Код из видео(без ошибок): using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] public class ChunkRenderer : MonoBehaviour { private const int ChunkWidth = 10; private const int ChunkHeight = 128; public int[,,] Blocks = new int[ChunkWidth, ChunkHeight, ChunkWidth]; private List<Vector3> verticies = new List<Vector3>(); private List<int> triangles = new List<int>(); void Start() { Mesh chunkMesh = new Mesh(); Blocks[0, 0, 0] = 1; Blocks[1, 0, 0] = 1; for (int y = 0; y < ChunkHeight; y++) { for (int x = 0; x < ChunkWidth; x++) { for (int z = 0; z < ChunkWidth; z++) { GenerateBlock(x, y, z); } } } chunkMesh.vertices = verticies.ToArray(); chunkMesh.triangles = triangles.ToArray(); chunkMesh.RecalculateNormals(); chunkMesh.RecalculateBounds(); GetComponent<MeshFilter>().mesh = chunkMesh; } private void GenerateBlock(int x, int y, int z) { var blockPosition = new Vector3Int(x, y, z); if (GetBlockAtPosition(blockPosition) == 0) return; if (GetBlockAtPosition(blockPosition + Vector3Int.right) == 0) GenerateRightSide(blockPosition); if (GetBlockAtPosition(blockPosition + Vector3Int.left) == 0) GenerateLeftSide(blockPosition); if (GetBlockAtPosition(blockPosition + Vector3Int.forward) == 0) GenerateFrontSide(blockPosition); if (GetBlockAtPosition(blockPosition + Vector3Int.back) == 0) GenerateBackSide(blockPosition); if (GetBlockAtPosition(blockPosition + Vector3Int.up) == 0) GenerateTopSide(blockPosition); if (GetBlockAtPosition(blockPosition + Vector3Int.down) == 0) GenerateBottomSide(blockPosition); } private int GetBlockAtPosition(Vector3Int blockPosition) { if (blockPosition.x >= 0 && blockPosition.x < ChunkWidth && blockPosition.y >= 0 && blockPosition.y < ChunkHeight && blockPosition.z >= 0 && blockPosition.z < ChunkWidth) { return Blocks[blockPosition.x, blockPosition.y, blockPosition.z]; } else { return 0; } } private void GenerateRightSide(Vector3Int blockPosition) { verticies.Add(new Vector3(1, 0, 0) + blockPosition); verticies.Add(new Vector3(1, 1, 0) + blockPosition); verticies.Add(new Vector3(1, 0, 1) + blockPosition); verticies.Add(new Vector3(1, 1, 1) + blockPosition); AddLastVerticiesSquare(); } private void GenerateLeftSide(Vector3Int blockPosition) { verticies.Add(new Vector3(0, 0, 0) + blockPosition); verticies.Add(new Vector3(0, 0, 1) + blockPosition); verticies.Add(new Vector3(0, 1, 0) + blockPosition); verticies.Add(new Vector3(0, 1, 1) + blockPosition); AddLastVerticiesSquare(); } private void GenerateFrontSide(Vector3Int blockPosition) { verticies.Add(new Vector3(0, 0, 1) + blockPosition); verticies.Add(new Vector3(1, 0, 1) + blockPosition); verticies.Add(new Vector3(0, 1, 1) + blockPosition); verticies.Add(new Vector3(1, 1, 1) + blockPosition); AddLastVerticiesSquare(); } private void GenerateBackSide(Vector3Int blockPosition) { verticies.Add(new Vector3(0, 0, 0) + blockPosition); verticies.Add(new Vector3(0, 1, 0) + blockPosition); verticies.Add(new Vector3(1, 0, 0) + blockPosition); verticies.Add(new Vector3(1, 1, 0) + blockPosition); AddLastVerticiesSquare(); } private void GenerateTopSide(Vector3Int blockPosition) { verticies.Add(new Vector3(0, 1, 0) + blockPosition); verticies.Add(new Vector3(0, 1, 1) + blockPosition); verticies.Add(new Vector3(1, 1, 0) + blockPosition); verticies.Add(new Vector3(1, 1, 1) + blockPosition); AddLastVerticiesSquare(); } private void GenerateBottomSide(Vector3Int blockPosition) { verticies.Add(new Vector3(0, 0, 0) + blockPosition); verticies.Add(new Vector3(1, 0, 0) + blockPosition); verticies.Add(new Vector3(0, 0, 1) + blockPosition); verticies.Add(new Vector3(1, 0, 1) + blockPosition); AddLastVerticiesSquare(); } private void AddLastVerticiesSquare() { triangles.Add(verticies.Count - 4); triangles.Add(verticies.Count - 3); triangles.Add(verticies.Count - 2); triangles.Add(verticies.Count - 3); triangles.Add(verticies.Count - 1); triangles.Add(verticies.Count - 2); } }

  • @txdd21
    @txdd218 күн бұрын

    Также код террейн генератора В ChunkRenderer в строках private const int ChunkWidth = 10; private const int ChunkHeight = 128; замените private на public. И строки Blocks[0, 0, 0] = 1; Blocks[1, 0, 0] = 1; замените на Blocks = TerrainGenerator.GenerateTerrain((int)transform.position.x, (int)transform.position.z); Код TerrainGenerator: using UnityEngine; public static class TerrainGenerator { public static int[,,] GenerateTerrain(int xOffset, int zOffset) { var result = new int[ChunkRenderer.ChunkWidth, ChunkRenderer.ChunkHeight, ChunkRenderer.ChunkWidth]; for (int x = 0; x < ChunkRenderer.ChunkWidth; x++) { for (int z = 0; z < ChunkRenderer.ChunkWidth; z++) { float height = Mathf.PerlinNoise((x + xOffset) * .2f, (z + zOffset) * .2f) * 5 + 10; for (int y = 0; y < height; y++) { result[x, y, z] = 1; } } } return result; } }

  • @alex_rahvalov
    @alex_rahvalov8 күн бұрын

    Думал новое видео...(

  • @redfox2964
    @redfox29649 күн бұрын

    Интересно, я один смотрю это видео, при этом не умея делать игры?

  • @yesiamppl
    @yesiamppl10 күн бұрын

    помогите я сделал точно также но без плавного перехода, и когда сцена загрузилась то у меня какая-то беда со светом, то-есть я уже даже пост процессинг отрубил но свет при переходе на сцену становиться зеленоватым и я это уже на сцене никак не могу пофиксить, и причем если я начну игру прямо с основной сцены то такого бага нету

  • @alexisnienov4677
    @alexisnienov467710 күн бұрын

    За урок однозначный лайк. Только "кюррент" ухо режет.

  • @globalacademyorigina1
    @globalacademyorigina111 күн бұрын

    Убедительная просьба к автору в начале видео указывать версии ПО которым он пользуется. Это облегчит работу подписчикам а вам их прибавит)

  • @globalacademyorigina1
    @globalacademyorigina111 күн бұрын

    Все получилось, спасибо автору. Много чего не понятно, потому что я не настолько искушен в программировании, да и С# осваиваю самостоятельно. Однако, кто из новичков столкнется с проблемами в данном видео (ввиде неправильной генерации блоков) попробуйте поменять лево и право, скорее всего как и у автора у вас будет такая же проблема.)

  • @globalacademyorigina1
    @globalacademyorigina112 күн бұрын

    Интересно. Заметил, что у автора видео запущена игра, но открыто окно сцены, а не игры. Открыл свое окно сцены - все работает. Странный подход, ну да ладно. Видимо иначе в таком русле нельзя)

  • @globalacademyorigina1
    @globalacademyorigina112 күн бұрын

    Пытался воссоздать код, перепроверил все 20 раз - не работает. Возможно нужно указать версию юнити, на которой делалось? У меня 22я разбирая все пошагово нашел что код не работает с самого начала. То есть тупо треугольник не отрисовывается.

  • @user-ec7qu1dz4u
    @user-ec7qu1dz4u12 күн бұрын

    Как мне делать игру про взлом замков,грифинг и локальный мультиплеер?

  • @VovarbtyVovarbty
    @VovarbtyVovarbty15 күн бұрын

    У меня не появляется блок. Что делать?

  • @user-tx6gw5lc4n
    @user-tx6gw5lc4n16 күн бұрын

    Это кто это у тебя в ГТА мог возродиться и отомстить?

  • @ROK_220
    @ROK_22023 күн бұрын

    Ролик довольно старый, но вместо атрибута executeAlways можно использовать метод onValidate, вынести логику изменения в отдельный метод и вызывать его из OnValidate и из Update. Так будет вызываться только необходимое и отпадает надобность проверять включена ли игра или нет

  • @bleki4307
    @bleki430724 күн бұрын

    Спасибо,теперь у меня есть идея для моей игры

  • @juliap.5375
    @juliap.537521 күн бұрын

    Чё за игра?

  • @user-eq9cs2qs9s
    @user-eq9cs2qs9s28 күн бұрын

    Спасибо я так долго искал как сделать много способов попробовал и только твой помог.

  • @dmitryzh3344
    @dmitryzh334428 күн бұрын

    Ребят, у кого смена skybox происходит всего один раз, а после он остается неизменным вне зависимости от времени суток, то это потому, что один skybox приобретает свойства другого. Чтобы этого избежать: создайте 3-й skybox, который вы выставите в настройках освещения (ночной, дневной он или еще какой - не важно, его всего равно изменит скрипт на нужный, или точнее сказать, изменит его параметры), а другие два, которые вы создали для дня и для ночи, назначьте в скрипте, как и в видео. Таким образом у нас выставлен в настройках skybox, параметры которого мы изменяем на дневные или ночные через скрипт.

  • @tepr1
    @tepr128 күн бұрын

    В названии 3D ,а в видео только 2D

  • @lopatinpavel
    @lopatinpavel29 күн бұрын

    У МЕНЯ ШЕЙДЕР ПОРТАЛ В ФИОЛЕТОВЫЙ ПРЕВРАТИЛ

  • @user-so5gd8eh3j
    @user-so5gd8eh3jАй бұрын

    Даже родная апб засветилась

  • @fighter2499
    @fighter2499Ай бұрын

    Прикольно

  • @Salvadorioo
    @SalvadoriooАй бұрын

    Что я вынес с урока: - корутина позволит тебе задерживать пчелочку на месте, а потом сделать чтобы она упала - корутина сможет спаунить с пчелки монеты - корутина заканчивается на тина, а ещё там всякие yield return ы есть, которые помогают процессы на время задерживать (на время или до выполнения какого -то условия)

  • @Kory4252
    @Kory4252Ай бұрын

    23 7 98

  • @user-uw1ur4vs6n
    @user-uw1ur4vs6nАй бұрын

    у меня игрок не встаёт в центр ячейки, а встаёт сбоку

  • @viktorkuznetsov1617
    @viktorkuznetsov1617Ай бұрын

    А как можно сделать траву, цветы, лозу всякую... забор, кнопку... ? (То, что не формы куба)

  • @user-ht9ef2xq6b
    @user-ht9ef2xq6bАй бұрын

    Спасибо за работу, наверное много времени потратил на ролик

  • @sonyaseluyanova7843
    @sonyaseluyanova7843Ай бұрын

    Не садите, а сажаете

  • @SergeyBaranov_ru
    @SergeyBaranov_ruАй бұрын

    Спасибо за урок, все получилось. Однако при развитии возник вопрос - как теперь созданный материал с шейдером прикрепить к terrain? При попытке сделать это получаю предупреждение с текстом "The provided Material's shader might be unsuitable to use with Terrain in the active render pipeline...". Если проигнорировать и запустить, следов не видно и все начинает очень тормозить...

  • @SuperSayanKrisik
    @SuperSayanKrisikАй бұрын

    3:28 зелье удачи в террарии просто увеличивает вашу удачу на протиядении некоторого времини, например чаще выпадают редкие вещи, больше монет выпадет и всякое такое(удача также помагает убитт босса).

  • @boba4289
    @boba4289Ай бұрын

    Либрариум повесился

  • @LEV2010
    @LEV2010Ай бұрын

    14, 71,56 так чтоб незабыть

  • @P1xelC47GM
    @P1xelC47GMАй бұрын

    19: обожнюю цю механіку

  • @ray_games.animations
    @ray_games.animationsАй бұрын

    Как только я увидел FireWatch в первых кадрах я уже понял, что автор молодЭц

  • @LAKERBorisEleseenko
    @LAKERBorisEleseenkoАй бұрын

    Где видосы?

  • @kepka55
    @kepka55Ай бұрын

    Это называется falling sand Игры на falling sand: The Powder Toy, Noita, Powder Game

  • @Linlees
    @LinleesАй бұрын

    5 26 80 Изменено: 7 26 80

  • @coolskibidigman
    @coolskibidigmanАй бұрын

    19,25,90

  • @SashaLuchik
    @SashaLuchikАй бұрын

    Это мне одному кажется: сильно быстрое перечисление механик игры? В любом случае: благодарю за видео 😊

  • @KMsmiler
    @KMsmilerАй бұрын

    6:00

  • @KMsmiler
    @KMsmilerАй бұрын

    🥲

  • @user-eq6pv2xt2s
    @user-eq6pv2xt2sАй бұрын

    Эмиральд ты красава!=) А можно использовать твой проект и создать свою игру на ГуглСторе на его основе?

  • @enekne
    @enekneАй бұрын

    😮Фаренгейт - психологическая шкала персонажа, 🎉Макс Пейн - замедление времени Ps. Подписался из рекомендаций ютуба

  • @xhyrx1620
    @xhyrx1620Ай бұрын

    От души, бро, единственный кто рассказал мне все по порядку, чтоб сильно не нагружать новичков. Остальные с каждым гайдом только все больше отталкивают иебя от изучения

  • @krivodeling7925
    @krivodeling7925Ай бұрын

    +

  • @nv06_
    @nv06_Ай бұрын

    оч крутое видео. Нравится что все открыто для нашего воображения, придумывай, сочитай. Надеюсь люди вдохновятся роликом

  • @Slava.Hizhnyak
    @Slava.HizhnyakАй бұрын

    Нажимаю "Switch to this", что-то происходит, все чудно, открываю юнити - никакого предложения перезагрузить сцену - в гите теперь старая версия, а в юнити новая как была так и осталась :/ P.S. какой-то полный бред, что для того, чтобы первый раз сделать коммит нужно закрыть проект в юнити, иначе выдаст 350 ошибок. После этого открыть проект, и снова сделать коммит, тогда сработает. Потом, если захочешь переключиться на раннюю версию, тебе нужно закрыть проект, иначе получишь ошибку "Unlink of file Failed. Should I try again?" А если вдруг ты не закрыл при этом проект и получил эту ошибку, то вернувшись в окно юнити он предложит тебе перезагрузить сцену и откатит все изменения до той версии что ты выбрал, вроде бы победа, ура, вот только в истории гита проекта ты останешься на той же версии где был, ты же получил ошибку, а значит ничего не должно было происходить, а если все сработало, его это уже не парит, отдыхай малыха. Короче резюмируя - если вы как и я новичек, который думал использовать простенькую программу контроля версий для себя без мороки чтобы вдруг что было куда откатится, НИ В КОЕМ СЛУЧАЕ НЕ КАЧАЙТЕ СРАНЫЙ ГИТ, я чтобы определить причины вышеописанных проблем 3 дня потратил, поберегите нервы