• История создания Age of Empires: «Это была лучшая из худших среди наших идей»

    • Перевод
    imageВ Age of Empires эпичным было практически всё.

    За последние 20 лет, в «Эпохах Империй» успели появиться 50 цивилизаций, суммарные продажи серии превысили 20 миллионов копий, и армия из сотен тысяч поклонников провела за игрой бесчисленные часы, причём многие из них играли в неё чуть ли не каждую неделю. Age of Empires является одной из самых влиятельных стратегий всех времен и народов. И сегодня вместо того, чтобы отправиться на свалку истории (что обычно рано или поздно случается со всеми старыми играми), «Империя» наконец-то приходит в сознание и возвращается к своим поклонникам.

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

    Arstechnica пообщалась с создателями оригинальной Age of Empires о том, как проходила разработка знаменитой игры, и они откровенно рассказали о своих успехах и неудачах. Вашему вниманию предлагается краткий пересказ того, что нам удалось узнать; речь пойдет в первую очередь про первые части Age of Empires, которые заложили основу серии, но мы вспомним и более поздние игры Ensemble Studios.
    Читать дальше →
  • Переезд в Японию

      Попытки найти работу в Японии я начал предпринимать достаточно давно, преследуя две цели: одна — попробовать поработать за границей, а вторая — работать в команде с профессионалами в различных областях IT. Первые попытки закончились без намёка на успех. Практически везде нужно было знание японского языка хотя бы на среднем уровне. А в тех редких случаях, когда этого не требовалось, мне, по каким-то причинам, не удавалось достучаться до HR этих компаний. Тогда я забросил эту мысль, но, в то же время, создал профиль на LinkedIn и старался поддерживать профиль в актуальном состоянии. Спустя несколько лет ситуация изменилась.

      image

      Поиск работы


      В моем случае LinkedIn оказался единственным инструментом, с помощью которого я мог добраться хотя бы до интервью. В тот момент, когда я вернулся к поискам (начало 2015-го), на сайте уже было достаточно много IT-вакансий в Токио без требований к знанию японского. Как выяснилось позже — это был новый тренд по привлечению специалистов из-за границы.

      Я нашёл вакансию, которая мне была интересна, перешел по ссылке, заполнил анкету, записал видео-интервью и на какое-то время забыл обо всём этом, т.к. не расчитывал, что мне кто-то ответит. Но мне ответили.

      Собеседование


      Пригласили на собеседование по скайпу. Всего их было 4 или 5 и только одно из них техническое. На остальных же мне казалось, что интервьюер именно я. Мне рассказывали о компании, проектах, работе, а я задавал вопросы. В итоге за время этих интервью (которые заняли около 2-х месяцев) я познакомился с кем-то из HR, своим будущим менеджером, почти всеми членами команды и с менеджером L2 (один из executive). Т.е. ещё даже не зная наймут ли меня, я уже знал всех тех, с кем мне предстоит работать. Мне это показалось чем-то невероятным.
      Читать дальше →
    • Приёмы геймдизайна: перемешивание

      • Перевод
      Во множестве популярных игр используются статичные, то есть неизменные карты. Например, огромный мир Skyrim одинаков для всех игроков. Все строения, подземелья, люди, монстры и предметы всегда находятся в одном месте. У популярности таких статичных карт есть своя причина: создатели могут подгонять контент для обеспечения целостного игрового процесса на протяжении всей игры.


      Каждый предмет в Skyrim (в том числе эта бесполезная чаша рядом со ступеньками) находится в одинаковом месте для всех игроков.

      Но если карты не меняются, игрок может изучить и запомнить их. А запомнив то, что срабатывало в предыдущем прохождении, вы можете просто повторять те же действия в следующих. Со временем все сложные стратегические решения, принимаемые в игре, разрушаются и превращаются в головоломку с запоминанием. По этой причине у игр со статичными картами часто возникает проблема реиграбельности.
      Читать дальше →
    • Pull request'ы на GitHub или Как мне внести изменения в чужой проект

      • Tutorial
      По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

      Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
      Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

      Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
      Читать дальше, но теперь уже обо всём по порядку
    • Подробный разбор решения crackme01_x64

      Данная статья рассчитана на начинающих, интересующихся обратной разработкой, и имеющих базовые представления о работе ЦП, языке ассемблера. Этот crackme относительно старый и простой, но при его решении применяются в основном те же приемы, что и при решении более сложных. На просторах Сети можно найти несколько статей с его разбором такие как эта, а еще он здесь упоминается(crackme то с историей), однако те решения не такие подробные как это. В свое время мне сильно не хватало такого построчного разбора, куда можно было бы заглянуть, когда запутался и не понимаешь что делает тот или иной участок кода. Если этот пост окажется полезным хотя бы для одного человека, значит я не зря старался. Все скрины(кроме первого) кликабельны. Приятного прочтения.

      Итак, перед нами простой crackme, запустим его и посмотрим как он работает.


      Ага, все довольно просто, мы должны ввести правильный серийник. Теперь откроем программу в дизассемблере. Как правило дизассемблерные листинги, даже относительно простых программ, довольно объемны. Для определения той части кода, которая проверяет ввод серийника, найдем где в памяти программы хранится строка с сообщением об ошибке «Fail, Serial is invalid !!!» и какой код к этой строке обращается.
      Читать дальше →
    • Чёрные треугольники

      • Перевод

      В октябре 1994 года я только начал свою карьеру добросовестного программиста видеоигр в небольшом стартапе SingleTrac, который позже получил славу и почёт (но, к сожалению, не очень много удачи) благодаря таким сериям игр, как Warhawk, Twisted Metal и Jet Moto. Но в то время в компании было меньше 20 сотрудников, и официально она работала всего около месяца. Это случилось в мою первую рабочую неделю, возможно, в первый или второй день. Из кабинета разработчиков слышались восторженные крики.

      Финансовый контролёр и действующая HR-леди нашей компании Джен вышла посмотреть, что за невероятный успех празднуют инженеры и художники. Все смотрели в экран телевизора, подключённого к комплекту разработки Sony Playstation. На экране на фоне одноцветного фона отображался чёрный треугольник.
      Читать дальше →
    • Как не надо писать на Хабр: Антирейтинг 2017



        Обсуждая результаты анализа статей за 2017 год, мы пришли к выводу, что нам и другим хабровчанам интересны не только лучшие публикации, но также любопытно было бы узнать какие статьи и комментарии были худшими. Сегодня мы публикуем антирейтинг публикаций и комментариев на Хабрахабре в 2017-ом. Сделано это потому, что на чужом негативном опыте можно многому научиться, оставить эти ошибки в уходящем и не повторять их в новом году. Других целей этот пост не несёт, просьба отнестись к этому с пониманием.
        Читать дальше →
      • Бэкенд игрового сервера World in Conflict выложен в открытый доступ

          image

          Исключительно хорошая новость: совместными усилиями компаний Ubisoft и шведской Massive Entertainment, в открытый доступ выложен рабочий сервер для игры World in Conflict. Данная стратегия в реальном времени (RTS) вышла в 2007 году; её официальный сервер Massgate был закрыт в 2016, после чего коммьюнити massgate.org решило вернуть игру к жизни, чем и вдохновило Ubisoft на данный шаг — теперь любой сможет поднять свой собственный сервер для мультиплеера и другого онлайн-функционала.

          Исходный код бэкенда доступен по ссылке на Github по лицензии GPL-2.0. Сам игровой сервер написан на С++, поэтому для компиляции вам потребуются CMake и Visual Studio. Для запуска вам также понадобятся MySQL (в оригинале использовался MySQL 4.2.1, но всё должно работать и на более свежих версиях) и любой простейший веб-сервер (авторы рекомендуют SimpleHTTPServer).

          Кстати, саму игру можно сейчас получить абсолютно бесплатно до 23 декабря по ссылке — правда, для этого вам может потребоваться завести аккаунт в Uplay.
          Читать дальше →
          • +17
          • 7,2k
          • 1
        • Операторы связи РФ. 2017. Немного аналитики



            … Мне бы джина, я б тогда не путался в проводах...

            Мы очень давно работаем на рынке софта для операторов связи и на сегодняшний день нам очень интересно понимать какая ситуация в России? Какое реальное количество действующих операторов и провайдеров? Где они? Кто они?
            Читать дальше →
          • Netflix подбирает оптимальные обложки фильмов для каждого зрителя

            • Перевод
            Из блога Netflix Technology

            Много лет основной целью системы персональных рекомендаций Netflix было выбрать правильные фильмы — и вовремя предложить их пользователям. С тысячами фильмов в каталоге и разносторонними предпочтениями клиентов на сотнях миллионов аккаунтов критически важно рекомендовать точные фильмы каждому из них. Но работа системы рекомендаций на этом не заканчивается. Что можно сказать о новом и незнакомом фильме, который вызовет ваш интерес? Как вас убедить, что он достоин просмотра? Очень важно ответить на эти вопросы, чтобы помочь людям открывать для себя новый контент, особенно незнакомые фильмы.

            Один из вариантов решения проблемы — принять в учёт картинки или обложки для фильмов. Если картинка выглядит убедительно, то она служит толчком и неким визуальным «доказательством», что фильм достоин просмотра. На ней может быть изображён известный вам актёр, захватывающий момент вроде автомобильной погони или драматическая сцена, передающая суть фильма или сериала. Если мы покажем идеальную обложку фильма на вашей домашней странице (как говорится, картинка стоит тысячи слов), то возможно, только возможно, вы решитесь выбрать этот фильм. Это просто ещё одна вещь, в которой Netflix отличается от традиционных медиа: у нас не один продукт, а более 100 млн разных продуктов, а каждый из пользователей получает персональные рекомендации и персональные обложки.


            Главная страница Netflix без обложек. Так исторически наши алгоритмы рекомендаций видели страницу
            Читать дальше →
            • +23
            • 7,5k
            • 6
          • Туториал по Unreal Engine. Часть 1: знакомство с движком

            • Перевод
            • Tutorial
            image

            Unreal Engine 4 — это набор инструментов для разработки игр, имеющий широкие возможности: от создания двухмерных игр на мобильные до AAA-проектов для консолей. Этот движок использовался при разработке таких игр, как ARK: Survival Evolved, Tekken 7 и Kingdom Hearts III.

            Разработка в Unreal Engine 4 очень проста для начинающих. С помощью системы визуального создания скриптов Blueprints Visual Scripting можно создавать готовые игры, не написав ни строчки кода! В сочетании с удобным интерфейсом это позволяет быстро изготавливать рабочие прототипы.

            В этой части туториала по Unreal Engine 4 мы ознакомимся с основными возможностями программы. Вот основные темы, которые будут в нём рассмотрены:

            • Установка движка
            • Импорт ассетов
            • Создание материалов
            • Использование Blueprints для создания объектов с простейшими функциями
            Читать дальше →
            • +17
            • 67,5k
            • 9
          • Как обсуждать биткойн и не выглядеть дураком

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

              Читать дальше →
            • Как перетасовать песни?

              • Перевод
              Мы здесь в Spotify серьёзно относимся к фидбеку от пользователей. Какое-то время назад мы заметили, что пользователи жалуются на то, что при включенном режиме случайного перемешивания плейлиста порядок песен на самом деле не случаен — например, несколько песен одного и того же исполнителя могут быть воспроизведены одна за другой, при том, что в плейлисте множество песен разных исполнителей. Пользователи спрашивали неужели мы не способны сделать такую простую вещь, как случайный порядок воспроизведения треков? Мы отвечали «Он правда-правда случаен! Мы проверяли!»

              Так кто же был прав — мы или пользователи? Как оказалось — и мы, и они. Ну и вообще дело обстояло значительно серьёзнее, чем казалось на первый взгляд.

              Наш точка зрения


              Ещё в самом первом релизе нашего плеера в нём была функция случайного перемешивания плейлиста. Мы использовали для этого алгоритм Фишера-Йетса — и он давал идеально случайное перемешивание. Но что такое «идеально случайное»? Это значит, например, что мы можем получить один из двух нижеуказанных порядков песен с одинаковой вероятностью (разные цвета означают треки разных исполнителей):

              image
              Читать дальше →
            • Эффект дизеринга в трёхмерной игре

              • Перевод
              image

              Создатель Papers, Please Лукас Поуп работает над новым трёхмерным проектом Return of the Obra Dinn, в котором пытается с помощью эффекта дизеринга воссоздать в игре ощущение старинной книги.

              Для начала краткое объяснение: Obra Dinn выполняет внутренний рендеринг всего в 8-битной палитре в градациях серого, а затем на этапе постобработки преобразует конечные выходные данные в 1-битные значения. Преобразование из 8-битного в 1-битный цвет выполняется сравнением каждого пикселя исходного изображения с соответствующей точкой в тайловом паттерне дизеринга. Если значение пикселя изображения больше значения точки паттерна дизеринга, то выходному биту присваивается значение 1, в противном случае оно равно 0. Выходные данные упрощаются до 1-битных значений, а глаз зрителя объединяет пиксели, аппроксимируя из них больше битов.
              Читать дальше →
            • У CDROM’а век не долог?

              • Tutorial
              DVD [диск] начнет умирать уже лет через 5. […] Я опираюсь на информацию из сети про условия и максимальный срок жизни, вполне может быть и лажа. Но фильмы на DVD[,] купленные ~10 лет назад[,] сейчас не запускаются ни один из нескольких десятков.

              Из обсуждения


              За многие годы у меня скопилась значительная коллекция CD и DVD ROM, выпущенных массовыми тиражами, кроме того, периодически архивирую на одноразовые болванки свои файлы. Поэтому утверждение, приведенное в эпиграфе, не могло меня не заинтересовать.
              Читать дальше →
            • Создание ремейков игр с помощью эмуляции: proof of concept

              • Перевод
              image

              Введение


              «В моё время игры были лучше. Они были интереснее, потому что геймплей считался более важным, чем графика».

              — Геймеры, рождённые в любом десятилетии

              Каким бы ни было «ваше время», думаю, вы в какой-то степени согласны с этим мнением. Для меня это был период с середины 80-х до середины 90-х, когда я проводил бесчисленные часы за Sir Fred, Atic Atac, Airborne Ranger, Monkey Island, Twilight: 2000, Stunts, Gunship 2000, Twinsen’s Adventure, Dark Sun, Challenge for Ancient Empires, серией the X-Wing и очень многими другими играми.

              Иногда мы испытываем приступы ностальгии и нам хочется сыграть в одну из тех игр снова. В этом случае у нас есть на выбор несколько вариантов.

              Сыграть в remastered-версию. Некоторые игры настолько потрясающи и собрали настолько преданную базу фанатов, что выпускается официальное «новое издание». Это точно такая же игра, но с современной графикой. Отличным примером таких игр может быть замечательная Monkey Island Special Edition.

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

              К похожей категории относятся игры, исходный код которых открыт, например шутеры от первого лица компании id. Существуют проекты, создающие новые графические ресурсы для этих игр, но они редки, да и немногие разработчики открывают исходный код своих игр.
              Читать дальше →
            • [Опрос] Ваш самый нелегальный/неэтичный проект

              • Перевод

              История первая


              Не я, но мой бывший советник тогда в Индии рассказывал нам эту поучительную историю на тему «зачем нужно проверять код» (Примечание: это было лет 30 назад)

              Чувак в адрес компании: если уволите меня, ваша система прекратит работать.

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

              В чем был фокус?

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

              Нелегально? Возможно. Неэтично? Ага. Отличная история? А то!

              Nupul Kukreja, Senior Engineer at Credit Karma
              Еще 5 историй
            • Какие правила английского нарушают наши иностранные коллеги. Часть 2

              • Tutorial

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

              Less vs fewer


              В английском языке, как и в русском, есть четкое разграничение между исчисляемыми существительными (a friend — friends) и неисчисляемыми (milk). Для каждого из этих типов существительных есть определенное слово, которое показывает количество. Чтобы показать, что чего-то мало, мы говорим так:

              I have little milk. — У меня мало молока.
              I have few friends — У меня мало друзей.


              Так вот, при сравнении предметов, чтобы показать, что у нас чего-то меньше, мы, говорим так:

              I have less milk than you. — У меня меньше молока, чем у тебя.
              I have fewer friends than you. — У меня меньше друзей, чем у тебя.
              Читать дальше →
            • Драконье Стекло или рассказ о игровом редакторе Larian Studios

                larian_dublin_logo Привет, Хабр! Это снова Larian Studios. Уф, у нас прошёл релиз, и теперь наконец-то появилось время продолжить делиться с вами нашим опытом и наработками.

                Сегодня я расскажу о самом главном инструменте, с помощью которого родилось уже 4 проекта — о кофемашине внутреннем редакторе игры. Редактор доступен в ограниченном (для моддеров и игроков) виде в Steam/GoG, поэтому каждый, кто приобрел игру, может скачать его и попробовать бесплатно.

                В статье я проведу обзор основной функциональности, коснусь некоторых архитектурных решений и расскажу немного о процессе его разработки и поддержки. Если понравится — в следующих статьях расскажу подробно о каждом элементе редактора в отдельности.

                Ну и еще расскажу, чем занимаются Tools Programmer в нашей студии.
                Читать дальше →