Автор Тема: Туториал по созданию собственных существ  (Прочитано 8012 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MebelMan

  • Постоялец
  • ***
  • Сообщений: 243
  • PULL DAMN LEVER !!!
    • Просмотр профиля
В этой теме буду пилить статью по созданию своего существа с нуля, используя почти неограниченные возможности движка DF.
Буду подробно разбирать материалы, слои, токены и прочую чепуху.

В первую очередь статья создается для желающих поучаствовать в FFT.

Итак, каждое существо в игре имеет части тела. Внутри тела находятся жизненно и не очень важные органы. И органы, и части тела имеют так называемые слои, указывающие на ткань, из которого они состоят, а также его толщину и материал.

К примеру, рука состоит из материала SKIN (кожа), FAT (жир), MUSCLE (мышца), BONE (кость). Также каждый слой имеет свою толщину и материал, от которых зависит то, какую силу нужно приложить, чтоб повредить его. Например, слои ноги гуманоида обычно имеют следующую толщину: кость - 25, мышца - 25, жир - 5, кожа - 1.

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

В этом туториале мы создадим свое существо "с чистого листа", из готовых файлов используя лишь материалы, так как создавать их с нуля - мозахизм.

1 Часть.

Создайте в папке raw/objects новый текстовый документ с названием, к примеру, body_mymonster.txt. В этом файле мы создадим все части тела для нашего будущего существа. Конечно, логичнее было бы использовать существующие, но важно понять как это работает.

Итак, мы создали файл. Открываем его и в первой строке пишем его название (без расширения .txt), в нашем случае это body_mymonster. Это очень важно, если название файла и первая строка будут отличаться, то игра не сможет прочитать нашу равку. Пропускаем одну строку и пишем на следующей [OBJECT:BODY]. Эта строка указывает, что объект (наш текстовый документ, равка) содержит в себе части тела, которые потом можно будет использовать для создания существа. Пропускаем еще одну строку.

Во избежание ошибок буду периодически показывать, как должна выглядеть равка. Сейчас это:[
body_mymonster

[OBJECT:BODY]

Вы, заглядывая в описание мертвого существа во время игры в Fortress Modе, наверняка замечали надпись "his upper body is gone." во всех случаях, даже если верхняя половина тела на месте. Тут дело в движке игры, сейчас объясню.

В игре присутствуют так называемые "токены". Токены существуют разные, одни подходят для существ, другие для материалов, третьи для цивилизаций. Каждый токен указывает игре на то, что умеет объект, к которому он привязан (точнее, какими особенностями обладает или типа того). Вот, к примеру, токен [INTELLIGENT] в теле объекта типа существо дает этому существу возможность думать, строить, использовать оружие и т.д., то есть просто делает его умным. Токен [NERVOUS] в параметрах части тела говорит о том, что она имеет нервы, при повреждении которых откажет (откажет не только эта часть тела, но и связанные с ней части, например задет нерв предплечья - отказывает и вся рука от локтя и ниже вместе с ним). Таких токенов множество.

Итак, вернемся к отсутствующей верхней половине тела. Существует токен [UPPERBODY], идентифицирующий ее. Этот токен у существа может иметь только одна часть тела. Соль в том, что ЛЮБОЕ существо, которому отрубают часть тела, содержащую токен [UPPERBODY], сразу умирает. Не зависимо от того, сделано оно из адамантина или это просто кусок мяса. Эта особенность игрового движка жестко закодирована и мы не можем на это повлиять.

Можно сделать существо, у которого тело не будет разделено на верхнюю и нижнюю половины (к примеру - cave blob). Такое существо нельзя разрубить. Чтоб убить его, мы должны обезвредить часть тела, содержащую известный нам токен. Это можно сделать, повредив нерв или мозг. Также существо может умереть от потери крови, но это касается только живых существ.

Исходя из этого всего нетрудно понять, что демон или ФБ, не имеющий ни крови, ни нервов, тело которого состоит только из одной части, непобедим (ибо я не совсем уверен в наличии у них мозга).

Продолжим работу с нашим существом. Сейчас мы создадим тело, состоящее из верхней и нижней половины. Скопируйте в нашу равку, а лучше - запишите, следующий код:
[BODY:MY_2PARTBODY]
[BP:UB:upper body:upper bodies][UPPERBODY][CATEGORY:BODY_UPPER]
[DEFAULT_RELSIZE:1000]

[BP:LB:lower body:lower bodies][LOWERBODY][CON:UB][CATEGORY:BODY_LOWER]
[DEFAULT_RELSIZE:1000]

Первая строка создает объект типа BODY c уникальным идентификатором MY_2PARTBODY. Если идентификатор не будет уникален, произойдет крэш.
Этот объект будет содержать несколько частей тела, КОНКРЕТНО этот - верхнюю и нижнюю части торса.
Рассмотрим вторую строку.

[BP:LB - создание части тела (ВР) и определение для нее идентификатора (LP).

upper body:upper bodies] - название части тела в одиночном и множественном числе.

[UPPERBODY] - токен, о котором мы говорили. Его можно вставить куда угодно, но лучше не путаться. Позволяет носить панцири, кольчуги, рубашки и т. д.

[CATEGORY:BODY_UPPER] - название категории (сюда можно вписать что угодно, потом это можно будет использовать для соединения с другими частями тела, но в отдельных случаях, которые мы рассмотрим позже).

[DEFAULT_RELSIZE:1000] - определяет размер части тела как 1000. Размер влияет на вероятность попадания по ней.

Переходим к нижней части тела:

[BP:LB:lower body:lower bodies] - то же, что и в верхней части: ИД и название.

[CON:UB] - CON - сокращение от английского слова connect, что означает "соединять". После двоеточия находится идентификатор верхней части тела. Таким образом, токен [CON:UB], принадлежащий чему-либо (у нас это - нижняя часть тела) соединяет ее с верхней частью тела.

[LOWERBODY] - обозначает объект как нижнюю часть тела. Позволяет носить платья, штаны и т. д. Если отрубить часть тела с этим токеном - существо умирает.

[CATEGORY:BODY_LOWER] и [DEFAULT_RELSIZE:1000] - то же, что и в предыдущем объекте.

Поздравляю! Мы только что создали и разобрали тело нашего будущего существа. Но такое тело игра не сможет прочесть, потому что мы не обозначили для него материал. Этим мы займемся чуть позже, сейчас создадим руки, ноги, голову, органы и т.д.
« Последнее редактирование: 01 Декабря 2011, 11:54:17 от MebelMan »
Wolf cancels Breathe: Interrupted by ?Copper Bolt?

Оффлайн Dvorovic

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 479
  • Вдарим по земле!
    • Просмотр профиля
Re: Туториал по созданию собственных существ
« Ответ #1 : 30 Ноября 2011, 17:56:22 »
А чего не в вики?

Оффлайн MebelMan

  • Постоялец
  • ***
  • Сообщений: 243
  • PULL DAMN LEVER !!!
    • Просмотр профиля
Re: Туториал по созданию собственных существ
« Ответ #2 : 30 Ноября 2011, 18:57:55 »
В вики позже, когда тут будет полностью готово.
К тому же, тут можно отвечать на вопросы.
Wolf cancels Breathe: Interrupted by ?Copper Bolt?

Оффлайн MebelMan

  • Постоялец
  • ***
  • Сообщений: 243
  • PULL DAMN LEVER !!!
    • Просмотр профиля
Re: Туториал по созданию собственных существ
« Ответ #3 : 30 Ноября 2011, 20:36:13 »
Теперь скопируйте в равку следующий код:

[BP:MRUA:right upper arm:STP][CONTYPE:UPPERBODY][LIMB][RIGHT][CATEGORY:ARM_UPPER]
[DEFAULT_RELSIZE:200]
[BP:MRLA:right lower arm:STP][CON:MRUA][LIMB][RIGHT][CATEGORY:ARM_LOWER]
[DEFAULT_RELSIZE:200]
[BP:MRH:right hand:STP][CON:MRLA][GRASP][RIGHT][CATEGORY:HAND]
[DEFAULT_RELSIZE:80]

C первой строкой все понятно.
Вторая:

[BP:MRUA:right upper arm:STP] - создаем часть тела с идентификатором MRUA (My Right Upper Arm), названием right upper arm и с названием в множественном числе типа единственное число + s, так как правая рука у существа одна (STP, по-видимому, значит same a s the plural).

[CONTYPE:UPPERBODY] - CON - connect, TYPE - токен (тип токена). Я не знаю как это называется, назову просто "часть". Эта часть соединяет часть тела СО ВСЕМИ другими частями тела, в которых присутствует токен [UPPERBODY]. Но аппербоди у нас один, так что разницы между CON и CONTYPE в данном случае никакой. Для тех, кто еще не понял - CON используется для соединения с КОНКРЕТНОЙ частью тела, то есть после двоеточия указываем идентификатор.

[LIMB] - этот токен позволяет использовать эту часть тела в время борьбы (wrestling), как то: захватывать части тела, ломать их, бросать на землю и т. д.

Токен RIGHT указывает, с какой стороны по отношению к существу находится часть тела. Если враг будет атаковать с противоположной (левой) стороны, то у него будет меньше шансов попасть.
[GRASP] - позволяет хватать этой частью тела что-либо, использовать оружие, переносить шмотки и т. д.

body_mymonster

[OBJECT:BODY]

[BODY:MY_2PARTBODY]
[BP:UB:upper body:upper bodies][UPPERBODY][CATEGORY:BODY_UPPER]
[DEFAULT_RELSIZE:1000]

[BP:LB:lower body:lower bodies][LOWERBODY][CON:UB][CATEGORY:BODY_LOWER]
[DEFAULT_RELSIZE:1000]

[BP:MRUA:right upper arm:STP][CONTYPE:UPPERBODY][LIMB][RIGHT][CATEGORY:ARM_UPPER]
[DEFAULT_RELSIZE:200]
[BP:MRLA:right lower arm:STP][CON:MRUA][LIMB][RIGHT][CATEGORY:ARM_LOWER]
[DEFAULT_RELSIZE:200]
[BP:MRH:right hand:STP][CON:MRLA][GRASP][RIGHT][CATEGORY:HAND]
[DEFAULT_RELSIZE:80]

Итак, у нашего урода сейчас есть нематериальное тело без органов и с правой рукой. Вместо левой руки вставим ему голову.


Добавьте следующую часть кода:
[BP:NK:neck:STP][CON:UB][CATEGORY:NECK][LEFT]
[DEFAULT_RELSIZE:300]
[BP:HD:head:STP][CON:NK][HEAD][LEFT][CATEGORY:HEAD]
[DEFAULT_RELSIZE:400]

Часть NK - это шея, торчащая из того места, где должна быть левая рука. К шее прикреплена голова (идентификатор HD), имеющая токен [HEAD]. Этот токен позволяет носить на части тела головные уборы. Если эта часть будет отрублена (вне зависимости, есть там мозг или нет), существо умрёт.
« Последнее редактирование: 25 Мая 2012, 12:15:15 от MebelMan »
Wolf cancels Breathe: Interrupted by ?Copper Bolt?

Оффлайн Вегаст

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
MebelMen

Ты будешь продолжать?

Н...  Нет?...
 :(

Оффлайн PresDan

  • Постоялец
  • ***
  • Сообщений: 147
  • будь истинным дварфом - пей до потери пульса!!!
    • Просмотр профиля
мебель, тебя не разобрали, нет?
Много есть игр во всём интернете:
Хороших, плохих, графоном прелестным
Но все эти игры мне нипочём,
В Dwarf Fortress играю я ночью и днём
(с) PresDan

Оффлайн MebelMan

  • Постоялец
  • ***
  • Сообщений: 243
  • PULL DAMN LEVER !!!
    • Просмотр профиля
я жив, цк блт  >:(
Wolf cancels Breathe: Interrupted by ?Copper Bolt?

Оффлайн dub

  • Постоялец
  • ***
  • Сообщений: 206
    • Просмотр профиля
этот топик перенести бы в ветку "моддинг", а то устал по форуму ее искать =)

Оффлайн Likot

  • Старожил
  • ****
  • Сообщений: 302
  • I like soap...mmm
    • Просмотр профиля
Да, тутор весьма занятный, хочется продолжения.
Likot Soapeater

Оффлайн BullyFrol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Туториал по созданию собственных существ
« Ответ #9 : 01 Сентября 2013, 19:03:09 »
И все? продолжения не будет? Жаль. Нам нужно больше монстров! Всяких разных и ужасных!