Быстрый ответ Ответить
 Локации, ТЕХНИЧЕСКИЕ РЕШЕНИЯ. РАЗМЫШЛЕНИЯ.
Krizalis
3 июня 2008 01:56
Сообщение #1



Группа: Пользователи
Сообщений: 2345
Регистрация: 13.02.2008
ICQ:Krizalis

Предупреждения:
5 / 5
Карта расширена. Она огромна, с чем связана проблема размещения локаций. Есть два технических решения:

- Рандомизация локаций;
- Позиционирование;

Рандомизация локаций – прежде всего риск и лишняя нагрузка на сервер (не ошибаюсь ведь?). Почему риск? Потому что большой шанс попасть в непроходимое ущелье и застрять там. Конечно, в таком случае можно выйти с помощью перехода на глобальную карту, но это далеко не самое лучшее решение.
Есть и другие отрицательные стороны этого метода. А что если машина сгенерирует локацию, которая похожа «черт знает» на что? Опять же минус.
Есть и плюсы, но их немного, уж гораздо меньше чем минусов. Рандомизация не требует лишнего человеческого труда, посему выполняется быстрей, чем во втором методе.

Позиционирование.
Об этом подробней, так как тема сама по себе очень интересна. Да, ручное создание локаций. Возникает сразу вопрос. Какого размера мы тогда клиент получим, если ~1.000.000 локаций будем хранить в папке клиента? Нет. Все будет не так, и мы поступим следующим образом:

Каждый объект (id) имеет свой номер и координату. Имеем на локации 16 одинаковых деревьев и 14 одинаковых камней, вот и будет на карте 30 объектов, имеющих всего 2 id но 30 координат.
Получим примерно такую таблицу:

Id | координата
===========
1 | n1, m1
1 | n2, m2
1 | n3, m3
1 | n4, m4
1 | n5, m5
1 | n6, m6
1 | n7, m7
1 | n8, m8
1 | n9, m9
1 | n10, m10
1 | n11, m11
1 | n12, m12
1 | n13, m13
1 | n14, m14
1 | n15, m15
1 | n16, m16
2 | n17, m17
2 | n18, m18
… |
==========

Еще одним замечанием будет любимый всеми div-верстальщиками z-index. Он позволит объектам корректно отображаться, выполняя функции «расслаивания».
Как это всё выглядит?

Шаг1. Для начала берем небольшой кусочек «чистой» локации:


Это тот же слой, с нулевыми координатами и z=-1. «-1» потому что самый нижний слой, кроме этого будет иметь z=0.

Шаг2. Добавляем первый объект.


Объект, в данном случае это камень, назовем его id1, помещен на кусочек карты по определенным координатам. Z=1, что означает, что все последующие объекту будут налаживаться «сверху» него.

Такие образом табличка будет выглядеть следующим образом:

Id | коорд. | Z
==========
1 | n1, m1 | 1


Шаг3. Некорректное добавление второго объекта.


Мы добавляем уже второй объект (id2), но даем ему ошибочный z, который равен 0. Как вы можете заметить, трава размещается «под камнем», что не есть хорошо.

Шаг4. А вот теперь все будет хорошо.


Изменив z на 2, трава располагается поверх камня, что говорит о корректном индексе.

Теперь наша локация имеет следующий вид:

Id | коорд. | Z
==========
1 | n1, m1 | 1
2 | n2, m2 | 2

Шаг5. Результат.

Вот что мы увидим в конечном результате редактирования локации такого размера.

Пример построения объектов:


И уже готовая локация:


Выводы. Рандомизация - не выход, если мы хотим получить сотни тысяч уникальных локаций. Нет ничего тяжелого, просто указать id, z, и координаты. Надеюсь, Администрация все же учтет «это-всего-лишь-размышленьице» и даст ответ, как будет реализована система локаций. Будет ли рандомизация и возможность добавлять свои локации в игру.

P.S. Обещали в марте редактор локаций. *ругается*

--------------------
'Линейки
Выглянув, он увидел привычный для Хальфы пейзаж – над городом медленно плыл дирижабль Либерти, оставляя за собой след из лениво-падающих анти-империалистических листовок. Листовки падали на крыши домов и улицы с тихим шуршанием – Либерти несли просвещение в массы. Внезапно раздался свист летящего снаряда и сдавленный крик – увидев идущего по рынку вассала, люди из дирижабля решили не ограничиваться разбрасыванием листовок и скинули вниз двадцати-томник Викилавы, удачно попав им прямо в адресата. Не первый случай гибели от безграмотности… (c) Фатима
Перейти в начало страницы
Вставка цитаты
Steel_GripER
3 июня 2008 02:12
Сообщение #2



Группа: Пользователи
Сообщений: 1565
Регистрация: 16.02.2008
ICQ:--

Предупреждения:
0 / 5
Насколько мне известно на данный момент принята рандомизация. Не вижу в ней особых минусов. ИМХО она должна снижать нагрузку на сервер, хотя тоже могу ошибаться).

Я не разбираюсь в программировании, и поэтому не представляю как можно указать id, z, и координаты для ~1.000.000 локаций. Явно что не в ручную, но тогда может получиться черти что.

Нужны ли эти уникальные локации, на которых никогда не побываешь? И зачем методом позиционирования раскладывать песок в пустыне Сахара?

Редактор локаций нужен по любому. Также нужна возможность постепенного заполнения мира локациями сделанными заботливыми человеческими руками. В каком виде может быть реализована эта возможность не знаю. Но это явно не первостепенная задача.

Итог моих мыслей таков:

Необходима и рандомизация и позиционирование, в зависимости от географической нагрузки карты.

Горы, река, мост - позиционирование.

Пустыня, саванна и т.п. - рандомизация.

--------------------
ПРИДУ ПРОВЕРЮ!
Liberty
Ник в игре: Zzarbazzan.
Мульт: LAVA_TV.
Перейти в начало страницы
Вставка цитаты
Krizalis
3 июня 2008 02:16
Сообщение #3



Группа: Пользователи
Сообщений: 2345
Регистрация: 13.02.2008
ICQ:Krizalis

Предупреждения:
5 / 5
Все правильно. Я имел ввиду постепенный переход с рандомизации на позиционирование, который может длиться годами. winked

--------------------
'Линейки
Выглянув, он увидел привычный для Хальфы пейзаж – над городом медленно плыл дирижабль Либерти, оставляя за собой след из лениво-падающих анти-империалистических листовок. Листовки падали на крыши домов и улицы с тихим шуршанием – Либерти несли просвещение в массы. Внезапно раздался свист летящего снаряда и сдавленный крик – увидев идущего по рынку вассала, люди из дирижабля решили не ограничиваться разбрасыванием листовок и скинули вниз двадцати-томник Викилавы, удачно попав им прямо в адресата. Не первый случай гибели от безграмотности… (c) Фатима
Перейти в начало страницы
Вставка цитаты
ИЗУМРУДИ
3 июня 2008 02:31
Сообщение #4



Группа: Пользователи
Сообщений: 645
Регистрация: 29.03.2008
ICQ:--

Предупреждения:
0 / 5
Ни хрена не смыслю в программирование, но идею понял. У меня только один вопроск. Вот сейчас, что бы загрузить локу, на моих скоростях уходит около двух минут. Переход в идентичные локи, по уже загруженному сценарию идёт поряка 10-15 секунд. Вопрос в следующем, если каждая лока уникальна, то какова будет скорость её загрузки? Если придётся грузить каждую уникальную локу по две минуты, то я просто сдохну, и это будет не игра, а мучение.Я не против уникальности каждой локи, но вот вопрос в их скорости загрузки.

--------------------
Воины Тефнут
Приёмная Храма
Перейти в начало страницы
Вставка цитаты
ThoraX
3 июня 2008 03:04
Сообщение #5



Группа: Пользователи
Сообщений: 346
Регистрация: 13.02.2008
ICQ:468-302-766

Предупреждения:
0 / 5
ИЗУМРУДИ, представь себе коробку с конструктором. Где конструктор - это элементы локации, а коробка - клиент игры.
Локация в варианте криза - это набор текста (весящий считанные байты), согласно этому набору, сервер формирует запрос на элементы (id1, id2, id3 и так далее) в папке клиента, а клиентская оболочка выстраивает элементы на локации. Загрузка - секунды.
Вариант без клиента. Тут не обойтись без кэширования, которого сейчас нет, и которое желательно прописать. Тогда, сохраненные в темпорари элементы локации будут также подгружаться уже в оболочку игры в браузере согласно набору символов локации.

--------------------
No regret.
No remorse.
No reason.
Перейти в начало страницы
Вставка цитаты
dday1944
3 июня 2008 07:28
Сообщение #6



Группа: Пользователи
Сообщений: 691
Регистрация: 11.12.2007
ICQ:--

Предупреждения:
0 / 5
Цитата: Krizalis
Карта расширена. Она огромна, с чем связана проблема размещения локаций.
Огромная проблема. Это правда. Но решаемая.
Цитата: Krizalis
А что если машина сгенерирует локацию, которая похожа «черт знает» на что?
Последнее из того, что я слышал о генерации локаций для Лавы, убеждало, что такое невозможно. Речь шла о том, что локи генерятся не тотально рандомно, а следуя некоторому "сценарию" генерации. Т.е. в пустыне лужа и дерево генерятся на расстоянии >4 от колодца, группа камней на расстоянии >9 от скалы и т.д. Спрайты используются из наборов террейнов и предметов, специально созданных для конкретной географической зоны. Но эти разговоры были давно. Что сейчас актуально - не знаю.
Цитата: Krizalis
Какого размера мы тогда клиент получим, если ~1.000.000 локаций будем хранить в папке клиента?
В папке клиента по любому будут храниться не локации, а информация о них. Если говорить о графике, то это будет список типовых и уникальных спрайтов с координатами привязок, данными о зонах непоходимости и z-координатами для объектов.
Цитата: Krizalis
Еще одним замечанием будет любимый всеми div-верстальщиками z-index. Он позволит объектам корректно отображаться, выполняя функции «расслаивания».
В исполнении Флеша это не всегда выглядит так однозначно. Для этого достаточно поинтересоваться скриншотами тестеров, которые демонстрируют многочисленные "баги" с заходами под колодец и т.п. А это не всегда недоработки верстальщиков (хотя и они тоже косячат сверх всякой меры).

2 Krizalis Вцелом, поцесс сборки ты описал верно. Вцелом, потому что детали и результат зависят и от редактора в том числе.
Цитата: Steel_GripER
Я не разбираюсь в программировании, и поэтому не представляю как можно указать id, z, и координаты для ~1.000.000 локаций. Явно что не в ручную, но тогда может получиться черти что.
Сейчас все разрабатываемые и планируемые локации делятся на несколько категорий, характеризующихся разной степенью ручной проработки:
1. Случайные локации. Целиком верстаются из подготовленных для конкретной географической зоны террейнов и объектов. Предназначены, в основном, для редко посещаемых зон, либо зон с наименьшим коэффициентом притяжения игровых интересов.
2. Случайные локации с уникальными объектами. То же, что и в первом случае, только с каким-либо объектом ориентиром. Предназначены для того, чтобы немного разнообразить ландшафт и предметную среду, а также присвоить локации минимальный коэффициент притяжения (уникальный объект может быть квестоносителем или ресурсосодержащим).
3. Случайные локации с обязательными объектами, видимыми на глобальной карте. Таковыми, как правило являются локации, включающие в себя железные, шоссейные, грунтовые и прочие дороги с поворотами, ж-д стрелками в местах развилок, перекрёстками, заправочными станциями паромными переправами и т.п. Эти локации строго привязаны к координатам на глобальной карте.
4. Уникальные локации. Это, как правило, значимые для игроков места в зонах их наибольших игровых интересов. Сюда входят зоны респаунов (напр. фильтрационные лагеря), более-менее крупные города, мосты, просто сюжетно насыщенные пространства, но без точного копирования реальных объектов. Эти локации собираются вручную.
5. Уникальные локации с элементами реконструкции реальной среды. Это для Лавы неизбежно, но и интересно. Регион, где происходит действие игры насыщен узнаваемыми объектами, как мало какой другой. Игнорировать их невозможно. Это и всем известные пирамиды в Гизе, Карнаке и Мерое и храмовый комплекс Абу Симбел и Луксор и купольные строения в излучине Нила и Асуанская плотина. Всё это надо замлделить, затекстурить и (самое трудное) "вживить". Естественно, такие локи тоже целиком собираются вручную.

Кроме того существуют "комбинированные" варианты локаций, когда, например, локация второго типа в качестве уникального объекта содержит заброшенную РЛС, а подземный бункер под ней (суб-локация) является уникальным и больше нигде в игре не повторяется.



--------------------
Одна голова хорошо, а другая лучше...
Перейти в начало страницы
Вставка цитаты
dday1944
3 июня 2008 07:38
Сообщение #7



Группа: Пользователи
Сообщений: 691
Регистрация: 11.12.2007
ICQ:--

Предупреждения:
0 / 5
Цитата: Steel_GripER
Но это явно не первостепенная задача.
Как раз первостепенная. Иначе, чем заполнять ~4000000 локаций для первого релиза? Одним рандомом не обойдёшься. Для обеспечения "сюжетности" обязательно нужны уникальные объекты и локи. Да и содержание глобальной карты обязывает. Чего там только нет из того, что должно быть обязательно. Представь, что ты пришёл в Гизу (в первом релизе её не будет, это я для примера), а пирамид нету.
Цитата: ИЗУМРУДИ
Вопрос в следующем, если каждая лока уникальна, то какова будет скорость её загрузки?
wink wink wink Не переживай. 4 миллиона уникальных локаций - это вряд ли под силу даже трудолюбивым китайцам.
Цитата: ThoraX
Вариант без клиента. Тут не обойтись без кэширования, которого сейчас нет, и которое желательно прописать.
Это более, чем странно. Кэширование происнолит по-умолчанию. sad

--------------------
Одна голова хорошо, а другая лучше...
Перейти в начало страницы
Вставка цитаты
Роман Кушнир
3 июня 2008 08:47
Сообщение #8



Группа: Пользователи
Сообщений: 978
Регистрация: 13.02.2008
ICQ:307481563

Предупреждения:
0 / 5
Что можно добавить к уже сказанному:
1. Необходимо дать людям редактор локаций. Всем, и пусть никто не уйдет обиженным.
2. Необходимо создать группу игроков, которые будут заниматься именно созданием уникальных локаций. Хотя бы одной в день. 365 уникальных локаций в год - это уже сильно. А если добавить к ним уникальные объекты, квесты...
Платить этой группе буду афрами или привелегиями вроде страховки, уникальных стволов и т.д.
3. Необходимы уникальные объекты. Много уникальных объектов. Потому как нужно разбросать по миру множество локаций-достопримечательностей. Это будет подталкивать к постоянному исследованию мира, сделает мир не просто набор миллиона локаций.
Для увеличения количества уникальных объектов можно также задействовать игроков. Понадобятся только стандарты, которым должен отвечать объект.
В свое время, в ТЗ был проведен конкурс на создание храма Бо, некоторые работы были, по своему качеству, ничуть не хуже стандартных ТЗшных зданий.
Дайте людям халявные афро, а лучше предметы (дабы не вызывать инфляции) и они сделают все что угодно smile

--------------------
Каждому свое.
Перейти в начало страницы
Вставка цитаты
ThoraX
3 июня 2008 11:57
Сообщение #9



Группа: Пользователи
Сообщений: 346
Регистрация: 13.02.2008
ICQ:468-302-766

Предупреждения:
0 / 5
Цитата: dday1944
Это более, чем странно. Кэширование происнолит по-умолчанию.

Если бы это было так, не приходилось бы каждый раз, заходя в игру, грузить заново всю игру . Включая экран логина.

--------------------
No regret.
No remorse.
No reason.
Перейти в начало страницы
Вставка цитаты
ИЗУМРУДИ
3 июня 2008 12:01
Сообщение #10



Группа: Пользователи
Сообщений: 645
Регистрация: 29.03.2008
ICQ:--

Предупреждения:
0 / 5
ThoraX

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

--------------------
Воины Тефнут
Приёмная Храма
Перейти в начало страницы
Вставка цитаты
Быстрый ответ Ответить
1чел. читают эту тему (гостей: 1)
Пользователей: 0


Powered By DLE Forum v2.1 © 2007