среда, 6 июня 2012 г.

[OpenSim] Что от нас скрывают в LindenLab

Знаю-знаю, я обещал рассказать, как подключить свой сим к гриду. Но давайте рассуждать здраво - ну вот вы подключили свой сим, позвали туда своих друзей (чтобы забанить, не иначе как ;D ), а у вас на симе - лысина суши торчит из воды и вы там, посередине, криво примостили свой аватар на кубик. В общем, скажут вам друзья "Круто!" из жалости и свалят обратно в SL лясы точить. Оно вам надо?

Сегодня я расскажу, как сделать правильный терраформ, попутно открою святую тайну всех эстейт-администраторов и то, что от вас скрывают от вас в LindenLab по поводу серверов и регионов. Об этом я уже упоминал в прошлой статье, сегодня же мы своими руками проделаем такие же манипуляции, какие проделывают Линдены, когда берут свою $1000 за установку сима очередному незадачливому клиенту.

Итак, давайте сегодня создадим кластер, состоящий из четырех, стоящих рядом, регионов, на которых сделаем комплексный терраформ какого-нибудь реального рельефа Земли.

Для этого, как всегда, расчистим лабораторный стол сделаем несколько подготовительных манипуляций. В прошлый раз мы запустили свой сим с одним единственным регионом, сегодня же мы будем создавать на этом сервере совершенно иную конфигурацию, поэтому будет разумно немного вернуться назад и создать необходимые нам регионы снова прямо из консоли сервера. Для этого мы идем в папку osim, где лежат файлы сервера и ищем там еще одну папку, которая называется Regions. Как можно догадаться, здесь лежат файлы, которые описывают конфигурацию всех наших регионов, которые размещены на сервере, ведь мы уже знаем, что один сервер может обслуживать количество оных числом более единицы.

В нашем случае интересующий файл будет один с интуитивно понятным названием Regions.ini, не перепутайте ;) Если мы его откроем, то увидим переменные, которые описывают те или иные параметры. Я сейчас приведу свой файл, в принципе, там все понятно, что для чего нужно:
[Kin-Dza-Dza]
RegionUUID = 6962ac4b-d8a5-4142-99b6-7dee1f6b0474
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = 191.168.0.2
Теперь вы знаете, что почти все ответы на вопросы, которые задавал нам сервер, храняться именно здесь и если что, нужно идти сюда, чтобы что-нибудь поправить или поменять. Но мы к этому еще когда-нибудь вернемся, а пока просто переименуем этот файл во что-либо иное, например:
  1. $ mv Regions.ini Regions.ini.old
Все, возвращаемся в osim и запускаем сервер. Так как сервер не найдет нужного конфига во время старта, он опять начнет задавать нам все те же вопросы, которые были в прошлый раз. Отвечаем безо всякого стеснения, однако, помня о том, что на этот раз мы создаем не один, а четыре региона, названия будем давать такие, чтобы потом нам было удобно между ними переключаться. В конце концов их всегда легко поменять на любые другие, когда это станет нам нужно.

Лично я буду создавать модель моего родного края - полуострова Крым, поэтому буду называть регионы Crimea1, Crimea2, Crimea3 и Crimea4. Первый регион создаем не глядя, просто отвечаем на вопросы. Единственный момент, на который нужно обратить внимание - в какой-то момент сервер спросит, хотите ли вы разместить новый регион в существующем эстейте или нет.
New region name []: Crimea1
Region UUID [8b0c7f33-0e3b-4026-9407-25392fa316c0]: 
Region Location [1000,1000]: 
Internal IP address [0.0.0.0]: 
Internal port [9000]: 
Allow alternate ports [False]: 
External host name [SYSTEMIP]: media      
14:22:18 - [REGION LOADER FILE SYSTEM]: Loading config files from ./Regions
14:22:18 - [REGION LOADER FILE SYSTEM]: Loading config file ./Regions/Regions.ini
14:22:18 - [REGION LOADER FILE SYSTEM]: Loaded config for region Crimea1
14:22:18 - [LOAD REGIONS PLUGIN]: Loading specific shared modules...
14:22:18 - [LOAD REGIONS PLUGIN]: DynamicTextureModule...
14:22:18 - [LOAD REGIONS PLUGIN]: LoadImageURLModule...
14:22:18 - [LOAD REGIONS PLUGIN]: XMLRPCModule...
14:22:18 - [LOAD REGIONS PLUGIN]: Done.
14:22:18 - [LOAD REGIONS PLUGIN]: Creating Region: Crimea1 (ThreadID: 1)
14:22:18 - [ESTATE]: Region Crimea1 is not part of an estate.
Do you wish to join region Crimea1 to an existing estate (yes/no)? [yes]: no
Все дело в том, что сервер помнит, что у нас уже есть эстейт, и хочет знать, что именно мы сейчас создаем, дополнительный парсель или совершенно отдельный сим? Если ответить «yes», то будет создан новый парсель на существующем эстейте, а так как мы убрали информацию о старом, то это будет парсель на весь существующий сим. Так что в данном случае отвечаем «no» и жмем ENTER, после чего сервер спросит, как нужно назвать вновь создаваемый эстейт (сим то бишь), а затем назначить ему владельца вместо Test User (или оставить этого). Да-да, я помню, с владельцами непросто. Но пока этим пренебрежем и вальсируем дальше.

Следом создаем остальные эстейты. Здесь нам поможет команда сервера create region. Давайте посмотрим, как правильно нужно ее отдавать:
Region (Crimea1) # help create region
create region ["region name"] 
Create a new region.

The settings for "region name" are read from <region_file.ini>. Paths
specified with <region_file.ini> are relative to your Regions
directory, unless an absolute path is given. If "region name" does not exist
in <region_file.ini>, it will be added. Without "region name", the first region found
in  will be created. If <region_file.ini> does not exist, it will be created.
Мы видим, что нужно просто задать имя нового региона и, по необходимости, имя файла, в котором будут его настройки. Здесь тоже есть один нюанс - поскольку происхоит постоянная путаница с терминологией, то не всегда очевидно, что же мы делаем и что получим в результате. Запомните - эстейт это сим, регион же может быть как симом, так и парселем. Сейчас мы создаем четыре эстейта, на которых будет расположено четыре парселя (региона), размерами по целому эстейту на каждый. Кроме того, создавая эстейт, полезно переместиться из текущего региона Crimea1, как мы видим, написано в приглашении сервера, в корневую сущность. Сделать это можно простой командой:
Region (Crimea1) # change region root                       
Currently selected region is root
Если же вы создаете несколько эстейтов, внутри которых планируется разместить несколько регионов (парселей), то для каждого эстейта лучше всего назначать свой ini-файл. Для наглядности, давайте сейчас так и поступим, создадим для каждого эстейта свой ini-файл, в данном случае это будет Crimea2-Regions.ini:
Invalid command
Region (root) # create region Crimea2 Crimea2-Regions.ini
=====================================

We are now going to ask a couple of questions about your region.

You can press 'enter' without typing anything to use the default

the default is displayed between [ ] brackets.

=====================================

Region UUID [027a1195-f7bc-4610-9701-0f571c6d953a]: 
Region Location [1000,1000]: 1000,1001
Internal IP address [0.0.0.0]: 
Internal port [9000]: 9001
Allow alternate ports [False]: 
External host name [SYSTEMIP]: 192.168.0.2
14:39:31 - [ESTATE]: Region Crimea2 is not part of an estate.
Do you wish to join region Crimea2 to an existing estate (yes/no)? [yes]: no
New estate name [My Estate]: Crimea2
Здесь важно помнить, что нужно ему задать правильные координаты, правильный порт и правильное расположение - указать, что это новый эстейт, а не парсель в существующем эстейте. Вновь назначаем ему владельца и, вуаля!
14:42:21 - [GRID SERVICE]: Region Crimea2 (027a1195-f7bc-4610-9701-0f571c6d953a) registered successfully at 256000-256256
14:42:22 - [REGION]: Enabling logins for Crimea2
14:42:22 - [GRID SERVICE]: region Crimea2 has 1 neighbours
14:42:22 - [INTERGRID]: Informing 1 neighbours that this region is up
Обратите внимание на крайнее сообщение. Сервер нам говорит, что у нашего нового региона есть один сосед и он включен. Что ж, здесь теоретическая часть заканчивается и начинается практика - по аналогии создаем еще два региона и не забываем, что значение порта должно увеличиваться на единицу, да и координаты нужно указать таким образом, чтобы все четыре сима встали друг к дружке самым что ни на есть квадратно-гнездовым образом.



Теперь вам понятно за что Линдены дерут бабло? Если бы мы с вами были Линденами, мы бы уже положили себе в карман $4000 безо всякого зазрения совести ;) К слову сказать, точно так же поступают в LindenLab, когда вам впаривают туфту на тему «один сим - один сервер», сколько железный ящик бует тянуть вот таких виртуальных регионов, столько туда и впихнут, а в наши дни вообще оптимизация достигла перигелия - на железке запускается несколько виртуальных машин, которые через балансер... В общем, это уже совершенно другая история, которую я вам рассказывать не буду, поскольку это долго и нудно. Просто запомните - симов на одной машине можно запустить столько, сколько жадность и железо позволяет.

1 комментарий: