• Детальный разбор того, что Google показал на конференции FlutterLive (и что это значит для Dart и мира)

      Буквально накануне (UPD пока я писал статью, прошло двое суток 0_0), 4 декабря в Лондоне прошла конференция FlutterLive, посвящённая в основном мобильному фреймворку Flutter, но не ограничиваясь им. Какие новости нам рассказали, и что теперь является основным вектором развития для команды Google, включая некоторые размышления на этот счёт, вы можете прочесть ниже.

      Так как мы в Wrike сейчас одни из самых больших потребителей Dart (но, как показала конференция DartUP далеко не единственные), то мы постарались сделать для вас детальный разбор, что этот анонс значит для всего IT мира.

      Спойлер для затравки: скоро всё будет Flutter


      Читать дальше →
    • Процедурная генерация подземелий в roguelike

      • Перевод
      image

      Процедурно генерируемые карты — базовая особенность roguelike. Для жанра, который почти является синонимом понятия «случайность» (и на то есть причины), рандомизированные карты стали простейшим способом демонстрации его ключевого элемента, потому что они влияют на многие аспекты геймплея — от стратегии исследования и тактического позиционирования до расположения предметов и врагов.

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

      Поэтому рандомизированные карты обеспечивают нам бесконечную реиграбельность, каждый раз ставя перед нами разные задачи. Кроме того, удовольствие усиливается тем, что прогресс игрока зависит от его собственного навыка, а не от проб и ошибок. Схема каждой новой карты на 100% неизвестна, что тоже добавляет напряжённости процессу её изучения.

      Конечно же, преимущества процедурных карт бессмысленны без большой вариативности механик и контента — однообразный hack-and-slash здесь не подойдёт. Поэтому все roguelike, выдержавшие испытание временем, имеют глубокий геймплей.

      Этот пост является результатом моей работы над генерацией карт для Cogmind.
      Читать дальше →
      • +41
      • 32k
      • 3
    • Предлагаю нестандартный опросник по .Net

        Предлагаю не совсем стандартный опрос по платформе .Net. Спойлерами раскрыты ответы на вопросы, но все-таки прошу сначала самим ответить на опросник, после чего идти и смотреть ответы :)

        Когда вызывается статический метод, то JIT...
        JIT компилирует вызов прокси-метода, который делает безусловный переход на компилятор необходимого и тот заменяет адрес перехода в прокси на новое тело метода. Это делается по нескольким причинам.

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

        Читать дальше →