             Документация по Квантуму




Особенности Движка                                   2
Особенности портальной системы                       3
Мультиязычность                                      4
Система шрифтов                                      4
Дополнительные настройки игры                        5
 SETTING.TXT                                         5
 ENGLISH.TXT                                         6
 Настройки ботов                                     7
 WEAPONS.TXT                                         10
Мультитекстурность                                   11
Режимы рендеринга                                    14
 Список режимов рендеринга:                          14
 Производительность режимов рендеринга:              23
 Чем ниже значение - тем быстрее режим рендеринга.   23
Настройки карт                                       24
Типы объектов на уровнях                             28




                                                      1
              Особенности Движка
Тут будет идти перечисление моих улучшений движка л2д, если я
                не забуду закончить этот список.

                              ●




   Особенности портальной системы
      ну, честно говоря не могу вспомнить, что тут писать
           сама портальная система стала стабильней
             можно делать комнаты внутри комнат
        можно делать комнаты над комнатами(поидее)
Скоро можно будет не делить открытые открытые пространства на
                            комнаты




                                                                2
                      Мультиязычность
   Вообщем у игры есть одна новая фишка связанная с языками
                 к примеру можно записать так
                   WORLD_MODEL=level_model

                  и если в файлах языков записать
                        level_model=/city.3d
                то будет грузится именно эта модель
       и так для разных языков можно грузить разные модели

   тоже самое можно делать с любыми опциями и настройками


                        Система шрифтов
          В движке такая-же система шрифтов, как в л2д, но с некоторыми
                            улучшениями/урезаниями.
Больше не нужно использовать строку LINES, а так-же можно не использовать строку
    COORDS, и вместо неё белыми точками сверху отмечать начало символов в
                  изображении со шрифтом(см демку квантума)
 Так-же появилась дополнительная строка для шрифта выделения, SELECTED_IMG




                                                                               3
      Дополнительные настройки игры



                       SETTING.TXT
          OPEN_LEVELS - Число открытых уровней с начала игры
                    Пример: OPEN_LEVELS=0

              WORLD_SCALE - Стандартный шасштаб карт
                   Пример: WORLD_SCALE=25

            FREQUENCY - Стандартная частота спавна врагов
                    Пример: FREQUENCY=200

                CANSAVE - Умеет-ли игра сохранятся(0/1)
              (можно вернуть чисто выбор уровня как в л2д)
                         Пример: CANSAVE=0

CANSELECTLEVEL - Можно-ли игроку запускать любой доступный уровень(0/1)
                  Пример: CANSELECTLEVEL=1

           SAVE_NAME - Название для файлов сохранений игры
                   Пример: SAVE_NAME=ZOMBIE

      PLAYER_ZOOM - Настройки угла обзора и режима лупы(на *)
           Первое число - минимальный(обычный масштаб)
           Второе число - максимальный(масштаб под лупой)
     Третье число(0/1) - доступна ли лупа когда в руках нет оружия
   Эти значения так-же будут использовать для всего оружия, если не
                      переназначить их в weapons
                 Пример: PLAYER_ZOOM=4800,10000,1

                MUSIC - Стандартная музыка для уровней
                     Пример: MUSIC=/music.mid

               WALK_SOUND - Стандартные звуки ходьбы




                                                                      4
                             Пример:
WALK_SOUND=/sounds/fx_step1.wav,/sounds/fx_step2.wav,/sounds/fx_step3.
                               wav

               JUMP_SOUND - Стандартный звук прыжка
              Пример: JUMP_SOUND=/sounds/fx_jump.wav

                  BLOOD_TEX - Текстура декали крови
                 Пример: BLOOD_TEX=/decal_blood.png

          DELETE_IN_DISTANCE - Удалять-ли зомби в дали(0/1)
                 Пример: DELETE_IN_DISTANCE=0

 ZOMBIE_COUNT - Количество одновременно существующих зомби на карте
                    Пример: ZOMBIE_COUNT=5

 SKYBOX_ALWAYS - Отрисовывать-ли небо всегда(даже когда его не видно)
                  Пример: SKYBOX_ALWAYS=1

SKYBOX_PERS - Использовать-ли перспективную коррекцию для отрисовки 3D
                              неба(1/0)
                     Пример: SKYBOX_PERS=0

    SHOP_PROPORTIONAL - Растягивать-ли спрайты оружия в магазине
                     пропорционально(0/1)
               Пример: SHOP_PROPORTIONAL=0

DEFAULT_ARSENAL - Стандартное оружие при старте игры (-1 - пустая рука)
     Если не указать, то при старте игры будет оружие под номером 0
  Если отсутствует файл weapons.txt, то при старте игры будет пустая рука
                    Пример: DEFAULT_ARSENAL=-1,0

  NEW_EXIT- Не показывать текст о завершении уровня (используется для
              бесшовного перехода между уровнями) (0/1)
                        Пример: NEW_EXIT=1

      ALWAYS_EXIT - Использовать-ли выход без убийства всех зомби
                      Пример: ALWAYS_EXIT=1

           WEATHER - Стандартная погода в игре (SNOW/RAIN)
                     Пример: WEATHER=SNOW

 WEATHER_PARTICLES_COUNT - Число частиц выделяемых для симуляции
                           погоды

                                                                        5
                Пример: WEATHER_PARTICLES_COUNT

         PLAYER_SHOP - Оружие в магазине на левый софт кей
                      записывается через запятую
Отсчёт типов оружия начинается с нуля, аптечка - номер последнего оружия
                                  +1.
  Если нужно отключить магазин на левый софт кей, то нужно прописать
                         PLAYER_SHOP=OFF
             Пример: PLAYER_SHOP=0,1,2,3,-1 (-1 - аптечка)

 SHOPSCROLL - Тип пролистывания в магазине (HORIZONTAL/VERTICAL)
                Пример: SHOPSCROLL=VERTICAL

             LQ_FOG - Использовать-ли простой туман (0/1)
                         Пример: LQFOG=1

                     DEBUG - Режим дебагинга (0/1)
                              DEBUG=0

      HIDESIGHT - Скрывать прицел, когда в руках нет оружия (0/1)
                           HIDESIGHT=1

     SPLINTER_SCALE - Размер спрайта попадания выстрела в стену
                       SPLINTER_SCALE=5

                 BLOOD_SCALE - Размер спрайта крови
                        BLOOD_SCALE=2

                   TEXT_BCK - фон для сообщений
                  Если не указать, то фона не будет

                  MESSAGE_BCK - фон для диалогов
                  Если не указать, то фона не будет

                    CHUNK_SIZE - Размер чанков
    Если указать слишком маленький размер, то игра будет лагать

UPDATE_ONLYNEAR - Просчитывать ботов и объекты только в соседних
                        комнатах (0/1)

  SAVESTATE - Сохранять-ли игру по выходу с неё(по дефолту игра
         сохраняется только при прохождении уровней)
         Положение ботов и объектов не сохраняется!!!
               (Убитые боты тоже не сохраняются)

                                                                           6
            Настройки путей к элементам интерфейса:
                   LIFE_ICON=/images/life.png
                MONEY_ICON=/images/money.png
                PATRON_ICON=/images/patron.png
                 SIGHT_ICON=/images/sight.png
                 SKULL_ICON=/images/skull.png
                  HAND_ICON=/images/hand.png
           BACKGROUND_LOGO=/images/background.png
             BACKGROUND=/images/background2.png
                   SPLASH=/images/splash.png
            SHOP_PATRON_ICON=/shop/icon_patron.png
         SHOP_MEDKIT_ICON=/shop/icon_medicine_chest.png




                    ENGLISH.TXT
           Тут может быть название любого языка ;P

В Квантуме можно для каждого уровня добавлять описание, через

       GAME_HELP_TEXT_(Номер уровня)=Бла бла бла
        GAME_HELP_BACKGROUND - фон на весь экран
         GAME_HELP_PREVIEW - превью сверху экрана
       Так же для каждого уровня можно менять название

Ещё можно делать по несколько описаний/картинок перед началом
уровня. Добавлять описание не обязательно, даже преью или фона
           достаточно для появления описания уровня.
                        Выглядит это так:
         GAME_HELP_BACKGROUND_15=/preview_0.png
       GAME_HELP_BACKGROUND_15_2=/preview_1.png
       GAME_HELP_BACKGROUND_15_3=/preview_2.png
           (После номера уровня нужно записать номер
                     изображения/описания)
ДЛЯ ПЕРВОГО ОПИСАНИЯ/ИЗОБРАЖЕНИЯ НЕ НУЖНО ПИСАТЬ
                           НОМЕР!!!


                                                                7
              LEVEL_(Номер уровня)=Лучший уровень

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




                       Настройки ботов
Все эти настройки можно писать в setting.txt, изменяя стандартные параметры ботов
         на всю игру, или в файле уровня, изменяя ботов на одном уровне.

                      ZOMBIE_MODEL - Модель зомби
                       ZOMBIE_MODEL=/zombie.3d
                    BIGZOMBIE_MODEL=/big_zombie.3d

                     ZOMBIE_TEXTURE - Текстура зомби
                      ZOMBIE_TEXTURE=/zombie.png
                   BIGZOMBIE_TEXTURE=/big_zombie.png

            ZOMBIE_DRAW_MODES -Режимы рендеринга зомби
                    ZOMBIE_DRAW_MODES=0;7;2
                    BIGZOMBIE_DRAW_MODES=1


                  ZOMBIE_SCALE - Масштаб модели зомби
                          ZOMBIE_SCALE=4.5
                         BIGZOMBIE_SCALE=50

              ZOMBIE_ANIMSPEED - Скорость анимации зомби
                       ZOMBIE_ANIMSPEED=140
                     BIGZOMBIE_ANIMSPEED=135

      ZOMBIE_ATTACKANIMSPEED - Скорость анимации атаки зомби
                 ZOMBIE_ATTACKANIMSPEED=700
               BIGZOMBIE_ATTACKANIMSPEED=270

                 ZOMBIE_DAMAGE - Урон, наносимый зомби
                          ZOMBIE_DAMAGE=1
                        BIGZOMBIE_DAMAGE=7


                                                                                    8
                       LIFE_ZOMBIE - Жизки зомби
                           LIFE_ZOMBIE=100
                         LIFE_BIG_ZOMBIE=400

  ZOMBIE_ATTACKRADIUS - Усилитель расстояние от модели, на котором
                         атакует зомби
                  ZOMBIE_ATTACKRADIUS=1.2
                BIGZOMBIE_ATTACKRADIUS=1.2

              ZOMBIE_JUMPHEIGHT - Высота прыжка зомби
                      ZOMBIE_JUMPHEIGHT=140
                    BIGZOMBIE_JUMPHEIGHT=202

     ZOMBIE_JUMPSPEED - Ускорение принимаемое зомби при прыжке
                    ZOMBIE_JUMPSPEED=1.2
                  BIGZOMBIE_JUMPSPEED=1.2

    BIGZOMBIE_JUMPHEIGHT2 - Высота прыжка к игроку большого зомби
                  BIGZOMBIE_JUMPHEIGHT2=135

  BIGZOMBIE_JUMPSPEED2 - Ускорение принимаемое большим зомби при
                         прыжке к игроку
                  BIGZOMBIE_JUMPSPEED2=1.5

                 ZOMBIE_SPEED - Скорость ходьбы зомби
                         ZOMBIE_SPEED=140
                       BIGZOMBIE_SPEED=135

   ZOMBIE_REACTTIMER - Количество тиков, через которые зомби будет
обновлять свой ИИ (меньше - зомби быстрее реагируют; больше - зомби тупят)
                         ZOMBIE_REACTTIMER=8
                       BIGZOMBIE_REACTTIMER=8

   ZOMBIE_ATTACKTIMER - Количество тиков от последнего удара, через
             которое зомби снова сможет ударить игрока
                     ZOMBIE_ATTACKTIMER=8
                  BIGZOMBIE_ATTACKTIMER=14

            ZOMBIE_ATTACK - Фракции, которые атакуют зомби
               (0-Игрок,1-Зомби,2-Большой Зомби,3-НПС)
                          ZOMBIE_ATTACK=0,3
                        BIGZOMBIE_ATTACK=0,3



                                                                         9
      Дальше идут настройк, редактирующие состояния ИИ зомби.
    Стоит отметить 2 основных состояния, в которых зомби что-то делают:
                             1 - Идут к игроку
                            2 - Атакуют игрока

При этом можно использовать и другие состояния, но в них зомби будет просто
 стоять на месте, если не указать, что зомби должен в этом состоянии что-то
                    делать. (к примеру атаковать игрока)

    ZOMBIE_AI - Стандартное поведение зомби при обнаружении игрока
                            ZOMBIE_AI=1
                          BIGZOMBIE_AI=1

               Типичное поведение при разных настройках:
                     0 - Зомби будет стоять на месте
                      1 - Зомби будет идти и игроку
         2 - Зомби будет атаковать игрока, на любом расстоянии

ZOMBIE_PLAYERREACTION - Поведение зомби при приближении вплотную к
                            игроку
                 ZOMBIE_PLAYERREACTION=2
               BIGZOMBIE_PLAYERREACTION=2

               Типичное поведение при разных настройках:
             0 - При приближении к игроку зомби остановится
  1 - При приближении к игроку зомби будет продолжать идти к игроку,
                            будет толкать его
        2 - При приближении к игроку зомби начнёт атаковать его

  ZOMBIE_ATTACKTRIGGER - В каком состоянии зомби должен атаковать
                             игрока
                  ZOMBIE_ATTACKTRIGGER=2
                BIGZOMBIE_ATTACKTRIGGER=2

                Типичное поведение при разных настройках:
   0 - Зомби никогда не будет атаковать игрока, но при этом останется
                             анимация атаки.
  1 - Зомби будет атаковать игрока, если находится далеко от него, при
приближении к игроку зомби перестанет атаковать игрока, хотя анимация
          атаки при этом будет только при приближении к игроку
         2 - При приближении к игроку зомби начнёт атаковать его




                                                                          10
                        WEAPONS.TXT
В новой версии квантума можно полностью редактировать оружие, добавлять новое,
                                 удалять старое.
  В файле weapons.txt нужно записывать настройки оружия, как объекты в файлах
                                     уровня.
В данном случает названия в [квадратных скобках] не имеет значения, и может быть
                                     любым.

                       Цвет обязательных настроек
                       Цвет необязательных настроек

                       IMAGE - Путь к спрайту оружия
                           IMAGE=/pistol.png

                          FIRE - Путь к спрайту огня
                                FIRE=/fire.png

              SHOP_IMAGE - Путь к спрайту оружия в магазине
                     SHOP_IMAGE=/icon_pistol.png

                             PRICE - Цена оружия
                                  PRICE=0

    KW - Положение спрайта выстрела по ширине относительно спрайта
                    оружия(1.0 - слева 0.0 - справа)
                                KW=1.0

KH - Положение спрайта выстрела по высоте относительно спрайта оружия(1.0
                           - сверху 0.0 - снизу)
                                 KH=1.0

                          DAMAGE - Урон от оружия
                              DAMAGE=20

                     DELAY - Время между выстрелами
                                DELAY=4

                 SHOTTIME - Время занимаемое выстрелом
                              SHOTIME=2


      TWOHANDS - Нужно-ли отрисовывать оружие в обеих руках(0/1)


                                                                              11
                            TWOHANDS=1

                     CAPACITY - Размер магазина
                          CAPACITY=12

                   RELOADTIME - Время перезарядки
                         RELOADTIME=10

          DISTANCE - Расстояние, на котором работает оружие
                        DISTANCE=99999999

               PATRONBUY - Ограниченные патроны (0/1)
                         PATRONBUY=1

NEWFIREANIM - Использовать спрайт огня как отдельный кадр при анимации
                           выстрела (0/1)
                         NEWFIREANIM=1

                   SHOOT_SOUND - Звук выстрела
                 SHOOT_SOUND=/sounds/fx_pistol.wav

                  RELOAD_SOUND - Звук перезарядки
                RELOAD_SOUND=/sounds/fx_reload.wav

          ZOOM - Настройки угла обзора и режима лупы(на *)
          Первое число - минимальный(обычный масштаб)
          Второе число - максимальный(масштаб под лупой)
     Третье число(0/1) - доступна ли лупа когда в руках это оружие
                     Пример: ZOOM=4800,10000,1




                Мультитекстурность
    Квантум поддерживает мультитекстурность, благодаря чему можно
    использовать сразу несколько текстур на одном меше, или моделе.


                                                                      12
Для работы с мультитекстурностью нужно использовать улучшенный конвертер
                                3D моделей:
                      Iceberg Converter 2.2.1 (02.07.17)

Сам процесс работы с материалами и мультитекстурность в разных редакторах
       разные, так-что нужно уточнять это в документации к редактору.

                   К примеру так это выглядит в Cinema 4D:




При конвертации конвертер будет выдавать список материалов, и их номера в движке:




                           Важны вот эти строки:
                                 white Index is 0
                                 black Index is 1
                                 gray Index is 2

  Уже опираясь на эти номера нужно прописывать текстуры и режимы рендеринга.
                                  К примеру:




                                                                               13
                         WORLD_MODEL=CC.3d
                WORLD_TEXTURE=/white.png;/black.png;/gray.jpg

                          Эта строка не обязательна:
                             DRAW_MODES=4;8;0

                    Эти строки писать тоже необязательно:
                          MODES_COLOR_R=255;0;0
                          MODES_COLOR_G=128;0;0
                           MODES_COLOR_B=0;0;0

  Таким образом квантум поддерживает мультитекстурность, и даже минимальную
                             систему материалов.

        И да, высота текстур может быть любой, даже не степенью двойки.
     Так-же текстуры можно обрезать, если там есть неиспользованные куски.

                              Памятка о весе текстур:
                                  256*256=256кб
                                  128*256=128кб
                                   128*128=64кб
                                    64*128=32кб
                                     64*64=16кб
                                     32*64=8кб
                                     32*32=4кб
                                     16*32=2кб
                                     16*16=1кб
Важно учитывать вес текстур, так как у с40 и большинства телефонов всего 2мб ОЗУ,
 а движок полностью без текстур съедает около 600кб ОЗУ, и так-же полигоны едят
                                     много ОЗУ.




                                                                               14
              Режимы рендеринга
Для создания карт с туманов, освещением, и прочими эффектами были
разработаны режимы рендеринга, которые могут определять, как будет
                      отрисовываться полигон.

   На данный момент их уже 8, и у каждого есть свои особенности.



               Список режимов рендеринга:
                        Нулевой режим:

    Стандартный режим рендеринга из L2D, поддерживает
прозрачность, не поддерживает полупрозрачность, нет никаких
                     особых эффектов.




                        Первый режим:

                                                                     15
Поддерживает прозрачность, не поддерживает полупрозрачность,
      использует эффект тумана в режиме добавления.




                       Второй режим:

Поддерживает прозрачность, не поддерживает полупрозрачность,
       использует эффект добавления при рендеринге.




                                                           16
                       Третий режим:

Поддерживает прозрачность, не поддерживает полупрозрачность,
      использует эффект тумана в режиме смешивания.




                                                           17
                    Четвёртый режим:

Поддерживает прозрачность, ПОДДЕРЖИВАЕТ полупрозрачность,
               не использует особых эффектов.




                                                        18
                       Пятый режим:

Поддерживает прозрачность, не поддерживает полупрозрачность,
 использует эффект примитивного директионального освещения.
           (На данный момент работает некорректно)




                                                           19
                       Шестой режим:

Поддерживает прозрачность, не поддерживает полупрозрачность,
             использует эффект чёрного тумана.




                                                           20
                       Седьмой режим:

Поддерживает прозрачность, не поддерживает полупрозрачность,
 использует эффект искажения, как у стекла. (Использует Normal
                            map)




                                                             21
                Восьмой режим:

 Не поддерживает прозрачность, не поддерживает
полупрозрачность, рендерит одноцветные полигоны.




                                                   22
23
    Производительность режимов рендеринга:




Чем ниже значение - тем быстрее режим рендеринга.




                                                    24
                      Настройки карт
                      Цвет обязательных настроек
                      Цвет необязательных настроек

                 START - Координата спавна игрока (X,Y,Z)
                       Пример: START=0,1000,0;

                FINISH - Координата выхода с уровня (X,Y,Z)
                       Пример: FINISH=0,1000,1000;

  ENEMIES - Координаты спавна врагов (X,Y,Z,Кол-во зомби, которое может
здесь заспавнится, Сбрасывать-ли счётки заспавнившихся зомби при большом
       расстоянии от игрока (0/1)), последние две опции необязательны.
Пример: ENEMIES=106219, -14075, 41973;114100, -14075, 53185,3;9045, -2218,
                                    8168,1,1;

                   FREQUENCY - Частота спавна врагов
                       Пример: FREQUENCY=200

  ENEMY_COUNT - Кол-во врагов для прохождения уровня (ALWAYS_EXIT
                     игнорирует это значение)
                   Пример: ENEMY_COUNT=15

 ZOMBIE_COUNT - Количество одновременно существующих зомби на карте
                    Пример: ZOMBIE_COUNT=5

           DELETE_IN_DISTANCE - Удалять-ли зомби в дали(0/1)
                  Пример: DELETE_IN_DISTANCE=0

          PLAYER_SHOP - Оружие в магазине на левый софт кей
                       записывается через запятую
 Отсчёт типов оружия начинается с нуля, аптечка - номер последнего оружия
                                   +1.
   Если нужно отключить магазин на левый софт кей, то нужно прописать
                          PLAYER_SHOP=OFF
              Пример: PLAYER_SHOP=0,1,2,3,-1 (-1 -аптечка)

                    WORLD_MODEL - 3D модель мира
                   Пример: WORLD_MODEL=/metro.3d



                                                                        25
                    WORLD_SCALE - Масштаб мира
                     Пример: WORLD_SCALE=25

                  WORLD_TEXTURE - Текстуры мира
          Пример: WORLD_TEXTURE=/texture1.png;/texture2.jpg

               WEATHER - Погода на уровне (SNOW/RAIN)
                    Пример: WEATHER=SNOW

 WEATHER_PARTICLES_COUNT - Число частиц выделяемых для симуляции
                           погоды
             Пример: WEATHER_PARTICLES_COUNT

     NEED_TO_EXIT - Какие объекты нужны для выхода(через запятую)
           Пример: NEED_TO_EXIT=SARA_DIALOG,KEY_1

  SKYBOX_MODEL - 3D Модель неба (их теперь можно редактировать как
                       обычные модели)
               Пример: SKYBOX_MODEL=/sky.3d

 SKYBOX_ALWAYS - Отрисовывать-ли небо всегда(даже когда его не видно)
                  Пример: SKYBOX_ALWAYS=1


 SKYBOX_TEXTURE - Текстура неба (Если указать только текстуру неба, без
       модели и цвета, то небо будет рендерится через панораму)
      Пример: SKYBOX_MODEL=/sky.png;/sky_additional_tex.png

SKYBOX_PERS - Использовать-ли перспективную коррекцию для отрисовки 3D
                              неба(1/0)
                     Пример: SKYBOX_PERS=0

    SKYBOX_REPEAT_X - Кол-во повторения текстуры 2D неба по оси X
                Пример: SKYBOX_REPEAT_X=2.7

    SKYBOX_REPEAT_Y - Кол-во повторения текстуры 2D неба по оси Y
                Пример: SKYBOX_REPEAT_Y=1

  SKYBOX_MODES - Режимы рендеринга неба (по текстурам) (См режимы
                          рендеринга)
                  Пример: SKYBOX_MODES=0;8




                                                                      26
SKYBOX_COLOR_R/SKYBOX_COLOR_G/SKYBOX_COLOR_B - Цвет эффекта
 неба (по текстурам) (Использовать всё вместе) (0-255)(Если указать только
      цвет неба, без текстуры и модели, то небо станет одноцветным)
         Пример: SKYBOX_COLOR_R=0 SKYBOX_COLOR_G=128
                         SKYBOX_COLOR_B=255

                  BLOOD_TEX - Текстура декали крови
                 Пример: BLOOD_TEX=/decal_blood.png

                       DIST - Дальность видимости
                          Пример: DIST=33500

                   FOGD - Дальность тумана на уровне
                          Пример: FOGD=500

 FOGCR/FOGCG/FOGCB - Цвет тумана на уровне (0-255) (Использовать все
                            вместе)
           Пример: FOGCR=255 FOGCG=128 FOGCB=0

  DMODE - Стандартный режим рендеринга на ВЕСЬ уровень(См. режимы
                           рендеринга)
                        Пример: DMODE=0

  DRAW_MODES - Режим рендеринга по текстуре (см. Режимы рендеринга)
                 Пример: DRAW_MODES=5;7;1;8

              LQ_FOG - Использовать-ли простой туман (0/1)
                          Пример: LQFOG=1

         MAP_ADDSZ - Смещение полигонов к камере по текстуре
                   Пример: MAP_ADDSZ=0,3000


   LIGHT_X/LIGHT_Y/LIGHT_X- Вектор освещения на уровне по оси X/Y/Z
                       Пример: LIGHT_X=-150

              BLOOM- Использовать-ли Bloom на уровне(0/1)
                         Пример: BLOOM=1

                  SECTOR_MODE - В разработке(уже нет)

                  SECTOR_DEEP - В разработке(уже нет)

                  NO_PORTALS - В разработке(уже нет)

                                                                        27
  NEW_EXIT- Не показывать текст о завершении уровня (используется для
              бесшовного перехода между уровнями) (0/1)
                        Пример: NEW_EXIT=1

      ALWAYS_EXIT - Использовать-ли выход без убийства всех зомби
                      Пример: ALWAYS_EXIT=1

                        MUSIC - Музыка уровня
                      Пример: MUSIC=/level1.mid

                  WALK_SOUND - Звуки ходьбы
                             Пример:
WALK_SOUND=/sounds/fx_step1.wav,/sounds/fx_step2.wav,/sounds/fx_step3.
                               wav

                     JUMP_SOUND - Звук прыжка
              Пример: JUMP_SOUND=/sounds/fx_jump.wav

 WALK_SOUND_(Номер комнаты) - Звуки ходьбы в определённой комнате
        Пример: WALK_SOUND_4=/sounds/fx_step-grass.wav

  JUMP_SOUND_(Номер комнаты) - Звук прыжка в определённой комнате
        Пример: JUMP_SOUND_4=/sounds/fx_jump-grass.wav

                     CHUNK_SIZE - Размер чанков
     Если указать слишком маленький размер, то игра будет лагать

UPDATE_ONLYNEAR - Просчитывать ботов и объекты только в соседних
                        комнатах (0/1)




                                                                        28
                  Типы объектов на уровнях
 У объектов есть одна удобная фишка - в строке POS можно записывать несколько
                               координат через ‘;’
                                   ТЕ. Вот так
                       POS=2160,2878,3600;6480,2878,3600
    В результате этого одинаковый объект будет заспавнен сразу в двух местах,
                                в 2160,2878,3600
                               и в 6480,2878,3600

                           Так-же есть система пресетов:
В настройках объекта можно прописать PRESET=*название пресета*, и движок будет
  грузить опции объекта из setting.txt, но они могут так-же могут быть переназначены
 Такая фишка была добавлена для уменьшения одинаковых и долгих прописываний
объектов в каждом уровне, теперь можно один раз прописать объект в setting.txt, и не
                  прописывать одинаковые настройки по куче раз.
         Также можно менять стандартные настройки объектов, для удобства.
                             Работает это примерно так:
 (Эта система используется для работы ботов на 1 и 2 уровнях квантума, где можно
                              проверить её на практике)




                                 [OBJECT]
              Можно прописывать у всех далее идущих объектов
                 POS - Место спавна объекта(через запятую)

                            PRESET (был описан выше)

               ACTIVABLE - Можно-ли использовать объект (0/1)
  CLICKABLE - Нужно-ли нажимать на левый софт для активации объекта(иначе -
                             просто подойти) (0/1)
        SINGLEUSE - Использовать объект один раз, или несколько (0/1)
         DESTROYONUSE - удалять объект после использования (0/1)
                             NAME - имя объекта
                          DESC - Описание объекта
     NEED (через запятую) какие объекты нужны для использования объекта



                                                                                  29
  ON_ACTIVATE (через запятую) какие объекты будут начислены после активации
                                кроме самого объекта
              MESSAGE - сообщение при активации объекта(или диалог)
  ERRMESSAGE - сообщение при неудачной активации объекта(когда нет нужных
                              объектов для активации)
   VISIBLE - Отображать-ли объект (работает только со спрайтами и мешами(0/1)
                 SOUND_ON_ACTIVATE - Звук при активации объекта
    ALWAYS_ACTIVATE - Активировать предмет не по попаданию в радиус, а по
                               нахождению в радиусе
REUSETIMER - Таймер для повторной активации (автоматом активирует HIDEREUSE)
    HIDEREUSE - делать объект невидимым, когда он не доступен из-за таймера
     NEEDTOPOINT - Нужно-ли наводить курсор на объект для активации (0/1/2)
                                    0 - Не нужно
           1 - Нужно, проверка соприкосновения будет проходить по сфере
      2 - Нужно, проверка соприкосновения будет проходить по прямоугольнику




  Если тип объекта - SPRITE/MESH/NPC, то POINTRADIUS/HEIGHT/OFFSET будут
                            расчитаны автоматически

DYNAMICPOINT- Просчитывать-ли размер зоны для наведения в реальном времени
                                     (0/1)
                     Годится только для SPRITE/MESH/NPC
 Пользовательские значения POINTRADIUS/HEIGHT/OFFSET не будут учитываться
                  Автоматически установлено на 1




                                                                           30
     POINTRADIUS - Радиус точки для наведения курсора(в 3д пространстве)
     POINTHEIGHT - Высота точки для наведения курсора(в 3д пространстве)
               (Если не указать будет использоваться радиус)
      POINTOFFSET - Смещение для наведения курсора(в 3д пространстве)
                       прим: POINTOFFSET=0,300,0


               Следующие настройки нужно использовать вместе.
  Работают они немного странно, так-что придётся объяснять немного по другому.

                               MESSAGETYPE=0
Такие настройки приведут к тому, что внизу экрана появится окошко, которое можно
                      будет пропустить только нажав на 5

                                MESSAGETYPE=1
                            MESSAGETIMEOUT=4000
Такие настройки приведут к тому, что внизу экрана появится текст, который пропадёт
                                 через 4 секунды

                               MESSAGETYPE=2
                            MESSAGETIMEOUT=4000
Такие настройки приведут к тому, что внизу экрана появится текст, который поставит
                    игру на паузу и пропадёт через 4 секунды



                                                                                 31
Так-же есть подобные настройки для сообщений о неудачной активации объекта,
                ERRMESSAGETYPE И ERRMESSAGETIMEOUT
ERRMSGDELAY И MSGDELAY - Насколько задержать сообщение (1000 - секунда)


                            [LEVELCHANGE]
                      LEVELCHANGE - Смена уровня
                   ACTIVABLE автоматом установлен на 1

                   LEVEL - Номер уровня для перехода
         START_POS - Координата спавна на уровне (через запятую)
             ROT - Дополнительный поворот игрока вокруг оси
         SAVEMUSIC - сохранять-ли одну музыку между локаций (0/1)

                                [TELEPORT]
                           Телепортирует игрока
         NEW_POS - Координата для телепортации (через запятую)
              ROT - Дополнительный поворот игрока вокруг оси
                                  [SHOP]
                         SHOP - Арсенал магазина
  Так можно делать магазины не в воздухе как в л2д, а в разных местах карты
              Можно для каждого магазина менять ассортимент
             Прописывается точно так-же, как и в PLAYER_SHOP
          ACTIVABLE и CLICKABLE автоматом установлены на 1
                       FILES - спрайты для арсенала
                         PRICES - Цены на арсенал

                                  [NPC]
                      MODEL - Путь к модели НПС
                      TEX - пути к текстурами НПС
            (мультитекстуринг работает так-же, как и с миром)
                          (см настройки карт)
     (Прописывать обязательно, если нужен рендеринг через модели)

                DEATH_ANIM - Анимация смерти спереди
                 STAY_ANIM - Анимация отдыха спереди
     (Прописывать обязательно, если нужен рендеринг через спрайты)
              DEATH_SIDE_ANIM - Анимация смерти сбоку
              DEATH_BACK_ANIM - Анимация смерти сзади
                DAMAGE_ANIM - Анимация урона спереди
              DAMAGE_SIDE_ANIM - Анимация урона сбоку
             DAMAGE_BACK_ANIM - Анимация урона сзади
                ATTACK_ANIM - Анимация атаки спереди
              ATTACK_BACK_ANIM - Анимация атаки сзади
               ATTACK_SIDE_ANIM - Анимация атаки сбоку
              STAY_BACK_ANIM - Анимация отдыха сзади
               STAY_SIDE_ANIM - Анимация отдыха сбоку
                WALK_ANIM - Анимация ходьбы спереди


                                                                              32
              WALK_SIDE_ANIM - Анимация ходьбы сбоку
              WALK_BACK_ANIM - Анимация ходьбы сзади
          В спрайтах сбоку НПС должен быть повёрнут вправо
               Анимации записываются в таком формате
WALK_ANIM=Количество кадров анимации в секунде, Масштаб спрайта, Кадры
                        спрайта через запятую
         (вместо запятых можно использовать точку с запятой)

                     ROT - Поворот НПС вокруг своей оси
                         SCALE - масштаб модели нпс
                                HP - жизни нпс
                                DRAW_MODES
                             (см настройки карт)
               ANIMSPEED - Скорость анимации нпс при ходьбе
            ATTACKANIMSPEED - Скорость анимации нпс при атаке
                        DAMAGE - урон, наносимый нпс
           ATTACKRADIUS - радиус, на котором нпс может атаковать
                  работает относительно размера 3д модели
                            то есть если ввести 1.2
                то нпс будет атаковать только вплотную к врагу
               если вводить значение намного больше вроде 10
                то нпс будет атаковать на большом расстоянии
                        JUMPHEIGHT - высота прыжка
      JUMPSPEED - множитель скорости при прыжке (см настройки ботов)
                           SPEED - скорость ходьбы
                                 REACTTIMER
                             (см настройки ботов)
                                ATTACKTIMER
                             (см настройки ботов)
                                       AI
                             (см настройки ботов)
                              ENEMYREACTION
                             (см настройки ботов)
                               ATTACKTRIGGER
                             (см настройки ботов)
                               FRAGSONDEATH
                  Сколько фрагов игроку добавит смерть НПС
                               MONEYONDEATH
                   Сколько денег игроку добавит смерть НПС
                              SLEEPONDAMAGE
       На сколько времени после получения урона НПС должен зависнуть
                             (1000 - одна секунда)
                            MAXENEMYDISTANCE
     Расстояние, на котором НПС перестаёт обращать внимание на врага
ATTACKONDAMAGE - Атаковать тех, кто ударил бота, даже если он из его фракции
  ATTACKONDAMAGE_OP - Тоже самое, но распространяется только на игрока
                                   ATTACK
               Фракции тех, кого НПС атакует и считает за врага


                                                                           33
                       0-Стандартная фракция игрока
                    1-Стандартная фракция малого зомби
                   2-Стандартная фракция большого зомби
                         3-Стандартная фракция нпс
                            Пример: ATTACK=1,2

                                   FOLLOW
          Фракции тех, кого нпс считает за союзника, и за кем следует
                        0-Стандартная фракция игрока
                    1-Стандартная фракция малого зомби
                   2-Стандартная фракция большого зомби
                          3-Стандартная фракция нпс
                             Пример: FOLLOW=0

                               FRIENDLY_FIRE
         Фракции тех, после атаки которых бот не будет получать урон
                        0-Стандартная фракция игрока
                    1-Стандартная фракция малого зомби
                  2-Стандартная фракция большого зомби
                         3-Стандартная фракция нпс
                         Пример: FRIENDLY_FIRE=0

                                   FRACTION
                                 Фракция бота
                 Если не указать, то фракция будет равна трём

                                   SPAWN
                     Респавнер/система для спавна ботов.
Если прописать эту комманду, то у НПС появится респавн, как у обычных врагов.
Так-же респавн можно будет активировать как обычный объект для спавна НПС.
        (Спавнер можно создавать одновременно только одного НПС!)

                    Записывается комманда в таком виде:
SPAWN=Количество ботов, которых может заспавнить спавн, время через которое
     будет происходить респавн, поворот бота вокруг своей оси при спавне
                 Время и поворот записывать не обязательно.
          Поворот записывается в градусах, а время в миллисекундах.
                             (1000мс - 1 секунда)
Если записать вместо количества ботов -1, то спавнер будет бесконечно спавнить
                                    НПС.
                                   Пример:
                               SPAWN=4,5000,0
                               SPAWN=-1,5000
                                  SPAWN=4

 Так же для спавнера можно прописывать свои настройки, ибо он является
обычным игровым объектом, который тоже можно активировать, и который
                   выводит сообщения при активации.


                                                                                34
     Чтобы записать настройки нужно просто перед настройками добавить
                               "SPAWNER_"

                                 Пример:
                                  [NPC]
                                NAME=BOT
                         SPAWNER_NAME=BOT_SPAWN
                           SPAWNER_ACTIVABLE=1
                           SPAWNER_CLICKABLE=1

                                       [MESH]
                            MODEL - пути к модели меша
                TEX - пути к текстуре меша (работает как и с ботами)


                 ANIMATION_TYPE (0 - standart|1 - new looping|2)
                             тип анимации у меша
                        нулевой тип - стандратный из л2д
    первый тип - самый адектавный, когда из конца анимации анимация просто
                              начинается сначала
        второй тип анимации - анимация по активации, как в Л2Д РПГ
 Если поставить второй тип, то ACTIVABLE И CLICKABLE будут автоматически
                              установлены на 1

LIFT_TIMER - Время, за которое после активации лифт доедет до новой точки на карте
                               (1000 - Одна секунда)
                          Пример: LIFT_POS=3000,6000

               LIFT_POS - Координаты, по которым будет ехать лифт
         Пример: LIFT_POS=-24806,2000,-2342;-29409,2000,-26420
Если указать эти свойства, то при активации меш будет ехать в другую точку на карте
         ACTIVABLE и CLICKABLE будут автоматически установлены на 1


                             ANIMATION_SPEED (float)
                                 скорость анимации
                               MODEL_SCALE (float)
                                  масштаб модели
                                     ROTATE_Z
                         Поворот модели вокруг своей оси
                                      ADDSZ
                   насколько меш будет приближаться к камере
               (нужно для того, что-бы меш не пропадал в текстурах)
                    если ставить значения вроде 2000 или 4000
                          то меш будет меньше пропадать
                      если ставить значения вроде -2000 -4000
                     то меш будет только уходить под текстуры



                                                                                 35
                             DRAW_MODES
                           работает как и у карт


                           COLLISION_SCALE_X
                 множитель радиуса коллизии (1 - норма)
                           COLLISION_SCALE_Y
                  множитель высоты колизии ( 1 -норма)
                                  PHYSICS
                       использовать-ли физику меша
                      (его можно двигать и так далее)
                                    (0/1)
                           PRECISE_COLLISION
          использовать-ли точную пополигонную колизию с мешем
                                 COLLIDER
       использовать-ли упрощённую эллипсоидную коллизию с мешем
                              FRICTION (float)
                              сила трения (4)
                                     HP
                                жизни меша
                            (не работает ахаха)

                                 [SPRITE]
                   MODE (ADD/MUL/NORMAL/OPAQUE)
                         тип отображения спрайта
                             ADD - добавление
                       MUL - умножение изображения
         нужно записывать силу умножения в синем канале спрайта
                        #000000 - нулевая яркость
                        #000045 - обычная яркость
                        #000080 - двойная яркость
                        #0000FF - тройная яркость
NORMAL - обычный способ отображения спрайтов, без полупрозрачности, самый
                       быстрый и оптимизированный
     OPAQUE - режим для отображения спрайтов с полупрозрачностью
     Если не указать режим рендеринга, то автоматически будет выбран
 NORMAL/OPAQUE в зависимости от того, используется-ли полупрозрачность в
                                 текстуре

                                 COLOR
               Настройка цвета для режима рендеринга MUL




                                                                            36
                                COLOR_ANIM (1/16 SEC)
                              Меняет цвета у режима MUL
                                      (0/1/2/3/4/5/6)
                          одно число занимает 1/16 от секунды
                                тоесть работает в 16 фпс
                                    записывается так
                           COLOR_ANIM=0,0,5,0,0,0,5,5,1,5,0

                                  CUTOFF (UP/NONE)
                               Способ угасания спрайтов
                          Первый нужен для источников света
                       Второй нужен для всех остальных спрайтов
                                    FOG (MIX/NONE)
                         Способ рендеринга тумана на спрайте
                           MIX - туман в режиме смешивания
                             NONE - игнорирование тумана

                Если не указать - то спрайт будет игнорировать туман
    Но если стандартный режим рендеринга на карте 1/3/6 - то спрайт уже не будет
                                   игнорировать туман
             Работает только с типами отображения OPAQUE и NORMAL
                                  TEX (ANIMATION - ‘,’)
                                 сама текстура спрайта
                 через запятую можно записывать анимацию спрайта
                                          вот так
TEX=/meshes/fire/fire_0.png,/meshes/fire/fire_1.png,/meshes/fire/fire_2.png,/meshes/fire/fire
_3.png,/meshes/fire/fire_4.png,/meshes/fire/fire_5.png,/meshes/fire/fire_6.png,/meshes/fire/fi
                                         re_7.png

                                SCALE - масштаб спрайта


                                                                                           37
                    FLICKER (1/16 SEC)
                     моргание спрайта
                         (0 или 1)
           одно число занимает 1/16 от секунды
                 тоесть работает в 16 фпс
                   записывается вот так
      FLICKER=0,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1,0,0,1

                  OFFSET (UP/MID/DOWN)
                      смещение спрайта
если записать UP, то на месте спавна будет верхушка спрайта
 если записать DOWN, то на месте спавна будет низ спрайта
если записать MID, то на месте спавна будет середина спрайта
                             ADDSZ
                    работает как у мешей
               (Стандартное значение - 2000)
                ANIMATION_SPEED (FLOAT)
                 скорость анимации кадров
                     (1 - 1 кадр в секунду)

           Настройки камеры от третьего лица:
                       [PLAYER]
                     THIRDPERSON
                      CAM_ANGLE
                        CAM_X
                        CAM_Y
                        CAM_Z
                        MODEL
                         SCALE
                          TEX
                     DRAW_MODES
                   MODES_COLOR_R
                   MODES_COLOR_G
                   MODES_COLOR_B
                       FRICTION

                        (В процессе)




                                                               38
