|
3D-программирование Вопросы, касающиеся программирования 3D мира |
27.05.2007, 19:55
|
#1
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Реализую много травы
Доброго времени суток вам, товарищи! Вот, дело моего проэкта немного ковыряется, особенно после того, как школа кончилась. Хотел бы обсудить проблему, связанную с травой.
Хочу у себя в игре реализовать много травы. Но када её много, полезут тормоза и её надо будет как-то скрывать. Сначала я хотел скрывать её в зависимости от расстояния до камеры? но, учитывая, что травы у меня будет оо-о-очень много, а вычисление расстояния - это формула √(x2-x1) ² + (y2-y1)², если вычислять много раз - будут тормоза. Думаю сделать так: создаём якорь (пивот), к которому привязаны кустики травы и рассчитываем расстояние только до него а не до каждой травинки по-отдельности и в зависимости от этого скрываем или показываем всё привязанное к данному якорю вместе, таким образом уменьшая вычисления. Примерная схема сего:
Вопрос: будет ли от этого толк?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
27.05.2007, 20:33
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Реализую много травы
Толк будет лишь в вычеслении, трисы же разумеется остануться прежними.
Толк будет, небольшой.
Ещё сделай вот что:
Не каждый цикл, а каждый период времени для каждого пучка, рандомно от 500 до 1000, каждый этот период проверяй, на дистанцию до пучка, и почему время разнобойное, это для того что-бы не в один моммент проверять для всех травинок, этим ты разгружаешь один моммент, растягивая его на относительно постоянное, и меньшее лагование =)
А плавное скрывание, используя альфу каждый цикл.
ЗЫ, конопля внизу? О чём игра?
|
(Offline)
|
|
27.05.2007, 21:55
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Реализую много травы
Дык мне и нужен толк в вычислении А можно ли вычислять отдельно для каждого кустика и сильно ли это повлияет на производительность?
З.Ы. когда рисовал, то рисовал просто кустик, а щас глянул - еонопля 100%ная
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
27.05.2007, 22:45
|
#4
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: Реализую много травы
Global time=Millisecs()
цикл:....
.....
if Millisecs()-time>1000(в зависемости от динамики игры, если медленная то +-5000)
Update_trava()
time=Millisecs()
EndIf
И будет тебе счастье!
|
(Offline)
|
|
27.05.2007, 23:38
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Реализую много травы
vlad, Update_trava() - это вычисление по каждому кусту, я так понял?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
28.05.2007, 00:18
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Реализую много травы
Это сама функция вычесленимй, а что там решать тебе.
Отвечу прямо, толк в вычислениях относительно 1 пивота к которому привязано например 8 пучков травы, есть. Производительность вырастит в ~8 раз.
|
(Offline)
|
|
28.05.2007, 00:29
|
#7
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Re: Реализую много травы
ну вы паритесь а команда EntityAutoFade нафига? Вроде именно для этого
__________________
|
(Offline)
|
|
28.05.2007, 00:32
|
#8
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Реализую много травы
Ой она же ужасно тормозная! Не навижу эту команду, лчше сделать ручками =)
|
(Offline)
|
|
28.05.2007, 00:44
|
#9
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Реализую много травы
Дык может математику в длл перегнать? Так то толк будет вроде.
|
(Offline)
|
|
28.05.2007, 00:54
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Реализую много травы
Ну там математики не очень много.
Ещё совет про траву, лучше не создавать сначала, и скрывать\показывать. А перемещать, тоесть, те что уже не видишь перемещать или срывать, если перемещать, то на место где должна быть видна другая трава.
|
(Offline)
|
|
29.05.2007, 00:10
|
#11
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Реализую много травы
В-общем, почитал, что вы написали и придаумал такой алгоритм:
Файл, отвечающий за расстановку травы - есть черно-белое изображение. Где оно светлое - там есть трава, где оно тёмное - там её нет, а где оно серое - по степени светлости пикселя вычисляем, много ли на это место ставить траы. Алгоритм в общих чертах:
1. Стартует игрок.
2. вокруг игрока на дистанцию, на которой показываем траву, читаем пиксели на карте покрытия травой.
3. Соответственно этому по координатам, соостветствующим этим пихселям, расставляем траву - на белых пикселях больше, на серых - меньше, на чёрных - не ставим:
4. Обновление травы. Если игрок переместился так, что какой-то куст стал от него слишком далёким, то помечаем его как невидимый. Если появилась клетка, где надо поствить траву, то мы не создаём её, а перемещаем самый дальний невидимый куст - и так по циклу.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
29.05.2007, 01:22
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Реализую много травы
читать из тексы???
каждый тик????
много пикселей (в радиусе)?????
етож будет тормозить.
|
(Offline)
|
|
29.05.2007, 01:48
|
#13
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Реализую много травы
Значит предлагаю такую версию:
Если мир огромный, то карт травы будет немало, и трава соответственно разная.
Значит, картинок будет не одна, придерживайся 128х128, для быстрого считывания, формат пнг.
Далее, при загрузки сектора (сектор примерно 1х1 км, и на каждый сектор своя карта травы), так вот при загрузки, читаем пиксели всей карты, они могут быть (я делал так), разных цветов, например:
Чёрный - ничего.
Зелёный - Зелёная трава.
Жёлтый - пустынная.
Поносовый - Болотная.
И т.п.
И читая все кипсели, просто переносим в массив:
Dim SecGrass%(128,12 (x,z)
Каждый цвет имеет свой индекс, например, если нету травы (чёрный), то 0, если зелёная - 1, ну и т.д.
Далее уже исходя из массива, отрисовывать траву по алгоритму, скрыть, или перместить, или ещё чё
|
(Offline)
|
|
29.05.2007, 10:00
|
#14
|
|
Re: Реализую много травы
Мдя.....а не проще весь километр травы вогнать в один сурфейс и не париться? - тормозов не будет гарантированно! но зато появиться тоннельный эффект если будешь юзать траву с альфаканалом..... - в этом случае лучше юзать маску.
ЗЫ Занятное чтиво....если почитать со стороны юзверя то разговор получается двусмысленным.....=) Даже название топика "Реализую много травы" - сбивает с толку....=)))
|
|
|
29.05.2007, 12:26
|
#15
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Реализую много травы
читать из тексы???
каждый тик????
много пикселей (в радиусе)?????
етож будет тормозить.
|
Я тебе вмоляю! ))
Тут народ радостно теоретизирует, причём изначально весь разговор не имеет ничего общего с кодоприменительной практикой на Блице.
Читать из тексы- тормозить будет? Ну ессно будет. А они всю математику на Пуребасик перенесут- и не будет. Гы. Гы! Гы-гы-гыгыгы!
А кто-нибудь задумался о том, сколько отдельных траво-ёнтитей с их пивотами поддержки нужно для засаживания газоном площадки хотя бы 64х64 ? При таком количестве обьектов (позвольте догадаться- спрайты?) - производительность Блица сдохнет в мучительных конвульсиях.
А трабла ведь решена годы назад!
Карту на квадраты, в пределах квадратов траву в один сурфейс, и либо тупо автофейдить, либо использовать свой более оптимальныхз аналог ухода в ХайдЁнтити при отдалении.
А то развели тут наркобизнес, понимаешь... ))
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:17.
|