На тропе osu

Обновлено: 05.07.2024

Сейчас попрохожу, да покидаю тебе карт.
Ах, да. Если играешь инсейны, то на 8AR не сиди долго. Лучше сразу на 9AR (или 8.5 сначала), потом проще будет.

Ниже нет смысла идти.
Следующий пост будет с картами от 3.50

upd: добил оба поста до читаемого состояния.

Кал не кидал. Все карты только что протестил.
Если нужны карты посложнее и этих мало, говори. Там еще достаточно.

Ссылки давал на соответствующую сложность.
upd: добил оба поста до читаемого состояния.

DS игры

Собирательный термин для игр: Osu! Tatakae! Ouendan! (известная как Ouendan или Ouendan 1), Moero! Nekketsu Rhythm Damashii Osu! Tatakae! Ouendan! 2 (чаще всего называемая Ouendan 2) и Elite Beat Agents (известная как EBA). Это ряд игр, разработанных iNIS для игровой консоли Nintendo DS, которые имеют много общих элементов геймплея. osu! в основном базируется именно на этих играх.

Deathstream

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

osu! — ты в неё играешь, так-то. Пишется с маленькой буквы.

АИБат

АИБат (также айбат, англ. AIBat) — в принципе, то же самое, что и аймод, только фич в нём больше и в игру он не встроен. Зато можно скачать здесь. Работает на Java.

АИМод

АИМод (также аймод, англ. AIMod) — функция редактора, которую можно вызвать, нажав ctrl + shift + A. Аймод может указать на такие ошибки, которых в карте быть не должно, поэтому полезен для маппинга и моддинга. Не путать с небезызвестным юзером с похожим никнеймом.

Аппрув

Аппрув (от англ. Approve — «одобрять, утверждать») — используется в тех случаях, когда битмап по некоторым причинам (например, максимальное кол-во очков и/или время игры и др.) не подходит для категории Ranked, но «признана» БАТами. Для таких карт есть отдельная таблица рекордов, но очки, заработанные за прохождение карты, ранее не прибавлялись к Ranked Score. После введения очков производительности Ranked Score дают и за них. У таких карт вместо обычного « » значок « ».

Аура спектатора

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

Ачивки

Ачивки (англ. Achieve — «достигать») даются при выполнении определённого условия: пройти определённый набор карт, сыграть определённое количество раз и др. Однако, есть и «секретные» ачивки, обсуждать условия получения которых открыто нельзя. Просмотреть список ачивок можно у себя в профиле во вкладке “Achievements”.

BPM (bpm, от англ. beats per minute — «удары в минуту, темп») — показатель, определяющий скорость исполнения или воспроизведения композиции. BPM — это количество четвертных нот в минуту, например, 120 BPM означает, что в минуту играется 120 четвертных нот (следовательно, 2 четверти в секунду), или 120 четвертных ударов метронома в минуту.

Стримы в осу, как правило, замаплены на 1/4, 1/3 и реже — на 1/2 и 1/6 нотах.

Баббл

Банчо

Банчо (или Банча, Бахча) — названия сервера osu!, написанного Пеппи и Echo. К нему игрок подключается при заходе в игру (при наличии Интернета, разумеется)

Банчобот

Банчобот (Banchobot) — бот, выполняющий автоматические функции в Bancho, такие как:

  • Отображение различной информации об игроках,
  • модерирование каналов,
  • автоматическая защита от флуда,
  • и др.

БАТ (BAT) — группа людей, имеющих возможность ранкать карты.

Битмап

Битмап (также мапа или просто карта, от англ. Beatmap — «ритм-карта») — игровой уровень в osu!, подобно стадиям в DS играх. В основном, в битмапе есть песня, круги, слайдеры и/или спиннеры, расположенные согласно ритму музыки. Также в битмапах есть задний фон, или видео, или даже сториборд. Битмапы загружаются на сервер в открытый доступ для всех, после чего они могут быть скачаны, сыграны, модифицированы и, в конечном итоге, ранкнуты или аппрувнуты.

Битмаппер

Битмаппер (или просто маппер) — тот, который создаёт карты для osu!, разбирается в эдиторе и во всех тонкостях маппинга. Ну или не разбирается.

Брейк

Джамп

Джамп (англ. jump — «прыгать») — приём в маппинге, заключающийся в резком увеличении расстояния между нотами и заставляющий сделать игрока резкое движение мышью/пером, «скачок».

Дифа (англ. «difficulty» — сложность) — одна из нескольких (как правило) сложностей в одном мапсете карты. Варьируется от Easy до Expert, однако встречаются и кастомные названия сложностей карт.

Задрот

Задротами называют людей, которые на протяжении многих лет «оттачивают» свое мастерство и, как результат, играют хорошо. Даже очень хорошо. Русское комьюнити в osu! на данный момент ещё не может точно сказать, хорошо это или плохо; кто-то считает это почётным, а кто-то использует как оскорбление.

Игнор

Игнор в чате вызывают командой /ignore и работает он до тех пор, пока вы не перезайдёте в игру. Также можно заполнить список игнорируемых слов в настройках клиента игры, тогда список сохранится. Также слово «игнор» может быть референсом к известному мапперу ignorethis.

IRC (ирк, Ирка, ирц, от англ. Internet Relay Chat) так часто называют чат в osu!, по имени используемого протокола. Благодаря этому, вы всегда можете войти в чат с помощью уже полюбившегося клиента, не открывая игры.

Киаи тайм

Kiai Time (Киаи тайм, Киай тайм) — особая тайминг-секция в битмапе, призванная хоть как-то разнообразить скучные и однообразные карты без сториборда. Она сопровождается вылетающими звёздами, пульсирующими кругами и обычно используется в наиболее яркой части песни, например, во время припева.

Лайфбар

Маппинг

Маппинг — процесс создания карты в osu!.

Мисс (англ. miss — «промах») — ошибка нажатия по кругу или слайдеру, или ошибка при попытке вращения спиннера (когда игрок не успевает за отведённый срок заполнить шкалу хотя бы до половины). Мисс вызывает ощутимое снижение полоски жизни, не позволяет игроку получить оценки S, SS, SH или SSH, и сбрасывает счётчик комбо, снижая возможный максимум очков. Миссы в DS играх обозначаются красным крестиком.

Модератор

Пасс — прохождение всей карты не слившись (без ноуфейла).

Паттерн

Пеппи

Пеппи (peppy, «пипка», рерри, перри) — Dean Herbert, человек, создавший эту игру. Можно встретить в IRC под ником “ppy” или “peppy”. Ник пишется строго с маленькой буквы.

puu.sh — сайт и программа для мгновенного снятия скриншотов с экрана компьютера и последующей заливки их в Интернет. Создана Пеппи и поэтому часто используется участниками игры. Некоторые ссылки с пуша запоминаются и используются широким кругом пользователей (см. Ngn, Ng6, Lcy, MaD, Fao).

Репорт

Ретрай

Ретрай (также трай; от англ. Retry — «пробовать повторно») — повторное действие/игра, многочисленные попытки. Обычная игровая практика, в ходе которой игрок повторяет прохождение битмапа снова и снова, пока не достигнет желаемого результата (высокой точности, максимально возможного комбо и т.п.).



Сайленс в естественной среде обитания.

Сайленс

Скилл

Слайдер

Слайдер (англ. Slider) — один из трёх типов объектов, с которыми взаимодействует игрок (два других — спиннер и круг). Слайдер представляет собой два круга, соединённые полоской, чаще всего такого же цвета. Вокруг одного из кругов, начала слайдера, появляется круг приближения и постепенно сужается к его центру. Когда круг приближения достигнет краёв внутреннего круга, от игрока требуется кликнуть по началу слайдера и провести шар (слайдерболл, англ. sliderball) по полоске («телу») слайдера до его конца, не отпуская кнопки. Слайдер может оканчиваться как кругом, так и реверс-стрелкой (англ. reverse arrow), указывающей в обратном направлении. Наличие такой стрелки означает, что после её достижения нужно провести слайдерболл в обратную сторону по тому же пути. На слайдере расположены слайдер-тики, выглядящие как мелкие точки; каждая из таких точек добавляет 10 очков к счету. Если слайдер-тик был пройден без зажатой клавиши, то это засчитается за слайдербрейк, и игрок теряет комбо. Конец слайдера не считается за слайдер-тик, его можно не «выжимать», однако в таком случае игрок получит за слайдер 100 очков вместо 300. Также стоит отметить, что слайдер в osu! не так чувствителен к времени клика, как нота, и за раннее или позднее попадание по нему не начисляется штрафа (в отличие от osu!stream, где слайдеры так же реагируют на нажатие невовремя, как и обычные ноты).

Слайдербрейк

Спиннер

Спиннер (англ. Spinner) — один из трёх типов объектов, с которыми взаимодействует игрок (два других — слайдер и круг) и, вероятно, самый редкий из них. Спиннер — это большой круг, занимающий всю высоту игрового поля, со шкалами оборотов по обе стороны. Большая внешняя окружность, сходная с кругом приближения, появляется рядом с границами спиннера и постепенно сужается к его центру. Игроку нужно зажать кнопку и крутить курсором по часовой или против часовой стрелки. До тех пор, пока кнопка зажата, курсор не сможет выйти за пределы спиннера. Спиннер считается пройденным, если все пункты шкалы были заполнены до того, как круг приближения достиг центра спиннера. Для заполнения каждого пункта шкалы может потребоваться разное количество оборотов, в зависимости от уровня сложности, выставленной для каждого битмапа. Если игрок заполнил всю шкалу, то каждый дополнительный оборот спиннера будет добавлять 1000 бонусных очков. Процесс вращения спиннера позволяет продолжительно заполнять полоску жизни, в зависимости от скорости вращения.

Привет, Хабр! Представляю вашему вниманию перевод статьи Adventures in osu! game hacking.

Не так давно я начал играть в OSU! и она мне понравилась. Со временем захотелось немного поковыряться во внутренностях этой игры.

Основной анализ beatmap

Итак, как мы будем разбирать beatmap? Мы можем разобрать все, начиная от названия песни, заканчивая настройками сложности. (Мы будем держать вещи простыми и анализируем только моменты времени, объекты попадания и некоторые значения, относящиеся к слайдеру.)

В стандартном режиме игры мы имеем дело с тремя типами объектов: кругом попадание, ползунком и счетчиком. В документации для формата файла .osu указано, что все объекты имеют такие составляющие: X, Y, время, тип. Все они будут включены в нашу структуру.

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

Получение игрового времени

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

Начните с открытия Cheat Engine. Если OSU! пока не запущена, запустите её сейчас. Нажмите на значок в верхнем левом углу, чтобы открыть список процессов, отсюда выберите OSU!.exe и нажмите „Attach debugger to process”. Вернитесь к OSU. Теперь убедитесь, что никакая музыка не играет. Вы можете сделать это в главном меню, щелкнув на значок остановки в правом верхнем углу.

Теперь вернитесь к Cheat Engine, введите 0 в поле «Значение» и выполните первое сканирование. Как только оно будет закончено, вы увидите больше миллиона результатов. Мы сократим это до нескольких. Вернитесь к OSU! и снова начните воспроизведение музыки. Теперь вернитесь к Cheat Engine, установите для типа сканирования значение «Увеличенное значение» и нажмите «Следующее сканирование». Это значительно уменьшит количество результатов. Продолжайте нажимать кнопку «Следующее сканирование», пока не останется с несколько результатов.

Мы почти получили его. Все, что осталось сейчас, — это динамически получать это значение. Вот почему мы использовали отладчик Cheat Engine раньше. Щелкните правой кнопкой мыши на каждый адрес и выберите <> в раскрывающемся меню. Некоторые из них нам не подходят, но вы должны найти тот, который при разборке выглядит аналогичным.

Я загрузил базовый внешний сигнатурный сканер, который мы будем использовать позже в нашей реализации.

Обратите внимание, что указанная выше подпись относится только к каналу Stable (Latest) release. Подписи, вероятно, будут отличаться по каналам Stable (Fallback), Beta и Cutting Edge (Experimental), но процесс его поиска будет таким же, как и выше.

Реализация

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

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

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

Для последней из этих вспомогательных функций нам понадобится что-то, что будет нажимать клавишу, когда мы ее вызываем. Опять же, есть несколько способов реализовать это, но я нашел keybd_event, но SendInput будет самым легким. Поскольку keybd_event устарел, мы будем использовать SendInput,

Обязательно добавьте проверку для карт с AudioLeadIn time.

Вот где начинается настоящая забава. Возможно, вы ожидали, что эта часть будет сложной, но логика здесь на самом деле довольно прямолинейна. Мы ждем 'start time' текущего объекта, удерживаем ключ, ждем 'end time’, а затем освобождаем его. После того, как мы выпустили ключ, мы переходим к следующему объекту и продолжаем, пока не достигнем конца beatmap.

Обратите внимание, что я вычитал пять миллисекунд со времени начала, это своего рода волшебное число, и ваш пробег может отличаться от него. Он не мог нажать на все кнопки и слайдеры идеально без этого. Я также добавляю две миллисекунды к концу окончания круга в классе beatmap. Поскольку круги не нужно удерживать, мы хотим как можно скорее отпустить их. Если мы отпустим их слишком быстро, нажатие может быть проигнорировано, поэтому нужны дополнительные 2 мс.

Читайте также: