Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.04.2011, 23:19
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 11  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я у себя решил проблему сортировки объектов привязкой их к тайлам. Т.е., геометрические размеры фигуры не имеют значения и не учитываются. С фигурами, стоящими на одном тайле, этот подход, естественно, работает железно. Со сложными фигурами - приходится либо разбивать на части (иногда это все равно надо делать, например, для арок, в которые проходит перс), либо так подгонять их точки привязки и так строить локации, чтобы все вставало правильно.

Кстати, когда я предложил команде на выбор - делить сложные фигуры на однотайловые или аккуратно строить локации - был спокойно выбран второй вариант, дизайнеры обкатались на одной локации и теперь они лепят их как пирожки.

Это я к тому, что мы иногда решаем задачи более сложные, нежели требуется на самом деле.

Старый 09.04.2011, 23:45
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 12  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
mikhailk, собственно я об этом с самого начала и говорил.

Старый 09.04.2011, 23:45
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 13  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от Котяра Посмотреть сообщение
линк на тему:
http://code.google.com/p/as3isolib/s...outRenderer.as
но выполнить правильную сортировку как в примере(good)
всё равно не получится
Ага, это тот классический случай, который нельзя отсортировать, но:
- на плоскости такого не бывает.
- приведенный в топике алгоритм лажает даже в его отсутствие.

Цитата:
Цитата:
Эх, если бы это прокатывало для прямоугольников, а тем более для параллелепипедов.
см. ограничения.
Ну да, ну да.
В альтернативном варианте можно заменить поиск ближайшего индекса на бинарный поиск, не всегда надо, но все-таки:
плюсы: гарантированное время n*log n при загрузке карты
минусы: Если перемещающихся больше чем стоящих на месте - log(n) это больше чем найти ближайший индекс за 1-2 шага (они ж не далеко за шаг уходят)
Зато, если бинарную вставку не использовать подморозим флешку алгоритмом со сложностью n * n при загрузке карты.


Последний раз редактировалось expl; 10.04.2011 в 00:01.
Старый 10.04.2011, 00:39
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 14  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
- на плоскости такого не бывает.
расскажите это дереву и стене.

Добавлено через 1 минуту
и заодно расскажите чем мы подморозим флэшку моим алгоритмом?

Старый 10.04.2011, 01:07
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 15  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
расскажите это дереву и стене.
Более формально:
"Для любого количества объектов в виде прямогольных параллелепипедов любых размеров, если
1. они не пересекаются физически
2. нижней частью лежат на одной плоскости
всегда можно найти такой порядок отображения, при котором они будут правильно выглядеть в изометрической проекции"
(здесь речь не о конкретном алгоритме, а о принципиальной возможности)
Уверен на 95%

Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
Добавлено через 1 минуту
и заодно расскажите чем мы подморозим флэшку моим алгоритмом?
допустим загружаем 1000 объектов
ложим 1-й - ищем ему место среди 0 объектов,
ложим 2-й - ищем ему место среди 1 объекта,
...
ложим n-1 -й - ищем ему место среди n-2 объектов
ложим n-й - ищем ему место среди n-1 объектов
Т.к. объекты добавляются в неотсортированном порядке - то поиск ближайшего объекта будет пропорционален n уже существущих
Т.е. общаяя сложность пропорциональна n*n. Что-то типа сортировки пузырьком получается.

А когда объекты уже отсортированы и на каждом шаге их относительное положение меняется несильно - новый индекс находится быстро. Просто на старте пик будет.

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


Последний раз редактировалось expl; 10.04.2011 в 01:27.
Старый 10.04.2011, 13:45
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 16  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
вы скажите сколько объектов должно быть, что на старте из-за моего алгоритма всё залипло. я могу гарантировать, что на 1К объектов всё залипнет не из-за сортировки, а из-за добавления на сцену большого количество графики.

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

Добавлено через 9 минут
Цитата:
"Для любого количества объектов в виде прямогольных параллелепипедов любых размеров, если
1. они не пересекаются физически
2. нижней частью лежат на одной плоскости
другой алгоритм с другими ограничениями. просто 99% случаев не нужны эти самые ограничения. чаще нужно нарисовать дерево и стену. уверен на 100%.


Последний раз редактировалось BlooDHounD; 10.04.2011 в 13:49.
Старый 10.04.2011, 14:07
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 17  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
вы скажите сколько объектов должно быть, что на старте из-за моего алгоритма всё залипло. я могу гарантировать, что на 1К объектов всё залипнет не из-за сортировки, а из-за добавления на сцену большого количество графики.

я алгоритм писал прямо тут. вы ж понимаете, что вставить один иф, для ограниченного поиска при перемещении - дело 1 минуты?
и да скорость достигается за счёт того, что статика не изменяет своих рейтингов.
Да, если вставить этот иф он может и уделать в нормальном режиме бинарный поиск.
А я и не говорю что Ваш алгоритм нежизнеспособен - я подобный много где видел и он отлично справлялся. Просто есть альтернативное решение - бинарный поиск (которому вообще плевать на состояние на карте - он всегда выдает стабильное время), только и всего.

Цитата:
другой алгоритм с другими ограничениями. просто 99% случаев не нужны эти самые ограничения. чаще нужно нарисовать дерево и стену. уверен на 100%.
Не совсем фразу понял.
Всмысле зашить порядок стены и дерева в локацию? Ну не знаю.
Если игра типа "город" - там пользователь сам распологает изометрические объекты и ему поставить их "неудобно для примитивной сортировки" не запретишь.


Последний раз редактировалось expl; 10.04.2011 в 14:14.
Старый 10.04.2011, 14:43
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 18  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
Сообщение от expl
Да, если вставить этот иф он может и уделать в нормальном режиме бинарный поиск.
бинарный поиск - это очень абстрактное понятие. вы имеете ввиду оставить мою систему с рейтингами и изменить алгоритм поиска в массиве? просто если так, то бинарный поиск будет периодически спотыкаться на элементах с одинаковым рейтингом. и будем наблюдать моргающие объекты. да и с двигающемся персонажем, где индекс меняется +/-5 на 1К элементов, это совершенно излишне.
Цитата:
Сообщение от expl
Всмысле зашить порядок стены и дерева в локацию?
в смысле: "все объекты не пересекающиеся прямоугольники" - это сильное ограничение, это значит, что в рядом с размашистом деревом нельзя ставить куст.

Старый 10.04.2011, 20:00
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 19  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
бинарный поиск - это очень абстрактное понятие. вы имеете ввиду оставить мою систему с рейтингами и изменить алгоритм поиска в массиве? просто если так, то бинарный поиск будет периодически спотыкаться на элементах с одинаковым рейтингом. и будем наблюдать моргающие объекты. да и с двигающемся персонажем, где индекс меняется +/-5 на 1К элементов, это совершенно излишне.
Именно поиск в массиве и имею ввиду. Проблема когда перс стоит на кусте и мигает действиельно существует - решается дополнительными приоритетами сортировки, кроме координаты.
Короче, +1 в пользу простого поиска.
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
в смысле: "все объекты не пересекающиеся прямоугольники" - это сильное ограничение, это значит, что в рядом с размашистом деревом нельзя ставить куст.
А если пареллелепипеды пересекающиеся - то впринципе не врезав их один в другой нормально отобразить в _общем_ случае не получиться.

Но я понял, что вы хотели скзать, честная сортировка с учетом размеров с этим кустом и деревом ничего хорошего не сделает.

Еще эта честная сортировка с такой производительностью практически не применима (100-200 сортируемых объектов - это мало даже для социалок)
Похоже все, кому нужны прямоугольные объекты, юзают какие-то хаки, потому что не смог найти ни одного НЕлажащего алгоритма, даже сортировка из книги ActionScript for Multiplayer Games and Virtual Worlds ошибается на достаточно простых ситуациях.

Старый 10.04.2011, 22:55
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 20  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я так понимаю, надо все-таки определиться, какая задача решается. Задача сортировки объектов для социалки типа "город", на мой взгляд, элементарная, поскольку объекты-здания стационарные, а движущиеся объекты типа людей-машинок - мелкие и не отягощенные анимацией. Такую задачу вполне можно решить в общем виде.

Ходилка-бродилка в лесу с разномасштабными анимированными кустами-деревьями для перса со сложной анимацией (например, он берет в руки предметы разного размера), который встречает таких же анимированных NPC - это качественно другая задача. Класть жизнь на ее решение в общем виде, наверное, не совсем разумно. Проще решить конфликтные ситуации во время сборки локаций - расставить объекты так, чтобы они не мешали друг другу и запретить персу ходить туда, где ему ходить незачем.

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.