Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 30.09.2005, 13:46   #1
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Доброе время суток всем желающим написать на Блице Варкрафт-4!
So, не растекаясь мыслию по древу, сразу к примеру.

В прикрепленном архиве два .ББ файла: "1" и "2" соответственно, запустив которые можно посмотреть демку террана с лесом и летающей сверху камерой. Всё почти как в стратегиях, только нет орков и камера управляется клавишами управления курсора.
Файл "1" демонстрирует "принципиально простой", иначе- "классический"- метод реализации этого-самого леса.
Файл "2" демонстрирует "принципиально правильный" метод.
Понять чем они отличаются просто: первый у меня выдает 70ФПС когда в кадре нет вообще ничего и 40- когда в кадре много деревьев. Кроме того, он может просто заглючить на некоторых машинах (глюк Блица с террайнами) и исправить это будет невозможно. Никак.
Второй выдает соответсвенно 3000 и 150 ФПС, никогда не заглючит и если убрать деревья, станет видно, что террайн освещается заметно красивее. Недостатка два: тоннельный эффект на деревьях и долгая генерация террайна.

P.S. 2Новички: Комментов в примерах необходимый минимум. Однако, не смотря на внешнюю навороченность, даже во втором примере код предельно прост и требует лишь внимательного прочтения. Обратите внимание на алгоритмы соединения мешей, рендер-твининга и генерации террайна. Удачи!
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Diplomat за это полезное сообщение:
ABTOMAT (13.12.2010), ANIK123 (26.08.2011), Nex (27.04.2011)
Старый 01.10.2005, 16:03   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Что, так плохо, что ни у кого даже ругательных комментариев не возникло?
Как демка-то? Показатели ФПС как, меняются от способа оптимизации?
Шо ж вы так пассивно?
(Offline)
 
Ответить с цитированием
Старый 01.10.2005, 16:18   #3
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
в первом примере все работает довольно нормально ФПС у меня 40 даже если ничего в экране нет, а если на гору заберешься, чтоб много деревьев в экране было, то до 20 опускается...

второй пример работает принципиально быстрей, только глючит неимоверно, типа кадры прокрутятся быстро, а потом машина ждет до конца секунды... и так каждую секунду... и ФПС прыгает с 50 до 30 (причем прыгает по 5 раз в секунду).

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 01.10.2005, 16:18   #4
jimon
 
Сообщений: n/a
чет терейн тормозной... )

МА-ЛА-ДЕЦ

вообщем а чембы ненаписать функцию гемора... ой... generate типа ланджафта ?
ну чтобы типа... типа генерить типа ланджафт из типа типа... короче картинки типа под типа названием в типа карта типа высот...

ps. злостный пост но БЕЗ ОФФТОПА Я НАПИСАЛ!
 
Ответить с цитированием
Старый 01.10.2005, 16:45   #5
alcosholik
 
Сообщений: n/a
Во втором исходнике при медленном поворачивании камеры деревья, которые находятся рядом, "мелькают": как будто верхушка одного дерева вдруг оказывается скрыта другим деревом, хотя последнее находится дальше.
Но я не исключаю, что это все из-за моих тупых дров для видяхи.
 
Ответить с цитированием
Старый 01.10.2005, 17:24   #6
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
второй пример работает принципиально быстрей, только глючит неимоверно
Хм, так быть не должно. Не должно...
Знаешь, попробуй может вот какие варианты:
1. уменьшить количество деревьев в два раза (в обоих примерах для чистоты эксперимента): Если компьютер не очень крутой, то при ФПС<10-20 твиннинг и таймер обновления камеры будут глючить;
2. убрать вообще задержку "Delay 20" в модуле обновления камеры (тоже в обоих примерах);
3. снести к чертям рендер-твининг во втором примере (убрать CaptureWorld() и поставить просто "RenderWorld()" вместо RenderWorld(Twining/100))
Если всё это не поможет- значит или код косой, или железо...

вообщем а чембы ненаписать функцию гемора...
) Что, прям чтоб и хейтмапы сам генерил? А генератор колормапов уже есть.

как будто верхушка одного дерева вдруг оказывается скрыта другим деревом, хотя последнее находится дальше.
Не, это не у тебя. Это классический ДиректХ-овский тоннельный эффект. Если использовать на деревьях маск-текстуры вместо текстур с альфаканалом- он исчезнет. Просто модельек деревьев других не было.
(Offline)
 
Ответить с цитированием
Старый 01.10.2005, 20:17   #7
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
ОГО ПРИКОЛЬНО ОСОБЕНО ТУМАН МЕЖДУ ДЕРЕВЬЯМИ ПОНРАВИЛСЯ!!
Жалько только что у меня комп тупой, подвисает всё
(Offline)
 
Ответить с цитированием
Старый 02.10.2005, 11:09   #8
jimon
 
Сообщений: n/a
а у меня скорость держится такая как указал дипломат

хотя процесор в несколько раз тормознее
глюков ненайдено - видяха XFX 6600GT , дрова 77.72
 
Ответить с цитированием
Старый 03.10.2005, 16:26   #9
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,349
Написано 476 полезных сообщений
(для 858 пользователей)
Интересный примерчик.

Дома у меня оба примера работали одинаково медленно - около 20 кадров.
Это на Celeron 433, 224 Mb ОЗУ, GF2MX200 64 Mb

На более крутом компе -AMD Sempron 2600+, 512 Mb ОЗУ, RADEON9550 128 Mb- 2 пример быстрее:
в 1ом примере: 40 кадров ВСЕГДА - странно... так не должно быть по-мойму...
во 2ом: 80-110 кадров, если камера смотрит только на поле, и больше 1000, если в пустоту.

Во втором примере при движении или повороте текстура земли размазывается (рябь какая-то), после остановки нормальной становится. Деревья тоже "мелькают"...

ПС: я не понял, зачем нужен флаг 256 для текстуры детализации.
Пробовал убрать флаг вообще - рябь исчезает, но и вид немного другой...
(Offline)
 
Ответить с цитированием
Старый 03.10.2005, 19:15   #10
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Ну, на слабых компах 20ФПС выводится по той простой, что счетчик ФПС возвращает данные 10 раз в секунду, округляя точность 10 да еще и завышает на 10ФПС... Зачем? Раньше юзал для техданных- потом забыл исправить.
Корректно получать данные о ФПС можно заменив его код на следующий:
;FPS counter
FPS=FPS+1
If mFPS<MilliSecs() Then
	mFPS=MilliSecs()+1000
	MaxFPS=FPS
	FPS=0
EndIf
А неизвестный флаг "256" значит, что у тебя неновая версия то ли Блица, то ли хелпов. И артефакты изображения могут быть связаны миенно с этим.
Эта фича по определению- "складирует текстуру в видеопамять". А по сути- она выключает мипмаппинг (размытие) текстур, что очень важно при изображении детайлмаппов на террайнах итп... Ну, 20% ФПС жреть...
(Offline)
 
Ответить с цитированием
Старый 06.10.2005, 06:44   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,491
Написано 2,950 полезных сообщений
(для 5,206 пользователей)
На моей машине (Celeron D 2400 / GF MX400 64MB / 512MB Dual) FPS примерно 20(на горе)-40(просто на карте) во втором примере.

Если установить режим цвета в 16 бит то FPS вырастает до 35-55 соответственно.

Без твининга FPS вырастает на 5-10 к/с, но зато дергается камера (надо написать функцию обработки камеры)

А в общем примерчик неплохой
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2005, 06:52   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,491
Написано 2,950 полезных сообщений
(для 5,206 пользователей)
Кстати при флаге 256 (Store texture in vram) выключается мипмеппинг текстур, а следовательно и их сглаживание. В этом режиме (256) у меня пример 2 работает чуть медленнее.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2005, 16:47   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,491
Написано 2,950 полезных сообщений
(для 5,206 пользователей)
вообщем а чембы ненаписать функцию гемора... ой... generate типа ланджафта ?
ну чтобы типа... типа генерить типа ланджафт из типа типа... короче картинки типа под типа названием в типа карта типа высот...
Вот повозился немного сегодня и сделал процедурку генерации террейна:
Function GenerateTerrain%(SizeX#,SizeZ#,MaxHeight#,HeightMapFile$,Detail,VertexColorsMap$="")
;#Region Собственно генератор террейна
	Local StepX#=SizeX#/Float#(Detail)
	Local StepZ#=SizeZ#/Float#(Detail)
	Local Mesh%=CreateMesh()
	Local Surface%=CreateSurface(Mesh)
	Local X#,Z#,H#,K#=3*255
	Local I#,J#

	Local HeightImage%=LoadImage(HeightMapFile$)
	ResizeImage(HeightImage%,Detail+1,Detail+1);Это проще чем изобретать алготитм сглаживания поверхности
	
;Расположение вертексов
	SetBuffer ImageBuffer(HeightImage%)
	For I=0 To Detail
 X=-SizeX#/2+I*StepX#
 For J=0 To Detail
 	GetColor(I,J)
 	H#=(ColorRed()+ColorGreen()+ColorBlue())/K ;H = 0 .. 1
 	Z=SizeZ#/2-J*StepZ#
 	AddVertex(Surface,X,MaxHeight#*H,Z,I/Float#(Detail),J/Float#(Detail))
 Next
	Next
	SetBuffer BackBuffer()
	FreeImage(HeightImage%)
	
;Создание поверхности
	For I=0 To Detail-1
 For J=0 To Detail-1
 	AddTriangle (Surface%,I+(Detail+1)*J,I+(Detail+1)*(J+1),I+1+(Detail+1)*(J+1))
 	AddTriangle (Surface%,I+(Detail+1)*J,I+1+(Detail+1)*(J+1),I+1+(Detail+1)*J)
 Next
	Next
;#End Region

;#Region Раскрашивание вертексов
	If VertexColorsMap$<>"" Then
 Local ColorImage%
 EntityFX Mesh%,2;Использование режима 'use vertex colors instead of brush color'
 ColorImage%=LoadImage(VertexColorsMap$)
 ResizeImage(ColorImage%,Detail+1,Detail+1);Это чтобы упростить нахождение цвета вертекса
 SetBuffer ImageBuffer(ColorImage%)
 For I=0 To Detail
 	For J=0 To Detail
  GetColor(I,J)
  VertexColor(Surface%,J+(Detail+1)*I,ColorRed(),ColorGreen(),ColorBlue())
 	Next
 Next
 SetBuffer BackBuffer()
 FreeImage(ColorImage%)
	EndIf
	UpdateNormals(Mesh%)
	Return Mesh%
;#End Region	
End Function
Вот и все.

А это измененный код примера...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2005, 18:55   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,491
Написано 2,950 полезных сообщений
(для 5,206 пользователей)
вообщем а чембы ненаписать функцию гемора... ой... generate типа ланджафт

Не забываем писать закрывающие теги
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2005, 19:13   #15
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,491
Написано 2,950 полезных сообщений
(для 5,206 пользователей)
Просто соединение с инетом через мабильник и часто глючит, по этому сообщение не полностью дошло!:'((
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Весёлые картинки =) Chrono Syndrome Юмор 4605 Сегодня 11:12
Веселые истории из жизни Koruna Юмор 2 02.04.2013 15:29
Веселые загадки Koruna Загадки 19 23.04.2009 17:59
Секреты казуальных игр Raiter Болтовня 10 22.11.2007 13:47
Дж. Маэстри Секреты анимации персонажей pax Болтовня 3 25.10.2005 18:11


Часовой пояс GMT +1, время: 19:51.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com