// --- управление
= Кнопка прыжка.
= Кнопка первого слота (расходников, абилок).
Добавочные 4 слота (2,3,4,5) тож со своими кнопками, но через бок-шыфт.
Другой боковой шыфт - проявляет курсор (направы компаса двигают курсор),
и 2 секунды, после отпускания курсор-шыфта, значок курсора виден,
и если успеть дожать некий расходник в это время, то расходник попытается
учесть положэние курсора, но могут быть расходники, которые игнорят курсор.
// А те, которые не игнорят, и когда курсора не видно - избирают умолчанку
// направления, учитывая куда смотрит герой.
Допустим, что удар хлыста - это две кнопки.. хлыст_влево и хлыст_вправо.
Чтобы бить наверх, можно зажать _север, и обе кнопки будут бить наверх,
но наверна, удар по ходу движухи не остановит, а другой - остановит героя.
// присесть = быстро остановить героя, при авто-шаге.
Каким-то образом, включили полёт на крыле
(расходуем огне-бутылки - одну в 5 секунд, или типа того).
Удары хлыстом можно воспринимать как влияние на скорость, по отпусканию
кнопки - ускорить, по нараву полёта, и наоборот.
Прыжок - спрыгиваем с крыла - закончили полёт.
Включили облако полёта - прыжок меняет направление полёта (там капризно).
А удары хлыст-цэпью остаются обычными - как-будто на лифте катаемся.
Комбы..
// Хлыст реализуем через кастинг, который не прерываем ходьбой,
// и мелкими ранами (можно вобше не прерывать, а потом поглядеть).
// Длительность около 0.5 секунды, но тож можно пробывать.
// Все комбы связаны лиш с хлыстом.
Про все эти комбы - где-то можно найти страницу книги, чтобы почитать
инструкцию по применению, и деталям.
= усил = вбок, наверх + удар, если был спец-предмет с пасивкой, и если
случился крит = эфект какого-то усиления на героя
(над головой выспышка, и добавка в сумку эфектов).
Если часто криты вылетают - эфект будет постоянен ?
Вероятно, можт быть два таких эфекта, одинаковые визуально, но
один из них, как пустышка - пока есть любой из этих эфектов, нельзя
получить новый из этой парочки.
(требуем 2+ сегментов цэпи-хлыста)
= круг_истины = вбок, вниз (приседаем, останавливаемся), другой бок,
и удар в последний бок - если в начале кастинга хлыста это увидели,
то заменяют сразу на аниму кругового маха, с шлейфом, как у радара.
В итоге, сегменты хлыста сбрасывают, негативный эфект (один перво-встречный)
сбрасывают (среди списка негатива - пустышка _цэпь_ап). И отдельно
проверяют влияние круга на камни основы - кого-то могут убрать.
(требуем 4+ сегментов цэпи-хлыста)
// Значит, все камни, которые _ложные_пропускают полностью - их надо
// отмечать триг-нодами, где название цели подразумевает TileMap,
// где надо _убрать тайл, куда проявляется позиция тригера ...
Вобшем, можно учесть и значение тригера, как новый тайл (-1 == убрать),
но надо придумать _зацэпку - возможно, сканим спец-слой, где
подразумеваем все такие тригеры (от событий на элементы локации).
= оглушалка (требуем 3+ сегментов цэпи-хлыста) (или авто-шагание) =
факт _на_опоре, наверх, вбок + удар в нужный бок, факт попадания, который
определяют прямо перед стартом кастинга - иногда нет даж монстра рядом,
и попадания быть не можт, иногда монстр есть, но меткость лажанула.
Вобшем, смысл придумался вдруг - если монстра не было под хлыстом, то
стартуем авто-шаг, а если монстр был, и меткость сработала - оглушалку
запускает - от центральной вертикали, как молотком долбим ... лиш
по одному монстру, которого как-то избрали среди других _под_хлыстом.
= вертушка (лёгкое комбо) - надо иметь колво хит-поинтов вышэ какого-то
порога, и жать левый и правый хлыст, вмеру быстро - герой будет крутить
хлыст над головой - можно сшыбать мелких летунов (винт не прерывают).
(требуем 5+ сегментов цэпи-хлыста)
// Вероятно, макси-длительность около 5 секунд, и 5 сек откат.
При каком-то чудо-предмете, пасив эфект от него можт давать
огне-добавку - визуально спрайты вертушки другого красного цвета,
и урон добавлен огненый - чуть круче, и можно подсветку добавлять.
(если где-то совсем темно - используй по откату).
// Конечно, такой приём напрашывается, в роли парашута, когда герой
// падает, но плавно, и подруливаем - хлыст-винт можно колизить
// лиш с врагами, чтобы об скалы не задевать, и оставить лёгкость приёма.
// --- были разные наброски сложностей вокруг хит-бара.
Здесь набросок от 31 января..
// хит-бар, жызне-мер, хит-поинты - это синонимы одного термина.
Термин "кубик здоровья героя" (только у героя) - от 3 до 6 единиц.
Изначально (норм-тренировка), каждый кубик хранит 3 единицы.
И у героя, всего два кубика = 6 хит-поинтов (1-й ранжыр героя). Можно
мирными делами, и разбиванием бочек и горшков, повысить герою ранжыр,
и за каждое повышэние ранжыра, игра добавляет пару кубиков здоровья.
// 2-й ранжыр = 12 хит-поинтов, 3-й = 18 хитов. (ранжыр * 2 * куб_ед).
// Можно потом переделать, чтобы три кубика за ранжыр.
Переход в хард-реальность ставит кубику 4 единицы - весь жызнемер
увеличился на треть. После этого, два спец-события доводят кубик до 6.
При каком-то эфекте обороны, у кубиков есть шанс игнорить _остаток_урона.
Но обычно, героя раним так (когда кубик = 3)..
1. снизили число урона (бронёй, или стихийным срезом) = получили 5.
2. отнимаем 2 кубика в _реген_баре, округляя в большую сторону с 5 до 6.
3.1 Какие-то наглые атаки могут отнимать из хит-бара _отнятые кубики (-6).
3.2 если видим эфект обороны, то видим, что лиш один полный кубик раним,
и сработал 50% шанс - отбрасываем 2, и урон = 3. Отнимаем из хит-бара 3.
3.3 если оборон-эфекта нет, то отнимаем 5 единиц из хит-бара.
// Надо делать подробную пропечатку всех трёх вариантов, чтобы видеть
// различия, и тюнинговать (наблюдать различия).
После этого, каждый кубик в реген_баре (в доп-механизме), делает реген
каждой единицы (примерно по 2 секунды ожыдания = кастинг).
Если во время кастинг-ожыданий была рана героя, то начинаем реген куба снова.
Как только кубик накопил себя (от трёх до 6 кастингов), то он проверяет
превосходство реген-бара над хит-баром, и если реген-бар большэ, то
хит-поинты копируют число из реген-бара. Пасивно отлечиваемся _рывками.
// Если игрок применил предмет лечения, то хит-поинты подскочили,
// а реген-бар пыхтит, как обычно.
Наверно, крит-раны всегда сбивают реген, норм-урон с шансом 50% сбивает,
а _урон_с_промаха - никогда не сбивает реген - делай героя-уворотчика.
Многое зависит от чисел урона, которыми будут владеть монстры.
Не исключено, что надо умножать на 10, при конвертации кубика в жызнемер.
И обратно делить урон на 10 при отправке в реген-бар.
// 2-й ранжыр = 120 хит-поинтов, 3-й = 180 хитов, 10-й = 600.
// Но не ясно, сколько ранжыров уместно накопить для последнего боя.
В любом случии, все эти сложности можно в любой момент отбросить,
потому-что хит-бар (одно число) будет главенствовать.
... сундук гнома, и наконец эвакуация города Нижний нам засчитывается.
// 5 февраль..
Не исключено, что комнаты, откуда эвакуация идёт - это
некие горизонтальные шахты, с вокзалами, и там капсулы-вагонетки, аля
технологичность, и агенты хотят это место себе - наверно, стратегически
важное - рядом вода, сад фей, вулканическая крепость, капсульные шахты.
(вода - озеро-клякса ошыбочно считалось компактней, при создании формации).
Как случилось, что так много сладкого в одном месте ? гы-гы.
Возможно, была сильная надежда на вулканическую крепость.
Ну и в итоге, местность важную отстояли - литературный накал удержали.
(я сам не смогу тексты выдать, но потенциал вижу)
Ну можно подчеркнуть, что строение формации создавалось _быстро,
и кое-где фигово сложылось.
В любом случии, можно капсульные горизонтальные шахты _взорвать после
эвакуации (возможно, это упомянуть потом, отложэно)
// так более драматично, когда игрок вроде-бы справился и все крутые
// сошлись, а потом игрок узнаёт _какой_ценой - вулканическая крепость
// была просрана, и капсульные шахты взорваны, чтобы не достался ресурс.
// Чтобы не скучно было - пусть агенты смогли что-то особое сделать
// с комнатой кладов - ключевые мученики остались внутри К4, а
// сами сундуки своровали, и куда-то дели.
Вобшем, город Нижний и Кладовая-4 - это пластилин для авторов игры.
Можно пере-кроить потом наиболее выгодно, для разны-образия и литературы.
// Морнинг_стар - это квэстово-событийная финишная прибавка в хлыст,
// когда есть все остальные сегменты.
Можт быть все куски хлыста так сделать - один квэст-предмет по развитию
хлыста, и уникальные ячейки масива, чтобы помнить _что_купили_нашли.
// Тоесть, игрок как-бы покупает сегмент хлыста, и результат покупки
// идёт в зачёт виртуального предмета, и продвигает квэст развития хлыста.
Обрывки кандалов - это можт быть некий мутный первый кусок хлыста.
Тоесть, в генераторном лабиринте, опытный игрок можт походить чуть
подольшэ, либо даж новичку повезёт - и кандалы по ходу встретим.
Если не встретили, то предпологаю, что _надо_купить первый сегмент.
Тоесть, трата серебра - не большая трата, но безплатные кандалы выгодней.
// Внутри генераторных идёт время, но допустим, что собрать деньги
// на покупку первого сегмента будет дольшэ, чем пару кругов лишних
// пройти по генераторному стартовому лабиринту хард-реальности.
Наверно, у героя сразу есть деньги на покупку первого сегмента.
Но их вернуть будет _не_быстро.
Кочегар помогает герою лиш один раз - игрок выбирает _когда..
1. дарит 2-й сегмент хлыста или простой шит (самый доступный).
// Важно, что игроку надо сбегать за _огнём, а этому могут помешать.
2. Когда игрок сам купил где-то усиленый шит - кочегар можт пере-ковать
свойства этого шита. // золотой шит нельзя пере-ковать.
Вероятно, всего 4 шита.. простой, купленый усиленый, пере-кованый, золотой.
Но уместно добавить пятый, который примерно на уровне _усиленого,
но с каким-то другим путём попадания к игроку, тогда два на пере-ковку.
И хотя-бы один из 4-х шитов можт выдать выгодный набор доп-свойств.
Тоесть, у золотого должны быть зажатые _хорошые свойства.
Покупной усиленый - у него есть доп-свойства, но зажатые - всегда его
выгодней пере-ковать (поэтому можно усиленому рулеткой назначать числа).
А вот загадочный шит пусть можт сам сгенерить ого-го-козырные свойства.
? вулканический шит из какого-то задротского схрона в кладовой-4 ?
// с1 - от кочегара - нет., с4 - покупное, из храма (сомнительно).
1-й сегмент - найти кандалы в начале харда (случийно или знать про них).
1-й сегмент - купить в доступном магазине.
2-й сегмент - найти огонь и взять у кочегара второй сегмент,
закрыв остальные подарки от кочегара.
2-й сегмент - купить (в храме) (? кровавый сегмент от раненого монка ?).
3-й - жэлезяка всегда лиш в сундуке гнома (квэст эвакуация).
4-й - не ясно (надо потом почитать старые наброски)
5-й по квэсту.
# обучалка годот-платформера:
https://www.youtube.com/watch?v=eMGxxwOA-6g
# сайт движка и редактора локаций:
https://godotengine.org/
Шаблон версии 132:
https://yadi.sk/d/cWQ_SkrRozcjCg
// ---
Распаковал архив "jg_src_v132.zip", открыл распакованую папку,
и сменил там название "jg_base" на "jg_old_a1".
После этого, перенёс папку "jg_old_a1" в другое место (из загрузок).
Папка "jg_platformer" хранит пример демо-игры, где многие ноды-узлы
работают, и подобные механизмы можно создать внутри "jg_old_a1".
// Внимание: "jg_platformer" слегка отличается от "jg_base",
// и я не рекомендую прямое копирование сцен между подобными папками.
Заходим в папку "jg_old_a1".
Можно почитать "about_base.txt" до строки..
"Далее, некий пример мини-кода".
Я создал рядом файл "about_a1.txt", и там напечатал, в первой строке..
"// jg_old_a1 // прототип старой бродилки, вид сбоку."
Можно сюда печатать планы по развитию проекта, и краткие отчёты.
От архивного шаблона (jg_base), много всяких папок - их не надо трогать.
Несколько мегабайт лишних для твоего проекта - это пустяки.
Если удалить что-нибудь, без опыта и знаний о шаблоне,
то можно сломать готовые скрипты, которые будут нужны в твоей игре.
Чтобы отличать свои ресурсы от шаблоновых - создавай новые папки везде,
где тебе удобней, но внутри папки проекта (у меня, это "jg_old_a1").
Рядом с папкой проекта, я создал папку "res", и туда буду скидывать все
картинки, которые я недавно скачал, и надо примерить - какие из них
можно подредактировать, а потом скопировать результат в папку проекта.
// Godot считывает-контролирует ресурсы игры лиш из папки проекта.
Собрал в папку "res" свои старые наброски, отсканированые с бумаги.
Среди них был кусочек рыцаря - его обработал слегка в GIMP-редакторе,
поджал до размера 64 на 64 пикселя, и экспортировал, как
"jg_old_a1/icon.png"
Теперь, у проекта будет узнаваемый значок.
// Внимание: я пытаюсь делать прототип игры, и поэтому спокойно
// отношусь к своему слабому таланту - свои бумажные наброски планирую
// ужать, и перекроить, чтобы использовать, как финальные фоны локаций.
Вобшем, отсканированые файлы должны мне помочь.
Как-минимум, они вселяют надежду на стабильный ход создания локаций.
Я иногда смотрю всякие разные готовые текстуры на сайте OpenGameArt.org.
И чтобы моя игра имела какие-то наглядные примеры класических "ваний",
я скачал 5 доступных архивов Готик-вании..
gothicvania-cemetery-files
gothicvania church files
gothicvania patreon collection
gothicvania_swamp_files
gothicvania-town-files
Внутри есть гифки - видна скорость отдельных кадров, которые рядом.
Наконец, стартуем движок Godot - появилось окно Project Manager,
где через кнопку, справа, "Import" --> "Browse", нужно выбрать файл
"jg_old_a1/project.godot"
(этот файл в самом низу, под списком папок проекта)
Жми кнопку "Import & Edit", и тогда, движок стартует свой Редактор,
и загружает туда наш проект. Происходит оптимизация ресурсов проекта,
и можно начинать редактировать. Хотя я привык к другому расположэнию
панелей, и поэтому переставлю их попривычней ...
// Если маленький монитор, то надо _востановить_окно, а потом развернуть
// окно снова на весь экран - правильно проявится правая часть панелек.
У каждой панели, есть вертикальные три точки, справа, наверху.
Кликаю в эти точки - вижу мини-схемку - кликаю по правой стороне.
Таким образом, у меня, справа-внизу: FileSystem плюс Inspector.
Остальные - справа наверху, и обычно, там всегда видна панель Scene.
Наверху, справа от кнопки "AssetLib", есть кнопка-триуг "Play (F5)".
Жми её, чтобы испытать работу шаблона.
Должны проявить маленькое окно игры. Мышка там пока не работает, но она
должна быть _над_окном_игры, чтобы считывать сигналы клавиатуры.
Нажми, на клавиатуре: "Enter", "Enter", "Escape", и будет видна
скромная игровая картинка. Клавишы-стрелки двигают героя,
а если много раз нажать "Escape", то мы вызываем и убираем Паузу-меню.
// В паузе, можно стрелками менять под-разделы меню.
// Если включена _не_инглиш раскладка, то нет сигналов с буквеных клавиш.
Закрой окно игры, либо сверни окно игры,
и в окне Редактора проекта (godot engine - название проекта),
кликни по квадратику "Stop (F8)" - окно игры закроют.
Если окна игры не было создано, то наверно, были напечатаны слова про
возникшую ошибку, внизу, в таб-закладке "Output" (или в "Debugger").
Скопируй тот текст, и напечатай в эту тему - возможно, это исправимо.
Если окно игры удалось протэстировать, то в закладку "Output" печатают
скрытый отчёт о событиях - обычно, эту пропечатку можно игнорировать,
и в финальном пакете игры, эти строки не печатают для игрока.
В любом случии, этот Output - важная часть работы над проектом.
// Ничего не удаляй, а только добавляй и меняй.
Один из принципов создания - делать игру за счёт добавления локаций.
В панельке "FileSystem" можно найти папку "locations" и кликнуть
на стрелочку, чтобы открыть содержымое. Там 5 файлов, и я их не буду
удалять, и не буду создавать новую папку для своих локаций.
Скрипты настроены, чтобы находить файлы локаций внутри этой папки.
// Сейчас, там находят и стартуют файл "st002.tscn" - эту сцену
// можно открыть-посмотреть в редакторе (например, через RMB менюшку).
Название можт быть любым, и мне надо придумать формат, чтобы отличать
локации из тренировочного акта игры, и из хард-реальной части игры.
Пусть будут 4 приставки.. "tf", "hf", "tk", "hk" (имена из малых букв).
"t", для локаций тренировки. "h", для локаций хард-реальности. "k" означает "Кладовая", подобие крепости, где важный предмет надо найти. "f" означает "Файл" или "Формация" - некий обше-кусочек, вне Кладовых. hf2_k3 = хард файл два (рядом с) кладовой три. tf2_k3 = повтор верхнего, но в тренировке. hk5_1e = хард кладовая пять, первый кусок экстра версия. tk5_1 = норм кладовая пять, первый кусок ( или первый экран). hf_sta1 = хард формация, стартовый город ( первый кусок). hf1_sta = хард файл один, ( рядом с) стартовым городом. hf_mid1 // город средний hf_ore1 // город рудокопов hf_niz1 // город нижний hf_krok1 // деревня крока
Подобный формат названий локаций был в бумажных набросках - мне привычно.
У меня открыта сцена-локация "locations/st002.tscn".
Кликаю на значок кино-хлопушки, справа от названия Local/Coin_Exit,
и рядом, открываем микро-сцену, которая, как исходная деталь.
Любые перемены в этой исходной детали будут авто-учтены в локациях,
если там использовалась версия с кино-хлопушкой, потому-что этот
значок указывает, что узел-деталька всегда внедряем в родительский узел,
когда загружаем всю сцену в работу (в дерево сцен). А если для такой
хитрой детали вызвать (RMB-menu) "Make Local", то мы прям сейчас грузим
содержымое детали в локацию, и теряем связь с истоковой деталью.
// Вероятно, автор захотел назначить уникальные свойства, и чтобы их
// не потеряли, при загрузке локации.
area/Coin_Exit.tscn
/coin_exit.gd (скрипт в корневой папке проекта оказался - тяп-ляп стиль)
Скрыл спрайт монеты (можно поставить сюда текстуру _стрелочек вверх),
отключил авто-старт анимации
(внизу, в окошке Animation кликнул букву А, справа от названия анимы),
удалил два узла частиц.
удалил и Аним-ноду.
(save as: Coin_Exit_Quad.tscn)
(save as: Coin_Exit_Edge.tscn) // вертикальная, за краем экрана.
И теперь, такой точ-филд (зона косания) будет вертикальным прямугом,
который надо ставить _за_краем локации, куда камера не сдвигается,
поэтому визуалка не нужна.
// В прыжке, пусть точ-филды _переходов работают - чуть гибче лабиринт.
// Какой-нить свисаюший вниз трос не-приметный - пиксель-хантинг.
// Как-минимум, около старта, надо визуализировать точ-филды,
// чтобы игрок проявил интерес, и понял, что это переход какой-то.
Жми направление вверх, стоя под стрелочкой вверх, как в старых играх.
Для входа в такие анфас-двери, хотелось-бы анимацию уровня игры StarGate
(там анимация, наверно, как откат, чтобы сразу не выходить обратно).
А без анимации, и отката - надо обратный точ-филд (выход из комнаты)
сдвинуть от точки телепорта, куда героя поставят, при загрузке комнаты.
// Комната, экран, локация = это одинаковый смысл.
// И всё это можт быть разных размеров (в экранах, и в колве узлов).
Вобшем, делаем реагирование, чтобы входить в анфас-двери.
(открыли текст скрипта "coin_exit", кликнув по белому листу, справа)..
1. Панель "FileSystem" - в самом низу списка, находим-открываем uprav.gd
2. Дву-клик на слове "move_up_key", CTRL + F, и кликаем _следуший
(внизу, справа от искомого слова, есть стрелка вниз == next).
// нижнию строчку поиска можно закрыть - нашли.
Нам показывают второе место, где встретили это слово - это функция
"sig__move_up"
Дву-клик на название функции, и CTRL + C, чтобы копировать в карман.
3. Кликаем в левом столбце по названию скрипта "coin_exit", чтобы нам
показали текст этого скрипта. Внизу (левая колонка), есть список функций,
и кликаем по названию "_on_body_enter" - нам показывают эту функцию.
В 95-й строке, вначале строки, жмём Tab, и печатаем условие "if" ...
Примерно такой готовый результат:
[tab]if wait > 0: # если точ-филд занят-ждёт, то надо прервать функцию.
[tab][tab]return # эти строчки были здесь.
[tab]if use_nord_sig: # новая, 95-я строка. // потом 98-я строка стала.
[tab][tab]if ! g1.hero1.priv_upr.sig__move_up(): # нет _северного сигнала,
[tab][tab][tab]return # то прервать функцию.
Я помнил, что рутина главного героя связана с набором букв "g1.hero1.",
а вот название _северного сигнала, я не помнил, и поэтому скопировал.
// "priv_upr." добавилось, когда я стартовал тэстирование - редактор
// сказал, мне что нету связки "hero1 + sig__move_up", и я вспомнил, что
// надо сначала упомянуть приватный блок управления, а уж потом сигнал.
// Смысл приставки "priv_", в тяп-ляп-кодинге - это памятка "осторожней".
Слово "use_nord_sig" я придумал, когда его печатал, потому-что знал
смысл условия.. надо-ли учитывать нажатие сигнала _север.
И быстро придумал название скриптового свойства, и впечатал в условие.
Теперь, дву-клик на "use_nord_sig", и копирование в карман.
4. Переносимся в начало скрипта (CTRL + Home), и там, под строкой:
"var taken = false"
Печатаем такую строчку:
export var use_nord_sig := 0
(для панели Инспектора) export
(зарегить кусок опер-памяти для обслужывания скрипта) var
(название куска памяти, внутри скрипта, без пробелов) use_nord_sig
(просим, чтобы кусок использовали лиш для указаного типажа чисел) :
(справа-налево, получить значение в кусок памяти) =
(целый ноль, и учитывая дву-точие, кусок обязан хранить целые числа) 0
5. Переходим в дву-мерный вид на детали сцены, отмечаем корневой узел,
и должны обновить "свойства-переменки скрипта" (строки в Инспекторе).
Inspector -> Script Variables.
Самой верхней строкой, указано новое свойство, с ноликом, по умолчанию.
Меняем ноль на единицу, и двигаем точ-филд в удобное место.
И меняем свойство Next Name: st001 // куда сделать переход.
Меняем Pos Name: Teleport1 // в какую точку, внутри локации st001.
Запускаем тэстирование. Ставим героя на монетку (которую проявил _глазом),
и жмём стрелочку вверх (север) - ничего не происходит. И тут я вспомнил,
что Coin_Exit работает _событийно - происходит обоюдное обнаружэние
колизий (со стороны точ-зоны, и со стороны глав-героя) - происходят
два вызова функции "_on_body_enter", и точ-зона игнорит героя, чтобы
не тормозить работу игры ... Во время первого косания, игрок ешё не успел
отпустить кнопку шагов вбок. А вот если сразу зажать вверх, и шагать
вбок, на монету точ-филда, то будет переход в первый этапчик.
// можно всё сделать, и проверять _каждый_кадр, но пока пофиг.
В любом случии, для прототипа, хватит принципа - прыгни в стрелочку,
над дверью.
Надо подумать над размером игрового экрана.
Логика такова - надо поменьшэ перемен - в шаблоне, привычный тайл-мэп
строит клеточки 64 на 64 пикселя. Мои камни основы, на бумаге,
8 мм на 6 мм (15 камней влезают в экран). Можно выбрать высоту 64,
но я захотел попробывать вариант маленьких камней 64 на 48.
// Маленькие спрайты, большой пиксель - это норма для пиксель-арта.
// Когда пикселя маленькие, то уместны рендер-спрайты с три-мерных моделей.
Итого, размер экрана выставить 960 на 720. (и название проекта поменять).
Основное меню, наверху: Project --> Project Settings.
В левой колонке, кликаем по "Application.Config", и там верхнию строку
меняем на название своей игры. У меня техническое название: jg_old_a1.
Нахожу, в левой колонке, "Display.Window" ставлю новый размер.
// Чуть погодя, поменял на 960 x 700.
Вдобавок, в панельке "Scene" отмечаю "Viewport2", и ставлю 960 и 700.
// Наверно, узел "TextureRect", под вьюпортом, сам растягивается, но
// я там тож обновил размер "rect_size.x" 960, "rect_size.y" 700.
// (надо кликнуть на кругляш рядом с 960, и 720 заменили на 700).
Некоторые элементы GUI можно скрыть - справа, от названия узлов сцены,
есть символический глаз (кружок-зрачок, в овале) - на него можно жать
несколько раз - скрываем или проявляем.
// Скрывая родительский узел, делаем его чилдов невидимыми - серые глаза,
// говорят, что при проявлении родителя (метод show), они будут видны.
Пробуем запуск игры - видно, что менюшка криво, в левый верхний угол.
А в пустой игровой картинке, если роботом прыгать и бежать влево,
то станет видно край _ауры_затемнения (эту ауру можно стереть, потом).
// Обновил размеры: GUI, StartScreen, LoadScreen, Kino.Fon.x = 960
// Увеличил-подвинул детали StartScreen, и добавил туда TextureFon.
Во внешнем текст-редакторе открыл "jg_old_a1/font1.tres", и поменял
размер первого шрифта с 12 на 14. (можно на 16, но надо расшырять всё).
В редакторе, пропечатка фраз идёт от свойства узла - смотри в панели
Inspector. Например, кликни на зелёную бирку, слева от названия
Title (это детка-чилд внутри StartScreen) - первое свойство Text, и туда
можно впечатать некие слова, но их заменят, когда тэстируем игру.
// Возможно, официальная (godot) языковая локализация удобней.
https://docs.godotengine.org/en/stable/tutorials/i18n/index.html
// Но у меня само-дельное дублирование фраз для игры.
Тоесть, скрипт подменяет слова - фразы берут из номера, который
подразумевает номер строки в наборе фраз, которые храним в паралельных
языковых контэйнерах. Обрати внимание на синий кружок с названием Lang
(это внизу списка чилдов MainControl). Сам "Lang" и его детки - спрятаны.
Кликай на квадратик, слева от названия "en", и потом, в Инспекторе,
справа от мини-окошка с текстом, кликай по знаку _стрелки_во_все_стороны,
и увидиш большое окно с текстом - вот здесь удобно менять фразы, а потом
кликнуть "OK" (окно текста закроют - сохрани сцену - текст тож сохранят).
// запуск тэстирования игры авто-сохранит всё. (или жми CTRL + S).
X NAME // 1 const lang__game_title
Это первая строка, и после двух косых идёт пояснялка, для авторов игры.
Эта пояснялка не будет пропечатана в игре
(там номер строки, и название скриптовой _ячейки, которая хранит этот номер)
OLD A1 // 1 const lang__game_title
Такое название игры будет в инглиш-версии.
ДАВНИЙ А1 // 1 const lang__game_title
Такое название игры будет в русиш-версии.
Смотрите обучалки по теме тайл-мэпов.
# tilemaps and svet
https://www.youtube.com/watch?v=lg9Ip5e43Ys
https://www.youtube.com/watch?v=h091lzKFHlM
# tilemaps and multiplayer
https://www.youtube.com/watch?v=1mFozZQ_Sas
https://www.youtube.com/watch?v=lnFN6YabFKg
Надо сделать текстуру, где несколько вариантов камней, у которых
разная окантовка чёрным цветом - мне важно найти приемлимый вариант,
потому-что хочу видеть эту окантовку, как часть стиля игры.
Сделал сразу микс-текстуру из 20 камней - на удачу тяп-ляпал.
// platform/brick_form_mix2.png
Если создать штук 5 тайл-сетов, у которых камни будут перепутаны,
плавно сдвигаясь, то можно будет менять тайл-сет у заполненого тайлмэпа,
и оценивать эти 5 разных камней (которые претендуют на одну роль)
(как-минимум, разные цвета-фактура для кладовых).
Открыл в редаторе GIMP файл скелетика из ваний, отметил остальных,
и закинул в слои - каждый файл, как слой (14 кадров).
// Видел, что есть пустые места, по высоте кадра - ужму, чуток.
Выставил размер холста.. 384 (8 кадров ходьбы * 48) на 96.
Меню - Изображение - настроить сетку - указал 48 на 48.
Выставил-подвинул кадры, добавил 2 кадра - голова в середине, и на полу.
(наверно, можно будет сделать баскетбол-аниму из двух кадров).
(можно пробануть аниму райс-рождения для смерти - утекай в землю).
Сохранил эту подборку в трёх цветовых вариантах (папка enemy/skelet)..
1. Почти белый, чтобы назначить любой модулят-цвет
skeleton-got1-2ani_au80.png // доп-слой "auto-color" прозрачность-80
2. Оставил красноватый оригинальный цвет.
skeleton-got1-2anim.png
3. Совсем белая засветка, как силуэт любого цвета (возможно, для миганий)
skeleton-got1-2ani_sil.png
Этот скелет похож на тварь _лакей, в бумажных набросках.
Можно пробануть добавить лоскутов пиджака скелету с тряпкой
(цвет всех лоскутов-тряпок сменить на синий).
// поднос можно отдельным спрайтом - пусть будет чудесный ховер-поднос,
// который парит над головой (поднос - спаунер скелетной волновой утки).
В локацию ?k2_8 (столовая), в локацию ?k2_9 (кухня). (? == h или t)
В хард-реале, пусть будет _салютный_гусь - это отдельная полу-тварь,
вылетает из-за камней основы, по косому вектору вверх, и потом через
1-3 секунды исчезает, создавая салют из костей - ригид-кости - надо
подобрать лимиты случийности в трёх пресетах пинка кости..
Пинок-1.. угрик явно наверх, но хикс от минуса в плюс - самый размашыстый.
Пинок-2.. угрик нолевой, хикс +100, или -100 (скушный пинок).
Пинок-3.. угрик вниз, хикс от минуса в плюс, но слабо (самый опасный).
Чтобы был шанс избежать костей - пусть сначала будет 2 или 3 кости, и
плюс декоративные прозрачные частицы (? бирюза ?) делают сам салют.
// Бирюза - такой цвет избрали ауре призраков авторы gothicvania ...
Если найден такой близкий образ, реализованый, то надо дублировать его.
2.лакей в Кладовую-1 // красные - ядо-капли с подноса, аля вулканчик.
3.лакей в Кладовую-6 // зелёные лоскуты - ? бодаюшиеся рога с подноса ?
res/gothicvania patreon/gothic-castle == наверно, для Кладовая-1.
res/gothicvania patreon/old-dark-castle == наверно, для Кладовая-6.
Путь на кладовую-1 - вправо, на мост, потом там форт.
Допустим, бумажные наброски можно расшырить для хард-реальных кусков.
Пусть правый (второй) файл хард-реального форта возьмёт на себя всю
добавочную часть - 2 башни, меж которыми несколько зубцов, по которым
герой можт прыгать. И лиш хард-реаль-версия пусть содержыт подвал.
// Колесо водное можно против часовой стрелки вертеть - якобы за фортом,
// протекает речка слева направо.
В норм-тренинге, в кусках форта нет врагов, но много бочек, и стражники
гуляют (чтобы не совсем скукота). Возможно такое - если стражник в
некой близости, и герой разбил бочку - стражник пуляет три пульки
(интервал неудобный - прыгаеш, но одна из пуль тебя задевает)
// и после этого, стражник исчезает, или отворачивается - надо указать
// игроку, что стражник забыл (по стражнику - нет колизий ударов героя).
Мини-стэлс - никто близко на героя не смотрит - долбим бочки, получаем
опыт, если не переросли (+3) ранжыр бочек (у них первый).
// дроп не зависит от разницы ранжыров, но редкий (из тварей - частый).
В хард-реальности, эти два места длиней, и напичканы врагами
// стражники есть, но как-бы спрятались - тусуют внутри башэнок,
// куда игрок попасть не можт (но рядом точ-филды - поговорить).
Пока игрок не убивает несколько тварей, он не можт пройти в левый край.
А за левым краем, если идти от кладовой-1, будет часть форта, а потом
старт-город. Тоесть, чуток зачисть врагов - пройди в старт-город.
// Пример подобного числового зажатия Coin_Exit в Жаба-гринд, st015
Путь на кладовую-2 (третий кусок tf3_k2) - удобный для пробных локаций.
Первый кусок - без бумажного фона - можно тэстить тайл-фоны "крыш домов".
Второй кусок - там _клетку_уронить надо (что за это дадут - забыл).
// закольцовка, из правого края в левый, но не обратно.
Поставить с левого края Луч, который похож на тот, который герой
по квэсту добывал для бойцов сопротивления. Значит, закольцовка
ставит героя справа от чудо-луча. Герой проходит луч - враги не могут.
Вероятно, здесь лиш неподвижные враги пукают красными пульками,
которые пролетают сквозь стены и камни. Вобшем, ходячих врагов точно нет.
Можно и лифт горизонтальный добавить, и тропинку ярче врисовать.
Надо лиш в хард-реальности эту сложность делать, а в тренировке, герой
сразу попадает в tf3_k2 - динамичней, и нет лишних _головоломок.
tf3w_k2 = waterfall = пусть половина с водопадом будет отдельно.
tk3_1 удобный набросок, но там _решотки, у которых суть - менять аниму
глав-героя, как-будто он идёт приставным шагом (спиной на камеру).
Ну и конечно скорость минимальная, без учёта свойств героя.
Вся _физика обычная, как с ван-вэй-рельсом - можно прыгать вверх-и-вниз.
(но допустим, любой верхний прут решоток - без рельса, визуал обманка).
// Можно сделать условие, чтобы игрок жал _север, чтобы _зацепиться.
Обособить рэльс - добавить скрипт - назвать "OneWayPrut" - в обнове,
такой рельс-прут следит за нужной кнопкой (не за сигналом)
(номер кнопки каждый кадр брать из _управления героем)
и можно внедрить t_toggle на эту кнопку - если кнопка вжалась, то
ставим бит колизии _на_игрока, а иначе - отключаем этот бит.
Важно сразу ставить колизию для врагов _со_второго_бита (1-й игроку).
tf3_k3 // это вход в каменоломни (кладовая 3).
Там должн быть спаунер твари клино-голов.
// Один из монстров, который удобней по ночам - нет регенерации.
// Днём у него сильный реген. Утром и вечером - средний реген хитов.
Но не исключено, что этот спаунер лиш в хард-реальности.
Над этим местом, tf4_k3. Набросок намекает, что можно отсюда хитро
спрыгнуть, чтобы попасть на балкончик, над аркой входа в каменоломни.
? Спортивный значок на балкончике можно взять ?
Но таких значков нет в в хард-реальности (и там будет пусто - нормально).
Надо понять, каким образом, я собираюсь переносить позицию (высоту)
полёта в соседний файл-комнату. Если этот механизм будет лёгким, то
можно передать точный хикс падения.
Однако, здесь можно не городить ничего - герой падает, шырокий точ-филд
переключает комнату и ставит героя в позицию _наверху, из которой
герой падает мимо балкончика, но если игрок использует _вертушку,
то будет плавно падать, и чуток вправо - над балконом, и можно падать.
Наверно, точка телепорта на несколько камней вышэ (нижэ угрик ноля),
чтобы игрок успел включить вертушку, начиная падение за верхом экрана.
Клино-голов можт мешать использовать _крыло.
// Без-контрольная опасная крылатая доска для само-убийц.
Возможно, в тренировке, здесь малый клино-голов, а в хард-реале он
как-бы вырос. гы-гы. Вобшем, не исключено, что в хард-реале, на балконе
есть какой-то невидимый предмет, и спорт-значок был, как намёк
(возможно, такой стиль для многих невидимых предметов в хард-реале).
Вобшем, из практики надо понять осмысленость и трудность владения
комбой вертушки-парашута против владения крылом.
// ---
Ли Пенп. // на инглиш.. ? Li Foamp ? // Lee
Девушка - глава разбойников, собирает цветочки
на поле - можно поболтать - видно что один из ответов за вопросиком,
и это значит - не хватает свойства _славность (или репы).
Вобшем, за 15 славности - она скажэт пароль от своей пешеры.
Со словами, типа, вот пароль, но постарайся меня не сильно грабить.
// Я понимаю, что ты важный холодильник, и моя теплота нафн фо ю, но
// вот тебе пароль от моей пешеры.
// Я много награбила, хотя надеюсь ты возьмёш себе лиш самое нужное.
Не исключено, что пароль из трёх цифр от 1 до 3.
Тоесть, вариантов не много, но брут-форсить не выгодно - система ввода
тормозная, и единицу репы отнимает за попытку (даж за правильную).
А за разговор с разбойницей - отнимаем, как за выкинутый квэст, наверно.
Пора делать локации - к файлу локации, легко добавлять скриптовой файл,
где можно складировать информ (текст-коментарий) по деталям этой локации.
Так-что достаточно шаблоновую локацию "сохранить как",
добавить скрипт зелёным плюсиком,
(когда выбран корневой узел "Stage" - кнопка справа от "Filter nodes")
и в скрипте локации, печатать "что в ней" и "для чего".
// Если дублировать (save_as) локацию со скриптом, то потом, надо
// отцепить старый скрипт (красным), и создать новый личный скрипт.
Прочитал наброски, и выцепил про доп-слои для локаций..
= Enemies // оставить этот узел для врагов, которые в любое время суток.
= Enem1 // набор ночных тварей.
= Enem2 // твари для утра.
= Enem3 // твари дневные.
= Enem4 // твари для вечера.
Повторить-дублировать тварь в 2-3 папки, если она гуляет утром и вечером.
// Дубликат узла (CRTL + D), и перетаскиваем в соседний набор.
// Для переноса, можно использовать строку RMButton-menu "Reparent".
Наверно, можно в слои для врагов, внедрять бэкграунд-узел, потому-что
ему не важно _где_он - рисовать его будут в самом начале кадра, и поверх
него накидают остальные слои-спрайты (свойство Layer = -1).
// оформил 4 разных минимальных неба - потом можно настроить детали.
fog_utro // папка-узел для картинок тумана (прозрачные, или шэйдэр).
grad_vech // папка-узел для накладывания прозрачного градиента.
trig_tmap // не обязательный, но пусть будет, в шаблоне.
Создал папку "jg_old_a1/locations/fon"
(чтобы скидывать туда обработаные сканы с бумаги)
(буду делать, чтобы один экран бумаги был примерно 480 пикселов, хикс)
locations/fon/
f3k3.jpg
f4k3.jpg
k3_1.jpg
k3_2.jpg
sta_fort.jpg
sta_fort2.jpg
sta_fort_fla.jpg
k1_1.jpg
f3_k2.jpg
f3w_k2.jpg
m1-k2.jpg
m2-k2.jpg
kam-gray-65-49.png # смена размера моего старого наброска (сжал)
Но подумал, что его надо добавить в brick_form_mix2.png
Сделал набросок _лифтового камня (несколько), и всех добавил.
Потом удалил некоторые пикселя с углов, и сохранил в brick_form_mix3.png
Быстро накидал тайлсет, через окно работы с тайлсетами.
// Лично мне понравился вариант создания тайлсета "из сцены", через
// меню.. Scene --> Convert To ... TileSet.
// Таким образом, мне удобней создавать одиночныые тайлы (Single Tiles).
eff/kubi.png # тайл кубизма (подкладка для чего-нибудь).
eff/base-menu.png # кое-какая подкладка для меню.
background/dirt_any.png # белые размывы (под модулят).
background/rock_tiled1.png # серая горная порода.
background/wall_noise.png # пёстрые точки (прозрачно, на стены).
background/sky_x1.png # не-тайленый маленький кусок неба.
locations/fon/domik_sur.png # (фото) угол дома, светлая и тёмная сторона.
locations/fon/sky_lamp.png # (фото) небо, ветки, фонарный столб.
locations/fon/arh-kub-06.jpg # (фото) двери-фасад белого дворца.
// фотки, чтобы иногда сравнить.
// Либо добавить кусочек фото, в фон, чтобы локация запомнилась.
Шаблоновую локацию "a1_old_shab.tscn" сохранил как "tf_sta_fort.tscn",
и как "tf_sta_fort2.tscn".
// В пару кликов, новым локациям созданы личные скрипты.
В скрипты, надо скопировать текстовые наброски, про нужную часть форта.
"""
Заметки..
Надо сделать пулялку, но не тварь, а союзная взбодрилка (прыгай).
"""
Три дву-кавычки открывают блок текста, невидимого для "компилятора".
И подобные три кавычки закрывают блок - внутри блока, печатаем наброски.
// Скрипты - это текстовые файлы - можно открывать в любом текст-редакторе
Работаем со сценой "tf_sta_fort.tscn" ...
Кликаю в кружок, слева от названия узла "x_far" (так выбираю узел),
и кликаю на плюсик (над списком узлов) Add Child Node - значит, я хочу
добавить Годотовскую заготовку, в папку-узел "x_far". Нахожу нужное,
и добавляю TextureRect, помню, что две картинки подготовил - дублирую.
Во второй "прямуг с текстурой" загружаю "sta_fort_fla.jpg" - это один
экран, поэтому надо растянуть размер под числа экрана, но помня, что
я у высоты срезал 20 пикселей, ради дизайна..
Панель Inspector, сборник свойств Rect --> свойство Size: x= 960, y= 720
StretchMode: Scale. // чтобы пикселя сами дотянулись до указаного размера.
Visibility -> Self Modulate -> компонент Альфа = 170 (полу-прозрачность).
// просто Modulate - это влияние на себя, и на все свои чилд-узлы.
В первый TextureRect, загружаю картинку "locations/fon/sta_fort.jpg"
Затемнил "Self Modulate" вполовину, чтобы удобней видеть другие детали.
Ставлю Rect --> свойство Scale: x= 2, y= 2
// Но потом, пришлось слегка увеличить до: x= 2.016, y= 2.02
// чтобы камни из картинки совпали с тайлмэпом, который главней.
В узел "TileMap", подключил тэстовый тайл-сет,
указал размер ячейки (Cell Size: 64, 48), и наставил разных камней.
(там, где они были, в набросочных картинках).
Изменил Модулят-цвет (темней, и слегка прозрачный).
Подумал, что надо делать пару дублей для основного TileMap, чтобы
слегка менять у них цвет, и уйти от явного _бетон_монотона.
Для прототипа, хватит одного дубль-тайлмэпа - темней и светлей.
Дублировал узел "Coin_Exit_E", зажал шыфт, и стрелками, перенёс вправо.
Узел VisRit, Position x = 1915 // это лимитатор камеры _вправо.
В середине, наверху, кликаем слово-табулятор "Script" - в левой колонке,
кликаем строку Main.gd - видим основной стартовый текст.
// Я выстаивл proj_version = 105
Надо найти вызовы функций (сочетание букв)
"g1.my_scene__next_load" или
"g1.include_scene"
Важно, чтобы лиш одна из таких строк была _без_коментарной решотки.
Если надо проверить лимитаторы камеры, и правильное старт-место,
то используем строку
g1.my_scene__next_load( "название_локации", "Teleport1", "VisMix")
// Вместо Teleport1, можно указать название другой точки, если
// загружаемая локация содержыт точку с таким названием.
Но обычно, для тэста, я таскаю узел "Player", в нужное место,
и стартую через
g1.include_scene( "tf_sta_fort", 1)
чтобы у главного героя не меняли позицию, и камера без лимитаторов.
Можно прямо целый список таких строк продублировать, и указать разные
названия локаций. Но важно все эти строки закоментарить, кроме одной.
// С каждой новой локацией, можно добавлять _её_стартовую_строку.
Кликаю триуг (Play F5), курсор на окно, Enter, Enter, Esc - бегаю.
Точ-филды (Coin_Exit_E) не работают - там надо назначить свойства.
// Закрываю окно игры.
В правом Coin_Exit_E2, ставим
Next Name: "tf_sta_fort2"
Pos Name: "Teleport1"
Работаем (открываем, если надо) со второй сценой "tf_sta_fort2.tscn" ...
x_far/TextureRect -> texture Load( sta_fort2.jpg)., Scale( 2, 2).
И надо сдвинуть всю картинку влево, ориентируясь на цветную часть (-195).
Теперь надо накидать камней ... Назначил тайлсет и размер ячейки.
// Внёс в шаблон локаций назначение тайлсета, и ячейку 64 на 48.
Узел Teleport1 оказался под камнями - надо его приподнять, и чуть влево.
Высота стенки - три камня - это нормально, от игрока требуют, чтобы он
закупился доступным расходником для высокого прыжка.
// Но пока расходник не работает - делаем дырки, чтобы ходить везде.
// Если в другую сторону, то притопаем сюда, с другой стороны стенки.
Можно удалить (выбрал узел, жми Delete) StaticBody2D (детка Props).
Но лучшэ поднять к потолку, и выбрав чилда, назначить там шырь в 1000,
чтобы у нас получилась блокировка выхода за верхний край локации
// конечно, это похожэ на комнаты - ограничить игрока со всех сторон.
Выбираю точ-филд Coin_Exit_E, и выставляю там свойства..
Next Name: "tf_sta_fort"
Pos Name: "Teleport1"
Тэстируем игру - видим локацию tf_sta_fort, бег вправо, прыжок,
дотронулся до правого точ-филда - нам загрузили вторую часть форта - ура.
// Обратно, влево - оказались под камнями, в локации tf_sta_fort.
// Закрываю окно игры.
Работаем с "tf_sta_fort.tscn":
Надо поднять узел повышэ, и чуть левей. Потом дублировать, и двинуть
Teleport2, куда-то вправо - точка входа из второй части форта.
Допустим, слева от костра, который ... пусть пока не ранит.
Props/StaticBody2D пере-именовал в StaticBodyTop, и сделал потолок.
Отметил ноду "Enemies", чтобы туда добавить чилд-сцену. Кликаю звено
цепочки (наверху, рядом с Filter nodes), вижу диалог выбора само-дельных
деталек (сцена, как заготовка). Печатаю наверху "DmgRay", чтобы диалог
мне помог, и оставил лиш детальки, где в названии есть такие буквы.
Клик на DmgRaySpawn1 - появилась детка с именем "DmgRay1" - выбираю.
В инспекторе, внизу списка свойств, есть Transform.Position - на экране,
у меня было место, куда я собирался ставить спаунер пульки - посмотрел
на линейки, по краям - выставил примерную позицию.. x= 1440, y= 450.
Можно стрелочками найти место точней.
Оранж-луч указывает вправо - это нолевой угол поворота ствола пушки.
Transform.Rotation поставь 180 - так пушка будет стрелять влево.
// Можно отключить (глаз) условную визуалку пушки, и поставить
// на это место спрайт пушки, но невидимый исток пуль - это норма.
Наверху списка свойств (Script Variables) много само-дельных - кликни
по белому листку, справа от названия "DmgRay1" - видно начало скрипта,
и здесь можно почитать краткую пояснялку по свойствам.
React Name не надо менять. Если выставить "player", то косание ствола
пушки будет ранить главного героя (урон от трёх свойств, нижэ).
Rotate Use: 1 # указание, что ствол вертится от значения "Rot Delta Mult".
Rot Delta Mult: -30 # условная скорость смены угла, против часовой.
Rotate Use: 2 # используем два угла лимитирования.
Rotate 1: 170 # лимит угла ствола. // не зависит от Transform.Rotation.
Rotate 2: 190 # второй лимит угла ствола.
Rot Delta Mult: 20 # условная скорость смены угла.
Так достигаем рулетки - пулька учитывает угол ствола, который дёргается.
Spawn Pwr Min: 150 # ставим здесь минимальную скорость полёта пульки.
Spawn Pwr Max: 960 # примерно, экран в секунду пулька можт пролететь.
Wait Spawn: 2.5 # две с половиной секунды, опорный интэрвал стрельбы.
Wait Spawn D10: 5 # целое делёное на 10 = плюс-минус пол-секунды.
Limit Spawn: 3 # стреляем три пульки, и глохнем // ноль = бесконечно.
(надо было, когда придумывал, минус единица сделать для бесконечности)
Тэстируем игру - пушка стреляет синими волновыми шыпами.
// Закрываю окно игры.
Чтобы избавить пульку от _волнового полёта, надо изменить пушку.
Например, RMB-menu строка Make Local - стали доступны чилды, и если
удалить дочерний узел "DmgFly", то пушка будет стрелять _умолчанкой.
Но можно не удалять, а изменить свойства "DmgFly" ...
// ---
Бахвальство стражников стартового форта (как минимум, сержанта),
в тренировочной версии - и вот мы в хард-реальности - пешэходных
стражников нет - лиш на башнях по два человека зажаты (две башни).
Допустим меж башнями есть какой-то трос, а можт и камни основы,
по которым можно прыгать, как по зубцам.
Каплями разума можно проявить невидимый камень, между башнями,
и с него можно добраться до одной из башэн - там видно этот
промежуточный камень, или _кусок лестницы - возможно, в локации,
две таких лестницы, но одну стираем при загрузке (рулетка).
Со стражниками любой башни можно начать разговор, и взять квэст.
Требований славы и репы никакой нет. Но сдача квэста такова..
раздобыть нужные элементы.. стак жрачки, стак бутылей, и стак стрел.
// все эти стаки, глав-герой ими не пользуется.
// Возможно, надо хотя-бы два стака, которые игрок использует..
// например, жывая вода (бутыли), и _диски_маны, вместо стрел.
Два точ-филда - впритык к башням, на высоте - каждый отнимает
половину - лимит в этих трёх стак-предметах надо делать чётным.
// слова любого стражника, если их квэст не взят.
-Мы оказались слишком слабыми, а ты, как броневик, раскидываеш тварей
направо и налево. Принеси нам еды и бое-припасов - мы, вроде-бы
хорошо устроились, на башнях.
// Предмет квэста будет взят, если есть место - квэст-предмет можно
// выкинуть - игра расценивает, как явный отказ - отнимает репутацию.
(потом, из форта будут катапультами метать по К1 - перешли в атаку)
(снова бахвальство вернулось).
Репутацию отнимают за разбивание яшиков, бочек, и подсвечников,
но по мизеру. За торговлю с разбойниками и спекулянтами - средне.
Тоесть, три вида трат, и возможно, эти числа.. 1, 3, 5.
Пусть репа будет от ноля до 100. Но добыча единицы репы подобна
левелам - набираем 500, остаток сохраняем, и прибавляем репутацию.
// need_rep_up += 50, и чуть большэ набирать на новую единицу.
Прибавки репы..
за убийство равно-ранжырных тварей (по 10), и за квэсты (по 30).
// Если свойство _слава будет процентно увеличивать, то пусть максимум
// 30% (потому-что влияние на доп-опыт и доп-репутацию).
// Вобшем, набирать репу чуть трудней, чем сливать её.
Некоторые купцы не будут говорить, если само свойство славы малое,
такжэ можно учитывать колво репы (хотя-бы середину в 50 перевалить надо).
Итого..
0 славы и 0 репутации = главный сюжэт и храмовники ничего не требуют.
5 славы = продвинутые купцы. (вероятно, чистые торговцы).
50 репутации = капризные купцы побочных квэстов.
15 славы = какие-то бабы, в норм-тренировочных локациях.
Но можно миксовать эти требования.
Важно, что максимальная слава - это половина от лимита свойства,
но для репутации, можно любые требования, в пределах 100.
Никто не заставляет игрока тратить свою репу, если он хочет поговорить
с капризными купцами. Тоесть, не брать лишних квэстов, чтобы не выкидывать
квэст-преметы, ради дроп-мусора. Не бить бочки (из которых есть дроп, но).
До какой-то поры не говорить с разбойниками и спекулянтами
(сам разговор отнимает, а не покупка чего-то у них)
(и это просто, ведь другие купцы, за высокую репу продадут дешэвле).
// Так что есть теория. что можно всегда ходить с высокой репой,
// не вкладывая лишнего в свойство _слава.
Тема в архиве.