Как сделать игру про соника
Как сделать игру про соника
Sonic. Знакомимся с Not So Simple Sonic Worlds Plus (NSSSWP).
Подготовка
Для создания фан-игр по сонику, нам понадобятся следующие файлы:
Как только вы все скачаете и установите, откройте ClickTeam Fusion 2.5.
Разбираемся с движком.
В нем откройте файл движка соника Not So Simple Sonic Worlds Plus.
Далее, откройте фрейм нашего уровня, в нем мы будет создавать уровень.
Автор движка, советует поставить привязку по сетке. Что мы и сделаем.
Сначала, нажмите на кнопку Grid Setup.
И укажите привязку по сетке, как на картинке.
Можете удалять объекты в серой области, но, если появится следующее окно.
То нажмите «No«. Ни в коем случае, не нажимайте «Yes«, если вы это сделаете, то сломаете уровень. Данное окно говорит нам о том, что объект, который мы пытаемся удалить, связан со скриптом (эвентом).
Дальше, просто копипастите (Ctrl+C / Ctrl+V) элементы уровня — отсюда:
И вставляете элементы, в нужных вам, позициях. Таким образом, и создается уровень.
Поговорим об объектах.
Указывает место, в котором появляется игрок (по умолчанию, это соник).
Теперь, научимся создавать мертвые петли.
У синей трубы и красной трубы, можно убрать коллизию. Например, при соприкосновении с этим объектом:
У красной трубы появляется коллизия, а у синей исчезает (через неё можно пройти). Тогда как, если столкнуться вот с этим объектом:
Наоборот, у синей трубы появляется коллизия, а у красной исчезает. Кстати, эти объекты (те что с цифрами) — невидимы.
С мертвой петлей разобрались. Перейдем к мотобагам.
С помощью красного и синего объекта, мотобаг, можно повернуть в обратном направлении,
При соприкосновении с синим объектом, мотобаг поворачивается влево.
При соприкосновении с красным — вправо.
Блокируют путь крабам. Кстати, крабов лучше ставить на земле, так как у них, почему-то, нет гравитации.
Чтобы поставить чекпоинт, используйте Lamp Post Spawner.
Окончание уровня задается через GoalMaker. С этим объектом нужно быть осторожным.
Дело в том, что если ты находишься в Finish Zone, то ты уже прошел уровень.
Таким образом, если ты поставишь GoalMaker левее соника, то уровень закончится, не успев начаться.
Основное разобрали, теперь вы можете запустить свой уровень. Кстати говоря, мой уровень выглядит так:
Меняем музыку на уровне.
Видим еще одну рекомендацию автора движка. Использовать Event List Editor, вместо Event Editor.
Автору виднее, используем!
В блоке [Music], найдите эвент проигрывания музыки, и измените его.
Нажмите на нижнюю кнопку Browse, чтобы добавить свою музыку.
Музыка добавлена, теперь разберем, как добавлять новые уровни.
Добавляем новый уровень.
Для начала, создайте дубликат своего уровня (Ctrl+C/ Ctrl+V).
Выберите Event List Editor, и убедитесь, что выбран нужный вам уровень.
Далее, измените следующий уровень. Ниже я объяснил, как это делается.
Меняем начальный уровень.
Начальный уровень задается во фрейме «Character Select«. Там же, открываем редактор эвентов.
И меняем начальный уровень.
Компилируем
Сохраняем. В появившемся окне, нажимаем «Да«.
Заключение
Фух, дописал. Разумеется в этом гайде, я не рассмотрел как делать фон, добавлять врагов и боссов. Но, для первого урока, думаю этого достаточно. В любом случае, теперь вы можете создавать свои fan-made игры по сонику. Надеюсь данный гайд, оказался вам полезен.
Скачать эту игру и файл проекта, вы можете на MEGA.
Sonic. Добавляем персонажей в Simple Sonic Worlds.
Предисловие.
В этом уроке, вы научитесь добавлять персонажей на движке NSSSWP. Урок будет длинным, так что запаситесь терпением.
Создаем новый скин.
Склонируйте скин соника, нажав Clone Object
И замените спрайты у скина на нужные вам. Есть простой способ замены анимации.
Сперва, создаёте анимацию в Aseprite. Спрайты рисуете сами, или берете из набора спрайтов, как это сделал я.
После того как закончите делать анимацию, сохраните её в png. Программа предложит разбить её на отдельные кадры — соглашаемся.
Далее, импортируем 1-ый кадр анимации.
Импортируем его, как анимацию.
В итоге, фреймы соника заменились, на нужные.
Добавляем скин в движок.
Далее идет процесс жуткого копипаста, так что готовьтесь.
Перемещаем скин на начальные координаты.
Установите позицию вашего скина по X, на значение переменной FloatX, как на картинке внизу.
С Y сделайте тоже самое.
В группе Player Initialization, которую можно найти по данному пути.
Добавьте новое условие.
И передвиньте скин.
На тот же слой, где находится объект Player_StartingPoint (стартовая позиция игрока).
Устанавливаем атрибуты игрока.
Данный список, это удобное напоминание, показывающее какое число, за какой скин отвечает.
Спуститесь чуть ниже. Сейчас сделаем дубликат группы, скопируйте группу Sonic.
Наведите на любую другую группу, и нажмите вставить.
И назовите её, названием вашего персонажа.
В условии Character замените, на =8. Т.е. если переменная Character в объекте M, равна 8-ми, то делаем что-то. Выше, в комментарии, мы условились, что число 8 отвечает за созданного нами персонажа.
Здесь, также, можно прописать скорость игрока, высоту прыжка и т.д. Сделав тем самым уникального персонажа.
Далее, поднимитесь чуть выше.
Сделайте дубликат условия после комментария Super Form.
И установите Character = 8.
Перемещение скина на координаты игрока.
Теперь, перейдите в группу Reposition Skin, который можно найти по следующему пути.
И приравняйте координаты скина оси X, к координатам объекта M.
С осью Y, по аналогии.
Меняем направление скина.
Спускаемся в Change Direction, по данному пути.
Здесь мы устанавливаем направление скина.
Для обратного направления, делаем то же самое.
Меняем анимацию.
Далее идет блок анимаций, который соотносит анимации скина с движком. Ниже, я показал как менять анимацию у персонажа.
Чуть ниже, идет условие проигрывания анимации бега. Сдублируйте группу Sonic Run.
Разумеется, в условии Change Animation, мы обращаемся к нашему скину. Перекинув иконку с другой комманды, можно переназначить объект действия.
Переименуйте её. Измените проверку условия на Character = 8.
А дальше идет жесткий копипаст, о котором предупреждал ранее.
Вставляйте Change Animation sequence, для всех блоков Animation of.
Меняем скорость анимации.
Далее, спуститесь в группу Change Animation Speed. Эта группа отвечает за скорость анимации.
Добавляем комманду по инструкции ниже.
Вообще, здесь мы соотносим скорость персонажа и скорость анимации. Т.е. если игрок движется быстро, то и анимация быстро проигрывается.
Поворачиваем скин.
Спуститесь в группу Change Angle. И приравняйте угол скина, к углу посчитанному движком.
Далее идет группа Flash while invincible (Мигать пока бесмертен). Создайте дубликат группы Sonic, и назовите её, названием своего персонажа. В дубликате, Character замените на нужный.
Поздравляю, персонаж создан. Однако, его нельзя выбрать в главном меню, т.к. он туда не добавлен. Исправим это.
Добавляем персонажа в Character Select.
Откройте уровень Character Select и дважды кликните по объекту CharSelec.
Создайте новую анимацию. Именно эта анимация будет проигрываться в рамке, при выборе вашего персонажа.
Также, зациклим GameCharacter.
Sonic. Создание кат-сцен в Simple Sonic Worlds.
Подготавливаем сцену.
Создайте новый фрейм, в нем и будет находится наша кат-сцена.
Этот фрейм, расположите после «Character Select«
Возьмем ресурсы из уровня.
И, поместим на 1 слой нашей сцены. На этом слое, будет находится фон.
Теперь, создайте новый слой. На нем будут располагаться объекты.
Скопируйте из уровня объект соника (он нам понадобится для извлечения спрайтов).
И поставьте его, на 2 слое нашей сцены.
Кликните дважды по незанятому месту фрейма. В появившемся окне, выберите Active.
Дважды кликните по сонику.
У объекта Sonic много анимаций (Stopped, Walking, Running…). Нас интересуют только Stopped и Running. Скопируйте эти анимации из объекта Sonic, в свой новый активный объект.
Анимацию скопировали, теперь объект Sonic не понадобится, его можно удалить.
Не забудьте в своем активном объекте, настроить скорость анимации.
Теперь оживим наш активный объект. Для этого нажмите ПКМ по сонику, и выберите «Properties«. В окне «Properties» нажмите «Movement» (картинка человечка). Далее, в графе Type, выберите «Bouncing Ball«.
В графе «Initial direction» укажите направление, в котором будет двигаться персонаж.
Также, укажите скорость движения.
Теперь, если запустить (кнопка F7), то получим такую анимацию (на гифке она зациклена, но в реальности, соник появляется и уходит навсегда).
Теперь, давайте улучшим сцену, добавив в неё немного логики.
По задумке, соник должен пройти до середины экрана, остановится, и пойти дальше, после чего, начнется следующий уровень. В итоге, должно получится это:
Добавляем логику.
Итак, начнем. Для начала, создайте 2 активных объекта.
Сделаем так, чтобы при столкновении с (Stop Trigger), персонаж останавливался. А при столкновении с (Next Level Trigger), осуществлялся переход на следующий фрейм. Для этого, зайдите в Event Editor (Ctrl+E). И задайте условие, проверяющее столкновение соника, с Stop Trigger.
Далее, уточняем условие столкновения. Для этого кликните ПКМ по условию, и нажмите Insert.
И указываем, что проверка коллизии (столкновения), произойдет только 1 раз.
При столкновении с Stop Trigger, соник стоит некоторое время на месте, а затем, идет дальше. Так вот, это время регулируется таймером. В графе таймера, нажмите ПКМ, и выберите Fire event after given delay (Вызвать событие после заданной задержки).
Указываем имя таймера.
И ставим задержку в 3 секунды.
По сути, мы только-что создали таймер который спустя 3 секунды, начинает кричать своё имя «stayEvent» другим таймерам (создает событие). Таким образом, можно привязать действие к событию stayEvent. Теперь, обработаем наше событие. Для этого, создайте условие «On event«, у таймера.
И укажите, название нашего евента.
Добавим условие. при столкновении с «Next Level Trigger«
Осуществляется переход на следующий фрейм (Next frame).
Сцена готова, осталось сделать переход на фрейм сцены из Character Select. Как это делать, я объяснял в уроке Sonic. Знакомимся с Not So Simple Sonic Worlds Plus (NSSSWP).
Что-бы сделать Stop Trigger невидимым, уберите флаг Visible at start, в настройках объекта.
В итоге, получилось следующее:
Обучение ИИ на примере Sonic the Hedgehog: алгоритм NEAT
Эволюция человека
Из поколения в поколение люди менялись, чтобы стать лучше приспособленными к окружению. Мы начинали как приматы, которые жили в мире «съешь или тебя съедят». В конце концов, превратились в то, что видим сегодня – современное общество. Благодаря процессу эволюции мы становимся умнее. Мы можем лучше взаимодействовать с окружающей средой и выполнять то, что нужно.
Определяем алгоритм NEAT
Концепция обучения с помощью эволюции также применяется к искусственному интеллекту.
Мы в состоянии обучить ИИ выполнять конкретные задачи с использованием алгоритма NEAT (Neuroevolution of Augmented Topologies, нейроэволюции нарастающих топологий). Проще говоря, NEAT – алгоритм, который берёт группу ИИ (геномов), которые пытаются выполнить поставленную задачу. Топовые ИИ «размножаются» для создания следующего поколения. Этот процесс продолжается до тех пор, пока не появится поколение, способное выполнить то, что нужно.
ИИ играет в STH
Алгоритм NEAT удивителен тем, что устраняет необходимость в сборе предварительных данных для обучения ИИ.
Благодаря силе NEAT и OpenAI Gym Retro, разработчик обучил ИИ играть в Sonic the Hedgehog для SEGA Genesis. Предлагаем узнать как!
Обучение ИИ: алгоритм NEAT на Python
GitHub Репозиторий
Понимание OpenAI Gym
Если вы ещё не знакомы с OpenAI Gym, посмотрите терминологию ниже. Эти определения будут часто использоваться на протяжении всей статьи.
Установка зависимостей
Ниже приводятся ссылки на GitHub для OpenAI и NEAT с инструкциями по установке.
Импорт библиотек и настройка среды
Для начала импортируем все модули, которые будем использовать:
Также определим нашу среду, которая состоит из игры и состояния:
Чтобы провести обучение ИИ, вам понадобится образ игры Sonic the Hedgehog (файл). Простейший способ получить его – купить игру в Steam за 5 долларов. Также можно найти игру в сети, однако это незаконно, поэтому не делайте так.
Понимание data.json и scenario.json
В папке Sonic the Hedgehog будут эти два файла:
data.json
scenario.json
Понимание конфигурации алгоритма NEAT
Файл config-feedforward найдёте в указанном выше репозитории GitHub. Это как меню параметров для настройки обучения. Выделим такие параметры:
Поэкспериментируйте с массой доступных настроек, чтобы увидеть, как это повлияет на обучение ИИ! Чтобы узнать больше о NEAT и настройках конфигурации сети прямого распространения, рекомендуем прочитать документацию здесь.
Всё вместе: Создание обучающего файла
Настройка конфигурации
Создание функции для оценки каждого генома
Также запишем длину, ширину и цвет игровой среды. Делим длину и ширину на 8.
Создаём рекуррентную нейронную сеть (RNN) с использованием библиотеки NEAT и вводим геном и выбранную конфигурацию.
Наконец, определяем переменные: current_max_fitness (наивысшая приспособленность в текущем поколении), fitness_current (текущая приспособленность генома), frame (количество кадров), counter (количество шагов, которые предпринимает агент), xpos (x-положение Соника), и done (достигли ли целевой приспособленности или нет).
Возьмём наблюдение и поместим в одномерный массив, чтобы наша RNN понимала его. Получаем результат, передавая этот массив в RNN.
Используя результаты из RNN, ИИ делает шаг. Из этого шага извлекаем свежую информацию: новое наблюдение, вознаграждение, достигли ли требования done или нет, и информацию о переменных в data.json ( info ).
Наконец, проверяем, завершили ли задачу, или сделал ли геном 250 шагов. Если это так, печатаем информацию о смоделированном геноме. В противном случае продолжаем цикл до тех пор, пока не будет выполнено первое или второе требование.
Определение поколения, печать статистики обучения и прочее
Последнее, что сделаем – определим поколение, напечатаем статистику обучения, сохраним контрольные точки (на случай, если захотим приостановить и возобновить обучение) и выберем наш победный геном.
Осталось только запустить программу и наблюдать, как Соник медленно учится проходить уровень!
Раннее поколение против позднего поколения
Чтобы увидеть весь код в одном месте, загрузите файл Training.py из указанного репозитория на GitHub.
Бонус: параллельное обучение ИИ и алгоритм NEAT
Если у вас многоядерный процессор, обучение ИИ можно проводить на нескольких обучающих симуляторах одновременно, экспоненциально увеличивая скорость работы! Хотя в этой статье не будем подробно останавливаться на том, как это сделать, рекомендуем посмотреть реализацию sonicTraning.py в том же репозитории.
Заключение
Вот и всё, что нужно сделать! С некоторыми изменениями эта структура применима к любой игре для NES, SNES, SEGA Genesis и других.
Хакинг классического Sonic the Hedgehog для Sega
В этой статье я хочу разобрать внутреннее устройство легендарной игры Sonic the Hedgehog для приставки Sega Mega Drive, а также способы ее модификации или, как еще говорят, хакинга. Эта игра насчитывает порядка сотни хаков, включающих как действительно достойные работы (такие как Pana Der Hejhog или Sonic Remastered), так и странные и даже жутковатые (вроде An Ordinary Sonic ROM Hack). Чтобы понять, как их создавать, нужно разобраться, как писать на языке ассемеблера Motorola 68K (обычно игры для приставок тех времен писались именно на ассемблере), откуда взять дизассемблированный вариант игры и какую архитектуру имеет ее движок.
Дизассемблирование ROM-файлов для Sega осуществляется при помощи коммерческого дизассемблера и дебаггера IDA Pro. Затем происходит кропотливый процесс разметки, структурирования и причесывания сырого ассемблерного кода с использованием дебаггера (и смекалки). Этот процесс требует хорошего понимания технических особенностей платформы Sega Mega Drive и игр для нее.
К счастью, на GitHub уже есть дизассемблированные и размеченные версии всех игр серии Sonic the Hedgehog, созданные энтузиастами при поддержке сайта Sonic Retro. Лучше всего размечен и структурирован исходный код именно первой игры серии. Эта версия кода находится в репозитории sonicretro / s1disasm и именно она будет разобрана в статье.
Погружение в внутреннее устройство игрушки начнем с теории.
Технический обзор приставки
Sega Mega Drive (известная в США как Sega Genesis) оснащена 32-битным центральным процессором Motorola MC68000 (сокращенно Motorola 68K) и дополнительным звуковым сопроцессором Zilog Z80 (взамодействие с Z80 происходит через общую память). Объем оперативной памяти (RAM) – 64K. Разрешение экрана в основном режиме (в американской версии) – 320×224 пикселей.
Использованный процессор Motorola 68K в свое время был достаточно распространен. Этот чип применялся в самых разных системах, от популярных домашних компьютеров и игровых приставок до космических шаттлов. Одна из модификаций Motorola 68K даже была установлена в легендарном Apple Macintosh.
Графическая подсистема Mega Drive основана на видеоконтроллере Yamaha YM7101 и поддерживает аппаратную работу с двумя слоями фона и отрисовку до 80 спрайтов поверх них. Подробнее графика в игре будет разобрана далее; прочитать о графике в Sega Mega Drive отдельно можно в статье «Как работала графическая система Sega Mega Drive: Video Display Processor».
Для сборки игры используется макроассемблер AS. Набор инструкций этой платформы совершенно не сложный и содержит всего 82 инструкции. Для сравнения: по подсчетам пользователя ResearchGate современный Intel Core i7 имеет 338 инструкций.
Разберем основные инструкции Motorola 68K.
Операция копирования
move – скопировать данные из источника в приемник.
При записи операнда в скобках вычисление происходит со значением по такому адресу в памяти:
Такой режим адресации возможен только для адресных регистров ( a* ).
Арифметические операции
Операции управления потоком выполнения
Операции ветвления
Более подробно изучить команды Motorola 68K вам поможет отличный мануал (с ужасным фоном и шрифтами) автора Марки Джестера, где каждая из команд разобрана максимально подробно.
Сборка игры
Репозиторий s1disasm содержит Python-скрипт, автоматически запускающий нужную версию ассемблера для текущей операционной системы со всеми необходимыми флагами. Также этот скрипт выполняет специфическую для игры Sonic the Hedgehog операцию «Kosinski compression», которая сжимает карты уровней и другие бинарные данные (чтобы они поместились в память картриджа).
Все, что нужно сделать пользователю, это перейти в git-ветку AS ( git checkout AS ) и выполнить команду:
Архитектура движка игры
Игровые параметры
Дробные переменные хранятся в формате с фиксированной точкой, поэтому для получения реальных значений их необходимо разделить на 256. Так, ускорение Соника составит 0xC / 256 = 0.046875, а торможение – 0x80 / 256 = 0.5 (пикселей на игровой цикл в квадрате).
Графика
Для примера приведем скриншот игры с включенным режимом Low Color (нулевой бит регистра Mode Register 1 выставлен в ноль):
Video Display Processor позволяет аппаратно работать с двумя фоновыми слоями – background (слой B) и foreground (слой A), а также со слоем спрайтов, которые отображаются поверх фона. Фоновые слои собираются из тайлов 8×8 пикселей с помощью карт тайлов. Спрайты также собираются из тайлов; максимальный размер спрайта – 4×4 тайла. Таким образом, максимальный размер аппаратного спрайта составляет 32×32 пикселя.
Как видно из названия, подпрограмма LoadTilesAsYouMove занимается подгрузкой тайлов на фоновые слои по мере продвижения игрока по уровню. В игре Sonic the Hedgehog размер обоих тайловых плоскостей составляет 64×32 тайла или 512×256 пикселей.
Графический процессор также позволяет устанавливать не только общее смещение фонового слоя, но и смещение его отдельных горизонтальных рядов тайлов, используя так называемую таблицу скроллинга. Эта возможность позволяет перемещать удаленные элементы фона медленнее, чем близкие. Таким образом создается эффект параллакса, который имитирует 3D-графику и придает сцене объем. Этот эффект используется почти во всех уровнях Sonic the Hedgehog.
Эффект параллакса в фоновом слое уровня Marble Zone:
Игровые объекты
Отметим, что система координат в игре типична для экранной графики и имеет ось X направленную вправо, и ось Y, направленную вниз.
Хак: no-ring challenge
В качестве примера реализуем довольно простой хак, который может понравиться самым ярым фанатам игры: no-ring challenge. Этот хак предлагает пройти игру без золотых колец. В результате, каждая атака Соника будет сразу убивать его и заставлять игрока проходить уровень заново (либо с точки сохранения).
Перейдем в главную подпрограмму объекта «Кольцо» – Ring_Main и добавим в самое ее начало простейшую инструкцию прыжка ( bra ) на процедуру удаления кольца:
Можно убедиться, что в получившемся ROM’е кольца и бонусные мониторы с кольцами на уровнях будут отсутствовать, что усложнит прохождение. Патч целиком можно посмотреть на GitHub. Туда же выложен готовый бинарник на случай, если кто-то захочет поиграть в такую версию игры, не разбираясь со сборкой.
Хак: притягивание колец
В первой и второй играх серии бонусный щит только защищает игрока, но при этом не имеет никаких дополнительных функций. Попробуем его улучшить и добавить к нему возможность электрического щита из Sonic the Hedgehog 3 – притягивание колец.
Алгоритм Sonic the Hedgehog 3
Алгоритм, использующийся для этого эффекта, подробно описан в вики Sonic Retro. Если персонаж, обладающий электрическим щитом, находится ближе, чем в 64 пикселях от кольца по каждой из осей, кольцо переходит в режим намагниченности и начинает движение. В дальнейшем этот флаг больше не снимается с кольца. В режиме намагниченности кольцо ускоряется на 0.1875 за каждый шаг в сторону игрока, если оно уже движется в нужную сторону по данной оси. Если же кольцо движется от игрока, ускорение составляет 0.75.
Разница в значениях предусмотрена для того, чтобы кольца с одной стороны не слишком перестреливали, но, с другой стороны, если перестрел уже случился либо если игрок движется быстро и резко оказывается с противоположной стороны, быстро «исправлялись» и меняли свое направление движения.
Реализация алгоритма
Добавим в начало подпрограммы Ring_Animate код, устанавливающий флаг намагниченности в случае, если игрок ближе к кольцу, чем на 64 пикселя по каждой оси:
Реализация алгоритма предполагает разное ускорение в зависимости от того, летит кольцо в сторону игрока или нет, что по сути может быть представлено как сравнение знаков значений скорости кольца и разницы положений кольца и игрока. В псевдокоде такое сравнение может иметь примерно такой вид:
Для простой реализации такого сравнения вспомним, что способ хранения знаковых целых чисел в большинстве процессоров (включая Motorola 68K) подразумевает возможность определить знак числа простым считыванием самого старшего бита, причем 0 будет обозначать положительное число, а 1 – отрицательное. Проверить равенство битов в байте можно с помощью операции исключающего «или» – XOR ( eor на Motorola 68K).
Как уже было отмечено выше, дробные значения (включая скорость игровых объектов) хранятся в формате с фиксированной точкой, поэтому необходимые значения ускорения (0.1875 и 0.75) необходимо домножить на 256 (получив 48 и 192 соответственно).
Реализуем процедуру притягивания колец:
Для того, чтобы кольцо действительно осуществляло движение согласно установленным скоростям, необходимо добавить вызов упомянутой выше подпрограммы SpeedToPos :
Собираем итоговый ROM игры, запускаем и — вуаля — фича из Sonic 3 доступна в Sonic 1!
На GitHub можно просмотреть патч целиком, а также скачать получившийся бинарник.
Заключение
Эта статья является лишь базовым разбором методов модификации игры. Статья не рассматривает инструменты для редактирования уровней (SonED2, Chaos), создание новых персонажей, игровых объектов и механик. Также не рассмотрен симулятор/отладчик Motorola 68K EASy68K, который может помочь более пристально разобраться, как работает процессор Sega.
Тем не менее, я получил большое удовольствие, покопавшись в кишках любимой игры детства. Надеюсь, этой статьей мне удастся разбудить в ком-то такую же ностальгию, к тому же черпать вдохновение для работы можно и из сотен уже реализованных хаков, и из последующих игр серии.
Лучшие способы играть в игры про Соника
Список модификаций, портов и ремейков, улучшающих игровой опыт, а также способов во все эти игры играть.
Я знаю, что такого рода статьи нестандартны для этого подсайта, не говоря уже о DTF в принципе, но я решил запостить это всё сюда для видимости.
Этот список я составил после того, как осознал, что актуального списка с лучшими версиями игр про Соника на русском языке до этого момента не было. Изначально я планировал составлять список только для ПК, но затем мои амбиции взяли верх, поэтому я написал абсолютно всё.
Здесь не будет мобильных игр (кроме одной), Олимпийских игр и гоночных игр от Sumo Digital, так как с ними всё предельно очевидно.
Также здесь не будет образовательных игр, ибо вряд ли вам они нужны.
Ещё здесь не будет полностью собранных ромхаков, так как это будет считаться пиратством.
И напоследок, здесь не будет LEGO Dimensions — эмуляция этой игры предполагает пиратство абсолютно всех фигурок, многие из которых у вас вряд ли найдутся.
В данный момент Hidden Palace недоступен в Sonic 2 Absolute без меню разработчика. Разработчики хотят его переработать и спрятать в другое место. Boss Attack так же в данный момент недоступен.
Фанатский ремейк Sonic 2, разрабатываемый абсолютно с нуля. Обновляется практически всё. Новостей не было больше года, так что статус разработки неизвестен.
Разделы GameBanana с модами:
Добавлены 2 гибридных саундтрека по умолчанию. Было бы плюсом, не будь они второсортные.
Минусы:
— Оригинальные саундтреки по умолчанию заблокированы за прохождением игры за Эми, что означает два полноценных прохождения игры для их разблокировки. Руководство по их разблокировке прилагается.
Коллекция из ремейков всех вышеупомянутых игр на Retro Engine.
Выделена в отдельную секцию, так как она включает в себя игры выше, при этом имея свои нововведения.
Больше информации про неё здесь:
Получить все нововведения можно при предзаказе расширенного издания.
Kega Fusion, конечно, хорош, но его как нетребовательный эмулятор превзошли, а точность у него не сказать что высокая.
Интересные фанатские проекты:
Также можно сыграть в оригинальную аркадную версию в Lost Judgement, если второе у вас есть.
Как такового сравнения версий игр с Master System и Game Gear тут не будет, так как они всё равно эмулируются через те же эмуляторы.
Интересные фанатские проекты:
Проект пока что заморожен, так как его разработчиков привлекли работать над версией Sonic 3 & Knuckles для Origins:
Разработка почти завершена, так что скоро должен быть полноценный релиз.
На картинке моды Fixes, Adds and Beta Restores и Red Mountain Cutscene Fix отключены, их стоит поставить после Dreamcast Conversion
На самом-то деле неплохая игра. ares был выбран как эмулятор с наибольшей в данный момент точностью. В отличие от эмуляции 32X для Knuckles’ Chaotix, эмуляция Neo Geo Pocket Color через этот эмулятор не требует больших мощностей.
Надо ли оно вам — вопрос уже другой.
Выделен в отдельный заголовок из-за размера этого списка. В отличие от Sonic 3: A.I.R., актуального и часто обновляемого списка модов я не нашёл. Тут будет немного иная сортировка модов, нежели с остальными играми.
Чтобы вы не мучились с расстановкой приоритетов модов, я это сделал за вас:
Моды, которые однозначно рекомендуются к установке. Список не включает в себя моды текстур, кроме эффектов ударов Руж и Хаоса 0.
Моды, заменяющие текстуры в игре. Большинство из них не будут иметь описание, так как их название описывает их суть.
Превратят игру в шедевр 12/10 на кончиках пальцев. Двое из них заслуживают свои собственные статьи.
Всё остальное, так или иначе заслуживающее внимания. Моды, изменяющие физику персонажей, не совместимы друг с другом.
Соник Набор Персонажей
Управление доступно в нижней части игрового экрана. Его можно настроить на свое усмотрение.
Бесплатная онлайн игра Соник Набор Персонажей / Sonic 1: Character Pak
В этом паке собраны лучшие персонажи, за которых можно теперь поиграть в бродилке на приставке Сега. Здесь кроме Соника есть еще его современный вариант, Линк и Луджи.
Каждого можно выбрать в специальном меню, и вместе с выбором героя меняются не только способности, но и локации, что их необходимо исследовать. Удачи!
Добавить
в избранные
We are using cookies to give you the best experience on our website.
Close GDPR Cookie Banner
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
Sonic. Создаем объекты в Simple Sonic Worlds.
Предисловие.
В этом уроке, я расскажу, как создавать объекты на движке Simple Sonic Worlds.
Создаем Backdrop.
Если вам нужно установить твердый объект на уровень, используйте лучше Backdrop. В отличии от Active, он не имеет логики, и ест меньше ресурсов. Для его установки, кликните дважды ЛКМ, и выберите Backdrop.
Импортируйте нужный вам спрайт.
И, в настройках Backdrop, установите тип Obstacle.
Готово. Объект создан, время тестить.
Создаем твердый объект (Active)
В отличии от Backdrop, который имел 2 типа твердости (твердый, не твердый), объект Active имеет 9 типов твердости (если можно так выразится). И задаются эти типы — классификатором (qualifier). Кстати, автор движка, заботливо, расписал что делает каждый из классификаторов.
Для создания твердого объекта, нужно создать активный объект (Active), и добавить к нему, классификатор 0.
Как видим, у объекта появилась коллизия.
Создаем платформу.
Что-бы создать платформу, нужно привязать классификатор 1, к активному объекту.
Создаем петлю.
Снова, создаем активный объект, и привязываем к нему 0 и 3 классификатор. Что-бы создать первую половину петли (расположенную на 0-вом слое.)
Ко 2-ой половине петли, привязываем 0 и 4 классификатор.
Создание двигающейся платформы.
Для добавления двигающейся платформы, нужно скопировать её из уровня, и, по желанию, заменить спрайты на свои.
В данной платформе имеется классификаторы:
Данная платформа, не способна раздавить игрока, потому-что в ней отсутствует 8 классификатор. Исправим это!
Теперь, платформа способна раздавить невнимательного игрока.
Заключение.
В данном уроке, мы разобрали классификаторы, которые, крайне, полезны при проектировании уровня. Я не рассмотрел 5-тый и 7-мой классификатор, по той причине, что не смог заставить их работать. По идее, 5-тый должен создавать место, в котором можно утонуть, а 7-мой, позволять передвигать предметы, как во 2-ой зоне первого соника. Но, ни то, ни то не работает, поэтому, имеем что имеем.
Sonic. Создание боссов в Simple Sonic Worlds.
Предисловие.
Данный урок рассчитан людей знакомых с ClickTeam Fusion, и читавших предыдущие уроки по Simple Sonic Worlds, выложенных на этом сайте. По этой причине, в этом уроке я разберу способ создания боссов, максимально кратко.
Также, в предыдущих уроках я совершил ошибку, нужно было проверять коллизию с «Player_CharacterSensor«, а не со спрайтом соника. Спросите в чем разница? Разница в том что, «Player_CharacterSensor» присутствует во всех персонажах (Соник, Тейлз, Эми и т.д.), тогда как спрайт соника, принадлежит только сонику. Таким образом, проверяется коллизия независимо от выбранного персонажа.
Подготовка.
Для начала, создадим 2 активных объекта, а 1 перетащим. Boss и Boss Trigger, это новые активные объекты. Boss Cam, перетаскиваем со сцены босса с меха-соником.
Скачать спрайт кружки, можно на MEGA.
Добавим нашей кружке, 3 новых переменных. Переменную HP, в которой хранится количество HP босса, и 2 флага invulnerability и lockCamera, которые будут хранить состояния бессмертия и закрепленной камеры.
Пишем логику.
Теперь, зайдите в Event List Editor (Ctrl+L), в раздел [Stage 00 — Gimmicks].
Разберем каждое из условий.
При столкновении «Player_CharacterSensor» с Boss Trigger (overlapping), флаг lockCamera переключает значение on. Данное действие произойдет, всего лишь, 1 раз (Repeat 1 times).
Перейдем к следующему условию.
В эвенте «canBeat«
Если HP = 0 (босс умер) то:
Теперь, перейдем к самому вкусному, к циклу который запирает соника на арене с боссом.
Все, готово. Если вы все сделали правильно, то при столкновении с Boss Trigger, начнется битва с боссом.
Sonic. Создаем врагов в Simple Sonic Worlds.
Сначала, скачайте необходимые спрайты с MEGA.
Создайте новый активный объект, и измените его спрайт.
Далее, зайдите в Event List Editor (Ctrl+L). И создайте новое условие, в каталоге [Stage 00 — Gimmicks].
Если соник перекрывает (overlapping) ледяной кристалл.
То, устанавливаем в объекте «Player_MovementValues«
Значение переменной Hurt, равному 1.
Теперь, соник получает урон от соприкосновения с кристаллом.
Создаем противника.
Создадите еще 1 активный объект, и установите у него спрайт кружки.
Теперь, в Event List Editor (Ctrl+L), проверьте коллизию игрока и противника (кружки).
Добавьте еще одно условие (Insert). Проверяющее нахождение соника, в атакующем состоянии.
То-есть, если соник атакует (свернут в шар) и он соприкоснулся с противником (кружкой), только тогда, вызываем цикл «destroyevent«
Вызовем его, 1 раз.
Данный цикл, заставляет соника подпрыгнуть, после уничтожения противника.
Последнее что осталось, это уничтожить кружку.
Все, враг готов, правда он безобиден. Сделаем так, что-бы при соприкосновении с врагом, игрок получал урон. По аналогии, создайте новое условие. Если Atacking = 0 и соник соприкасается с кружкой.
То, значение переменной Hurt, устанавливаем на 1.
Теперь, противник может поранить игрока. Осталось добавить взрыв, при уничтожении. Для этого, в момент уничтожения кружки, создаем объект взрыва, внутри противника.
В итоге, получилось следующее:
Вот и все, теперь вы можете создавать своих противников и снаряды. Если есть вопросы, задавайте их в комментариях, или в группе ВК.
Источники информации:
- http://under-prog.ru/sonic-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%B6%D0%B5%D0%B9-%D0%B2-simple-sonic-worlds/
- http://under-prog.ru/sonic-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D1%82-%D1%81%D1%86%D0%B5%D0%BD-%D0%B2-simple-sonic-worlds/
- http://proglib.io/p/obucheniye-ii
- http://habr.com/ru/post/501398/
- http://dtf.ru/howto/1138860-luchshie-sposoby-igrat-v-igry-pro-sonika
- http://fog-game.ru/sonik-nabor-personazhej/
- http://under-prog.ru/sonic-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B-%D0%B2-simple-sonic-worlds/
- http://under-prog.ru/sonic-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%BE%D1%81%D1%81%D0%BE%D0%B2-%D0%B2-simple-sonic-worlds/
- http://under-prog.ru/sonic-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC-%D0%B2%D1%80%D0%B0%D0%B3%D0%BE%D0%B2-%D0%B2-simple-sonic-worlds/