merge master
This commit is contained in:
commit
cc017e3781
156
TODO
156
TODO
@ -16,22 +16,16 @@ Basics:
|
|||||||
- ai
|
- ai
|
||||||
- dijkstra maps
|
- dijkstra maps
|
||||||
Tech:
|
Tech:
|
||||||
+ fix connector position
|
+ fix connector position - 1 tile inside
|
||||||
- xecutors fov algo
|
|
||||||
- M.Kitsch fov algo
|
|
||||||
- milazzo fov algo
|
|
||||||
- naive bresenham algo
|
|
||||||
|
|
||||||
Assets and i18n:
|
Assets and i18n:
|
||||||
move tile settings to json:
|
- move tile settings to json, generate from there (part of prefabs)
|
||||||
+ tile export
|
|
||||||
- tile import
|
|
||||||
- prepare all interface entries for i18n
|
- prepare all interface entries for i18n
|
||||||
- all texts (terrain, mobs, quests) also in at least 2 languages
|
- all texts (terrain, mobs, quests) also in at least 2 languages
|
||||||
|
|
||||||
ECS & engine:
|
ECS & engine:
|
||||||
- systems message queue
|
- implement time queue (how to deal with closures?) (?) github.com/thefish/scheduleq - get rid od time.Now inside
|
||||||
- implement timeQueue (how to deal with closures?) (?) github.com/thefish/scheduleq - get rid od time.Now inside
|
|
||||||
- move all rendering to systems
|
- move all rendering to systems
|
||||||
- try to move input handling to systems
|
- try to move input handling to systems
|
||||||
|
|
||||||
@ -45,20 +39,146 @@ Dungeon and branches:
|
|||||||
+ compose from gens and prefabs
|
+ compose from gens and prefabs
|
||||||
- editor for prefabs
|
- editor for prefabs
|
||||||
Mapgen:
|
Mapgen:
|
||||||
+ use delaunay -> minimum spanning tree for room connection (Краскал в gonum)
|
+ use delaunay -> minimum spanning tree for room connection (Краскал в gonum)
|
||||||
github.com/algds/kruskals - MST
|
github.com/algds/kruskals - MST
|
||||||
github.com/esimov/triangle - delaunay
|
github.com/esimov/triangle - delaunay
|
||||||
- или граф относительных окрестностей (?)
|
- или граф относительных окрестностей (?)
|
||||||
|
- clustered (place in one area and displace top to bottom moving FROM center)
|
||||||
|
- BSP (split, parent, child, next, iterate)
|
||||||
|
|
||||||
Combat:
|
Combat:
|
||||||
- generate skeleton / intesines / muscle / eyes&ears & fingers from templates
|
- generate skeleton / intesines / muscle / eyes&ears & fingers from templates
|
||||||
- serializable
|
- serializable
|
||||||
- config in json files
|
- config in outer files
|
||||||
- mass
|
- mass
|
||||||
- damage from skill / mass / speed / material density
|
- damage calculated from:
|
||||||
|
kinetic energy is calculated by mass / speed / material density (p = mv) масса на скорость = кинетическая энергия
|
||||||
|
next you determine target and its subpart (accuracy appied)
|
||||||
|
next we calculate the area, on which kinetic energy is applied (determined by piercing, hacking, crushing damage profile) находим площадь
|
||||||
|
next we calculate
|
||||||
|
|
||||||
|
skills determine speed, acceleration, and accuracy
|
||||||
|
accuracy is diff between where you aimed and where you actually applied the impulse
|
||||||
|
|
||||||
|
- как устроена тушка:
|
||||||
|
- иерархически - есть корень, у которого есть ветки и листья - как в классическом дереве, Ветки - [конечности]. Для каждой указан [относительный размер].
|
||||||
|
- функциональные системы
|
||||||
|
- [скелет] : череп, хребет, кости - отвечает за движение и применения силы
|
||||||
|
[Полезные инструменты]:
|
||||||
|
челюсти и зубы, когти, хвосты, хватательные всякие пальцы и ладони, лапы, копыта, рога, жала
|
||||||
|
- [обмен жидкостью] - сосуды, артерии, сердце, селезенка(иммунитет втч) - доставка энергии до всех конечностей
|
||||||
|
именно по этой жидкости считается гидроудар
|
||||||
|
- [получение и накопление энергии (ЖРАТ)] - желудок, кишки, печень(сопротивляемость ядам втч), селезенка(да, 2 системы)
|
||||||
|
- [нервные импульсы] - мозги, нервная ткань - передача урпавляющих импульсов
|
||||||
|
[Полезные инструменты]:
|
||||||
|
- [зрение] - глаза (или аналоги) и нервы
|
||||||
|
- [слух] - уши (иил аналоги) и нервы
|
||||||
|
- [обоняние] - нос и нервы
|
||||||
|
- [осязание] - кожа (вибриссы, антенны) и нервы
|
||||||
|
- [полезные инструменты] - .
|
||||||
|
крепятся к скелету
|
||||||
|
дают эффекты вроде возможности видеть, нюхать, хватать, стоять и ходить, ползать, бросать, царапать, бить, кусать и колоть, одевать итп
|
||||||
|
|
||||||
|
В этом смысле экипировка тоже входит в организм через конечность с соответствующей функцией, и требует дополнительного
|
||||||
|
|
||||||
|
|
||||||
|
Для каждого узла дерева веток/конечностей есть список [слоев тканей] (для каждого указана толщина) и [органов], которые там располагаются.
|
||||||
|
(прим - сделать наследуемые шаблоны [конечностей] - для гуманоида, четвероногого итп и [слоев тканей] -
|
||||||
|
млекопитающее, земноводное, рептилия, головоногое и шаблон [органов])
|
||||||
|
Для каждой системы есть необходимый для функционирования список органов и реально располагаемый (два сердца anyone?)
|
||||||
|
Для каждого слоя в конечностях обозначается система, которой он принадлежит.
|
||||||
|
Для каждого органа в конечностях обозначается система, которой он принадлежит.
|
||||||
|
Пока органов, соединенных по всему дереву тканями больше, чем необходимо по минимальному списку - все в порядке. При потерях система выходит из строя:
|
||||||
|
- Нервная система - отключается _все_ действия ниже по дереву. Полная остановка/уничтожение - помираем.
|
||||||
|
- Обмен жидкостью - начинаем терять уровень внутреннего давления, как только он ниже критического - помираем
|
||||||
|
- Скелет - теряем возможности соответствующие поврежденной части отсюда и ниже по дереву. При обнажении CORE - помираем (разрубили пополам, блин!)
|
||||||
|
- Энергия (ЖРАТ) - при повреждении чувствуем себя плохо (деориентация), в перспективе - прекращение притока энергии и остановка обмена жидкостью и неврной деятельности, т.е. помираем
|
||||||
|
Кроме того, при потерях растет уровень боли. При превышении критического порога - помираем от болевого шока
|
||||||
|
(оторвали мишке лапы? помирает прямо тут, не ждем потери давления крови).
|
||||||
|
|
||||||
|
|
||||||
|
- как считать дамаг:
|
||||||
|
находим [кинетическую энергию] = масса на скорость движения. Для массы плотность, для скорости - характеристики тушки
|
||||||
|
находим цель и в ней часть куда всё это попадет (применяется скилл меткости для нахождения разницы между заявленным и получившимся)
|
||||||
|
Это не только смещение по частям, но и максимальная глубина проникновения в слоях (исходя из скиллов, удади и профиля оружия)
|
||||||
|
(тут нужно подумать о кинематике движения, хотя можно обойтись рандомом)
|
||||||
|
находим площадь, на котрую придется кинетическая энергия (профиль оружия - колющий, режущий, давящий)
|
||||||
|
[импульс] = [остаток импульса] = [кинетическая энергия] / [площадь]
|
||||||
|
|
||||||
|
находим слои, покрывающие эту [площадь] (от наружных к внутренним до core)
|
||||||
|
|
||||||
|
Инициализируем [счетчик всего времени соударения]
|
||||||
|
|
||||||
|
По каждому слою внутрь:
|
||||||
|
Делим [остаток импульса] на [время соударения] (определяется _упругостью_ материала СЛОЯ)
|
||||||
|
Добавляем [время соударения] к [счетчику всего времени соударения] (нужен для расчета гидроудара позже)
|
||||||
|
Делим [остаток импульса] на [площадь поперечного сечения ударной части]
|
||||||
|
(скажем для давящего - результат 5/2 , для режущего - 1, для колющего - 1/4)
|
||||||
|
получаем характеристику удара: [давление] силу поделенную на площадь (скажем в ньютонах / м2)
|
||||||
|
Сравниваем с хрупкостью материала слоя: если [давление] * [счетчик всего времени соударения] > [предела хрупкости]
|
||||||
|
то провалено - разрушается ВЕСЬ СЛОЙ в пределах части -> переходим к следующему слою, не уменьшая [остаток импульса]
|
||||||
|
Сравниваем [остаток импульса] с [ударной вязкостью материала]:
|
||||||
|
Так как ударная вязкость в джоулях, а импульс в ньютонах - умножаем остаток импульса на [толщину слоя] / [площадь],
|
||||||
|
это произведение вычитаем из [остатка импульса]
|
||||||
|
Если от импульса еще что-то осталось -> переходим к следующему слою, иначе выходим
|
||||||
|
Если слои кончились, а от импульса еще что-то осталось:
|
||||||
|
Считаем off-balance / сбитие с ног / отправление в полет - для дубин это будет часто =)
|
||||||
|
Пороговые значния придется подбирать.
|
||||||
|
|
||||||
|
foreach [список поврежденных слоев]:
|
||||||
|
смотрим какие штуки находились в этой части в этом слое, роллим [поцарапан / проткнут / ушиблен / уничтожен].
|
||||||
|
- Для экипировки - применяем повреждения (ухудшаем зарактеристики)
|
||||||
|
- Для органов - добавляем к кровотечению кровооборот органа, добавляем к уровню нервной нагрузки "важность" органа
|
||||||
|
- При разрушении связок / нервов / мыщц / костей - отключаем всё что их требует ниже по дереву тушки
|
||||||
|
|
||||||
|
|
||||||
|
Расчет гидроудара (специально для дубин и проч):
|
||||||
|
есть [площадь], [время], [импульс]
|
||||||
|
но считать колебания и скорость звука в жидкой среде (а это километры в секунды) считать дорого, просто передаем
|
||||||
|
топ-3 внутренним [слоям] и [органам], чья [жесткость? слоя] и [относительный размер|органа] больше всех остальных
|
||||||
|
тут присутствующих 30% от [импульса] умноженного на [площадь] / [счетчик всего времени соударения]. Таким образом,
|
||||||
|
надетые доспехи и поддоспешник оставоляют вероятность сломать кость, а вот три слоя брони - уже нет.
|
||||||
|
|
||||||
|
|
||||||
|
Но поскольку такой симулятор скотобойни за одно и то же тело быстро приестся - играем за иллитида/мозгового слизня, который
|
||||||
|
берет разые тушки под контроль, выбрасывает по мере использования и берет новые.
|
||||||
|
|
||||||
|
Соответственно направления развития
|
||||||
|
- Зов - приманивает тушки получше
|
||||||
|
- Контроль - позволяет более полно использовать инзначальные возможности тушки, или даже применять новые
|
||||||
|
- Мутации - отращивание и улучшение тушки, замена материалов, дополнительные конечности/органы, смена шаблона тканей, переход на другой [метаболизм] итп.
|
||||||
|
- Внедрение и изъятие - запоминание умений тушки и внедрение в другие - от пользования дубиной до телепортационных заклинаний
|
||||||
|
|
||||||
|
За опыт открываются [слоты] для этих возможностей. Макисмальное количество ограничено (скажем 7)
|
||||||
|
За применения [умений тушки] можно получить ее умения в [слот] (направление контроль).
|
||||||
|
Любое [умение] занимает какой-то % от слота, может быть больше размера слота. [Объединить слоты] в один больший (но
|
||||||
|
меньший по размеру чем сумма начальных двух) можно только за [эпические свершения] - сдачу квеста или победу над OOD.
|
||||||
|
За жти же [эпические очки] открываются новые [умения] в ветках (ограничить деревом скиллов?).
|
||||||
|
При [гибели тушки] теряются рандомные [слоты] вместе с [умениями] что в них были (не складывайте яйца в одну корзину!).
|
||||||
|
Если заметят и уничтожат собственно иллитида - game over, high score.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- no hitpoints! blood is the life source
|
- no hitpoints! blood is the life source
|
||||||
- pain is measure of nervous system load, lose conscience if its aboe threshold
|
```
|
||||||
|
[CORE] -> [BODYPART] -> [BODYPART] ...
|
||||||
|
has PARENT bodypart or core
|
||||||
|
Has layers of material:
|
||||||
|
|
||||||
|
[BONE]
|
||||||
|
|
||||||
|
[TENDON] / [LIGAMENT] / [CARTILAGE]
|
||||||
|
[MUSCLE]
|
||||||
|
[FAT]
|
||||||
|
[SKIN]
|
||||||
|
[FUR] / [HAIR] / [EYE] / [EAR]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Quest engine:
|
Quest engine:
|
||||||
- look at parsers like URQL etc
|
- look at parsers like URQL etc
|
||||||
- distorted Aschenputtel story / partisans / rapist prince / Grey Mountains
|
- distorted Aschenputtel story / partisans / rapist prince / Grey Mountains
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user