• Game-dev путь. Что мне делать?

    @MarkusD
    все время мелю чепуху :)
    Вот держи: Game developer roadmap и Study path for game programmer.
    Этих двух ссылок тебе лет на 15 усерднейшего запоя хватит. :)
    Подробнее, чем там, больше негде.
    Ответ написан
    Комментировать
  • Как бросить луч на пользовательский интерфейс в Unity3D?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Для определения выделенного элемента интерфейса можете использовать EventSystem.currentSelectedGameObject.
    Ответ написан
    Комментировать
  • Чем опасен force push?

    Lobotomist
    @Lobotomist
    Software Developer
    BD_ l3ftoverZ! ответил в принципе верно - можно затереть чужие изменения, но это не единственная опасность.

    Проблема еще и в том, что старые версии коммитов кто-то получил. И если при форсед пуше в содержимое коммитов были внесены изменения (например, они были поменяны местами и в итоге "сумма изменений" осталась та же, но порядок изменился) при пулле возникнут конфликты при попытке отребэйзить (смерджить) старые версии коммитов на новые. И тут уже все зависит от опытности и внимательности разработчика, который с этим столкнулся. Если он достаточно опытен - он поймет в чем дело и правильно разрулит ситуацию. А если нет - он начнет решать конфликты, накосячит при их решении, при пуше не проверит что он пушит не только свои коммиты, которые собирался, но и старые версии коммитов отребэйзенные на новые версии и это будет... неприятно.

    История из жизни.

    Вот реальная ситуация, которая произошла у меня на работе. К сожалению, за давностью лет конкретные детали я помню смутно, но в целом все было примерно так. В какой-то момент появилась ошибка. Причем код, в котором она была был очень "говнокод", человек его написавший уже уволился и понять в каком месте этот говнокод написан неправильно, не понимая "логики" автора было очень сложно. С помощью git-bisect я нашел проблемный коммит и стал дальше раскручивать клубок. В итоге выяснилось, что было нарушено по крайней мере три важных правила работы с гитом (описанные во внутренней вики и обязательные к исполнению) и если бы хотя бы одно из них нарушено не было - все было бы ок.
    1. Я сделал пуш в мастер и оперативно осознав, что что-то там не так быстренько поправил и залил форсед пушем исправления. Это было важно сделать именно так. Я решил, что во-первых, маловероятно, что кто-то успел сделать пулл, а во-вторых, даже если он и сделал - когда у него возникнут конфликты он либо сам все поймет, либо обратится ко мне. Первое нарушение. Мне следовало уведомить всех разработчиков об этом и объяснить как нужно правильно действовать.
    2. Естественно, один разработчик успел сделать пулл и отребэйзил на старый мастер ветку этого уволившегося и стал доделывать таск. Когда спустя продолжительное время он стал ребэйзить эту ветку на мастер у него полезли конфликты. Он не понял из-за чего эти конфликты возникли. Но храбро все их решил. Етественно, не правльно, уже хотя-бы потому, что он вообще не должен был их решать. Нарушение второго правила - "решай конфликты только тогда, когда ты понимаешь почему они возникли". Обратись он ко мне - все было бы в порядке.
    3. Когда он стал пушить свои изменения он нарушил третье правило: "Всегда проверяй список коммитов, которые ты пушишь". Он не заметил, что кроме "своих" коммитов, он так же пушит чужие, старые версии коммитов мастера, которые он отребэйзил на новые. Он должен был это заметить и забить тревогу - что такое, откуда эти коммиты, я их не делал. Опять же, обратись он ко мне - я бы на месте бы разобрался в чем дело, и исправил ситуацию.

    Так что не надейтесь на авось (как я в данном случае).


    В целом, получается так - если ты понимаешь, что обе проблемы - 1) перезатирание чужих изменений и 2) наличие у кого-то старых версий коммитов не актуальны - смело делай форсед пуш. Например:
    • Это ветка по задаче, в которой работаешь только ты и согласно workflow никто не должен без твоего ведома брать из нее какие-то коммиты.
    • Ты точно знаешь кто имеет доступ к ветке и уверен, что эти люди с ситуацией справятся корректно. Ты их предупредил и они знают что в таких ситуациях делать.
    Ответ написан
    Комментировать
  • Как понять устройство Unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Разные тематические видео-курсы:
    https://learn.unity.com/

    За деньги более индивидуальный подход:
    https://unity.com/ru/learn-premium

    Ну а так вообще можно просто API смотреть или читать официальное руководство, вот и всё. Ничего более чёткого не придумано пока что.

    На пальцах могу дать вводную. Вам предлагается иерархия объектов, к которой будет привязана вся логика работы игры (в рамках одной сцены). В каждом объекте могут быть в свою очередь разные компоненты, несущие различную функциональность, например расположение объекта в игровом мире и прочие свойства. Координаты объекта считаются не от глобального начала координат мира, а от координат родителя. Гениально и просто, как говорится. Удачи в освоении!
    Ответ написан
    Комментировать
  • Как попасть в game-dev и с чего начать карьеру в этой области если ты веб-разработчик?

    @Xeli
    Геймдев это ремесло. Гребля на галере это тоже ремесло. А как попасть на галеру? Подходишь к капитану и показываешь как ты умеешь грести веслом. Если капитану понравится он тебя прикует к веслу и дальше будешь им махать за пайку от рассвета и до забора. Если будешь усердно махать то когда нибудь тебя даже поставят надсмотрщиком. Будешь гордо стоять на юте и нежно ласкать кнутом спины подчиненных.
    Ответ написан
  • Как разделить экран пополам для ввода с Android устройств?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    что ж.
    для начала Input - https://docs.unity3d.com/ScriptReference/Input.html

    про половины экрана есть два варианта
    1) невидимые кнопки (удобно потом менять позицию и размер)
    2) отследить координаты нажатия мышки (тача)

    1) вариант. читайте про Canvas и вообще примеры работы с ним
    https://unity3d.com/ru/learn/tutorials/s/user-inte...
    собственно сделать две Button и в событие OnClick проставить требуемое.
    (просмотрите уроки - станет понятно, очень все тривиально)
    проблемно будет если вы захотите ставить сразу несколько пальцев на экран - юнити обычно просто берет среднюю позицию.

    2) вариант не такой гибкий в плане правки позиций), но куда проще в плане доработок и свои придумок.
    приблизительно так.

    private Rect leftPart = new Rect(0, 0, Screen.width / 2, Screen.height);
        private Rect rightPart = new Rect(Screen.width / 2, 0, Screen.width / 2, Screen.height);
        // Update is called once per frame
        void Update () {
    
            if(Input.GetMouseButton(0))//touch works too
            {
                if(leftPart.Contains(Input.mousePosition))
                {
                    //jump
                }
                if(rightPart.Contains(Input.mousePosition))
                {
                    //force
                }
            }

    возможно придется под мультитач переделывать (https://docs.unity3d.com/ScriptReference/Input.Get...
    по сути брать не позицию мышки, а позицию тача.
    Ответ написан
    1 комментарий
  • Штилдт или что-то еще?

    Morpheus_God
    @Morpheus_God
    Выучите базовый синтаксис по вашей книге. Сахарок и новые фичи можно почерпнуть из MSDN или c сайта Metanit, как советуют выше.
    Ответ написан
    Комментировать
  • Штилдт или что-то еще?

    AnnTHony
    @AnnTHony
    Интроверт
    Ответ написан
    Комментировать
  • Штилдт или что-то еще?

    @PushMeNow
    .NET Developer
    О да этот автор отлично излагает, сам когда-то с него начинал. Вообще всё зависит как раз от того какую версию c# вы будете использовать. В любом случае основы даже в книге для 4-й версии изложены. После этой версии были упрощены асинхронные операции и добавлены некоторые вкусности. Для более поздних версий советую посетить сайт Метанита. Хотя там всё кратко описано и полноценную книгу это не заменит, где всё расписано полностью. Удачи!
    Ответ написан
    Комментировать