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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 17.11.2010, 09:51   #16
YaLAS
AnyKey`щик
 
Аватар для YaLAS
 
Регистрация: 05.11.2010
Адрес: Красноармейск, Украина
Сообщений: 17
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

vladpol1, ИМХО включи картинку заставку с надписью типа "Ожидайте...", можешь включить музычку пользователю (в лупе, если время загрузки намного длиннее музыки), а если уж хочеться прогресс бар, то можно не особо морочась выводить полоску не рассчитываемую дикими методами а с дискретными значениями после прохождения разных блоков загрузки, например:

вывели заставку, включили музыку
прогресс=0: вывести прогресс_бар
зарузили шрифты
прогресс=2: вывести прогресс_бар
зарузили картинки
прогресс=15: вывести прогресс_бар
....
зарузили последние ресурсы
прогресс=100: вывести прогресс_бар

показали главное меню
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 20:49   #17
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

YaLAS, по моему в посте 10 уже есть подобный код с
прогреесом 5 - 10 - 15 ... 100

Прилагаю мой 100% рабочий код загрузки любых файлов с полосой загрузки.
Для проверки скиньте в папку C:\gr\ любые 5 *.jpg фото большого размера
и назовите их 1,2,3,4,5. Для наглядности: вначале прогресс бар будет показывать
медленно загрузку этих изображений, затем быстро пробежит до конца.


 ;зогрузко
Graphics 640,480,0,2
fArial=LoadFont("Arial",24,1,1)
SetFont fArial 
Color 250,170,190: Text 310,250,"З  А  Г  Р  У  З  К  А",True 

Color 70,40,70: Rect 45,210,555,35,1
Const pr=25

For n=50 To 575 Step pr
	Color 255,200,130: Rect n,215,20,25,1
		Local a=n/pr
			gr1=LoadImage("C:\gr\"+a+".jpg")
			gr2=LoadImage("C:\gr\"+a+1+".jpg")
			gr3=LoadImage("C:\gr\"+a+2+".jpg")
			gr4=LoadImage("C:\gr\"+a+3+".jpg")
			gr5=LoadImage("C:\gr\"+a+4+".jpg")		
		Delay 1
Next
Delay 300
Color 250,170,190: Text 310,275,"З А В Е Р Ш Е Н А",True 
Text 310,300,"нажмите любую клавишу",True
WaitKey ()
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 21:08   #18
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Сообщение от vladpol1 Посмотреть сообщение
 ;зогрузко
Graphics 640,480,0,2
fArial=LoadFont("Arial",24,1,1)
SetFont fArial 
Color 250,170,190: Text 310,250,"З  А  Г  Р  У  З  К  А",True 

Color 70,40,70: Rect 45,210,555,35,1
Const pr=25

For n=50 To 575 Step pr
    Color 255,200,130: Rect n,215,20,25,1
        Local a=n/pr
            gr1=LoadImage("C:\gr\"+a+".jpg")
            gr2=LoadImage("C:\gr\"+a+1+".jpg")
            gr3=LoadImage("C:\gr\"+a+2+".jpg")
            gr4=LoadImage("C:\gr\"+a+3+".jpg")
            gr5=LoadImage("C:\gr\"+a+4+".jpg")        
        Delay 1
Next
Delay 300
Color 250,170,190: Text 310,275,"З А В Е Р Ш Е Н А",True 
Text 310,300,"нажмите любую клавишу",True
WaitKey ()
Ужас!
Давайте, заDelay'им вообще везде, просимулируем всякую задержку. Сделаем загрузку в 5 раз дольше...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
baton4ik (17.11.2010)
Старый 17.11.2010, 21:16   #19
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Давайте, заDelay'им вообще везде, просимулируем всякую задержку. Сделаем загрузку в 5 раз дольше...
Если такой умный, попробуй без Delay 1, считай это для наглядности
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 21:17   #20
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Сообщение от MoKa Посмотреть сообщение
Ужас!
Давайте, заDelay'им вообще везде, просимулируем всякую задержку. Сделаем загрузку в 5 раз дольше...
Да, оригинальный подход. Не выходит сделать "правдивой" загрузки, что б точно отражала ход процесса, так сделаем задержку специально, пусть игроки думают, что всё "по-взрослому", даже задержка в загрузке есть!
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 21:24   #21
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Да, оригинальный подход. Не выходит сделать "правдивой" загрузки, что б точно отражала ход процесса
Как я писал выше это
Для наглядности: вначале прогресс бар будет показывать
медленно загрузку этих изображений, затем быстро пробежит до конца,
чтобы была ЛУЧШЕ видна загрузка, а расчитать чтобы загрузка
была по всей длинне прогресс бара не проблема
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 21:35   #22
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Пожалуйста без Delay, конечно было верней поставить Flip для отображения прогресса

 
;зогрузко
Graphics 640,480,0,2
fArial=LoadFont("Arial",24,1,1)
SetFont fArial 
Color 250,170,190: Text 310,250,"З  А  Г  Р  У  З  К  А",True 

Color 70,40,70: Rect 45,210,555,35,1
Const pr=25

For n=50 To 575 Step pr
    Color 255,200,130: Rect n,215,20,25,1
        Local a=n/pr
            gr1=LoadImage("C:\gr\"+a+".jpg")
            gr2=LoadImage("C:\gr\"+a+1+".jpg")
            gr3=LoadImage("C:\gr\"+a+2+".jpg")
            gr4=LoadImage("C:\gr\"+a+3+".jpg")
            gr5=LoadImage("C:\gr\"+a+4+".jpg")        
        Flip
Next
Color 250,170,190: Text 310,275,"З А В Е Р Ш Е Н А",True 
Text 310,300,"нажмите любую клавишу",True
WaitKey ()
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 22:05   #23
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Const pr=25
For n=50 To 575 Step pr
Local a=n/pr
Да ёмаё! Если ты пишешь код в помощь кому-то пиши его нормально..

Сперва определи количество ресурсов (файлов), предположим их 44, далее примерно такой код:

Const loadingBarHeight=20
Rect 0,graphicsHeight-loadingBarHeight,graphicsWidth,loadingBarHeight,0
resourceFiles=44
For n=0 to resourceFiles
   Rect 2,graphicsHeight-(loadingBarHeight-2),((graphicsWidth-4)/Float(resourceFiles))*n,(loadingBarHeight-4),1
   ... Load[n] Whatever ...
Next
Раздели стадию загрузки на отдельные стадии, одна сбор списка ресурсов которые нужно загрузить (имена файлов), и запиши их в класс или массив. И только потом загружай.
И то это говнокодерство, никто не будет так грузить информацию, должны быть файлы форматов уровней или т.п. которые содержат списки и информацию о медии, где она и для чего должна быть..
(Offline)
 
Ответить с цитированием
Старый 17.11.2010, 22:32   #24
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Да ёмаё! Если ты пишешь код в помощь кому-то пиши его нормально
MoKa мой код нормально работает и прост для понимания начинающим,
в твоём коде 6 знаков минус, умножить, разделить, столько расчётов!
Это считается нормальным кодом!? Хорошо отразится на скорости загрузки...
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Старый 18.11.2010, 02:15   #25
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Иди учи мат часть!
20 вычитаний и 5 умножений каждый цикл... Знаешь сколько нужно просчётов чтобы в RealTime из камеры с 30 fps, разрешением в 1960х1080, используя нейронные сети, распозновать объекты машин, определять перед/зад её (по цвету знака, белый/жёлтый), и далее уже распознавать саму информацию со знака, затем эти данные посылаются на сервер, и там с невиданной частотой будут проверки в базах данных, например въезжала ли эта машина уже в центр города, или не в розыске ли она и т.п.
Это учитывая что таких камер тысячи.
Так вот теперь к теме: оптимизировать на мелочи и ровном месте, где 1мс на протяжении 3 секунд загрузки (что есть 3000мс), это много? Да темболее там и 1 мс в попу не будет.
В третьих, я предоставил код в котором есть возможность настроить высоту полосы загрузки.
И чем легко читаемый код плохой?

УЧИСЬ ПРОГРАММИРОВАТЬ.
Давай, школота будет учить жизни дедушек...

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

Конкретнее по некорректности твоего кода:
1. "Const pr=25", хорошо, константа, число 25, а что это простите? pr - много о чём говорит.
2. "For n=50 To 575 Step pr", тоесть у нас если посчитать 21 итераций, учитывая что это потому что pr=25. А почему именно 25? Ладно забей, идём дальше:
3. "Color 255,200,130: Rect n,215,20,25,1", установка цвета каждый цикл, это вызов функции, перелокация памяти (надеюсь знаком с областями памяти, локальные/приватные переменные и т.п.?). Вызов функции установки цвета. Учитывая что это 2D, и отрисовка происходит по вызову, то установка также, произойдёт по вызову, или надеюсь Сибли просто присваивает значения 3 переменным, которые используются после (хотя учитывая что miniB3D - это полный говнокод, то страшно подумать что есть Blitz3D внутри..). Почему не вынести установку цвета прямо перед вызовом цикла? Религия не позволяет?
4. "Local a=n/pr" - простите, получать индекс таким образом? Благо я смекалистый, понимаю что a - выступает далее в роли "типо индекса", я изменю длину Step'а или колличество циклов, индекс пойдёт лесом, и всё в цикле на нём основонное тоже пойдёт дебрями.. Далее длина полосы загрузки, привязана именно к данному случаю, и "магическому" набору чисел. В моём же примере, неважно сколько медии, она всегда будет корректно отображать именно позицию, от левой части экрана до правой.
5. "gr1=LoadImage("C:\gr\"+a+".jpg")" и такие же дублежи далее, ты не смекнул что во первых это можно было обернуть в ещё один цикл, ну это так, а во вторых, проследи за "a": первая итерация а=2, вторая итерация а=3, последняя а=23. Это у нас таки номера файлов нужны: 2, 21, 22, 23, 24, 3, 31, 32, 34, 4 ..... 23, 231, 232, 233, 234

Думаю комментарии излишни..

Для пущей твоей практики, задачка (если конечно ты хочешь учиться, и прислушаешься к советам):
есть файлы, список имён файлов храниться в виде строк в текстовом файле:
ui_compass_base.png
ui_compass_glass.png
st_building_house_1.b3d
veg_tree_palm_2.b3d
veg_tree_palm_2_diffuse.jpg
veg_tree_palm_2_alpha.png
veg_tree_palm_2_normal.png
prop_case_wooden_1.b3d
prop_case_wooden_diffuse.jpg
prop_case_wooden_normal.png
Как видишь тут 10 строк. каждая разного имени, это моделька, или текстурка.
Пробегаешься по всем строкам, записываешь их в массив. Теперь у тебя "level_resources$[11]" массив, нужно загрузить эту медию, предположим она в одной папке, неважно в какой.
Напиши код который нарисует на экране полосу загрузки, при этом полоса будет иметь рамку красного цвета, затем внутрь маленький отступ (1 пиксель), и там сама полоска.
Эта полоса должна пройти во время загрузки от начала, и до конца.
Эта полоса должна иметь лёгкую возможность менять позицию, например я хочу сделать её разной длины (разные разрешения экрана), и в разной позиции на экране тоже (снова разные разрешения).
Экран чёрный, рамка оранжевая (255,128,0), а полоса голубая (0,128,255)

Всё просто тут, пишеться менее чем в 10 строк (используя только объявление переменных в одной строке, а остальное без ":").
(Offline)
 
Ответить с цитированием
Эти 9 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
ABTOMAT (18.11.2010), Arles (18.11.2010), baton4ik (18.11.2010), impersonalis (18.11.2010), is.SarCasm (18.11.2010), mr.DIMAS (21.02.2011), Randomize (18.11.2010), Reks888 (18.11.2010), St_AnGer (18.11.2010)
Старый 18.11.2010, 09:34   #26
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

MoKa, тебя конкретно задели. Капитально ответил! Но не напрасно ли? Поймут ли?

Касательно загрузки ресурсов. Я в бородатые времена писал менеджер ресурсов. Ф-ция создания принимала на вход либо папку с файлами либо архив. После этого я вызывал ф-цию RM_Prepare() которая генерила список, a тип загружаемого ресурса брался из расширения (не надёжно, но для себя писал же). Отдельные от моделей текстуры лежали в отдельных папках. После этого я брал кол-во ресурсов во временную переменную и вызывал цикл, в котором каждый пробег вызывал ф-цию RM_LoadNextResource. После чего нужный ресурс можно было получить ф-цией RM_GetResouce(FileName$). Работало довольно удобно. Будет время - могу выложить если найду.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Gector (18.11.2010), impersonalis (18.11.2010), moka (18.11.2010), Reks888 (18.11.2010), St_AnGer (18.11.2010)
Старый 18.11.2010, 13:06   #27
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Абалдеть... МоКа, первый раз вижу тебя таким. Вот что бывает когда не слушают старших по уму товарищей...
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (18.11.2010)
Старый 18.11.2010, 13:20   #28
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Сообщение от St_AnGer Посмотреть сообщение
Абалдеть... МоКа, первый раз вижу тебя таким. Вот что бывает когда не слушают старших по уму товарищей...
да нет: на свой статус и опыт MoKa не давил, всё правильно он откомменитл без ейджизма и по делу
Я когда говнокод увидел аж в осадок выпал, хотел откомментить, но тут уже: не убавить не прибавить
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
moka (18.11.2010), St_AnGer (18.11.2010), Taugeshtu (18.11.2010)
Старый 18.11.2010, 14:02   #29
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Полезно. Учтем.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Gector за это полезное сообщение:
moka (18.11.2010), St_AnGer (18.11.2010)
Старый 18.11.2010, 14:17   #30
vladpol1
Оператор ЭВМ
 
Аватар для vladpol1
 
Регистрация: 03.11.2008
Адрес: Москва
Сообщений: 29
Написано 7 полезных сообщений
(для 11 пользователей)
Ответ: Как ускорить загрузку ресурсов если их много

Извиняюсь что не проверил ошибки в коде, очень быстро был написан,
хотел показать лишь один из возможных принципов.

Только что же никто не помог Colossus'у нормальным кодом когда он спрашивал как огранизовать полосу загрузки??
Или только можем обсуждать и кичиться?
__________________
Шаманом можешь ты не быть, но в бубен постучать обязан!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (18.11.2010)
Ответ


Опции темы

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

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


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


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