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

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

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

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 17.06.2007, 22:52   #1
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Сообщение очень маленькие хинты

Предлагаю в этой теме выкладывать то, что под определение функции не попадает ввиду своих малых размеров, но тем не менее способно принести ощутимую пользу.
С вашего позволения, я начну.

ФПС - это очень больной вопрос, и не секрет, что многие ищут способы его увеличения. предлагаю вашему вниманию следующий ФПС-бустер:
вертикальная синхронизация - это эффект, позволяющий добиться совпадения обсчёта сцены и обновления экрана. если она выключена, могут наблюдаться некоторые артефакты. А могут и не наблюдаться. Если же она включена, то заветный ФПС не поднимется выше частоты обновления экрана, которая обычно составляет 60-70Гц.
Вся радость жизни в том, что по умолчанию она в блитце включена, а вот как ее выключить знают не все. Меж тем делается это просто - надо вместо:
Flip
писать:
Flip false
или
Flip (0)

вот и всё - наслаждайтесь приростом фпс!

был бы крайне признателен, если бы кто-нибудь написал про рендер твининг.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Эти 10 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
baton4ik (30.12.2009), BlackDragon (22.06.2008), christian [I <3 Blitz3D] (07.02.2009), DeadElf (22.07.2009), den (10.12.2010), h1dd3n (20.06.2008), Hagrael (13.06.2011), НубеГ (22.06.2008), Randomize (28.03.2010), Stabilitron (10.01.2008)
Старый 17.06.2007, 23:31   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: очень маленькие хинты

Рендер твининг, это технология позволяющая стабилизировать скорость анимации моделей.
Для этого нужно юзать необязательный параметр твин, а сам параметр этот это число float являющееся отношением текущей скорости к необходимой, другими словами текущий_фпс/требуемый_фпс.

Например мы хотим чтоб анимация щла на скорости 75 фпс, а у нас сейчас видяха выдаёт тока 30, то твин коэффициент равен 30/75 = ~0.5 вот и всё...

Этот коэфицент передавать в функции UpdateWorld и RenderWorld

Однако RenderWorld часто начинает глючить почём зря с твинингом в частности мерцают объекты с альфа-каналом.
__________________
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 01:17   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: очень маленькие хинты

параметр UpdateWorld - ето множитель скорости моделей, например updateworld 2 - вся анимация будет играться в два раза быстрее.
тогда (теоретически, сам не проверял) для стабилизации скорости анимации проигрывания моделей можно сделать так:
updateworld требуемый_фпс/текущий_фпс.

mod 1 - вернет дробную часть числа (спасибо Impersonalis-у)

a=b=4 - присваивает переменной a 1-цу, если b равен 4 и 0 если неравен (многие ето знают но немногие пользуются).

еще пример, ето можно использовать и в математических выражениях, например
for i=1 to 100
if a(i)=5 then b(i)=0 else b(i)=10
next
можно заменит на:
for i=1 to 100
b(i)=(a(i)=5)*10
next
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
Hagrael (15.06.2011), mauNgerS (17.05.2012)
Старый 10.01.2008, 02:52   #4
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: очень маленькие хинты

entity=EntityCollided(hero,enemy_type) Or EntityCollided(hero,bild_type) Or PickEntity(hero,10)
Очень удобные конструкции облегчающие жизнь
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hagrael (13.06.2011)
Старый 10.01.2008, 03:14   #5
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Ответ: очень маленькие хинты

Циклический счетчик. Переменная a будет изменяться в пределах от 0 до RANGE - 1.
a% = 0
;...
a = (a + 1) mod RANGE
Если у RANGE в двоичном представлении n младших разрядов равны единице без пропусков, можно сделать так:
const RANGE% = 31    ; 00011111b
a% = 0
;...
a = (a + 1) and RANGE
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (01.09.2010)
Старый 12.01.2008, 02:59   #6
dimond
Оператор ЭВМ
 
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Ответ: очень маленькие хинты

меняет цвет при условии
 Color (health<25)*255,(health>=25)*255,0:text 0,0,health
у меня идея, упрощение кода донельзя
если я изобрел велосипед, скажите.

Последний раз редактировалось dimond, 12.01.2008 в 03:08.
(Offline)
 
Ответить с цитированием
Старый 12.01.2008, 03:09   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: очень маленькие хинты

+ http://forum.boolean.name/showthread.php?t=275
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 14.01.2008, 01:22   #8
-=SCiP=-
ПроЭктировщик
 
Аватар для -=SCiP=-
 
Регистрация: 23.09.2007
Сообщений: 126
Написано 11 полезных сообщений
(для 16 пользователей)
Re: очень маленькие хинты

Незнаю такое кто мож уже знает. Но всеже выкладываю.

a=5
b=5
Условие ИЛИ
;If (a Or b)=5 Then ;ИЛИ
Условие И
If (a And b)=5 Then ;И
Print "Yes"
Else
Print "no"
EndIf
WaitKey
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hagrael (15.06.2011)
Старый 21.01.2008, 19:22   #9
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: очень маленькие хинты

Ещё и так можно:

;If a=5 Or b=10 Then ;ИЛИ
Условие И
If a=5 And b=10 Then ;И
Print "Yes"
Else
Print "no"
EndIf
WaitKey
(Offline)
 
Ответить с цитированием
Старый 21.01.2008, 21:43   #10
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Ответ: Re: очень маленькие хинты

Сообщение от -=SCiP=- Посмотреть сообщение
Условие ИЛИ
;If (a Or b)=5 Then ;ИЛИ
Условие И
If (a And b)=5 Then ;И
Это побитовое ИЛИ и И. Если a = 1, b = 4, первое выражение будет истинно. Если a = 5, b, например, равно 255, второе условие также будет истинно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (23.01.2008)
Старый 10.02.2008, 02:11   #11
dimond
Оператор ЭВМ
 
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Ответ: очень маленькие хинты

Global Click%
Function MouseClick(n%)
	If MouseDown(n) Then
		Click=True
	EndIf
	If Click=True Then
		If Not MouseDown(n) Then
			If Not MouseHit(n) Then
				Click=False
				Return True
			EndIf
		EndIf
	Else
		Return False
	EndIf
End Function
Функция срабатывает от отпускания мыши, как в windows-кнопках.
Очень удобно, если MouseHit() не всегда срабатывает, а применение MouseDown() неприменимо.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо dimond за это полезное сообщение:
Hagrael (15.06.2011), Harter (25.12.2008), HolyDel (10.02.2008), Nex (22.07.2009), tormoz (10.02.2008)
Старый 10.02.2008, 07:54   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: очень маленькие хинты

Функция такого рода называется MouseRelease, т.к. обработка инпута происходит отдельным потоком, то употребление функций получения инпута, за один так главного цикла - не наилучший способ получения данных о нажатиях, т.к. хоть и мала вероятность отпустить мышь между двумя связанными MouseDown, но она есть, и ловил я её не раз. По этому очень рекомендую привязывать к Глобальным переменным, в Начале цикла Весь инпут (мышь, клаву, кнопки, координаты, и скорости, всех видов инпута, которые обрабатываются паралельным потоком).
(Offline)
 
Ответить с цитированием
Старый 11.02.2008, 02:12   #13
dimond
Оператор ЭВМ
 
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Ответ: очень маленькие хинты

Думаю, что проверка на MouseHit() будет лишней. я ее вписал на всякий случай, но походу работает и без нее.
(Offline)
 
Ответить с цитированием
Старый 22.06.2008, 00:23   #14
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: очень маленькие хинты

Вот такая конструкция вернет значение после отрицания :
num#=-2.3
if keyhit (but) then num#=(not num#)*-2.3
значение модет быть любым абсалютно.
(Offline)
 
Ответить с цитированием
Старый 08.07.2008, 15:09   #15
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: очень маленькие хинты

1. EntityCollided и другие функции коллизий в Блице не будут работать без UpdateWorld в главном цикле. Справка не врет.
2. справка по функции Blitz3D DocsEntityBox(ent, x,y,z, w,h,d) ничего не говорит о координатах x,y,z - а это на самом деле не центр, а крайний угол параллелепипеда... Иногда справка не врет, а не говорит всю правду;-)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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