Куксобзор
1 пост
1 пост
1 пост
2 поста
3 поста
2 поста
2 поста
Привет, пикабушники! С вами WoWSab, и сегодня я расскажу, как я создаю браузерную MMORPG, где средневековый мир встречается с механиками из Hamster Combat. Представьте себе: ваш рыцарь, вооружен мечом и... хомяком. Да-да, вы не ослышались! В моей игре хомяки — это не просто милые зверьки, а настоящее оружие, чтоб способно уничтожить своего врага!
Но как же балансировать такую игру? Как сделать так, чтобы рыцарь на хомяке был не слишком силен, но и не слишком слаб? Вот тут-то и начинается самое интересное. Ведь создание игрового баланса — это настоящее искусство, где каждая мелочь имеет значение.
Начнем с начала. Идея создать свою игру зрела во мне давно. Были и неудачные проекты, которые так и не вышли за рамки черновиков. Но всё изменилось, когда на сцену вышли они — те самые Hamster Combat, о которых я упоминал ранее.
Криптовалюта всегда была мне близка. Мне нравилась её идея и реализация, но, познакомившись с Хомяками, я понял: что-то здесь не так. Тапать для получения монет в надежде на миллионы... Это не вдохновляло. Тогда у меня созрел план: создать игру, в которой зарабатываемые монеты станут неотъемлемой частью игровой экономики. Они не будут просто ожиданием выхлопа с TGE — они станут её основной механикой. Так родилась Telegram игра WannaBlood — игра, жаждущая крови.
Вернемся к игровому балансу, да будет он неладен. Это краеугольный камень любой игры. От него зависит, будет ли игра слишком лёгкой или, наоборот, слишком сложной. Он определяет ценность достижений и игровой валюты. Здесь невозможно угодить всем, но нужно сделать так, чтобы цель оправдывала средства, не убивая при этом экономику игры.
Вспомним тех же Хомяков. Вы тапали, зарабатывая первые монеты, затем прокачивали карточки, которые давали пассивный доход. Но нужно было периодически заходить в игру, иначе фарм останавливался. Заработали монеты — прокачали карточки — получили больший заработок в минуту — ждёте истечения таймера (и дополнительно тапаете, если не лень). Круг замкнулся. Эта простая механика определяла весь баланс игры. Погоня за монетами. Мне это не по нраву. Мы пойдем другим путем.
Для начала нужно было определиться с основной механикой игры. Я выбрал арену. Сражения 1x1, 2x2, 5x5... Где арена, там и азарт, ставки, всё или ничего... Но пока не буду раскрывать все карты — возможно, расскажу об этом аспекте позже, когда он будет полностью реализован.
Витать в облаках можно долго, но нужно вернуться к началу и понять, кем и как мы будем играть. Наш персонаж: как он будет одеваться, как будут зарабатываться первые монеты? Для чего вообще нужны эти монеты? Как будет происходить прокачка персонажа, как получать опыт? И какие игровые механики мы будем использовать? На эти вопросы нужно было ответить.
Начнём с механик. Первая и хорошо известная — механика Check In-ов. Она даёт игроку возможность пассивно зарабатывать монеты, предоставляет "второй шанс" при полном проигрыше и затягивает обратно в игру. Суть проста: заходи в игру каждый день и получай монеты за первый заход. Но есть и минус: со временем ценность этой механики падает. С этим можно и нужно бороться. Вот мой подход:
За заход будет даваться не только монеты, но и опыт.
Количество зарабатываемых монет и опыта будет расти с уровнем персонажа.
Но мы не будем заранее определять количество опыта и монет — это неэффективно. Вместо этого будем рассчитывать всё математически.
Существует несколько вариантов исполнения. Приводить примеры буду с учетом базовой награды за уровень a = 10 монет.
Линейное увеличение
Определяется формулой - монеты = a + k * (уровень−1).
Суть проста - на каждом уровне количество монет увеличивается на фиксированное значение k.
Пример: Если k=5, то на 2-м уровне будет выдаваться 15 монет, на 3-м уровне — 20 монет и т.д.
Квадратичное увеличение
Формула - монеты = a * уровень^2 (^ - это степень)
Здесь количество монет увеличивается квадратично, что делает рост наград более значительным на высоких уровнях.
Если на 1-м уровне выдается 10 монет, то уже 2-м уровне будет выдаваться 40 монет, на 3-м уровне — 90 монет и т.д.
Экспоненциальное увеличение
Формула - монеты = a * e ^ (уровень−1) * k
В этом варианте количество монет увеличивается экспоненциально, что приводит к очень большим наградам на высоких уровнях.
Если k=0.5, то на 2-м уровне будет выдаваться около 16 монет, на 3-м уровне — около 27 монет и т.д.
Логарифмическое увеличение
Формула - монеты = a * log(уровень + k)
В случае использования логарифма количество монет увеличивается медленнее на высоких уровнях.
Если k=9, то на 2-м уровне будет выдаваться около 11 монет, на 3-м уровне — около 12 монет и т.д.
Полиномиальное увеличение
Формула - монеты = a * (уровень ^ k) + (k2 * уровень) + c
Этот способ во много похож на квадратичное увеличение, однако он использует дополнительный коэффициенты k2 и c, благодаря которому количество монет увеличивается быстрее, чем линейно, но медленнее чем квадратично. По факту - при помощи этой формулы можно получить практически любой результат, в рамках разумного конечно.
Однако, в этом случае, необходимо тщательно подбирать коэффициенты исходя из желаемого результата. Здесь уже не получится просто взять a = 10.
Например, для получения 10 монет на 1-м уровне, 18 на втором уровне, 29 на третьем уровне, 325 на 30-м уровне, 900 на 80-м уровне, 1200 на 100-м уровне подойдут коэффициенты:
a = 1.21 * 10^-10
k = 5.98
k2 = 10.92
c = -2.81
Коэффициент a является отправной точкой, влияющий на количество монет, k - показатель степени, определяющий, как быстро увеличивается количество монет с уровнем, k2 - множитель, влияющий на линейный рост, а с - смещение, добавляемое к результату для корректировки начального значения.
Графически все эти модели можно представить вот так:
Конечно, список формул не конечный, да и придумать можно какую угодно, но в основной базис я показал, моя совесть чиста.
Не ожидал что статья получится такой объемной. Давайте на этом пока что закончим. Если вам интересно продолжение, то могу с удовольствием написать о механиках увеличения требуемого опыта при росте уровня, о методиках расчета урона, блока, защиты и так далее, и прочих математических прелестях бэкэнда игры. А также о будущей роли хомяков. И нет, они не будут питомцами! Буду писать о том что знаю, ведь эти механики в той или иной степени я использую у себя.
Также буду рад видеть Вас в своей игре. К сожалению, арена, кузница и магазин пока еще проходят тестирование, однако будут уже скоро. А пока вы можете ознакомиться с новостями по игре в ТГ канале.
Товарищи, пожалуйста помогите сгенерировать ИИ изображение.
Мне нужна монета в виде ярко-алой капли крови на белом фоне.
Либо же наоборот, алая капля крови растекшаяся в виде монеты, тоже на белом фоне.
Максимум что у меня получилось создать это вот такое. Симпатично, но немного не то что нужно. Заранее спасибо!
Отличный разбор. Все по полочкам. Только один вопрос остался. А в гуманитарном что, дипломные работы в октябре сдают?
О май гад...ну зачем эти "веселые" задания???
Ладно, так уж и быть, задам свой вопрос.
Как пропатчить KDE2 под FreeBSD?
Ну снова очередной пост ради комикса
Ну чтож, а почему бы и нахрен оно мне надо да.
Все события вымышлены, совпадения случайны, и вообще у автора хорошее воображение.
Помнится однажды, позвала меня подруга на хату посидеть, побухать, да с днём рождения её поздравить. Пришёл я к ней значит, а там не видно нихрена. Дымовал такой, что топор вешать можно. Прохожу я внутрь, по пути перехватывая что-то из алкоголя, и нахожу свою подругу в объятиях трех неизвестных мне парней. Поздоровался, познакомился, подруге подарок вручил, а она как давай на меня вешаться. Я тему вкурил, и давай под разными предлогами выводить её на кухню. Парни немного напряглись, но в целом вида не подали. Выходим с ней, а она мне прямо - хочешь меня?
Я так то был не против, но глядя в её залитые алкоголем глаза, беру себя в руки и говорю ей - Ты слишком пьяна сейчас. Давай поговорим об этом завтра, а сейчас просто выпьем.
- То есть я тебе не нравлюсь? Я страшная???
Я вытащил сигарету. Закурил.
- Да не в этом дело. Ты просто очень пьяна, не хочу чтоб ты жалела потом...
Договорить я её успел. Она резко встала и вышла с кухни, хлопнув дверью за собой. Я медленно докуривал сигарету. Потом закурил вторую. Думал, что же сейчас произошло на самом деле? Эх, была не была! Возвращаюсь в комнату. Перед глазами предстаёт картина - моя голая подруга скачет на члене одного из тех парней, жадно сосёт второму и одновременно дрочит третьему!
Я в недоумении застыл на месте....
Подруга в этот момент отрывается от члена, смотрит на меня и говорит:
- А тебе я не дам!
Я молча развернулся и вышел из квартиры. Много думал. Сходил блин, на день рождения.
В общем, нет у меня больше подруги. Есть только котик. Сидит вон, под лампой греется.