Взрослая жизнь задолбала! Да что такое! Опять сегодня мало времени на кодинг было!
Однакож нужно выговориться.
Я продолжаю работать над конструированием сцены боя,
и создавать то, о чём понаобещал ранее. Так вот, игровой уровень
строился исходя из учёта уровня угрозы нападающего монстра,
а теперь мы имеем некий импровизированный инвентарь
персонажа с пятью ячейками для хранения походных монстров,
в котором записываются порядковый номер и уровень угрозы монстра.
Порядковый номер нужен будет на днях, для написания скрипта
по созданию в сцене монстра из инвентаря игрока, а вот уровень
угрозы его уже нужен для конструирования сетки уровня.
Как я заявлял ранее, мы будем выбирать самого опасного монстра
игрока, и сравнивать его с уровнем опасности нападающего монстра,
а после выбирать кто из них круче, и в соответствии с полученными
данными выбирать размер уровня. Так-как логично, что более крутые
монстры будут тупо крупнее, и часто резво перемещаться на большие расстояния,
и в маленький уровень не влезут, а создавать уровни размером
100 на 100 для всех подряд включая самых мелких монстров
это было бы мегатупо, так-как основную часть геймплея
займёт время доковыливания до врага. Я думаю вы согласитесь,
что такая система расчётов была нужна, она готова, и применена
почти в одинаковом виде к трём скриптам, пример:
public int ThreatLevel; //Уровень угрозы Монстра
public int ThreatLevelPlayerKarman; //Максимальный уровень угрозы монстров в инвентаре игрока
public int TotalThreatLevel; // Итоговый уровень угрозы после расчётов
void Start()
{
// Пишем в массив уровень угрозы монстров в инвентаре игрока
int[] PlayerKarmanThreatLevelYachMax = new int[5];
PlayerKarmanThreatLevelYachMax[0] = PlayerKarman.ThreatLevelYach1;
PlayerKarmanThreatLevelYachMax[1] = PlayerKarman.ThreatLevelYach2;
PlayerKarmanThreatLevelYachMax[2] = PlayerKarman.ThreatLevelYach3;
PlayerKarmanThreatLevelYachMax[3] = PlayerKarman.ThreatLevelYach4;
PlayerKarmanThreatLevelYachMax[4] = PlayerKarman.ThreatLevelYach5;
// Расчитываем уровень угрозы монстров в инвентаре игрока выбирая самого опасного
ThreatLevelPlayerKarman = Mathf.Max(PlayerKarmanThreatLevelYachMax);
//Уровень угрозы монстра с которым мы столкнулись
ThreatLevel = Clash.ThreatLevel;
// Расчитываем итоговый уровень угрозы сравнив опасность монстра с опасностью самого крутого монстра в инвентаре игрока
TotalThreatLevel = Mathf.Max(ThreatLevelPlayerKarman, ThreatLevel);
//расчёт размера сетки исходя из уровня угрозы
if (TotalThreatLevel == 1)
{
SetkaScaleZ = 11;
SetkaScaleX = 11;
}
if (TotalThreatLevel == 2)
{
SetkaScaleZ = 13;
SetkaScaleX = 13;
}
if (TotalThreatLevel == 3)
{
SetkaScaleZ = 15;
SetkaScaleX = 15;
}
if (TotalThreatLevel == 4)
{
SetkaScaleZ = 19;
SetkaScaleX = 19;
}
if (TotalThreatLevel == 5)
{
SetkaScaleZ = 23;
SetkaScaleX = 23;
}
if (TotalThreatLevel == 6)
{
SetkaScaleZ = 35;
SetkaScaleX = 35;
}
if (TotalThreatLevel == 7)
{
SetkaScaleZ = 99;
SetkaScaleX = 99;
}
Импровизированный инвентарь игрока на 5 походных монстров:
public static class PlayerKarman
{
public static int MonYach1 = 1;
public static int ThreatLevelYach1 = 1;
public static int MonYach2 = 0;
public static int ThreatLevelYach2 = 0;
public static int MonYach3 = 0;
public static int ThreatLevelYach3 = 0;
public static int MonYach4 = 0;
public static int ThreatLevelYach4 = 0;
public static int MonYach5 = 0;
public static int ThreatLevelYach5 = 0;
}
Конструирование боевого уровня становится всё сложнее, и это только начало.
Так-как в нём будет проходить основная часть геймплея, на его
разработку будет потрачено огромное количество времени.
Мне нужно будет и массив проходимости клеток создавать,
и рандомный расставляльщик всяких деревьев и прочей
хрени мешающей нам перемещаться.
Во всяком случае сложность конструирования уровня уже даёт за обе щеки
покемонам, так-как в серии тех игр нет вообще возможности
перемещаться по полю боя, а у меня будет, так-как это
даёт массу возможностей в выстраивании тактики боя.
Уже даже герои меча и магии начинают сосать, так-как там по моему
весь бой происходит на одинаковой сцене, с сеткой одного размера,
там только задники меняются, есть там правда и вторая сцена "замок".
А у меня 7 размеров уровней генерирующихся автоматически в одной
единственной сцене, чем не повод для гордости? ))
Масштаб задумки огромный, чтобы всё рассказать придётся писать
огромный диздок, в котором нет смысла для студии из одного человека )
---
Окей, что дальше делаем?
Далее создам скрипт, запихивающий игрока в сцену боя,
при этом у нас будет 2 варианта на выбор, либо мы
присутствуем в стороне как в HoMM3 например,
либо идём и самим персонажем в бой как в HoMM4.
Разница будет в том, что стоя в сторонке и отдавая
приказы монстру, мы будем в безопасности, и сможем убежать,
а при выходе на поле боя лично, мы сможем там сразу опиздюлиться,
а смерть юзера это будет стопроцентный молниеносный гамовер.
Зачем же нам выползать на поле боя самому? Ну во первых,
в моей игре задницу игроку никто нализывать не будет,
и никакой профессор "ОАК" нам с ходу не вручит имбового пикачу,
нам дадут дубинку, и скажут, хочешь жить, умей вертеться.
И с этой херновиной мы пойдём врукопаш на монстров,
чтобы кого-нибудь поймать, или сдохнуть. При этом
если у нас нет походных монстров, значит бой стопроцентно
начнётся с игроком на поле боя.
Далее, в скрипте создания монстра на поле боя будет реализована
рандомная случайность, что монстр который на нас напал, моментально
призовёт на помощь от 0 до 2 монстров на подмогу.
А если вы помните, мы призываем монстров с помощью перчатки-контроллера,
которая может контролировать только одного монстра, собственно
только одного и призывать, и раз монстров противников может
оказаться более одного, значит игроку придётся самому часто
выползать на поле боя в виде подмоги.
Но я уже ранее писал, что будет возможность призвать больше монстров.
Первая это используя скилл особого монстра, вторая это дополнительный
предмет, о котором я не расскажу.
Уже жду не дождусь когда наконец смогу перейти к разработке механики боя,
однако ещё много что нужно реализовать перед этим.