Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

> Планирование шарда, самая сложная часть
_kaa_
сообщение Jun 13 2005, 00:53
Сообщение #1


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



\\попытаюсь написать что-то вроде статьи.

Баланс.

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

Попытаюсь рассказать как построить сбалансированный мир опираясь на опыт blizzard’ов (в основном на World of Warcraft) и на свой J

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

1. Разделение мира на зоны. Нубам – нубово (с) J
При разработки локаций четко заранее должно быть продуманно на какой диапазон уровней игрока расчитана зона. Чуть ниже будет подробнее.
2. Разделение лута по уровням, особенно если присутствует крафт. Опять же, продуманно заранее. Если из моба должны выпадать вещи, используемые в крафте,– они должны соответствовать уровню в крафте, допустимого на этом уровне игрока. Стандартная система лута для этого подходит мало, чуть ниже вернемся к этому пункту.
3. Должны быть продуманны ограничея для «самых умных». Например: за моба много выше по уровню давать не очень много опыта. (Близзард поступил совсем жестко – игрок ниже моба на 4-6 уровней имеет большие проблемы с попаданием в такого противника. Подобное в принципи можно сделать и для НВН). Некоторые ограничения (например радиус stealth для rogue зависит от разницы уровней моба\игрока) сложно реализовать в НВН, но не нужно забывать поставить мобам соответствующий скилл. Ибо нефиг.
4. Если используются разного вида скрытые двери, квесты основанные на каком-то скилле и т.п. – все должно подчиняться тому же правилу.

Список можно продолжать и дальше, но основа должна быть понятна. Что подводит нас к непопулярному в россии пунтку – планирование J Сколько вы знаете полностью распланированных еще до создания шардов? :P Очень мало.

\\если кому захочется обсудить - просьба не здесь, создайте тему.
Добавлено в [mergetime]1118613425[/mergetime]
Система лута:

Немного вернемся к системе лута. Стандартная система до жути страшна и неудобна. Учить\править что-то чужое, буржуйское – тоже не всегда удобно. В идеале – составить ТЗ и реализовать удобную систему силами того же форума.

Попытаемся описать такую систему, которая нас бы устраивала:

1. Шарды бывают разные. Кто-то использует SQL, кто-то нет. Неплохо бы заранее об этом подумать и сделать универсальную систему.
2. Выпадающий лут обязан зависить от тега\расы\уровня\класса и т.п и т.д. моба. Т.е. хорошо бы иметь возможность задать в правилах зависимость от любой информации, что можно получить с моба.
3. Иногда нужна зависимость от уровня\класса игрока. (для наград например).
4. Нужна возможность группировать похожие предметы. Скажем если должно выпадать плохенькое оружие – это не обязан быть всегда топор. Хотелось бы сделать группу «плохенькое оружие» и в ней перечислить теги плохенького меча, топора, кинжала и т.п. Возможно даже с указанием шанса выпадания конкретного предмета.
5. Разрешить «вложение» групп. (Если в пред. Примере мы создали группу «плохенькое оружие», то в группе «оружие» мы можем перечислить уже не теги конкретных вещей, а указатели на группы «плохенькое оружие», «среднее», «хорошее» и т.п. Опять же, возможно с указанием шанса выпадения вещи из конкретной группы или же просто рандомно один предмет из группы.)
6. Сам текст групп и правил должен быть читабелен. Т.е. скорее всего это должен быть не готовый скрипт, а своего рода шаблон\файл описания. В этом случае мы можем по правилам (лучше всего конструктором) создать шаблон и его превратить в скрипт (для SQL версии и обычной. Но это вариант максимум )
7. Следующим пунктом идут правила. До этого пункта мы (предположительно) описали группы однотипных предметов, теперь нам нужно задать правила сопоставления. Скорее всего в скрипт будет передаваться информация об «убитом» мобе, открытом сундуке и т.п. Из нее мы берем всю нужную нам информацию (основая – тег, но может быть что угодно, включая локацию (может кто захочет жестко в тулсете прописать предпочтительные уровни в переменных зоны)) На основе правил ищем что выпадет.
пример (полностью абстрактный, просто чтобы представить)
CODE

[group=”плохенькое оружие”]
tag=tag1 (…может быть что-то еще)
tag=tag2
tag=tag3
[group=”оружие”]
tag=^ плохенькое оружие (не сам тег, а указатель на группу.)
tag=^среднее оружие…

[rules: tag == “nw_human”]
tag=^ оружие chance=50
tag=gold maxcount=100

8. Далее идет обработка нашего шаблона в nwn или sql скрипт. Не считая стадии описания это самая ответственная часть J Собственно сложного тут ничего нет, но поработать надо.
В результате работы может получится примерно следующий скрипт: (все _очень_ примерно)
Neverwinter Script Source
struct result
{
string tag;
int chance;
….
}
struct result GetTagFromGroup(string GroupName,…)
{
    struct result  MyResult;
    if GroupName == “плохенькое оружие” then
  {   
        case Random(3)
        {
            1: MyResult.tag=”tag1”;MyResult.chance=23;break;
            2: MyResult.tag=”tag2”;break;
            3: MyResult.tag=”tag3”;break;
        }
    return MyResult;
  }

}

В случае подгрупп идет рекурсивный вызов той же функции. С правилами чуть посложнее, но не на много.

Что требуется и что получаем:
Требуется все это реализовать. Я займусь, если кого то такая система серьезно заинтересует. Еще лучше если кто-то еще из скриптеров заинтересуется, одному писать и тестить скучно. Еще лучще если это будет кто-то, знающий xml
По сути мы получим свой мини скриптовый язык для описания системы лута (которая учитывала бы любые уникальные теги, их просто нужно будет описать. В идеале все будет понятно не скриптеру. Сам скрипт предпологается писать на чем-то кроссплатформенном, скорее всего на перле.
Если на шарде используется крафт - _очень_ просто все касаемое выпадения\добывания лута вставить сюда.

Теперь чуть подробнее на деталях.
В папке с модулем лежит файл itempalcus.itp, который отлично открывается NWN Explorer’ом. Это описание плюс ресреф всех кастомных вещей модуля. Есть подобные же стандартный файл, itempalstd.itp в одном из паков с игрой. Если создавать простейший конструктор, то не придется вспоминать теги.
(для примера – посмотрите тут http://kaa.mhost.ru/cgi-bin/items.cgi . Это скрипт на js для нашего крафта на Миде. Данные в правом поле берутся из файла, полученного в результате экпорта itempalcus.itp с помощью NWN Explorer’а.)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- _kaa_   Планирование шарда   Jun 13 2005, 00:53
- - mamuc   ...узнаю систему лута ... у меня еще где то должен...   Jun 13 2005, 09:48
- - aleVandal   Мне приходилось писать систему лута. Проблемму с м...   Jun 16 2005, 14:27
- - dumbo   QUOTE (al'Vandal @ Jun 16 2005, 15:27)Ес...   Jun 16 2005, 16:23
- - _kaa_   QUOTE (al'Vandal @ Jun 16 2005, 14:27)Ес...   Jun 17 2005, 14:20
- - aleVandal   QUOTE Ты не внимательно читал, я нигде не говорил ...   Jun 17 2005, 18:03
- - RiPPeR   Все делается через nwnx + plugins   Jun 18 2005, 21:23
- - _kaa_   Система пермаментной смерти Да,да. Оно самое Ка...   Jul 13 2005, 22:28
- - RiPPeR   _kaa_, ты наш закрытый форум не читал? Про лут в x...   Jul 14 2005, 01:25
- - _kaa_   QUOTE (RiPPeR @ Jul 14 2005, 01:25) _kaa_, ты наш ...   Jul 14 2005, 11:40
- - RiPPeR   Я про наш закрытый форум разработчиков шарда, про ...   Jul 14 2005, 17:43
- - _kaa_   QUOTE (RiPPeR @ Jul 14 2005, 17:43) Я про наш закр...   Jul 14 2005, 18:48
- - Batkom   На самом деле все скрипты лута описаны в скрипте #...   Aug 12 2005, 04:14
- - _kaa_   Важных моментов слишком много и движок не слишком ...   Aug 13 2005, 11:26
- - dumbo   QUOTE (Rhomal @ Apr 25 2005, 17:45)Last I he...   Aug 13 2005, 14:40
- - Flaristan   Заранее извиняюсь за некропостинг, но прав на созд...   Jun 4 2011, 04:44
- - Laajin   * Щас тебе отпишутся не любители (не желатели) заб...   Jun 4 2011, 08:19
- - Keks   Флер, я уже давно жду твой модуль, в котором будет...   Jun 4 2011, 10:23
- - Flaristan   to Laajin: НВН/Аврора – отличная платформа для игр...   Jun 5 2011, 00:39
- - Keks   Жесть, люди пора и ему выделить отдельную палату и...   Jun 6 2011, 22:15
- - Flaristan   Как-то совсем глухо...   Jun 9 2011, 03:58
- - Agarwaen   Флер, ты ожидаешь, что сотни людей начнут писать: ...   Jun 20 2011, 07:53
- - Keks   А я и жду мод Флэра с нетерпением жду, хоть и учас...   Jun 22 2011, 20:25
- - Rewazer   ЦитатаА я и жду мод Флэра с нетерпением жду, хоть ...   Jun 23 2011, 08:15
- - denis0k   Если тут хоть кто-нибудь хоть что-нибудь полноценн...   Jun 23 2011, 11:18
- - Keks   А хз, вот альфатесты равена например уже были раза...   Jun 23 2011, 21:14
- - Flaristan   Цитата(Agarwaen @ Jun 20 2011, 07:53) Фле...   Jun 24 2011, 02:51
- - bibinoka   Ох, а я уж обрадовался..   Jul 3 2011, 00:14
- - Flaristan   В любом случае, после сооружения беты, модуль скор...   Aug 21 2011, 04:21


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 24th April 2024 - 11:28