Тема: I.D.S. MONSTERS
Показать сообщение отдельно
Старый 24.03.2020, 23:47   #75
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: I.D.S. MONSTERS

Взрослая жизнь задолбала! Да что такое! Опять сегодня мало времени на кодинг было!
Однакож нужно выговориться.

Я продолжаю работать над конструированием сцены боя,
и создавать то, о чём понаобещал ранее. Так вот, игровой уровень
строился исходя из учёта уровня угрозы нападающего монстра,
а теперь мы имеем некий импровизированный инвентарь
персонажа с пятью ячейками для хранения походных монстров,
в котором записываются порядковый номер и уровень угрозы монстра.
Порядковый номер нужен будет на днях, для написания скрипта
по созданию в сцене монстра из инвентаря игрока, а вот уровень
угрозы его уже нужен для конструирования сетки уровня.

Как я заявлял ранее, мы будем выбирать самого опасного монстра
игрока, и сравнивать его с уровнем опасности нападающего монстра,
а после выбирать кто из них круче, и в соответствии с полученными
данными выбирать размер уровня. Так-как логично, что более крутые
монстры будут тупо крупнее, и часто резво перемещаться на большие расстояния,
и в маленький уровень не влезут, а создавать уровни размером
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 монстров на подмогу.
А если вы помните, мы призываем монстров с помощью перчатки-контроллера,
которая может контролировать только одного монстра, собственно
только одного и призывать, и раз монстров противников может
оказаться более одного, значит игроку придётся самому часто
выползать на поле боя в виде подмоги.
Но я уже ранее писал, что будет возможность призвать больше монстров.
Первая это используя скилл особого монстра, вторая это дополнительный
предмет, о котором я не расскажу.

Уже жду не дождусь когда наконец смогу перейти к разработке механики боя,
однако ещё много что нужно реализовать перед этим.
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (25.03.2020)