Настройка интерактивной карты на примере GMGame
В данном кратком руководстве пойдет речь о настройке и возможностях Overviewer. Так что у вас должен быть предварительно установлен или скомпилирован Overviewer и вы в состоянии запустить хотябы базовый рендер карты.
Начинаем готовить конфиг, берем текстовый редактор, называем файл config.py и вперед
1. Указываем директорию, где расположен файлы с миром майнкрафта и добавляем в словарь worlds
worlds['GMGameWorld'] = "/media/disk1/maps/worlds/gmgame/gmgame"
2. Настриваем освещение и высоту
smooth_lighting = [Base(), Depth(min=-64, max=256), EdgeLines(), SmoothLighting(color=True)]
- в Depth нужно указать высоту до которой будет рендериться карта, если указать например max=10, то выше 10 по Y карта не будет отображаться
- SmoothLighting применяет мягкое освещение, можно заменить на Lighting, будет менее красиво, но меньше места будет занимать на диске. color, одна из опций для освещения, думаю данный параметр говорит сам за себя - учитывает цвет света
- Base, это основной режим для рендера блоков. А EdgeLines рисует линии на границах блоков, что бы они отличались от фона
3. Подготовим простую функцию фильтрации. Тут ничего сложного, сюда Overviewer будет передавать словарь меток, а функция вернет нужную нам строку:
def townFilter(poi):
if poi['id']=='Города':
poi['icon']='customwebassets/markers/города.png'
try:
return (poi['name'], poi['description'])
except KeyError:
return poi['name']
4. Теперь настраиваем наш первый рендер и добавляем с уникальным ключем в словарь renders следующие настройки
renders["over"] = {
'world': 'GMGameWorld',
'title': 'День',
'rendermode': smooth_lighting,
'dimension': 'overworld',
'manualpois': [{'id':'Города', 'x':-555, 'y':64, 'z':422, 'name':'Pink Squad', 'description':''}],
'markers': [
dict(name='Города',filterFunction=townFilter, icon='customwebassets/markers/города.png', showIconInLegend=True)
],
'defaultzoom': 7,
"crop": (-12500, -12500, 12500, 12500),
"imgformat": "webp"
}
Немного пояснений
- world - название карты на странице
- title - название режима
- rendermode - наше настроенный рендер с освещением
- manualpois - массив словарей с метками
- markers - название метки, иконка метки. filterFunction - функция фильтрации
- defaultzoom - приближение по умолчанию
- crop - указываем до каких размеров рендерить карту
- imgformat - формат картинок. webp рекомендуется для наилучшего качества и размера изображений
Таких настроек достаточно для отображения простой карты, добавляем outputdir и texturepath, после чего запускаем Overviewer с получившемся конфигом.
Поскольку конфиг написан на питон, как и Overviewer, то дальше это все можно автоматизировать и кастомизировать. Например у нас метки создаются отдельно и импортируются как модули в конфиг. Подробнее об этом тут
Еще немного полезностей:
- Для энда в настройках света стоит указать силу света - strength=0.5, иначе в энде будет темно, так как там нет освещения как такового
- Для незера в настройка рендера добавить Nether(), что уберет крышу, иначе не будет ничего видно
- renders можно сделать оверлеем для другого рендера, добавив 'overlay': ['название_основного_рендера'].
Например у нас есть рендер созданный на 4 шаге, можно добавить еще один ренде - renders["over_overlay"] c такими же настройками, как у renders["over"], только переопределив rendermode на smooth_lighting_overlay, в котором будет высота с 256 до 320.
После этого, на карте появится кнопка, по нажатию на которую, на нашу карту наложится все что находиться на высоте с 256 до 320.
Так сделана крыша незера у нас
- Для поворота карты, нужно создать 4 одинаковых рендера и в настройках каждого добавить northdirection равный upper-left, upper-right, lower-left или lower-right
Надеюсь материал был полезен или интересен. Помочь проекту можно тут