Search
Write a publication
Pull to refresh
1
0
Александр @zorggroz

User

Send message

Современная игра для NES, написанная на Lisp-подобном языке

Reading time10 min
Views8.5K
What Remains — это повествовательная игра-адвенчура для 8-битной видеоигровой консоли NES, выпущенная в марте 2019 года как бесплатный ROM, запускаемый в эмуляторе. Она создавалась небольшой командой Iodine Dynamics на протяжении двух лет с перерывами. В настоящий момент игра находится на этапе реализации в «железе»: мы создаём из переработанных деталей ограниченный набор картриджей.


В игре есть 6 уровней, на которых игрок ходит по нескольким сценам с картами с прокруткой в четырёх направлениях, общается с NPC, собирает улики, знакомится их миром, играет в мини-игры и решает простые головоломки. Я был главным инженером проекта, поэтому столкнулся со множеством трудностей при реализации видения команды. Учитывая серьёзные ограничения оборудования NES, достаточно сложно создавать для неё любую игру, не говоря уже о проекте с таким количеством контента, как в What Remains. Только благодаря созданным полезным подсистемам, позволяющим скрыть эту сложность и управлять ею, мы смогли работать как одна команда и завершить игру.


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

Спорт для программиста второй свежести

Reading time14 min
Views25K
Около 30 лет назад я написал свою первую программу. Примерно тогда же впервые взял в руки штангу. Около 30 дней назад были приобретены PlayStation и PS VR.



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

Читать дальше →

Очень много YouTube-каналов для прокачки английского языка для программистов

Reading time4 min
Views61K
Привет, Хабр!

С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

Добавляйте в закладки и подписывайтесь на меня!
Дальше вас ждет много крутых статей.

Поучить английский


AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →

Как генерируются подземелья в Enter The Gungeon

Reading time7 min
Views23K
В последнее время я много играл в Enter The Gungeon. Это потрясающая, ужасно сложная игра в жанре bullet hell, сильно напомнившая мне Binding of Isaac. Но чем больше я играл в неё, тем больше осознавал малозаметную гениальность дизайна подземелий.


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

Поэтому я, естественно, запустил декомпилятор, чтобы Gungeon раскрыла мне все свои секреты. В этой статье я поделюсь с вами тем, что мне удалось найти.
Читать дальше →

Какие факторы могут предсказать успех игры в Steam?

Reading time11 min
Views9.1K
image

На Reddit я видел множество дискуссий, комментариев и вопросов о том, чем определяется успех игры. Насколько важно качество? Действительно ли единственным определяющим аспектом является большая известность игры на рынке до её выпуска? Помогают или вредят демо-версии? Если показатели игры при выпуске оказались плохими, то какова вероятность их исправления? Можно ли хотя бы приблизительно предсказать объёмы продаж игры до её выпуска?

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

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

Сначала примечания по данным:

  • Один из важнейших источников данных — количество обзоров в Steam. Есть достоверные свидетельства того, что оно сильно коррелирует с количеством проданных копий, часто упоминаются соотношения «50 продаж на один обзор в Steam», но диапазон значений довольно широк. Похоже, большинство игр Steam попадает в интервал от 25 до 120 продаж на один обзор на Steam, но случаются и выбросы. Кроме того, игры с очень малым количеством обзоров с большей вероятностью в этом отношении будут выбросами. Моя игра — единственная, по которой у меня есть чёткие цифры продаж. Можете прочитать мой длинный пост о её релизе на Reddit, но самое важное для нас то, что я продал 1587 копий за первую неделю и 3580 копий за первый квартал.
  • Общее количество игр в выборке: 115.
  • Я выбирал игры полуслучайно, из разделов Popular Upcoming и All Upcoming. Это склоняет выборку больше в сторону популярных игр, и я сделал так намеренно: мне хотелось иметь разнообразную выборку, но чтобы в ней не доминировали полностью игры с нулевыми продажами.
  • Игры упорядочены по дате выпуска, которая находится в интервале от 26.10.18 до 20.12.18.
Читать дальше →

Как мы сделали движок и игру на нем за полтора года

Reading time7 min
Views76K
Всем привет, дорогие друзья! Вот сижу, смотрю на бесконечную простыню кода, провожу ревью с баночкой ред була. Прошел год. Год, блин, всего лишь год — так много и так мало одновременно. На этот год у нас были наполеоновские планы, и сейчас кажется, что мы мало что успели. С другой стороны — нам удалось сделать кое-что, что достойно войти в анналы айти с пометкой «Слабоумие и отвага». Я бы назвал эту историю «Как запилить свой движок с тулзами и рендером с нуля всего за год». Издание выйдет на несколько томов, но куда деваться, надо с чего-то начинать. Так что погнали!

Ровно год назад мы стартовали с проектом, о котором я теперь планирую писать во всех подробностях. С высоты полученного опыта могу смело заявить: это одна из самых рискованных и амбициозных штук, которую мы когда-либо затевали. Думаю, опыт нашей команды будет полезен другим гейм-разработчикам, ну а игроков он как минимум повеселит.
Читать дальше →

Хельсинки. Как найти работу в финской игровой индустрии, начать работать без разрешения и не нарушить российские законы

Reading time25 min
Views23K

В декабре 2018 мы с женой переехали из Санкт-Петербурга в Хельсинки. Уже есть довольно много статей и (видео)блогов о том, как живется в Финляндии и стоит ли сюда переезжать. Вместо этого я бы хотел рассказать ту часть истории, которая связана с самим переездом. Нам пришлось решить кучу вопросов разной степени важности, многие из которых возникали внезапно и не всегда имели очевидное решение. Мы постарались подытожить наш опыт в этом, не побоюсь этого слова, лонгриде. Его нельзя назвать ультимативным гайдом, так как любой опыт всегда индивидуален, но я очень надеюсь, что нам удалось пополнить выдачу гугла новыми ключевыми словами, и хотя бы одному человеку станет проще найти ответы. Здесь вы можете узнать, как можно найти работу в финской игровой индустрии, как начать работать до получения разрешения на работу, как подготовить документы до переезда, что оформить после переезда и какую информацию нужно предоставить российским государственным органам, чтобы не нарушить закон.


Читать дальше →

Доступное объяснение алгоритма коллапса волновой функции

Reading time9 min
Views41K
Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.


(Источник)

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


(Источник)

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

Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.
Читать дальше →

Новый алгоритм трассировки пути для оптимизации работы GPU: Wavefront Path Tracing

Reading time10 min
Views10K

В этой статье мы исследуем важную концепцию, используемую в недавно выпущенной платформе Lighthouse 2. Wavefront path tracing, как её называют Лейн, Каррас и Аила из NVIDIA, или streaming path tracing, как она изначально называлась в магистерской диссертации ван Антверпена, играет важнейшую роль в разработке эффективных трассировщиков пути на GPU, а потенциально и трассировщиков пути на CPU. Однако она довольно контринтуитивна, поэтому для её понимания необходимо переосмыслить алгоритмы трассировки лучей.
Читать дальше →

Об актуальных проблемах геймдизайна и путях их разрешения. Взгляд снизу

Reading time7 min
Views9.7K
Итак, всем привет и добро пожаловать в мир современных игр!

Дабы заранее предупредить различные вопросы, а также обеспечить удобство чтения, далее — небольшой дисклеймер: всё что будет написано далее — основано на личном и субъективном игровом опыте, который включает в себя: более 200 пройденных игр в стиме, неизвестное количество пройденных пираток, попытки участия в разработке модификаций на различные игры на позициях дизайнера, 3d-моделлера и сценодела.


Читать дальше →

Генерация подземелий и пещер для моей игры

Reading time4 min
Views26K

На этой неделе я начал работать над новой темой: генерацией подземелий и пещер. Я использовал разбиение пространства для генерации комнат, алгоритмы генерации лабиринтов для генерации коридоров и клеточные автоматы для придания пещерам более естествненного внешнего вида.

Разбиение пространства


Существует множество способов генерации комнат для подземелья (случайное размещение, генерация на основе агентов, с использованием separation steering behavior или физического движка, и т.д.). Но мой любимый метод — это разбиение пространства, потому что оно легко контролируется и расширяется.

Способов разбиения пространства тоже очень много: разделение на сетки, двоичное разбиение пространства, разбиение пространства деревом квадрантов, диаграммы Вороного и т.д. Я решил использовать двоичное разбиение пространства, потому что оно хорошо подходит для генерации прямоугольных комнат. Этот метод получил популярность благодаря статье на RogueBasin.

Единственная сложность этого алгоритма — выбор позиции разделения. Если мы не наложим ограничение на позицию разделения, то будем получать странные разбиения пространства:


Такого поведения можно избежать несколькими способами. Один из них — ограничить позицию разделения двумя соотношениями длин сторон, например, в интервале от 30% до 70% или от 40% до 60%. Другой способ — использовать вместо равномерного распределения нормальное или биномиальное, благодаря этому повысится вероятность разделения по центру стороны, а не по краям. Эти способы устраняют проблему, но сложно понять, как конкретно параметры влияют на окончательный результат.
Читать дальше →

Как использовать диаграммы Вороного для управления ИИ

Reading time8 min
Views15K
image

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



Пространственные отношения


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

Такие отношения постоянно используются в видеоиграх и могут предоставлять очень полезную информацию ИИ, а также самому игроку.



У Вороного есть ответ


Диаграмма Вороного описывает пространственное отношение между близко расположенными точками или их их ближайшими соседями. Это множество соединённых многоугольников, полученных из точек или локаций. Каждая линия «области» Вороного находится посередине между двумя точками.
Читать дальше →

Как вычисляют сумасшедших — 2: блеск и нищета патопсихологической диагностики

Reading time52 min
Views138K
Привет, Хабр!

Меня зовут Кристина, я клинический психолог. Около двух лет назад я опубликовала на Geektimes пост о патопсихологической диагностике, в котором рассказала о том, как производится исследование психики пациентов в психиатрическом стационаре на предмет наличия или отсутствия нарушений мышления, памяти и других функций психики.

image
Всё, что нужно знать о нашей патопсихологической диагностике. Источник: [43, стр. 133-134].

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

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

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

Пост написан в соавторстве с Лобановым Виталием (hdablin). Текст получился довольно длинным, в нём мало картинок и много пространных рассуждений. Но если вам интересны проблемы диагностики в психиатрии и смежных дисциплинах, добро пожаловать под кат.
Читать дальше →

TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development

Reading time13 min
Views142K

Просматривая статьи по проектированию ПО, я постоянно встречал тучу невиданных сокращений и вскользь упоминаемых практик разработки.



  • TDD — ну, это все знают, сначала пишем тесты, а потом остальной код.
  • BDD — что-то знакомое, вроде как, тоже тесты, но особенные.
  • TDD — снова? Так, стоп, тут речь уже не о тестах совсем. Но почему называется так же?
  • DDD — bound contexts, ubiquitous language, domain...
  • FDD — да сколько можно?
  • MDD — cерьезно, на основе диаграмм?
  • PDD — ...

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


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

Читать дальше →

Солнечная электростанция на дом 200 м2 своими руками

Reading time15 min
Views184K
Частенько в сети проскакивают сообщения о борьбе за экологию, развитие альтернативных источников энергии. Иногда даже проводят репортажи о том, как в заброшенной деревне сделали солнечную электростанцию, чтобы местные жители могли пользоваться благами цивилизации не 2-3 часа в сутки, пока работает генератор, а постоянно. Но это всё как-то далеко от нашей жизни, поэтому я решил на своем примере показать и рассказать, как устроена и как работает солнечная электростанция для частного дома. Расскажу обо всех этапах: от идеи до включения всех приборов, а также поделюсь опытом эксплуатации. Статья получится немаленькая, поэтому кто не любит много букв могут посмотреть ролик. Там я постарался рассказать то же самое, но будет видно, как я все это сам собираю.


Курс Молодого Геймдизайнера 2: баланс прогрессии и динамики без математики

Reading time8 min
Views25K


Предыдущая статья про баланс персонажей и снаряжения собрала много отзывов и я решил не тянуть с продолжением.

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

Бонусом в конце — несколько ссылок по теме.
Читать дальше →

Генерация подземелий в Diablo 1

Reading time15 min
Views56K
image

Diablo 1 — это классический roguelike 1996 года в жанре hack and slash. Это была одна из первых успешных попыток познакомить широкие массы с roguelike, которые до этого имели нишевую графику в виде ASCII-арта. Игра породила несколько сиквелов и множество имитаций. Она известна своей тёмной, мрачной атмосферой, сгущающейся по мере спуска игрока в подземелья, располагающиеся под городом Тристрам. Это была одна из первых для меня игр с процедурной генерацией карт, и возможность генерации столь правдоподобных уровней просто потрясла меня.

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

Благодарю Дэвида Бревика и команду Blizard North за создание такой потрясающей игры, а также galaxyhaxz и команду Devilution за их удивительную работу по восстановлению читаемого исходного кода проекта.
Читать дальше →

Процедурная генерация планет

Reading time19 min
Views40K

От переводчика:
Представляю вашему вниманию статью авторства Andy Gainey, в прошлом независимого разработчика игровых инструментов, ныне сотрудника Paradox Development Studio. На мой взгляд, автор играючи создал один из лучших процедурных генераторов планет с открытым исходным кодом.

Читать дальше →

Сон — это главный ресурс для мозга программиста

Reading time12 min
Views115K
Можете использовать этот пост как аргумент при переговорах.

image

Вы, наверное, уже слышали эту продуманную фразу, которую произнес Рид Хастингс, CEO компании Netflix, говоря о развитии компании: «Наш главный конкурент – это сон». Он логично рассуждает, что с точки зрения прибыльности его бизнеса, сон, занимающий треть всего времени – огромный ресурс, за который можно побороться. Но если мы дорожим своим здоровьем, красотой и жизнью, то он не должен получить от нас ни минуты от нашего сна. Мы всё еще настолько недооцениваем сон, что этот факт удивителен сам по себе. Почему мы считаем сон чем-то, чем можно жертвовать, что можно сжимать, над чем можно издеваться? Даже простейшее популярное представление о биологии говорит нам, что природа не стала бы требовать от нас трети жизни на что-то неважное.

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

Между тем, мы действительно не знаем, почему мы спим. Да, у нас есть объяснения – насчет консолидации памяти, обучения, восстановления сил и прочее. Сам вопрос остается открытым и задается вновь и вновь, потому что мы подозреваем, что это не все, что мы знаем про сон.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity