Silent Hill: Shattered Memories/RWS
RWS содержит векторную карту, которая является единственной во всей игре. Факт того, что она векторная, а не растровая, позволяет масштабировать её и использовать отдельные фрагменты в качестве карт локаций.
Структура файла:
Размер | Описание |
---|---|
Размер заголовка | Заголовок |
Размер блока вершин | Блок вершин |
Размер блока цветов | Блок цветов |
Размер блока надписей | Блок текста |
Размер блока слоёв | Блок слоёв |
Содержание
Заголовок
Смещение | Размер | Описание |
---|---|---|
0x00 | 4 байта | Вероятно сигнатура (встречалось только 0x7EC7F11E) |
0x04 | 4 байта | Ширина карты |
0x08 | 4 байта | Высота карты |
Блок вершин
Вершина представляет собой координату на плоскости (x и y). Используются числа с плавающей запятой.
Структура вершины:
Смещение | Размер | Описание |
---|---|---|
0x00 | 4 байта | X-координата |
0x04 | 4 байта | Y-координата |
Структура блока вершин выглядит так:
Размер | Описание |
---|---|
4 байта | Количество вершин |
Количество вершин × размер вершины | Массив вершин |
Блок цветов
Используются цвета в формате RGBA8888 (4 канала, 8 бит на канал).
Структура цвета:
Смещение | Размер | Описание |
---|---|---|
0x00 | 1 байт | Значение компоненты красного цвета |
0x01 | 1 байт | Значение компоненты зелёного цвета |
0x02 | 1 байт | Значение компоненты синего цвета |
0x03 | 1 байт | Значение альфа-канала |
Структура блока цветов:
Размер | Описание |
---|---|
4 байта | Количество цветов |
Количество цветов × размер записи цвета | Массив цветов |
Блок текста
Блок текста состоит из массива символов, представляющего собой последовательность нуль-терминированных строк.
Размер | Описание |
---|---|
4 байта | Количество символов |
Количество символов | Символы нуль-терминированных строк |
Блок слоёв
Блок слоёв содержит в себе слои карты. Его структура выглядит так:
Размер | Описание |
---|---|
4 байта | Количество слоёв |
Суммарный размер слоёв | Последовательность слоёв |
Структура слоя
Структура слоя выглядит так:
Размер | Описание |
---|---|
4 байта или 0 байтов для первого слоя | Смещение имени в массиве блока текста, у первого слоя отсутствует |
4 байта | Количество полигонов |
Количество полигонов × размер записи полигона | Массив записей полигонов |
4 байта | Количество линий |
Количество линий × размер записи линии | Массив записей линий |
4 байта | Количество надписей |
Количество надписей × размер записи надписи | Массив записей надписей |
В слоях не используются напрямую координаты, цвета и тексты надписей - вместо них указываются индексы (в случае надписей - смещения строк) в массивах соответствующих блоков. Т.е. вместо вершин указываются индексы вершин, вместо цветов - индексы цветов, а вместо строк - смещения (индексы первого символа).
Полигоны
Структура полигона:
Смещение | Размер | Описание |
---|---|---|
0x02 | 2 байта | Индекс цвета |
0x04 | 2 байта | Индекс вершины 1 |
0x06 | 2 байта | Индекс вершины 2 |
0x08 | 2 байта | Индекс вершины 3 |
Линии
Структура линии:
Смещение | Размер | Описание |
---|---|---|
0x02 | 2 байта | Индекс цвета |
0x04 | 2 байта | Индекс вершины 1 |
0x06 | 2 байта | Индекс вершины 2 |
Надписи
Структура надписи:
Смещение | Размер | Описание |
---|---|---|
0x00 | 2 байта | Смещение строки в массиве символов блока текста |
0x02 | 2 байта | Индекс цвета |
0x04 | 4 байта | X-координата надписи на карте [1] |
0x08 | 4 байта | Y-координата надписи на карте |
0x08 | 4 байта | Угол поворота |
0x08 | 4 байта | Размер шрифта |
- ↑ Координаты, угол поворота и размер шрифта - числа с плавающей запятой.