Какой тип игровой логики можно назвать?

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

Мне интересно, знает ли кто-нибудь о каких-либо играх с открытым исходным кодом, которые могут иметь подобную логику.

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

ТИА

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


person dizy    schedule 17.03.2009    source источник


Ответы (6)


Для целей этого кода давайте представим, что полоса содержит счет для игрока.

Score = Max score that can be received from the action without modifier
Accuracy = [0..1] Where 0 is total miss on the action and 1 is a perfect hit.
           Example: The score for a headshot
LevelModifier = [0..1] Where 0 means that in this level, it doesn't give any 
                scores and 1 means that the player receives the max bonus. 

                You can also refer to this as a difficulty modifier. 
                The higher the level, the more bonus you get.

ScoreDelta = (Score * Accuracy) * LevelModifier

ScoreBar += ScoreDelta

Для таймера вы можете каждую секунду опускать их ScoreBar.

ScoreBar -= TimePenalty

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

person MrValdez    schedule 17.03.2009

Это звучит подозрительно похоже на мою оценку репутации Stack Overflow.

person Community    schedule 17.03.2009
comment
Видимо, они подумали, что я шучу. Им следует внимательно посмотреть, как рассчитывается репутация и карма на некоторых сайтах, где есть такие понятия. - person Bill the Lizard; 17.03.2009
comment
У некоторых людей нет чувства юмора. Я чувствовал себя обязанным отрицать это -1 (хотя ваш ответ - вики). знак равно - person gnovice; 17.03.2009

Похоже, вы пытаетесь смоделировать карму... Я думаю, что есть несколько веб-сайтов, которые имеют систему, подобную карме (система репутации SO, возможно, что-то вроде этого).

Я бы начал с чего-то простого... Если пользователь делает "хорошие" вещи, он повышается. Если они делают плохие вещи, он падает. Если они ничего не делают (бездельничают?), она снижается медленно.

person Community    schedule 17.03.2009

Это очень похоже на шкалу опыта.

person Robert S.    schedule 17.03.2009

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

State A:
* Walk Forward : ++Points
* Jump         : Points += 100
* Points < 100 : Go to State A
* Points > 100 : Points = 0; Go to State B
* Points > 150 : Points = 0; Go to State C

State B:
* Kill Bad Guy : ++Points
* Get Hurt     : --Points
* Points < -50 : Points = 0; Go to State A
* Points < 100 : Go to State C
* Points > 100 : Points = 0; Go to State D
...etc...

Это условие «Очки == 150» — это то, что я придумал, чтобы продемонстрировать мощь конечного автомата. Если игрок делает что-то особенно хорошее, чтобы перейти от менее чем 100 к более чем 150, то он может пропустить уровень. У вас могут быть даже бонусные уровни, которые доступны только таким образом.

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

(Я думаю, что большинство других ответивших интерпретируют ваше описание как логарифмический рост.)

person Ryan Fox    schedule 17.03.2009

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

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

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

person SingleNegationElimination    schedule 17.03.2009