• Ищем сокровища в исходном коде Aladdin

    • Перевод
    image


    На момент своего выхода в 1993 году Disney’s Aladdin на Sega Genesis (или Mega Drive, если в начале 90-х вы жили с другой стороны лужи) была удивительно красивой игрой.

    Благодаря использованию технологии, которая позже стала известной, как Digicel, правильному выбору промежуточного ПО и впечатляющему таланту авторов Aladdin смогла выделиться на фоне других игр Genesis той эпохи. Красивая нарисованная от руки графика Aladdin установила новую планку качества для того, чего можно добиться на «железе» Genesis. Это стало возможным не с помощью особенно интересных растровых эффектов или тайных аппаратных приёмов, а благодаря сочетанию эффектной графики, дизайна и правильно выбранной технологии.

    Эта уникальная смесь графики и технологий стала основной причиной, позволившей игре Aladdin занять особое место в истории видеоигр. Поэтому мне так радостно было найти архив с полным исходным кодом игры в коллекции Video Game History Foundation! Кроме бесценного источника данных, этот архив является для меня отличной возможностью создать стандарты для сохранения исходного кода, отслеживания зависимостей инструментов и многих других процессо-ориентированных аспектов в VGHF.
    Читать дальше →
  • О выборе структур данных для начинающих

    • Перевод
    image

    Часть 1. Линейные структуры


    Массив


    Когда вам нужен один объект, вы создаёте один объект. Когда нужно несколько объектов, тогда есть несколько вариантов на выбор. Я видел, как многие новички в коде пишут что-то типа такого:

    // Таблица рекордов
    int score1 = 0;
    int score2 = 0;
    int score3 = 0;
    int score4 = 0;
    int score5 = 0;

    Это даёт нам значение пяти рекордов. Этот способ неплохо работает, пока вам не потребуется пятьдесят или сто объектов. Вместо создания отдельных объектов можно использовать массив.

    // Таблица рекордов
    const int NUM_HIGH_SCORES = 5;
    int highScore[NUM_HIGH_SCORES] = {0};

    Будет создан буфер из 5 элементов, вот такой:



    Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
    Читать дальше →
  • Обобщённый поиск путей для ИИ в платформерах

    • Перевод

    Предисловие


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

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

    Мы рассмотрим основную идею и создадим полную реализацию. Более сложные случаи, в том числе подвижные платформы/разрушаемые стены, мы рассмотрим в другой статье.

    Эта техника использована в игре Nomera, см. на www.dotstarmoney.com или в Twitter.

    e3iKSJ7.png


    Прежде чем начать, проверьте, возможно, вы удастся реализовать более простой алгоритм, соответствующий упрощённой геометрии карты. Например, если коллизии в уровнях распознаются по сетке квадратов (как в большинстве 2D-игр). В таких случаях можно реализовать надёжный поиск путей ИИ с помощью более простых техник. Мой метод в основном подойдёт тем, кто хочет более «человечного» поведения ИИ.
    Читать дальше →
    • +25
    • 4,6k
    • 3
  • Математика игры 2048

    • Перевод

    Часть 1. Расчёт минимального количества ходов для победы с помощью цепей Маркова


    Screenshot of 2048

    После недавнего обновления экран «You win!» игры 2048 начал показывать количество ходов, потребовавшихся для победы, и я задался вопросом: сколько же нужно ходов, чтобы выиграть?

    В первой части статьи мы ответим на этот вопрос, смоделировав игру 2048 в виде цепи Маркова и проанализировав её, чтобы показать, что вне зависимости от мастерства игрока для победы в среднем нужно не менее 938,8 ходов. Это даёт нам неплохое мерило отсчёта — если вы можете выигрывать примерно за такое количество ходов, то неплохо играете.

    Количество ходов, необходимых для победы, зависит от случайности, потому что игра добавляет тайлы 2 и 4 случайным образом. Анализ также покажет, что распределение минимального количества ходов до победы имеет стандартное отклонение в 8,3 хода, и что его общая форма хорошо аппроксимируется смесью биномиальных распределений.
    Читать дальше →
  • Магия разработки видеоигр id Software

    • Перевод
    От переводчика: эта статья написана Дэвидом Кушнером в 2002 году, годом позже он издал известную книгу «Masters of Doom». Статья показалась мне интересной, потому что в ней есть подробности реализации технологий id, почему-то отсутствующие в книге.

    За кулисами экшена и агрессии игр id скрыта революция в технологии настольных компьютеров



    image
    В течение последних 12 лет эволюция реализма графики Id Software поднимает планку для всей отрасли видеоигр. Среди игр-новаторов находятся [снизу вверх, справа налево] Commander Keen (1990) [прим. пер.: на самом деле на скриншоте Dangerous Dave in the Haunted Mansion], Hovertank (1991), Wolfenstein 3D (1992), Doom (1993), Quake (1996) [прим. пер.: на самом деле Quake II] и Return to Castle Wolfenstein (2001).

    После полуночи начинается схватка. Солдаты преследуют нацистов по коридорам замка. Огнемёт изрыгает чудовищный язык пламени. Это Return to Castle Wolfenstein, компьютерная игра, ставшая не только спинномозговым приключением, но и чудом науки. Она же — последний продукт Id Software (Мескит, штат Техас). Благодаря своим технологически инновационным играм id оказала огромное влияние на мир компьютерных вычислений: от привычных в современных PC высокоскоростных полноцветных графических карт высокого разрешения до появления армии программистов и игроков в онлайновые игры, внёсших вклад в поп-культуру.
    Читать дальше →
  • Какие налоги нужно платить при выводе доходов от приложений в Apple iTunes

    • Tutorial
    image

    Разработчики постоянно задают нам вопросы о налогах, которые должны платить при выводе средств на российское лицо по договору с Apple. Поводом беспокойства служит известный Налог на Гугл, введенный с начала 2017 года.

    Поэтому мы разместили в свободном доступе перевод последней редакции Apple Developer Program License Agreement Schedule 2 и подготовили налоговые комментарии к нему.

    Кому интересно, смотрим далее.
    Читать дальше →
  • Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
  • Симуляция физического мира

    • Перевод


    Как бы вы подошли к симуляции дождя, ну или любого другого продолжительного физического процесса?

    Симуляцию, будь это дождь, поток воздуха над крылом самолёта или же падающий по ступенькам слинки (помните игрушку-пружинку радугу из детства?), можно представить, если знать следующее:

    1. Состояние всего в момент начала симуляции.
    2. Как это состояние меняется из одного момента времени в другой?
    Читать дальше →
  • Продолжение поста от школьников. Как Хабрахабр смог изменить нашу судьбу?

      К публикации «Разработка прибыльной Android игры двумя школьниками».

      Это пост благодарности. В нем мы не будем писать много букв и приводить кучу сложных графиков. Мы хотим просто поблагодарить всех тех, кто лайкнул, оставил комментарий, да и вообще просто прочитал предыдущий пост. Также мы немного расскажем о том, как Хабрахабр сделал нас знаменитыми.

      image
      Читать дальше →
    • Создание синтезатора звуковых эффектов из ретро-игр

      • Перевод
      image

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

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

      В этом туториале используется язык программирования ActionScript 3.0, но применяемые техники и концепции можно легко преобразовать в любой другой язык, предоставляющий доступ к низкоуровневому API работы со звуком.
      Читать дальше →
      • +27
      • 5,1k
      • 3
    • Библиотека быстрого поиска путей на графе

        Привет, Друзья!


        Я написал библиотеку поисков путей на произвольных графах, и хотел бы поделиться ей с вами.


        Пример использования на огромном графе:



        Поиграться с демо можно здесь


        В библиотеке используется мало-известный вариант A* поиска, который называется NBA*. Это двунаправленный поиск, с расслабленными требованиями к функции-эвристике, и очень агрессивным критерием завершения. Не смотря на свою малоизвестность у алгоритма отличная скорость сходимости к оптимальному решению.


        Описание разных вариантов A* уже не раз встречалось на хабре. Мне очень понравилось вот это, потому повторяться в этой статье я не буду. Под катом расскажу подробнее почему библиотека работает быстро и о том, как было сделано демо.

        Читать дальше →
      Самое читаемое