Andrey C# Expert
Andrey C# Expert
  • 46
  • 41 490
Тестовое задание mid unity C# на 1400$. Не допускай таких ошибок
Привет! Раскрываю процесс код ревью и оценки тестовых задний.
В этом видео я проверю тестовое задание от подписчика Егора, которое лежит в открытом доступе тут:
github.com/egor-davydov/SurvivalGameTestTask
Если вам интересны такие видео - можете делиться своими проектами для код ревью
มุมมอง: 9 097

วีดีโอ

Тестовое задание unity C# на 4500$. Cмотрим и рефакторим
มุมมอง 16Kปีที่แล้ว
Привет! Часто когда вы делаете тестовые задания сложно понять на что будут смотреть внутри компании, как оценивают. В этом видео я проверю тестовое задание, которое лежит в открытом доступе тут: github.com/Volandpro/Beresnev_test мой форк тут: github.com/Dred95/Beresnev_test Такого подробного код ревью вы еще не видели :) Если вам интересны такие видео - можете делиться своими проектами для код...
Как создать MMO игру с нуля. 8 - Физика box2d
มุมมอง 1.6Kปีที่แล้ว
Создаем mmorpg на unity с нуля, встраиваю box2d в сервер github.com/Dred95/MmoTutorial использованные материалы github.com/Zonciu/Box2DSharp
Как создать MMO игру с нуля. 7 - Боевая система
มุมมอง 1.1Kปีที่แล้ว
Создаю mmo non target боевую систему на способностях github.com/Dred95/MmoTutorial Использованные материалы assetstore.unity.com/packages/tools/gui/microbar-animated-health-bar-239154 dotween.demigiant.com/download.php
Как создать MMO игру с нуля. 6 - Визуализация на клиенте, интерполяция позиций
มุมมอง 1Kปีที่แล้ว
Создаем mmorpg на unity с нуля, двигаю gameobjects, анимации, сглаживание. Скрываю сетевые задержки Использованны сторонние ресурсы assetstore.unity.com/packages/3d/characters/medieval-cartoon-warriors-90079 assetstore.unity.com/packages/2d/textures-materials/floors/hand-painted-stone-texture-73949 github.com/anloganlog/Precision-Timer.NET
Как создать MMO игру с нуля. 5 - Input система, сохранение состояния
มุมมอง 925ปีที่แล้ว
Создаем mmorpg на unity с нуля, передаем input с клиента, получаем состояние игры с сервера github.com/Dred95/MmoTutorial
Как создать MMO игру с нуля. 4 - UDP соединение
มุมมอง 968ปีที่แล้ว
Создаем mmorpg на unity с нуля, интегрирую Riptide github.com/Dred95/MmoTutorial
Как создать MMO игру с нуля. 3 - свои GameObject и Behaviour
มุมมอง 1.4Kปีที่แล้ว
Создаем mmorpg на unity с нуля, создаю ядро для написания игровой логики на сервере github.com/Dred95/MmoTutorial
Как создать MMO игру с нуля. 2 - структура проекта, монорепозиторий
มุมมอง 1.7Kปีที่แล้ว
Создаем mmorpg на unity с нуля, настраиваю репозиторий, unity и .net проекты github.com/Dred95/MmoTutorial
Как создать MMO игру с нуля. 1 - архитектура системы
มุมมอง 4.3Kปีที่แล้ว
Создаем mmorpg на unity с нуля, объясняю архитектуру mmo игры, выбираю технологии github.com/Dred95/MmoTutorial
secret room
มุมมอง 1343 ปีที่แล้ว
secret room
sky fake
มุมมอง 613 ปีที่แล้ว
sky fake
Horror hex level2
มุมมอง 743 ปีที่แล้ว
Horror hex level2
20k rabbits
มุมมอง 1865 ปีที่แล้ว
20k rabbits
FusionCore test
มุมมอง 726 ปีที่แล้ว
FusionCore test
indigo test
มุมมอง 726 ปีที่แล้ว
indigo test
weekly showcase
มุมมอง 876 ปีที่แล้ว
weekly showcase
Forge Networking proximity based updates
มุมมอง 1166 ปีที่แล้ว
Forge Networking proximity based updates
P2P physics Authority
มุมมอง 1387 ปีที่แล้ว
P2P physics Authority
winter is coming 4
มุมมอง 858 ปีที่แล้ว
winter is coming 4
Racing multiplayer 1
มุมมอง 648 ปีที่แล้ว
Racing multiplayer 1
Racing new props
มุมมอง 1748 ปีที่แล้ว
Racing new props
rope autoaim
มุมมอง 1108 ปีที่แล้ว
rope autoaim
Lift 1 video
มุมมอง 478 ปีที่แล้ว
Lift 1 video
Rope simulation 2
มุมมอง 1189 ปีที่แล้ว
Rope simulation 2
Презентация(2)
มุมมอง 459 ปีที่แล้ว
Презентация(2)
презентация пуск с буксира
มุมมอง 609 ปีที่แล้ว
презентация пуск с буксира
Rhombus. Falling platform 2.
มุมมอง 2439 ปีที่แล้ว
Rhombus. Falling platform 2.

ความคิดเห็น

  • @Stellar_Architect
    @Stellar_Architect หลายเดือนก่อน

    Только не останавливайся! Делай что делаешь. Очень полезно.

  • @МаратГафиатуллин-н3п
    @МаратГафиатуллин-н3п หลายเดือนก่อน

    Самая главная ошибка, выполнять бесплатно такие тестовые

  • @АлександрМармеладов-й3я
    @АлександрМармеладов-й3я 3 หลายเดือนก่อน

    Делал тестовой на джуна - ТЗ оформлено также - пуля в пулю. Даже версия Unity указана таже. Естественно, отказали. Либо это шаблон такой ТЗ либо просто компания нахаляву получает прототипы.

  • @peotor1929
    @peotor1929 3 หลายเดือนก่อน

    Было бы круто в конце видео услышать какое-то саммари: чего разрабу стоит доучить - дочитать, взял бы ли ты такого на такую зарплату, его уровень и тому подобное)

  • @shelikhann
    @shelikhann 4 หลายเดือนก่อน

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

  • @rusavlad5790
    @rusavlad5790 4 หลายเดือนก่อน

    1400 это аж никак не зарплата мидла. джун или джун + на крайняк

    • @gamedev_expert
      @gamedev_expert 4 หลายเดือนก่อน

      В общем согласен, но больше зависит от компании, чем от человека

    • @rusavlad5790
      @rusavlad5790 4 หลายเดือนก่อน

      @@gamedev_expert но сам видос отличный :) Было увлекательно)

  • @PelipUnityDev
    @PelipUnityDev 4 หลายเดือนก่อน

    Решил посмотреть, так как заголовок был многообещающий, но не досмотрел до конца. По этим причинам: 19:06 - "Всё, что делает метод, лучше писать в названии метода". Довольно спорное высказывание. Метод должен называться понятно. В конкретном случае действительно лучше разбить на методы SetActiveSkin и SaveSkin. Так как это 2 разные ответственности. 21:03 - "Всегда надо делать так, чтобы тип переменной давал максимальное количество информации о том что это. А имя это второстепенно". Это вообще ужас. Хороший нейминг - залог отсутствия или уменьшения проблем в будущем. Да, тип стоит называть осмысленно, чтобы он давал понять чем является, но в работе приходится иметь дело с абстракциями, что не всегда даёт чётко понять с чем работаем. А неграмотный нейминг может в разы усугубить ситуацию. И называйте поля класса "полями", а не "переменными"... 25:20 - "Мы вызываем метод синхронно". Не несите чушь, пожалуйста, и не вводите людей в заблуждение. Метод помеченный ключевым словом async в любом случае вызывается асинхронно. Решение автора кода и правда кривоватое (как и весь проект), но вполне рабочее. Я не рекомендую это видео смотреть даже трейни или джунам. Тут рекомендации, которые могут ухудшить качество вашего кода. Спасибо автору за старания, но это не уровень квалифицированного разработчика

  • @hardlandingtac
    @hardlandingtac 5 หลายเดือนก่อน

    У меня есть тоже небольшой свой канал, и мы как раз с одним парнем хотели сравнить варианты, я топлю за ООП, он за ECS. Хотите присоединяйтесь. Правда у нас за пример взято РТС, но думаю это не принципиально.

  • @hardlandingtac
    @hardlandingtac 5 หลายเดือนก่อน

    Будет время заценю код с репозитория ) Ничего не обещаю, но может прокомментирую на своем канале.

  • @alexhaler3627
    @alexhaler3627 6 หลายเดือนก่อน

    На 15:30 меняется свойство у Scriptable Object, а разве в билде такое работать будет? По-моему менять SO можно только в эдиторе (и плей моде)

    • @gamedev_expert
      @gamedev_expert 6 หลายเดือนก่อน

      Точно! Работать будет, но вся идея SO, что это конфиги, а они не должны меняться, т.к. могут использоваться сразу во многих местах.

  • @Karamelyka54
    @Karamelyka54 6 หลายเดือนก่อน

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

    • @gamedev_expert
      @gamedev_expert 6 หลายเดือนก่อน

      В корне репозитория лежит скрипт, который создаёт ссылку на shared. Скрипт надо запускать от имени администратора

    • @Karamelyka54
      @Karamelyka54 6 หลายเดือนก่อน

      @@gamedev_expert да я видел как ты его создавал, попробую запустить 👌

  • @jonkarmok1840
    @jonkarmok1840 6 หลายเดือนก่อน

    объектно ориентированное программирование, на то и объектно ориентированное, а не наследование орентированное, ооп может быть совсем без наследования, смысл ооп в прежде всего в инкапсуляции, а не в наследовании. В парадигме ооп можно писать и через компоненты и через обычные классы, а еще верно то, что даже используя и классы и наследование и полиморфизм, можно писать не в ооп парадигме. Водораздел тут инкапсуляция

    • @hardlandingtac
      @hardlandingtac 5 หลายเดือนก่อน

      Да, меня тоже немного смутили формулировки автора об ООП.

  • @cristalGamer5100
    @cristalGamer5100 6 หลายเดือนก่อน

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

    • @gamedev_expert
      @gamedev_expert 6 หลายเดือนก่อน

      По описанию похоже на кооперативный режим игры, это значит что не нужен централизованный сервер. Тогда есть готовый сетевой движок mirror. Из плюсов в нём большое сообщество и много примеров

    • @cristalGamer5100
      @cristalGamer5100 6 หลายเดือนก่อน

      @@gamedev_expert да это кооп, мирор... Спасибо думаю это то что мне нужно

  • @cristalGamer5100
    @cristalGamer5100 6 หลายเดือนก่อน

    Привет✋ ищю инфу по реализации авторетарного сервера надеюсь это то что мне нужно, попытаюсь перенять твой опыт

    • @cristalGamer5100
      @cristalGamer5100 6 หลายเดือนก่อน

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

  • @theaz_general
    @theaz_general 6 หลายเดือนก่อน

    А смысл делать через Рюдп? Можна использовать Сокеты и не гемороится :)

    • @gamedev_expert
      @gamedev_expert 6 หลายเดือนก่อน

      Сокеты бывают разные, вы про какие

    • @theaz_general
      @theaz_general 6 หลายเดือนก่อน

      @@gamedev_expert про вебсокеты!)

    • @gamedev_expert
      @gamedev_expert 6 หลายเดือนก่อน

      @@theaz_general их можно и нужно использовать. Их ограничение что все сообщения гарантированы строго по очереди, если одно потеряется, то все будут ждать пока снова не отправится старое. А что если старое нам не надо ждать, потому что оно уже не актуально, а вот уже пришло новое? Вот если нам важна минимальная задержка при потерях, то websocket не поможет. А если потерь пакетов нет, то будет работать хорошо

  • @rox8345
    @rox8345 7 หลายเดือนก่อน

    Привет, спасибо за уроки прежде всего. Подскажи, пожалуйста, я понимаю в основном, как работает выделенный сервер, но не понятно, как работает модель, когда игра отельным клиентом с возможностью одиночной игры и списком доступных выделенных серверов и есть отдельный клиент выделенного сервера (Как пример Unturned в steam). Я имею ввиду можно же скачать клиент и играть в одиночную игру, получается вся важная логика просчитывается в этом клиенте, но если скачать и запустить выделенный сервер где в таком случае реализуется всё? Если на сервере, тогда получается основной клиент игры реализует отдельно логику для соло игры и для игры на выделенном сервере? В общем не понятно как работает такая модель. И ещё если не сложно, порекомендуй какие-нибудь источники, чтобы научиться писать сервер\клиент и их взаимодействие между собой, у меня сейчас открыто кучу видео и статей, но информация не структурна и я запутался в ней, твои видео по этой теме, конечно, интересные, но пока я могу только в тупую переписывать код из них.

    • @gamedev_expert
      @gamedev_expert 7 หลายเดือนก่อน

      Всё просто. Серверный код присутствует на клиенте, и при одиночной игре - создаётся сервер, который без задержки все обрабатывает от клиента. Например 1 интерфейс, но 2 реализации. Первая шлёт по udp пакеты удалённому серверу, вторая вызывает методы на локальном сервере. По поводу обучающих материалов: я в своё время учился от задач конкретных. Хотел что-то сделать, декомпозировал на мелкие задачи и гуглил то что не знаю. Курсами/книгами не пользовался

    • @rox8345
      @rox8345 7 หลายเดือนก่อน

      @@gamedev_expert Большое спасибо за ответ.

  • @dmytromahas9207
    @dmytromahas9207 7 หลายเดือนก่อน

    Да, с евентами рил надо быть осторожным, чаще всего это дорога к Мемори Леак, за полтора года коммерческой разработки очень часто на это натыкались, а в целом ревью рил вышло качественным, очень приятно было смотреть, даже не заметил как час прошел, большое спасибо тебе за труд, буду дальше следить за твоим каналом и надеюсь что смогу пересмотреть все видео, удачи и успехов тебе!

  • @PragmaGames
    @PragmaGames 9 หลายเดือนก่อน

    Очень интересно, жаль что забросил

    • @gamedev_expert
      @gamedev_expert 9 หลายเดือนก่อน

      Много работы сейчас, думаю летом вернусь

    • @PragmaGames
      @PragmaGames 9 หลายเดือนก่อน

      @@gamedev_expert В моей компании не делают клиент-серверные игры 🥲 поэтому было очень интересено посмотреть на создание такой, особенно от такого опытного человека. Мне понравилась твой подход основанный чисто на компонентах. Переопределение ToString для определения сущности по набору компонентов очерь инетересное решение, в дефолтном unity явно не хватает такого.

  • @kudarova
    @kudarova 9 หลายเดือนก่อน

    Делал подобное тестовое задание на джуна, тз очень схоже, как минимум начало и конец текста точь-в-точь одинаковы. То ли я неопытен и тз нормально составлять именно так, то ли это просто мошеннический шаблон)) Меня кстати не взяли, проигнорировали. А потом чат с работодателем и вовсе пропал...

    • @gamedev_expert
      @gamedev_expert 9 หลายเดือนก่อน

      Ничего все ошибаются, главное не делать это привычкой)

  • @igd1591
    @igd1591 10 หลายเดือนก่อน

    Асинхронность методов для StateMachine совершенно не нужна и избыточна, если она правильно написана.

    • @gamedev_expert
      @gamedev_expert 10 หลายเดือนก่อน

      Привет, асинхронный метод превращается в стейт машину при компиляции в il код. Так что да, стейт машиной можно заменить асинхронный метод при желении. Если речь о стейт машине в загрузке, то у меня противоположное мнение

    • @igd1591
      @igd1591 10 หลายเดือนก่อน

      @@gamedev_expertПривет, да, речь о стейт-машине (на 11:36), а зачем ей быть асинхронной? Может дальше будет ответ - не досмотрел до конца, комментирую по ходу дела, пока мысль свежа. Другими словами, зачем методу Enter быть асинхронным и кто должен ожидать его заверешния? В момент вызова Enter включается в работу новый стейт и вся дальнейшая работа - это уже работа нового стейта, а предыдущий уже полностью свое отработал, поэтому он переключил и закончил на этом свою миссию. А так получается, что будет выплнен еще какой-то код из предыдущиего стейта после завершения Enter. Можно, конечно, применить логику, что Enter - это только пореходный момент в новый стейт, но даже в этом случае неясно, зачем предыдущему стейту что-то делать после того, как переход будет закончен. Сразу оговорюсь, что я не навязываю свое мнение, а дискутирую.

    • @igd1591
      @igd1591 10 หลายเดือนก่อน

      По поводу - не писать тип явно где только можно, как раз наоборот делаю - пишу везде, кроме каких-то очевидных ситуаций, как в случае с using, где все и так знают, что за тип будет образован. В других случаях, когда другой программист будет читать мой код (или я сам через какое-то время), то даже беглый взгляд на конструкцию `Dictionary<string, Image> images = GetImages()` сразу дает четкое представление о смысле строки, а учитывая, что в контексте будут и другие строки, намного быстрее складывается общий смысл происходящего, чем в случае с `var images = ...`, т.к. тип - это еще и семантика. Завтра кто-то решит отрефакторить код так, что теперь метод будет возвращать текстуры и это сразу отразится в явном типе. Да, это может потребовать в некоторых IDE вручную пройти и отредактировать тип во всех местах вызова метода, но если это укорит понимание фрагмента кода пускай даже на 10 секунд, то я считаю, что оно того стоит. В примере вроде этого ``` var total= GetTotalAmountOfSometing(); var completion = GetCompletionPercent(); var completedAmount = total / 100 * completion; ``` было бы в разы проще не допустить или найти потенциальную ошибку, будь типы указаны явно, поэтому численные типы тоже указываю.

    • @wsxpocxeafx
      @wsxpocxeafx 5 หลายเดือนก่อน

      @@igd1591 верно говоришь

  • @profithelper593
    @profithelper593 10 หลายเดือนก่อน

    Интересные видео,, с Вами можно как то связаться? Интересует клиент сервер на c# unity и в целом возможность переноса игры на движёк юнити или воссоздание и ли оно того?

    • @gamedev_expert
      @gamedev_expert 10 หลายเดือนก่อน

      Здравствуйте, вы можете написать на почту dredstd@gmail.com если есть предложения

  • @stas_etc
    @stas_etc 11 หลายเดือนก่อน

    Спасибо за разбор Только не хватает увеличения шрифта в IDE, не очень разборчиво видно

  • @timurmingulov1535
    @timurmingulov1535 11 หลายเดือนก่อน

    Привет! Отличный цикл роликов. Есть, конечно, спорные моменты. По хорошему сервер должен хранить состояние мира для каждого пользователя и "сшивать" их в единый. Что-то типа лаг-компенсации, но это довольно сильно нагрузит сервер. Мне больше интересно было бы узнать, как всё это дело правильно деплоить. Где оформлять сервер, какой именно, vps/vds? Какую ос ставить? Как накатывать туда приложение? И вот это вот всё.

    • @gamedev_expert
      @gamedev_expert 11 หลายเดือนก่อน

      Привет! Спасибо за высокую оценку) лаг компенсацию можно сделать, конечно, этот цикл как отправная точка. Деплой сервера огромная область знаний. Коротко: я предпочитаю арендовать bare metal хостинг, накатывать туда kubernetes и деплоить туда контейнеры. Есть другие подходы, вроде облаков

    • @gamedev_expert
      @gamedev_expert 11 หลายเดือนก่อน

      ОС - только Linux, всё остальное сильно дороже без каких-либо плюсов

    • @timurmingulov1535
      @timurmingulov1535 11 หลายเดือนก่อน

      @@gamedev_expert Ну вот да, много вещей, в которых нужно разбираться. Чем хорош видео-формат - тем, что можно посмотреть и повторить. Поэтому если бы ты выпустил ролик по деплою от и до, пусть не идеальное решение, но такое, кт можно использовать в проде, это было бы великолепно для меня, и думаю, полезно для многих.

  • @kawaikaino5277
    @kawaikaino5277 11 หลายเดือนก่อน

    ЗП очень маленькое для Мидла((( Так везде в гемдеве?

    • @gamedev_expert
      @gamedev_expert 11 หลายเดือนก่อน

      А среднем да. Всегда было что в геймдеве меньше денег.

  • @michael_gor
    @michael_gor 11 หลายเดือนก่อน

    Спасибо за сетевую серию! Очень интересно!

  • @erickmanciny1352
    @erickmanciny1352 11 หลายเดือนก่อน

    Вызвать таску без ожидания тем, кто вызывает: _ = DoSomethingAsync();

  • @gladiko2364
    @gladiko2364 11 หลายเดือนก่อน

    Я не могу понять что вы все прицепились к тестовому заданию? Оно супер элементарное учитывая что чел идёт на мидла. Само задание умещается на одной странице документа, где большую часть занимают расписанеые статы. А чел взял и буквально НАСРАЛ в код. Тебя просили срать? Такой сотрудник никому нахрен не всрался, по факту такие люди будут только мешать/спорить/тратить время впустую. Есть задача, она четко прописана - тебе надо её сделать. ВСЁ! Не сидеть придумывать кучу сервисов и всякой херни которые никогда не будут использованы и на которые ты потратишь в 200 раз больше времени чем должен был, и недайбох кому то другому кроме тебя придется это читать.

    • @gamedev_expert
      @gamedev_expert 11 หลายเดือนก่อน

      Ахахха, по сути ничего нового у тебя просто ещё 1 вариант как сделать

  • @serdjuk2827
    @serdjuk2827 ปีที่แล้ว

    Пили еще код ревью, пжалста !!! Топ контент.

  • @sergei-fil
    @sergei-fil ปีที่แล้ว

    Хороший разбор, спасибо) Но вот только не хватает какого-то вывода. Допустим, "Взял бы ты человека с таким кодом на такую позицию?" Или "Взяли ли по итогу этого чувака на работу?" Если говорить за себя, то я согласен с некоторыми ребятами из коментов, что для такой ЗП довольно слабый код.

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Кстати автор тестового приходил в комментарии и написал ответы на эти вопросы. Код я оценил как код мидла, хорошему мидлу вроде около 3к$ платят сейчас

    • @sergei-fil
      @sergei-fil ปีที่แล้ว

      @@gamedev_expert Понял. Спасибо за ответ.

  • @asli9152
    @asli9152 ปีที่แล้ว

    Люди, помогите, пожалуйста как научится понимать как строить архитектуру приложения? Все говорят про k-syndicate, что это архитектура под копирку, но что здесь плохого, если эта архитектура удачная. У этих людей за плечами много опыта, уж явно они больше знают джунов. Читал книгу Роберта Найтстрома про геймдев паттерны, ведь по сути архитектура строится на паттернах, ну и конечно же прошёл курс от k-syndicate по архитектуре. Когда прохожу тестовые, то говорят проект не гибкий и не способен расширяться и не понимаю каким образом ещё более можно расширять проект. Посоветуйте книжки по архитектуру приложений, желательно на c# или другой похожий язык как c++ например. Если у вас есть другое мнение и архитектура игры и приложения это разные совершенно вещи, то скажите тогда как в таком случае действовать

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Мне помог способ через декомпиляцию кода чужих игр. Те что написаны на юнити лет 5 назад под ПК - их dll можно обратно в код превратить и увидеть как организуют код те, кто доводят до релиза игры

    • @asli9152
      @asli9152 ปีที่แล้ว

      Спасибо! Попробую тоже так поделать @@gamedev_expert

  • @ЕгорКудрявцев-щ1р
    @ЕгорКудрявцев-щ1р ปีที่แล้ว

    Соглашаться на тестовые задания - это ошибка

  • @PotatoManager420
    @PotatoManager420 ปีที่แล้ว

    Кстати спасибо за совет в конце видео, что не стоит делать такие тестовые задания бесплатно Самому лично приходилось делать такие тестовые задания, в итоге меня не взяли т.к. я не знал способов внедрения монетизации в игру, не знал Firebase, не знал как делать деплой через webgl на сайты yandex Я действительно их не знал, и подумал что их надо долго изучать, и в принципе не приводил агрументы что потрачу время на их изучение

  • @PotatoManager420
    @PotatoManager420 ปีที่แล้ว

    9:40 Ну насколько я понимаю он используется для сохранения данных в бинарном формате чтобы пользователь не мог отредактировать Это как бы прогресс игрока и так же защита данных от редактирования со стороны пользователя платформы, так что вполне оправдано его использование

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Тогда надо шифровать перед сохранением, и правда будет понадежнее

  • @vklymenko
    @vklymenko ปีที่แล้ว

    Что-то есть в папке Resources? Fail ! Из всего делаем гребанные адрэсибэлс и ничего не засовываем в ресорсэс. Нах** столько классов и интерфейсов - элемент в grid layout - гребанный префаб с одним скриптом на нем и один скрипт с интерфейсом на все окно, еще файл другой на настройки и модели данных и не е**м никому мозги.

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

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

  • @samserious5483
    @samserious5483 ปีที่แล้ว

    Привет! Очень интересные серии, спасибо за видео! Я давно в теме мудьтиплеерного программирования, посмотрел твой видос, и у меня возникла мысль и вопрос: а каким образом мы сможем отслеживать позиции игроков и коллизии, например, на авторитарном сервере с разными высотами, а не на простом плейне, как тут? Какой вариант ты мог бы предложить?

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

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

    • @samserious5483
      @samserious5483 ปีที่แล้ว

      @@gamedev_expert да, взять 3д физ движок - это самое логичное, но сложное. Я поэтому и задумался над расширенным вариантом использования 2д физ движка в вопросах перепада высот хотя бы

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      @@samserious5483 получится как в думе с псево 3д, где можно было делать фейковые лестницы

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      @@samserious5483 ещё можно делать телепорты на разные этажи с разными box2d world

    • @samserious5483
      @samserious5483 ปีที่แล้ว

      @@gamedev_expert ага, а еще можно делать зоны, которые будут говорить о линейном изменении высота в зависимости от положения игрока на этой зоне (типа уклон). И если наша z составляющая, регулируемая нами, а не боксом2д, выходит за пределы другого игрока минус его размер по z, то, считай, мы на другой высоте, и коллизии нет:) Перешли в другую зону

  • @fireruslord
    @fireruslord ปีที่แล้ว

    что это вообще такое? Ниче не понимаю... Где такому уровню учат?

  • @nanaschi
    @nanaschi ปีที่แล้ว

    Посмотрел на одном дыхании. Хотелось бы модет где-то схемы архитектуры нарисованные, но если имеет смысл. А так очень понравилось, что и детали и глобально интересные вещи подмечаешь

  • @zhenshuang
    @zhenshuang ปีที่แล้ว

    Почему так тихо ппц.

  • @danshicu_play5841
    @danshicu_play5841 ปีที่แล้ว

    Андрей, добрый день. Не так давно выполнял тестовое задание для стажировки в компанию. По итогу мой вариант выполнения отклонили, не указав в фидбеке вообще никаких конкретных указаний почему мои решения посчитали не эффективными. Можно ли как-то связаться с вами для получения адекватного ревью задания?

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Привет, если не торопитесь и готовы к тому что это будет на видео, то присылайте dredstd@gmail.com

  • @ЮринПавел
    @ЮринПавел ปีที่แล้ว

    очень круто, но очень тихо(

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Спасибо, в следующем сделаю громко

  • @PotatoManager420
    @PotatoManager420 ปีที่แล้ว

    $4500? Блин я делал Unity проекты, куда более завершенные и играбельные с большим количеством игровых фич чем эта, в качестве тестовых заданий на позиции обычного Junior'а! Единственное я не использовал zenject т.к. ещё не изучил За видео лайк, очень полезное видео

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Довольно типично, что на джуна сложнее пройти собес, чем на мидла

    • @PotatoManager420
      @PotatoManager420 ปีที่แล้ว

      Причем вакансия Junior'а предлагает всего $500 в месяц

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      @@PotatoManager420 там ужас творится на junior вакансиях, лучше опыта набраться в опен сорс или некоммерческих проектах и сразу на мидла идти

    • @deniskhakimov
      @deniskhakimov ปีที่แล้ว

      Случайно кликнул на ролик и поразился тому, насколько простые тестовые задания выдают компании О_О Слушайте, мы ведь все писали подобные игрульки на раз-два, причём даже не зная языков программирования и каких-либо сторонних библиотек. С такой задачей теоретически должна справится любая _школота-хорошист_ (сам в школе писал примитивную версию этой игры на QBasic, чуть позже, когда появился свой ПК, на Delphi и Java, а в последние годы несколько раз реализовывал такое на JS, каждый раз по фану применяя разные шаблоны проектирования). Я просто не понимаю, откуда в РФ дичайший дефицит _IT-специалистов,_ если компании выдают столь простые тестовые задания (т.е. теоретически в них настолько просто попасть)? 😳

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      @@deniskhakimov простая задача не подразумевает простого решения. Сделать её действительно очень просто. Но главное тут демонстрация навыков построения удобной, лаконичной, расширяемой архитектуры. Если вы умеете так делать, то здорово, но не стоит думать что все умеют. Поэтому и дефицит. ( Хотя в геймдев сейчас нет дефицита)

  • @nerfitplz4863
    @nerfitplz4863 ปีที่แล้ว

    Ты когда рендеришь видос скорее всего какое-то сжатие не то выбираешь и из-за этого картинка размытая, а так видосы интересно смотреть)

  • @MegaGrant1988
    @MegaGrant1988 ปีที่แล้ว

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

  • @alexandr_sirota
    @alexandr_sirota ปีที่แล้ว

    Привет, работу не ищешь случайно?) У нас создается новая команда под юнити и это первая юнити команда в компании(другие игры были под веб на typescript), пока еще вроде никого не нашли, удаленка, компания из США, но все в основном из стран снг, не гк, проекты которые мы делали довольно таки серьезные, все игры онлайн, ситибилдеры и шутер от первого лица, нфти, крипта и подобное

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Привет! Спасибо за предложение, сейчас только бекенд пишу. Есть два друга, с которыми вместе работали раньше, их может заинтересовать, можешь отправить ссылку на вакансию dredstd@gmail.com

    • @alexandr_sirota
      @alexandr_sirota ปีที่แล้ว

      @@gamedev_expert дал контакты нашему hr ну и подал запрос дружбы в линке)

  • @simxan123
    @simxan123 ปีที่แล้ว

    Интересно, а можно ли Вам проект на обзор скинуть? Джуны, но вроде пишем понятно

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Привет, скинуть можете, а когда у меня время будет я не знаю

  • @nognomar
    @nognomar ปีที่แล้ว

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

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Спасибо, интересно

  • @tr0sty
    @tr0sty ปีที่แล้ว

    рефакторил-рефакторил, а игру так и не починил)

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      😀 чинить не интересно

  • @lisst1114
    @lisst1114 ปีที่แล้ว

    Че так громко, а еще тише можно?

  • @xanaramus
    @xanaramus ปีที่แล้ว

    48:10 Возможно в вашем кейсе порядок инициализации не важен, но имхо лучше он будет ручной, зато прозрачный. Какие-то сервисы могут зависеть от инициализации других.

    • @gamedev_expert
      @gamedev_expert ปีที่แล้ว

      Привет! порядкок инициализации равен порядку в массиве, мне кажется это достаточно наглядно

    • @xanaramus
      @xanaramus ปีที่แล้ว

      @@gamedev_expert Согласен, недосмотрел) Я думаю основная проблема, что человек не смог решить цикличную зависимость, чтобы состояния получали зависимости из DI, а не вручную, хотя это решается обычной фабрикой :)

  • @nightyonetwothree
    @nightyonetwothree ปีที่แล้ว

    круто, хорошая речь, хороший разбор, очень приятно смотреть на рефакторинг с сопутствующей ему озвученной логикой. Приятный урок получился :) спасибо