Какой тип игровой логики это будет называться? - PullRequest
4 голосов
/ 17 марта 2009

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

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

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

ТИА

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

Ответы [ 6 ]

6 голосов
/ 17 марта 2009

Это звучит подозрительно, как мой показатель репутации переполнения стека.

3 голосов
/ 17 марта 2009

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

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

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

3 голосов
/ 17 марта 2009

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

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

2 голосов
/ 17 марта 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...

Это условие 'Points == 150' - это просто то, что я придумал, чтобы продемонстрировать силу конечного автомата. Если игрок делает что-то особенно хорошее, чтобы перепрыгнуть со 100 до 150, он пропускает уровень. Вы даже можете иметь бонусные уровни, которые доступны только таким способом.

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

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

2 голосов
/ 17 марта 2009

Это звучит очень похоже на панель опыта.

1 голос
/ 17 марта 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...