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

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

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

Ответ
 
Опции темы
Старый 15.03.2013, 00:49   #91
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Я новичок!

Необходимо реализовать передачу кванта процессорного времени другим потокам. Самый ломовой (учитывая б3д) способ - вставить Delay 1 в конце тела цикла (ну можно ив начале - сами там, исходя из конкретики решаемой задачи, определитесь). По идее это должно спровоцировать переключение на другой поток и выделение ему некоторого дискретного минимального времени (вероятно, большего чем 1мс). В том виде, в каком код приведён сейчас, вы, фактически и говорите системе: выполнять с такой производительностью, с какой только возможно - именно поэтому нагрузка на цп 99%.
Нажмите на изображение для увеличения
Название: фргм1.jpg
Просмотров: 1039
Размер:	91.9 Кб
ID:	18934
(фрагмент статьи про многопоточность, касающийся темы)
А вообще - концептуально касаясь производительности код, условно (ох сейчас меня закидают за придумывание терминологии) можно разделить на два типа: "взаимодействие" и "работа". Первый вариант кода: подгруздка данных из сети, мониторинг портов, обновление GUI, реакция на ввод пользователя - не должны выполняться в бесконечном цикле без всяких ограничений, как то: событие от таймера, от внешнего потока, сообщающего о необходимости перерисовать окошко, прочитать сетевые пакеты из буфера и т.п. Второй вариант кода: грубо говоря, разнообразные расчёты (так или иначе решаемые на ПК задачи формализуются до вычислений). Причём во втором случае - всю необходимую для вычислений информацию мы уже получили благодаря коду "взаимодействия". Глупо ограничивать себя и не стараться выполнить задачу как можно быстрее. Последнее, разумеется не касается неких гибридных вариантов, где вычисления выполняются фоном, так как их тяжесть (негативный эффект создаваемый неконтролируемой нагрузкой) критичнее, времени их работы (например: архивация большого обёъма данных; размазанный во времени обработчик ИИ юнитов в RTS [когда каждый кадр принимается решение только по некоторому количеству юнитов, чтобы сгладить выбросы в нагрузке, избежав подлагивания картинки]).

Вы привели код явно для "взаимодействия" а закодили его как "работа".

Пример из жизни:
код для вычисления сотни примеров:
быстро-быстро берём и решаем первый, затем второй и т.д.
код для взаимодействия:
-Петя, как освободишься - дай знать, а я пока посплю.

Неудачная архитектура (применения подхода "работа" в задаче "взаимодействие"):

В данном случае, Ослу не имеет смысл создавать повышенную нагрузку на ЦП (Шрек* - будем рассматривать именно их диалог, хотя Шрека то и дело подменяет Феона), т.к. очевидно, что:
1) такое разрешение по времени не нужно;
2) рациональнее "уснуть" и ждать наступления события.

*-на самом деле по аналогии это сущность персонализирующая собой совокупность "ЦП+поток оценки геоположения". Можно рассмотреть ситуацию иначе: первый поток - это Осёл, второй - Шрек, воздух (среда, позволяющая информации распространятся в виде звуковых колебаний) - шина передачи данных. Вместо того, чтобы ожидать сигнального пакета от второго потока, первый флудит в шину с максимальной частотой, делая невозможной работу третьего потока - Феоны - из-за перманентной занятости шины. ЦП - это некий формальный исполнитель программы с тремя потоками**: два из них постоянно работают со структурой (интерфейсной частью шины данных), третий поток спит (т.к. его культурность алгоритмически обозначает необходимость дождаться одновременной доступности в течение некоторого времени*** шины [разрешающего значения сигнального поля интерфейсной структуры] и доступности одного из потоков, с которым предстоит вести диалог - нетрудно заметить что это событие не наступит никогда: Осел или Шрек свободны, только когда говорит второй из них, т.е. занята шина).

**- ну это уже вопрос философии. С солипсистской точки зрения, все живые существа управляются на единственном реальном cpu - вашем мозге. См. ещё Телеология, Логос.
Здесь же мы рассматриваем локальный участок вселенной (внутри кареты), поэтому строим модель только для него.

*** - задержку можно интерпретировать как долгую реакцию, связанную с низким приоритетом потока Феона (планировщик выделяет квант Феоне так редко, что возможность говорить к этому времени всегда уже обнаруживает Осёл или Шрек), или как искусственную задержку в работе, величина которой позволяет отделить событие "пауза между словами" и "тишина".

В сущности, все модели неправильны, но некоторые полезны
Джордж Бокс
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 15.03.2013 в 02:05.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
boajuse (16.03.2013), Кирпи4 (16.03.2013), SBJoker (15.03.2013), St_AnGer (15.03.2013)
Старый 15.03.2013, 00:51   #92
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Я новичок!

Сообщение от boajuse Посмотреть сообщение
после экспериментов с блитцем3д наткнулся на проблему чрезмерной загрузки процессора. Например, код:
"repeat
print "hello world"
until keyhit(1)"
при исполнении грузит проц на 99%.
это нормально?дебуггер отключен.
Это нормально, блиц сжирает всё свободное процессорное время. Добавление в простой бесконечный цикл Delay(1) разгрузит проц. Ну это всё конечно если мне память не изменяет. На форуме эта тема вроде поднималась неоднократно.

Во, Impersonalis опередил

апд: Моё 1000-е сообщение! Юбилей
__________________
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)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо St_AnGer за это полезное сообщение:
4yBa4Ok (16.03.2013), impersonalis (15.03.2013), Reizel (15.03.2013)
Старый 16.03.2013, 13:16   #93
boajuse
AnyKey`щик
 
Регистрация: 15.03.2013
Сообщений: 2
Написано одно полезное сообщение
Ответ: Я новичок!

спасибо за ответы, хотя я уже почти решил переходить на BlitzMax - там есть альфа-прозрачность для изображений по умолчанию(или в B3d тоже есть?)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (16.03.2013)
Старый 16.03.2013, 13:41   #94
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Я новичок!

Сообщение от boajuse Посмотреть сообщение
спасибо за ответы, хотя я уже почти решил переходить на BlitzMax - там есть альфа-прозрачность для изображений по умолчанию(или в B3d тоже есть?)
Очень разумное решение, если хочешь мутить 2д игру. Действительно, в максе есть не только прозрачность, но и другие доставляющие методы смешивания, плюс все это на порядок быстрее рисуется, нежели в блице, ибо реализовано через тот же 3д.К тому же присутствуют некоторые етоды отрисовки, которых опросту нет в блице - например, многоугольники(закрашенные, а при должном умении - еще и текстурированные), в общем это стопроцентный форвард) к тому же, в максе сам язык более гибок, ООП и ништяки из коробки. Плюс поддержка модулей и кода, написанного на С/С++(что иной раз очень необходимо), и возможность невозбранно прикрутить 3д-часть от самого блица, и использовать его в качестве рендера. А лучше хорс. Вот)
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 03:04   #95
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

Здравствуйте. У меня беда с загрузкой b3d. Загружаю и ставлю камеру в позицию объекта “geroy”. Но камера оказывется совершенно в другом месте.
For q%=1 To CountChildren (vr%)
vr1%=GetChild (vr%,q%)
vrt$=EntityName$(vr1%)
If vrt$<>"" Then
vrt1$=Lower$(vrt$)
If Instr(vrt1$,"door")>0 Then
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;ãëàâíûé ãåðîé
EntityParent vr1%,0
pl%=CopyEntity (vr1%,0)
cam%=CreateCamera (pl%)

End If
End If
Next
Что я не так делаю?
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 03:16   #96
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Я новичок!

Сообщение от harmon Посмотреть сообщение
Здравствуйте. У меня беда с загрузкой b3d. Загружаю и ставлю камеру в позицию объекта “geroy”. Но камера оказывется совершенно в другом месте.
For q%=1 To CountChildren (vr%)
vr1%=GetChild (vr%,q%)
vrt$=EntityName$(vr1%)
If vrt$<>"" Then
vrt1$=Lower$(vrt$)
If Instr(vrt1$,"door")>0 Then
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;ãëàâíûé ãåðîé
EntityParent vr1%,0
pl%=CopyEntity (vr1%,0)
cam%=CreateCamera (pl%)

End If
End If
Next
Что я не так делаю?
"Что, где, когда."
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 03:25   #97
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

vr%=loadanimmesh("lab.b3d");Загрузка комнаты
For q%=1 To CountChildren (vr%);Перебор всех элементов b3d
vr1%=GetChild (vr%,q%);Очередной элемент
vrt$=EntityName$(vr1%);Его имя
If vrt$<>"" Then;Если имя есть
vrt1$=Lower$(vrt$);Все буквочки делаем строчные
If Instr(vrt1$,"door")>0 Then;Если это дверь
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;Если это глав герой
EntityParent vr1%,0;Отвязываем его от всего B3d
pl%=CopyEntity (vr1%,0);Создаем копию
cam%=CreateCamera (pl%);привязываем камеру к копии

End If
End If
Next

Камера оказывается ровно в центре а не там где должна. Объект geroy находится на месте.
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 03:40   #98
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Я новичок!

harmon, если ты ставишь координаты только

cam%=CreateCamera (pl%);привязываем камеру к копии

То координаты камеры от этого не меняются, используй PositionEntity (ent,x,y,z)


Зачем ты вбрасываешь куски кода? Думаешь здесь сидят программисты-гадалки, по огрызку кода понимают проблему =/
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
harmon (15.09.2013)
Старый 15.09.2013, 03:50   #99
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

Не получилось. Камера оказывается ровно по середине меша.
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:14   #100
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Я новичок!

Сообщение от harmon Посмотреть сообщение
Не получилось. Камера оказывается ровно по середине меша.
Сейчас я покурю каучук и прозрею в чём твоя проблема...

[затягивает]

Вижу PositionEntity неправильно используешь ты...

[затягивает]

Камера в координатах объекта что бы была, EntityX() (а так же EntityY() и EntityZ()) применит надо тебе.

PositionEntity cam,EntityX (obj),EntityY (obj),EntityZ (obj)

cam - камера (или любой другой энтити)

obj - объект в чьи координаты надо ставить камеру...

[затягивает]

Файлы помощи блица держи Вложение 19679, на русский переведён он. Найдёшь помощь сильную там...

Распаковывать сюда ...\Blitz3D\help - подтвердить замену файлов.

[затягивает]

Ап


окай что то я и правда укурился...

А вот так например написать несудьба?

PositionEntity cam,EntityX (obj),EntityY (obj)+5,EntityZ (obj)
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:15   #101
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

Я именно так и применил PositionEntity cam%,EntityX(pl%),EntityY(pl%),EntityZ(pl%)
Объект (кубик geroy) находится в углу. Камера находится по середине. Вывел координаты совпадают а реальное положение нет.
Странно но координаты всех getchild 0,0,0.
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:20   #102
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Я новичок!

Сообщение от harmon Посмотреть сообщение
Я именно так и применил PositionEntity cam%,EntityX(pl%),EntityY(pl%),EntityZ(pl%)
Объект (кубик geroy) находится в углу. Камера находится по середине. Вывел координаты совпадают а реальное положение нет.
"Реальное положение", в смысле?
"Камера находится по середине" по середине кубика, или просто в центре 3D пространства?

Если просто применить позишен, камера оказывается в координатах кубика, то бишь в его центре, так?

Не понимаю в чём у тебя проблема, мало информации.
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:28   #103
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

Есть комната с дверью. В углу комнаты кубик с именем geroy (именно на его месте должна появляться камера). Загружаю узнаю где кубик (ставлю камеру). Камера не на месте кубика а ровно посередине комнаты. Проверил координаты всех CHILD - они все 0,0,0.
Проблема в том что камера не появляется на месте кубика.
Как сделать вложение в сообщение?
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:35   #104
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Я новичок!

Сообщение от harmon Посмотреть сообщение
Есть комната с дверью. В углу комнаты кубик с именем geroy (именно на его месте должна появляться камера). Загружаю узнаю где кубик (ставлю камеру). Камера не на месте кубика а ровно посередине комнаты. Проверил координаты всех CHILD - они все 0,0,0.
Проблема в том что камера не появляется на месте кубика.
Как сделать вложение в сообщение?
В расширенном режиме, внизу есть кнопка "Управление вложениями", справа над окошком ввода текста, свиток - "вложения".

Выложи исходник с медией, посмотрю что там.

Надеюсь там не ололо-сто страниц кода
(Offline)
 
Ответить с цитированием
Старый 15.09.2013, 04:40   #105
harmon
AnyKey`щик
 
Регистрация: 15.09.2013
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Я новичок!

Вот эта штука не работает.
Вложения
Тип файла: rar 1111.rar (2.27 Мб, 686 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пошогите новичку Sashka007 C++ 30 20.01.2009 12:39
помогите новичку с b3d falcon Blitz3D 60 09.09.2008 16:33
IrrLicht - для новичков Miks C++ 11 29.02.2008 14:31
Re: Я новичок! evel Болтовня 60 30.09.2007 11:23
объясните новичку hunt 3D Моделирование 15 16.07.2006 13:19


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


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