
Спустя месяц разработки, а то и не весь месяц я разрабатывал, я смог добиться корректной работы эмулятора. В перерывах в разработке и я почитывал книги разные и думал о том, где могут быть баги. Всего было два бага:
Разработка игр
Спустя месяц разработки, а то и не весь месяц я разрабатывал, я смог добиться корректной работы эмулятора. В перерывах в разработке и я почитывал книги разные и думал о том, где могут быть баги. Всего было два бага:
Однажды было настроение собрать проект с управлением в стиле WoW, геймплеем куда-то в направлении Skyforge, экспериментальными игромеханиками и игрой за чистых magic user'ов - получился экшен-рогалик с заклинаниями от комбинаций. Также в этом деле оказалась замешана настольно-ролевая система "Неоновый миф" и её необычные герои.
На протяжении более двух лет я много времени уделял разработке моего собственного эмулятора Game Boy, GameRoy. Я немало успел сделать. В эмуляторе был готов графический пользовательский интерфейс (с отладчиком и дизассемблером), сама программа прошла многочисленные тесты и могла сравниться с некоторыми наиболее точными эмуляторами. Я даже портировал её на Android!
Я хочу вдохновить вас или, возможно, даже просто познакомить с теми типами игр, которые очень хорошо идут в Steam и могут быть сделаны небольшими командами разработчиков. Пожалуйста, играйте в эти игры, делайте заметки, смотрите на то, как они устроены.
Концепт настольной игромеханики для дуэльной асинхронной игры, сочетающей в себе тактику с миниатюрами на доске и управляющие их действиями колоды карты.
Разрабатывая свою игру, движок или фреймворк, вы в любом случае столкнетесь с необходимостью реализации системы загрузки ресурсов, выполнения задач вне основного цикла игры, вынесения различных подсистем (звук, рендер, физика, эффекты) в отдельные потоки, чтобы снизить время подготовки кадра и улучшить общую производительность. Будучи классическим программистом, вы, наверное, знаете о проблемах реализации многопоточности, использовании блокировок и алгоритмов, которые основаны на блокировках.
В обычном программировании с блокировками, когда возникает необходимость пошарить данные, приходится использовать механизмы сериализации доступа к таким данным, чтобы операции, выполняющие работу с такими данными, были ограничены от одновременного вмешательства со стороны других потоков и возможности их поломать. В прямом смысле поломать. Даже такая простая операция, как ++count
, где count
имеет тип integer
, требует блокировки, поскольку операция инкремента в общем случае представляет собой трехшаговую операцию (чтение, модификация, запись), которая не является атомарной. Про что-то более сложное и длительное я уже и не говорю.
За кажущейся простотой скрывается множество граблей и ловушек: взаимные блокировки (deadlock), «голодание» потоков, асинхронные ошибки. Это похоже на попытку дирижировать оркестром, где музыканты игнорируют ритм. Проще говоря, любые действия над данными могут привести к проблемам, и чтобы этого не происходило, операции над данными должны быть атомарными, это решается вводом в код примитивов синхронизации, вроде мьютексов, семафоров, спинлоков.
Первая хорошая сторона программирования с блокировками состоит в том, что пока ресурс заблокирован, никакая другая логика не может вмешаться. Вторая хорошая сторона — люди прекрасно понимают, читают и работают с таким кодом, потому что он хорошо вписывается в "естественное" понимание устройства мира. А вот дальше начинаются проблемы...
Наверное, большинству людей, связанных с программированием игр, известен алгоритм AStar.
В интернете можно найти много примеров объяснения того, как он работает, и реализации для различных языков, когда размер (далее радиус) агента, которого необходимо перемещать по импровизированной карте, известен заранее и не меняется.
Но когда речь заходит о поддержке агентов, обладающих разным радиусом, увы, информации не так много.
Данный пробел я постараюсь восполнить в рамках этой статьи.
Из новостей: в Unity прошла ещё одна волна сокращений, умер Виктор Антонов, Crytek объявила о сокращении 15% штата, Dark Messiah с коопом, продажи A Game About Digging A Hole превысили 250к копий за неделю.
Из интересностей: Библия Реддита, стилизация в видеоиграх, про опыт размещения рекламы на Реддите, я в домике.
Что если вместо Невангеров делать аналог Вангеров, подумал я и сделал прототип торгово-гоночной игры на движке Godot. Собрав в нём некоторое комбо из различных наработок за все годы и заложив в игру классический вангерский процесс - развоз грузов. Естественно, с какими-то своими особенностями тоже.
Привет! Меня зовут Владимир. Я арт-директор, художник, дизайнер мобильных и компьютерных игр и креативный директор в рекламе. И я почти случайно написал геймифицированную книгу для мальчиков. Вот тут можно ознакомиться с фрагментом книги. Вернее сказать, я написал эту книгу для себя, но для себя десятилетнего. Эх, если бы у меня тогда были эти знания, которые содержатся в этой книге. В книге обыграны советы по прокачке основных характеристик, которые обычно прокачивают игроки в РПГ. Но советы касаются реальной жизни, например, такие:
Всем привет. В 3д помимо моделек - статических, существуют анимации - анимированные модели, которые имеют набор своих данных, эти данные нужны для отображения модельки и её анимирования.
Если выбрать такой язык как С, по каким-либо причинам, рано или поздно можно столкнуться с отсутствием некоторых сущностей. Самой часто используемой сущностью является vector. Если оттолкнуться от того что простейшая абстракция вектор, и еще чуть упростить можно придти логически к односвязному списку. Но вот незадача, если пребывать на этом этапе по наименьшему сопротивлению, то придётся на каждую структуру писать свою реализацию - это в худшем случае. В этой статье хочу показать как решил вопрос с односвязным списком.
Привет! На связи Кристина, фронтенд-разработчик в отделе рекламных спецпроектов KTS.
Наша команда создает визуально эффектные проекты, цель которых — привлечь внимание пользователей. Мы постоянно экспериментируем с разными технологиями и подходами, и вот, наконец, добрались до 3D-анимаций. Недавно я начала изучать Three.js и хочу поделиться своим опытом.
В сети есть множество статей и уроков по Three.js для начинающих, но большинство из них — это теоретический материал. Я же хочу показать, как создавать 3D-анимации на практике. Эта статья будет первой в цикле о разработке простой игры, в которой нужно строить башню из блоков.
Для успешного прохождения туториала достаточно владеть JavaScript и ООП. Каждый этап сопровождается ссылкой на codepen с комментариями в коде. А в конце вас ждет играбельный codepen-блок: вы можете сразу посмотреть на промежуточный результат, в котором уже реализована базовая игровая механика. В статье же я пошагово разберу, как к этому результату прийти.
Рендеринг обводки (контуров) — это техника, часто используемая в играх или из эстетических, или из геймплейных соображений. Например, в игре Sable контуры применяются для создания стиля, напоминающего комиксы, а в The Last of Us контуры используются для выделения врагов, когда игрок переходит в режим скрытности.
В этом посте мы расскажем о пяти способах рендеринга контура вокруг объекта.
Геймдев – это больше, чем просто разработка развлечений. Это искусство управления эмоциями игроков, баланс между геймплеем, бизнес-метриками и вовлечением. Продакт-менеджер в игровой индустрии должен учитывать не только механику и монетизацию, но и то, какие ощущения испытывает игрок на каждом этапе.
В статье мы разберём, чем отличается продуктовая работа в геймдеве от других сфер, какие ключевые вызовы стоят перед продактами и как применять концепцию Emotions-To-Be-Evoked (E2BE) для создания по-настоящему захватывающих игр.
Правила универсальной нарративно-вычислительной ролевой системы, предназначенной как для соло игр, так и вождения партии. Использует калькулятор, теги с идентификаторами и строится на интерпретации ассоциаций.
Этой статьёй мы начинаем трилогию об игровом движке Nau Engine. В первой части мы сосредоточимся на его функциональности, уделяя особое внимание трём ключевым блокам ошибок: проблемам с памятью, копипасте и логическим ошибкам.
Распараллелить сборку большого проекта на несколько компьютеров? Легко! Разбираемся, как использовать Unreal Horde — новый инструмент внутри Unreal Engine 5.5. В том числе посмотрим, как с его помощью запустить анализ PVS-Studio.
О том как серия игровых прототипов по мотивам (и не по мотивам) небезызвестных сюрреалистических "гоночек" из 98-го пробовала различные концепции, механики и игровые движки.