Как стать автором
Обновить
1
Карма
0
Рейтинг
Анонимус @geek_of_cola

GameDev

  • Подписчики
  • Подписки 1
  • Публикации
  • Комментарии

Хакинг классического Sonic the Hedgehog для Sega

Программирование *Assembler *Разработка игр *Старое железо Игры и игровые приставки
Из песочницы
🔥 Технотекст 2020

В этой статье я хочу разобрать внутреннее устройство легендарной игры Sonic the Hedgehog для приставки Sega Mega Drive, а также способы ее модификации или, как еще говорят, хакинга. Эта игра насчитывает порядка сотни хаков, включающих как действительно достойные работы (такие как Pana Der Hejhog или Sonic Remastered), так и странные и даже жутковатые (вроде An Ordinary Sonic ROM Hack). Чтобы понять, как их создавать, нужно разобраться, как писать на языке ассемеблера Motorola 68K (обычно игры для приставок тех времен писались именно на ассемблере), откуда взять дизассемблированный вариант игры и какую архитектуру имеет ее движок.


Sonic hacks


Дизассемблирование ROM-файлов для Sega осуществляется при помощи коммерческого дизассемблера и дебаггера IDA Pro. Затем происходит кропотливый процесс разметки, структурирования и причесывания сырого ассемблерного кода с использованием дебаггера (и смекалки). Этот процесс требует хорошего понимания технических особенностей платформы Sega Mega Drive и игр для нее.


К счастью, на GitHub уже есть дизассемблированные и размеченные версии всех игр серии Sonic the Hedgehog, созданные энтузиастами при поддержке сайта Sonic Retro. Лучше всего размечен и структурирован исходный код именно первой игры серии. Эта версия кода находится в репозитории sonicretro / s1disasm и именно она будет разобрана в статье.


Погружение в внутреннее устройство игрушки начнем с теории.

Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Просмотры 9.5K
Комментарии 10

Алгоритм быстрого и простого объёмного рендеринга

Работа с 3D-графикой *Разработка игр *
Перевод

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

У моего ShaderToy были три основные задачи:

  1. Выполнение в реальном времени
  2. Простота
  3. Физическая корректность (… или типа того)

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

  1. Трассировка лучей непрозрачных объектов. Все объекты являются примитивами с простыми пересечениями с лучами (1 плоскость и 3 сферы)
  2. Для вычисления освещения используется затенение по Фонгу, а в трёх сферических источниках света применется настраиваемый коэффициент затухания света. Лучи теней не требуются, потому что мы освещаем только плоскость.

Вот как это выглядит:

ShaderToy screenshot
Читать дальше →
Всего голосов 52: ↑52 и ↓0 +52
Просмотры 11K
Комментарии 6

Основные linux-команды для новичка

Тестирование IT-систем *
Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!

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

Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)
Читать дальше →
Всего голосов 80: ↑65 и ↓15 +50
Просмотры 211K
Комментарии 166

Как стать DevOps инженером за полгода или даже быстрее. Часть 4. Пакетирование программ

Блог компании ua-hosting.company Программирование *IT-инфраструктура *Карьера в IT-индустрии DevOps *
Перевод
Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение
Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование
Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии



Рассмотрим, как упаковать ваш код для легкого развертывания и последующего выполнения. Напомню, что сейчас мы находимся здесь:

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 13K
Комментарии 12

Коды step-by-step: читаем / кодируем PDF417

Алгоритмы *Математика *DIY или Сделай сам
Tutorial

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


Итак, давайте разберёмся со всем необходимым для чтения и / или записи PDF417. Ведь не всегда под рукой найдётся смартфон с программой для их чтения. А для записи — и подавно.


Внимание, под катом — 9 изображений общим размером в 2.79 МБ, 6 таблиц и немного формул.

Да, мне интересно узнать больше о кодах
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 4.1K
Комментарии 9

Rx головного мозга

Блог компании FUNCORP Разработка мобильных приложений *Разработка под Android *

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

Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 11K
Комментарии 19

Книга «Bash и кибербезопасность: атака, защита и анализ из командной строки Linux»

Блог компании Издательский дом «Питер» Настройка Linux *Оболочки *Профессиональная литература
image Привет, Хаброжители! Командная строка может стать идеальным инструментом для обеспечения кибербезопасности. Невероятная гибкость и абсолютная доступность превращают стандартный интерфейс командной строки (CLI) в фундаментальное решение, если у вас есть соответствующий опыт.

Авторы Пол Тронкон и Карл Олбинг рассказывают об инструментах и хитростях командной строки, помогающих собирать данные при упреждающей защите, анализировать логи и отслеживать состояние сетей. Пентестеры узнают, как проводить атаки, используя колоссальный функционал, встроенный практически в любую версию Linux.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 7.3K
Комментарии 1

Введение в Redux & React-redux

JavaScript *ReactJS *
Tutorial
image

Оглавление


Введение
1. Установка и начало работы
2. Redux
....2.1 createStore
....2.2 reducer()
....2.3 dispatch()
....2.4 actionCreator()
....2.5 Actions
....2.6 getState()
....2.7 subscribe()
....2.8 combineReducers()
....2.9 initialState
3. React-redux
....3.1 Provider
....3.2 mapStateToProps()
....3.3 mapDispatchToProps()
....3.4 connect()

Введение


Вот вы прочитали мою статью про React (если нет, то настоятельно рекомендую вам сделать это) и начали разрабатывать приложения на нём. Но что это? Вы замечаете, как с расширением вашего приложения становится всё сложнее следить за текущим состоянием, сложно следить за тем, когда и какие компоненты рендарятся, когда они не рендарятся и почему они не рендарятся, сложно следить за потоком изменяющихся данных. Для этого и есть библиотека Redux. Сам React хоть и лёгкий, но для комфортной разработки на нем нужно много чего изучить.
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 99K
Комментарии 26

Анализ кадра Mortal Kombat 11

Работа с 3D-графикой *Разработка игр *
Перевод
Mortal Kombat 11 — одна из самых впечатляющих внешне игр, вышедших в 2019 год: потрясающие лицевые анимации, тени, освещение и эффекты постобработки. И это ещё не учитывая того, что игра на самом деле увлекательна, имеет сложные бои и захватывающий сюжет.

Я просто обязан был изучить рендерер Mortal Kombat 11, чтобы понять, как же достигается такая удивительная графика, а теперь поделюсь своими открытиями с вами.

Проход вычисления теней


Каждый кадр начинается с прохода теней (shadow pass).

Shadow Depth 4x MSAA 4 Channel Comparison

Каждая карта теней составляется из четырёх стенсил-карт глубин теней с суперсэмплированием (SSAA), которые затем преобразуются в четырёхканальную моментальную карту теней (Moment Shadow Map, MSM) [Peters et al. 2016]. В каждом из каналов хранятся $z$, $z^2$, $z^3$ и $z^4$.
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 13K
Комментарии 6

Создание шейдеров

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

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


Сцена из Minecraft, до и после добавления нескольких шейдеров.

Задача этого туториала


Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
Всего голосов 105: ↑105 и ↓0 +105
Просмотры 143K
Комментарии 27

Улучшаем производительность HTML5 canvas

Разработка веб-сайтов *
Перевод
В последнее время мне везет натыкаться на интересные статьи для перевода. На этот раз – статья на HTML5Rocks о производительности HTML5 canvas. Автор пишет о некоей стене, в которую упираются разработчики при создании приложений. Какое-то время назад в нее уперся и я при портировании старой-доброй игры на canvas.

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


image
  1. Вступление
  2. Тестирование производительности
  3. Предварительно отрисовывайте в виртуальный canvas
  4. Группируйте вызовы
  5. Избегайте ненужных изменений состояния
  6. Отрисовывайте только разницу, а не весь холст
  7. Используйте многослойных canvas для сложных сцен
  8. Избегайте shadowBlur
  9. Различные способы очистить экран
  10. Избегайте нецелых координат
  11. Оптимизируйте анимации с помощью 'requestAnimationFrame'
  12. Большинство мобильных реализаций canvas – медленные
  13. Заключение
  14. Ссылки



Вступление


HTML5 canvas, который начинался, как эксперимент компании Apple, – наиболее широко распространенный стандарт для 2D режима непосредственной графики в интернет. Многие разработчики использую его в широком круге мультимедиа проектов, визуализаций и игр. Как бы то ни было, с ростом сложности приложений, разработчики нечаянно натыкаются на стену производительности.
Читать дальше →
Всего голосов 116: ↑113 и ↓3 +110
Просмотры 34K
Комментарии 42

Как раскрыть мощь HTML5 Canvas для игр

Блог компании Microsoft Разработка веб-сайтов *Canvas *
Перевод
Tutorial


Браузеры, поддерживающие HTML5, и платформа HTML5 для Windows 8 Metro сегодня становятся серьезными кандидатами для разработки современных игр.

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

Цель данной статьи — дать вам несколько подсказок, как выжать максимум мощности из HTML5 Canvas. Статья состоит из двух основных частей [вы читаете первую]. David Rousset скоро опубликует вторую часть.

В статье я буду показывать ключевые идеи на одном и том же примере — это эффект 2D-туннеля, который я написал для Coding4Fun-сессии на TechDays 2012 во Франции.
Читать дальше →
Всего голосов 57: ↑49 и ↓8 +41
Просмотры 39K
Комментарии 88

FConsole — инструмент для отладки PIxi.js (Canvas/WebGL) приложений

Canvas *Отладка *
Буквально вчера выложил в открытый доступ первую рабочую версию консоли для отладки Canvas/WebGL приложений FConsole. Если вы всегда хотели редактировать свойства визуальных объектов без изменения исходного кода, а так же без сложностей просматривать всю иерархию визуальных объектов, то прошу под кат.

image

* На скриншоте представлена Flash-Console, которая бралась в качестве примера при разработке FConsole
Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Просмотры 6.7K
Комментарии 15

Нейронные сети на Javascript

JavaScript *Node.JS *Canvas *Big Data *Машинное обучение *
image
Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
Читать дальше →
Всего голосов 58: ↑54 и ↓4 +50
Просмотры 140K
Комментарии 79

100 строк на canvas-е: часть 1

JavaScript *Canvas *
Tutorial
Предисловием мне хотелось бы поздравить одного хабраюзера с днём рождения. Расти большим, будь умным, и допили уже наконец свой canvas-фреймворк Graphics2D до того состояния, которое считаешь приемлемым.
С днём рождения, я. :P


Этим летом мне пришла в голову интересная мысль: если бы я писал микробиблиотеку для canvas в 100 строк, что бы я туда уместил?.. Самый развёрнутый ответ можно написать за 1 вечер. А потом пришла и идея этой статьи.

Предлагаю реализовать ООП, события и анимацию на canvas — самые часто нужные (имхо) вещи… и всё это в 100 строк. Часть первая.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 15K
Комментарии 16

Программная генерация событий DOM 2 Events

JavaScript *
Из песочницы
image

Вступление


Здравствуйте, Хабрачеловеки.

В этой статье я хочу рассказать сообществу о такой полезной штуке, как DOM Events. Все, кто хоть как то связан с Javascript, знают, что в этом языке события и их обработка являются одним из важнейших и часто используемых свойств, но не многие знают, как эти события генерировать программно. Собственно, этому и посвящена статья: в ней рассказано, что это, зачем нужно, и как это использовать. О listener'ах речи идти не будет, хоть эта тема весьма тесто связана с рассматриваемой.

Читать дальше →
Всего голосов 73: ↑71 и ↓2 +69
Просмотры 39K
Комментарии 26

Что почитать, чтобы повысить свой уровень JavaScript

JavaScript *
Перевод
От переводчика: Я думаю многие читали статью Rey Bango — What to Read to Get Up to Speed in JavaScript, но до хабра обсуждение так и не докатилось. Предлагаю закрыть этот пробел и поговорить о хороших книгах, блогах, тренингах и конференциях, посвященных в первую очередь клиентскому JavaScript и клиентской веб-разработке. Чтобы не копипастить оформляю статью в виде перевода.

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

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

Не заставляю вас читать все книги, которые предложены ниже. Эти книги я читал на протяжении многих лет и почерпнул в каждой много полезного. Я их распределяю по категориям, чтобы вам было проще работать с ними. Выберите книги, которые подходят вам.
Читать дальше →
Всего голосов 165: ↑161 и ↓4 +157
Просмотры 94K
Комментарии 31

[Графический редактор на Canvas] Кисть для скетчей

Canvas *
Продолжаем неделю canvas на хабре.
Графические редакторы на флеше/сильверлайте в интернете не редкость. На canvas их намного меньше, но есть и довольно интересные. Вот пара примеров:В этом цикле статей я планирую рассказать о различных моментах, с которыми можно столкнуться при создании графического редактора на canvas. Тривиальные части затрагивать не буду, постараюсь описывать только самое интересное. В этой статье опишу примерный алгоритм создания кисти для скетчей
Читать дальше →
Всего голосов 36: ↑32 и ↓4 +28
Просмотры 8.4K
Комментарии 4

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность