Рубрика «разработка игр» - 70

В 2016 году я начал работу над хобби-проектом по реверс-инжинирингу игры Duke Nukem II и воссозданию с нуля его движка. Проект имеет название Rigel Engine и выложен в open source (его страница на GitHub). Сегодня, более чем два с половиной года спустя на моём движке уже можно пройти весь shareware-эпизод оригинальной игры с практически идентичным оригиналу игровым процессом. Вот видео с прохождением первого уровня:

Что же он может делать? Rigel Engine работает как полная замена оригинального двоичного файла DOS (NUKEM2.EXE). Можно скопировать его в каталог игры и он считает из него все данные, или же указать путь к данным игры как аргумент командной строки. Движок собирается и выполняется под Windows, Mac OS X и Linux. Он основан на SDL и OpenGL 3/OpenGL ES 2, а написан на C++ 17.

Он реализует игровую логику всех врагов и игровых механик из Shareware-эпизода, плюс бОльшую часть системы меню. Кроме того, в него можно импортировать сохранённые игры и таблицу рекордов из оригинальной игры.
Читать полностью »

Одним из заметных событий прошедшей недели стал анонс новой части Call of Duty — ведь Call of Duty: Modern Warfare, ребут одноименного хита 2007 года, будет первой за 14 лет игрой серии, которая работает на новом движке, и к тому же будет поддерживать кросс-плей на PC, PS4 и Xbox One. На закрытом пресс-показе, устроенном для прессы и стримеров в Лос-Анджелесе, Activision показала 15 минут игрового процесса, чем вызвала небывалый восторг у публики. Всем остальным геймплей продемонстрируют только на E3, но, к счастью, произойдет это уже совсем скоро.

Удивительно, но похоже, что это действительно новый движок, а не обещания маркетологов Activision, которые вы могли слышать прошлые N раз; это подтверждают специалисты Digital Foundry, пообщавшиеся с разработчиками и выяснившие технические подробности.

Судя по ранним отзывам очевидцев, движок новой Call of Duty сможет составить полноценную конкуренцию актуальной версии Frostbite, поскольку разработчикам удалось достичь больших успехов по части картинки и звука. Разработка движка заняла 5 лет; в его создании принимала участие студия Infinity Ward Poland, которая была открыта в конце 2017 года с целью R&D. В создании игры принимают участие ветераны, покинувшие Infinity Ward после выхода оригинальной Modern Warfare и ушедшие в Respawn, а теперь вернувшиеся обратно поработать над ребутом (что само по себе забавно — ведь если бы не небывалый успех Modern Warfare и последовавший за ним скандал между Activision и отцами-основателями Infinity Ward, то Respawn и Titanfall никогда бы не появились на свет).
Читать полностью »

Завтрак с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов», затянулся на четыре часа. В конце-концов официантка попросила нас из ресторана в Пало-Альто, сказав что в ресторан большая очередь, а мы тут с восьми утра заседаем. За это время мы обсудили массу интересных вещий: работу Чарльза в Ливерморской лаборатории и Оракле, объектно-ориентированное и функциональное программирование, компиляторы и языки описания аппаратуры, закладки в процессоры, неэффективность нейронных сетей и незаслуженно забытый Пролог, посещение Чарльзом России, обработка текста конечным автоматом в аппаратном сопроцессоре и создание школьниками видеоигр на ПЛИС.

Отчет с завтрака с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов» - 1

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

ПривеТ! Решил поделиться с читателями своими небольшими экспериментами с системами частиц в трехмерном пространстве. За основу взял публикацию на Хабре об экспериментах с частицами в 2D пространстве.
Жизнь на частицах 3D - 1

Читать полностью »

Всем привет! Это мой второй урок по SDL 2. Информацию я всё ещё беру отсюда.
Итак, приветствую вас на уроке

Main не резиновый

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

Начнем написание кода с подключения SDL и объявления нескольких глобальных переменных.
Читать полностью »

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

Размышляя с чего начать вообще этот RTS движок, я пришел к выводу, что стоит начать с конкретики и от нее перейти к абстракции. Первой прикладной задачей, пришедшей на ум, был сбор ресурсов, а точнее, добыча дерева.
Читать полностью »

День защиты детей от плохого кода - 1

Пост посвящен дню защиты детей. Любые совпадения – не совпадения.

В 10 лет у меня появились первый компьютер и диск с Visual Studio 6. С тех пор я придумываю себе задачки — автоматизировать дела, собрать какой-нибудь веб-сервис для трёх человек или написать игру, которую потом удалят из плеймаркета от старости. Конечно, я терял исходники и писал код, который стыдно показывать людям. И в 10 лет я бы точно не отказался получить из будущего архив со всеми косяками — чтобы никогда их не допускать.

Пару недель назад я спросил коллег из Яндекс.Денег, что бы они сейчас посоветовали ребенку, который хочет стать айтишником, а потом вспомнил кое-что о себе. Так появился этот текст. Предлагаю об этом поговорить.

Читать полностью »

История дизайна уровней Duke Nukem (с эскизами Левелорда) - 1

В преддверии 22-летия Duke Nukem вчера мы писали об истории игры. Сегодня поговорим о дизайне уровней официальных релизов основной серии игр Duke Nukem, не спин-офф и тем более не сторонних модификаций. По тексту тут и там разбросаны цитаты из нашего интервью с легендарным дизайнером Duke Nukem Ричардом Греем Levelord'ом, которое мы взяли у него специально для этого поста. Если вы заметили неточности или уверены, что мы пропустили что-то важное — пишите об этом в комментариях и мы добавим информацию в статью.
Читать полностью »

Разбираем бизнес-модель викингов - 1

Привет! Мы тут сейчас делаем игру про викингов, и пока я узнавал про них, вскрылась пара неочевидных деталей. Но пока важное:

  • Они дошли до Африки с набегами и поздними поселениями.
  • Есть норманнская теория основания Руси — мол, это наши предки. Она спорная, куда больше свидетельств о постоянном сотрудничестве народов (читай: почти все варяги = викинги, а Тор и Перун на самом деле почти тот же мужик).
  • Эти парни делали самые крутые корабли и самую крутую навигацию 7-10 веков, и уже знали явление поляризации света (вернее, не знали, но использовали).
  • Они же ввели прямую демократию, которая потом стала альтингом (и до сих пор работает в Исландии).
  • Очень много вещей в быту совпадает или похоже на то, что делали наши славянские предки.

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

Отправной точкой поисков было другое: парень из Новой Зеландии, упоровшийся по викингам, сделал крутую игру. Так вот, правильно ли он смог передать сеттинг?
Читать полностью »

[Первая часть]

Разобравшись с основами, в этой части статьи мы реализуем такие эффекты, как контуры объектов, bloom, SSAO, размытие, глубина резкости, пикселизация и другие.

Контуры

Шейдеры 3D-игр для начинающих: эффекты - 1

Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

Diffuse материала

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

uniform struct
  { vec4 diffuse
  ;
  } p3d_Material;

out vec4 fragColor;

void main() {
  vec3 diffuseColor = p3d_Material.diffuse.rgb;
  fragColor = vec4(diffuseColor, 1);
}

Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js