Pull to refresh
57
0

Пользователь

Send message

Основные принципы использования ECS в разработке игр

Reading time 5 min
Views 15K

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


Быть может, именно сейчас рождаются проекты «одного человека», которые смогут встать в один ряд с «Elite», «VVVVVV», «Papers, Please», «Stardew Valley», «Undertale» и «Minecraft». Gamedev вполне можно считать одним из видов искусства, расширяющим горизонты познания окружающего мира и внутреннего мира человека.


Мы подготовили концентрированную выжимку информации, полученной на лекционном вечере сообщества ECS COMRADE, которое проходило еще до карантина в Высшей школе бизнес-информатики НИУ ВШЭ в рамках образовательных программ по игровой индустрии «Менеджмент игровых проектов» и «Основы создания игр».



Давным-давно, в далёкой-далёкой галактике…


Total votes 28: ↑17 and ↓11 +6
Comments 12

Еще раз про приведение типов в языке С++ или расстановка всех точек над cast

Reading time 8 min
Views 114K

Этот пост попытка кратко оформить все, что я читал или слышал из разных источников про операторы приведения типов в языке C++. Информация ориентирована в основном на тех, кто изучает C++ относительно недолго и, как мне кажется, должна помочь понять cпецифику применения данных операторов. Старожилы и гуру С++ возможно помогут дополнить или скорректировать описанную мной картину. Всех интересующихся приглашаю под кат.
Добро пожаловать под кат
Total votes 35: ↑18 and ↓17 +1
Comments 37

Приведение типов

Reading time 4 min
Views 202K
Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Comments 59

C++, приведение в стиле C и неожиданные последствия их сочетания

Reading time 5 min
Views 17K
C++ получил в наследство от C приведение вида (тип)(что привести) – обычно называется приведением в стиле C. В C++ есть еще четыре явных приведения – static_cast, reinterpret_cast, dynamic_cast, const_cast.

C++ – не самый новый язык, и жаркие споры о том, что лучше – приведение в стиле C или использование *_cast в нужном сочетании, начались давно и не утихают по сей день. Не будем подливать масла в огонь, лучше рассмотрим пример, и пусть каждый сам решит, что ему нравится больше.
Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Comments 67

Приведение типов. Наглядное отличие static_cast от dynamic_cast

Reading time 3 min
Views 35K
Доброго времени суток. Очень много статей в интернете о разнице операторов приведения типов, но понимания в данной теме они мне не особо то и не добавили. Пришлось разбираться самому. Хочу поделиться с вами моим опытом на довольно наглядном примере.

Статья рассчитана на тех, кто хочет осознать приведение типов в С++.
Читать дальше →
Total votes 23: ↑16 and ↓7 +9
Comments 16

До и после: визуальная эволюция известных видеоигр

Reading time 8 min
Views 12K


В 90-х 8-битные Super Mario Bros. и Battle City — «Марио» и «танчики» — вызывали дикий восторг. Только недавно запускал их в браузере, чтобы поностальгировать. Сейчас геймеры, конечно, «избалованы» графикой и геймплеем (я в том числе), но что-то в тех играх еще осталось. Даже если не застали хиты тех лет, просто сравнить визуал родоначальников с современной картинкой — опыт интересный. Легкая статья с картинками, как всё было и стало.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 9

Bash-скрипты: начало

Reading time 11 min
Views 1.7M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Total votes 69: ↑61 and ↓8 +53
Comments 123

Как создаются изометрические миры

Reading time 25 min
Views 58K
image

Все мы играли в потрясающие изометрические игры, будь то первые Diablo, Age of Empires или Commandos. При первой встрече с изометрической игрой можно задаться вопросом: двухмерная она, трёхмерная или нечто совершенно другое. Сам мир изометрических игр обладает волшебной притягательностью для разработчиков. Давайте попробуем раскрыть тайну изометрической проекции и создадим простой изометрический уровень.

Для этого я решил использовать Phaser с кодом на JS. В результате у нас получится интерактивное приложение HTML5.

Учтите, что это не туториал по разработке на Phaser, мы просто используем его для удобного ознакомления с базовыми концепциями создания изометрической сцены. Кроме того, в Phaser есть простые способы создания изометрического контента, например, Phaser Isometric Plugin.

Для упрощения при создании сцены мы будем использовать тайлы.
Total votes 49: ↑49 and ↓0 +49
Comments 7

Khronos Group создала унифицированный репозиторий с примерами использования Vulkan

Reading time 2 min
Views 4.9K

The Khronos Group открыла репозиторий с примерами использования Vulkan, в котором каждый может найти высококачественные примеры по работе с Vulkan, проверенные группой. Khronos в сотрудничестве с внешними участниками создали проект унифицированных примеров в ответ на потребность пользователей в более доступных ресурсах и лучших практиках разработки с Vulkan.



Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 3

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time 7 min
Views 398K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Total votes 198: ↑196 and ↓2 +194
Comments 120

Книга «Командная строка Linux. Полное руководство. 2-е межд. изд.»

Reading time 11 min
Views 19K
image Привет, Хаброжители! Международный бестселлер «Командная строка Linux» поможет преодолеть путь от первых робких щелчков по клавишам до уверенного создания полноценных программ для последней версии bash — наиболее популярной командной оболочки Linux. Второе издание рассказывает о новых возможностях bash 4.x, таких как новые операторы перенаправления и операции подстановки. Вы освоите неустаревающие навыки владения командной строкой: навигацию по файловой системе, настройку окружения, объединение команд в цепочки и сопоставление с регулярными выражениями. Вы постигнете философию, лежащую в основе многих инструментов командной строки, разберетесь с богатым наследием, полученным от суперкомпьютеров с Unix, и приобщитесь к знаниям, накопленным поколениями гуру, исключивших мышь из своего арсенала инструментов. Преодолев первый «шок командной оболочки», вы поймете, насколько естественным и логичным является этот способ взаимодействия с компьютером.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 4

Подробное введение в rvalue-ссылки для тех, кому не хватило краткого

Reading time 17 min
Views 72K

Вместо КДПВ — короткая драма для привлечения внимания, основанная на реальных событиях. Ее можно смело пропустить и перейти к статье, которая поможет вам разобраться в rvalue-ссылках, конструкторах перемещения, универсальных ссылках, идеальной передаче (perfect forwarding) и т. д.


Драма в трех действиях


Действие первое


Компилятор. Локальный объект x типа T, проживающий на стеке, вы приговариваетесь к изъятию у вас всего имущества в связи с тем, что не будете пользоваться им до конца своей жизни.


Объект x. Что? Я не какой-то там временный объект, у меня постоянная регистрация, вы не имеете права!


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


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

Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Comments 19

История первого GPU: Rendition Vérité 1000

Reading time 10 min
Views 24K
image

Есть много хорошей литературы о движке Quake: книги, бесчисленные статьи в Интернете, блоги и вики-страницы. Среди них всех моими любимыми остаются «Graphics Programming Black Book» Майкла Абраша, опубликованная в 1997 году, и «Rocket Jump: Quake and the Golden Age of First-Person Shooters» Дэвида Л. Крэддока (2018 год).

К сожалению, можно найти очень мало информации о разработанном примерно в 1996 году оборудовании, позволившем улучшить 3D-рендеринг и, в частности, графику революционной игры id Software. Внутри архитектуры и конструкции этих кусков кремния заключена история технологической дуэли между Rendition V1000 и 3dfx Interactive Voodoo.

После выпуска vQuake в начале декабря 1996 года казалось, что преимуществом завладела Rendition. V1000 была быстрой картой, способной запускать Quake с аппаратным ускорением, обеспечивающим, по заявлению разработчика, скорость заполнения 25 мегапикселей/с[1]. Прямо перед Рождеством Rendition захватила рынок, позволив игрокам запускать игру с высоким разрешением, частотой кадров и в 16-битном цвете[2]. Но, как показала история, изъян в конструкции Vérité 1000 оказался смертельным для инновационной компании.
Читать дальше →
Total votes 70: ↑70 and ↓0 +70
Comments 56

История 3dfx Voodoo1

Reading time 10 min
Views 29K
image

Это вторая статья из серии «3D-карты конца 90-х, на которых работал Quake». В первой части мы рассмотрели Rendition Vérité 1000 конца 1996 года и специальный порт игры для неё под названием vQuake. Rendition удалось победить всех на рынке Quake. На короткий промежуток времени она оставалась единственной платой, способной запускать блокбастер id Software с аппаратным ускорением.

Но всё изменилось в январе 1997 года, когда id Software выпустила новую версию Quake под названием GLQuake. Так как порт был создан с помощью miniGL (подмножества стандарта OpenGL 1.1), любой производитель аппаратных ускорителей мог написать драйвера miniGL и принять участие в гонке 3D-карт. С этого момента возможность конкуренции была открыта каждому. Цель заключалась в генерации как можно большего количества кадров в секунду. Наградой была слава и деньги покупателей. Вкратце изучив историю, можно понять, что два авторитета того времени без сомнений считали царями горы двух производителей.

Пока что в этом нет никаких сомнений: миром Quake правит Voodoo. А так как Quake правит миром игр, то покупка 3Dfx Voodoo почти неизбежна для геймеров.

— Tom's Hardware, 30 ноября 1997 года

3DFX Voodoo 1
— Эталон, по которому меряются все остальные карты.

— Файл .plan Джона Кармака. 12 февраля 1998 года[2]

Только взглянув на спецификации[3], в которых заявлялось о скорости заполнения в 50 мегапикселей/с, я сразу же захотел изучить эту карту и понять, что же сделала 3dfx, чтобы создать настолько мощный продукт.
Читать дальше →
Total votes 75: ↑74 and ↓1 +73
Comments 89

Как создать игру, если ты ни разу не художник

Reading time 127 min
Views 44K

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

И не надо…
Читать дальше →
Total votes 107: ↑106 and ↓1 +105
Comments 71

Создание системы боёв в RPG

Reading time 14 min
Views 17K
image

Боевые системы наших игр Rimelands: Hammer of Thor и Trulon: The Shadow Engine были высоко оценены игроками. Несмотря на то, что это два сильно отличающихся взгляда на систему боя в RPG, они имеют много общего в дизайне механик и иллюстрируют мою личную философию дизайна. В обоих играх используются пошаговые бои, но Trulon они основаны на колоде карт, а в Rimelands — на наборе кубиков. В первой вы управляете целой партией персонажей, во второй — только одним героем. У этих игр есть сходства и различия не только в боях, но в данной статье я расскажу только о базовых боевых механиках.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 0

[в закладки] Bash для начинающих: 21 полезная команда

Reading time 9 min
Views 138K
Материал, перевод которого мы публикуем сегодня, предназначен для тех, кто хочет освоить командную строку Linux. Умение эффективно пользоваться этим инструментом позволяет экономить немало времени. В частности, речь здесь пойдёт о командной оболочке Bash и о 21 полезной команде. Также мы поговорим о том, как пользоваться флагами команд и псевдонимами Bash, которые позволяют ускорить ввод длинных инструкций.



Также читайте в нашем блоге цикл публикаций про bash-скрипты
Читать дальше →
Total votes 58: ↑34 and ↓24 +10
Comments 25

Простое объяснение алгоритмов поиска пути и A*

Reading time 13 min
Views 64K
image

Часть 1. Общий алгоритм поиска


Введение


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

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 11

Lock-free структуры данных. 1 — Начало

Reading time 12 min
Views 144K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Total votes 165: ↑161 and ↓4 +157
Comments 39

Четыре оси дизайна RPG

Reading time 6 min
Views 15K
Эта статья началась с ответа на многогранный, но в то же время довольно прямолинейный вопрос: из чего же состоит хорошая ролевая игра? На протяжении своей карьеры я поработал над несколькими RPG, и даже читал презентацию по этой теме, но никогда не рассматривал её целостно. Существует множество материалов о составляющих хорошей игры и, разумеется, многие из них применимы к ролевым играм, но есть аспекты, специфичные (если не уникальные) именно для этого жанра.

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

Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 2

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity