очень маленькие хинты
Предлагаю в этой теме выкладывать то, что под определение функции не попадает ввиду своих малых размеров, но тем не менее способно принести ощутимую пользу.
С вашего позволения, я начну. ФПС - это очень больной вопрос, и не секрет, что многие ищут способы его увеличения. предлагаю вашему вниманию следующий ФПС-бустер: вертикальная синхронизация - это эффект, позволяющий добиться совпадения обсчёта сцены и обновления экрана. если она выключена, могут наблюдаться некоторые артефакты. А могут и не наблюдаться. Если же она включена, то заветный ФПС не поднимется выше частоты обновления экрана, которая обычно составляет 60-70Гц. Вся радость жизни в том, что по умолчанию она в блитце включена, а вот как ее выключить знают не все. Меж тем делается это просто - надо вместо: Flip писать: Flip false или Flip (0) вот и всё - наслаждайтесь приростом фпс! был бы крайне признателен, если бы кто-нибудь написал про рендер твининг. |
Re: очень маленькие хинты
Рендер твининг, это технология позволяющая стабилизировать скорость анимации моделей.
Для этого нужно юзать необязательный параметр твин, а сам параметр этот это число float являющееся отношением текущей скорости к необходимой, другими словами текущий_фпс/требуемый_фпс. Например мы хотим чтоб анимация щла на скорости 75 фпс, а у нас сейчас видяха выдаёт тока 30, то твин коэффициент равен 30/75 = ~0.5 вот и всё... Этот коэфицент передавать в функции UpdateWorld и RenderWorld Однако RenderWorld часто начинает глючить почём зря с твинингом в частности мерцают объекты с альфа-каналом. |
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 |
Ответ: очень маленькие хинты
Код:
entity=EntityCollided(hero,enemy_type) Or EntityCollided(hero,bild_type) Or PickEntity(hero,10) |
Ответ: очень маленькие хинты
Циклический счетчик. Переменная a будет изменяться в пределах от 0 до RANGE - 1.
Код:
a% = 0 Код:
const RANGE% = 31 ; 00011111b |
Ответ: очень маленькие хинты
меняет цвет при условии
Код:
Color (health<25)*255,(health>=25)*255,0:text 0,0,health если я изобрел велосипед, скажите. |
Ответ: очень маленькие хинты
|
Re: очень маленькие хинты
Незнаю такое кто мож уже знает. Но всеже выкладываю.
a=5 b=5 Условие ИЛИ ;If (a Or b)=5 Then ;ИЛИ Условие И If (a And b)=5 Then ;И Print "Yes" Else Print "no" EndIf WaitKey |
Ответ: очень маленькие хинты
Ещё и так можно:
;If a=5 Or b=10 Then ;ИЛИ Условие И If a=5 And b=10 Then ;И Print "Yes" Else Print "no" EndIf WaitKey |
Ответ: Re: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Код:
Global Click% Очень удобно, если MouseHit() не всегда срабатывает, а применение MouseDown() неприменимо. |
Ответ: очень маленькие хинты
Функция такого рода называется MouseRelease, т.к. обработка инпута происходит отдельным потоком, то употребление функций получения инпута, за один так главного цикла - не наилучший способ получения данных о нажатиях, т.к. хоть и мала вероятность отпустить мышь между двумя связанными MouseDown, но она есть, и ловил я её не раз. По этому очень рекомендую привязывать к Глобальным переменным, в Начале цикла Весь инпут (мышь, клаву, кнопки, координаты, и скорости, всех видов инпута, которые обрабатываются паралельным потоком).
|
Ответ: очень маленькие хинты
Думаю, что проверка на MouseHit() будет лишней. я ее вписал на всякий случай, но походу работает и без нее.
|
Ответ: очень маленькие хинты
Вот такая конструкция вернет значение после отрицания :
num#=-2.3 if keyhit (but) then num#=(not num#)*-2.3 значение модет быть любым абсалютно. |
Ответ: очень маленькие хинты
1. EntityCollided и другие функции коллизий в Блице не будут работать без UpdateWorld в главном цикле. Справка не врет.
2. справка по функции Blitz3D DocsEntityBox(ent, x,y,z, w,h,d) ничего не говорит о координатах x,y,z - а это на самом деле не центр, а крайний угол параллелепипеда... Иногда справка не врет, а не говорит всю правду;-) |
Ответ: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Цитата:
Код:
greenn=(510-life*5)/2 |
Ответ: очень маленькие хинты
Ну наверно все это знают:
Cвич булевой переменной: flag=flag xor 3 или flag=1-flag Функция сложения по модулю 2 (xor) Почему xor называется "сложение по модулю 2"? Потому что так оно и есть: в двоичной системе 0+0=0, 0+1=1+0=1, 1+1=10, а по модулю 2 (остаток от деления на 2) последняя сумма как раз и даёт 0. Во-первых, при инвертировании одного из аргументов эта функция также инвертируется. Во-вторых, эта функция показывает, когда аргументы не равны (а при инвертировании одного из аргументов - когда равны). В-третьих, она позволяет проводить управляемое инвертирование: при нулевом аргументе другой аргумент не меняется, при единичном же значении второй аргумент инвертируется. Наконец, эта функция инволютивна (её повторное применение возвращает к исходному аргументу): если (x3=x1 xor x2), то (x3 xor x1=x2) и (x3 xor x2=x1). Почему Xor нет в BlitzMAX???:''(( |
Ответ: очень маленькие хинты
Shirase
пиши flag = not flag и будет тебе счастье |
Ответ: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Bitwise exclusive or Expression ~ Expression
|
Ответ: очень маленькие хинты
Поставил в своём коде Flip (0), до этого fps был ~72 хотя комп неслабый, после fps подскочил аш до ~2000, впрочем у меня все равно только плоскость и один кубик рендерился) но всё равно я таких цифр еще не видел o_O
|
Ответ: очень маленькие хинты
некрофилическая фантастика !
|
Ответ: очень маленькие хинты
Arton, аргумент flip ответственен за вертикальную синхронизацию (= ограничение ФПС до "родного" для монитора уровня), поэтому, если с flip(0) (синхра отключена) может быть какой угодно FPS, то с flip(1) (включена) может быть либо равным частоте развёртки экрана (Правый клик на раб. столе -> свойства -> параметры -> дополнительно -> монитор -> частота обновления экрана) либо меньше.
http://ru.wikipedia.org/wiki/Вертикальная_синхронизация В блице по умолчанию включена, чтобы не было лишних вопросов (типа у меня 100 ФПС а у друга 500 ФПС и у него всё быстрее движется и когда мы в мою игру по сетке играем, он меня обгоняет :-D), т.к. на ненастроенных мониторах обычно 60 Гц, и ламота жалуется, что ЭЛТ-мониторы им глаза портят. |
Ответ: очень маленькие хинты
Спасибо за разъяснение, ABTOMAT, а про вертикальную синхронизацию я так знаю, просто я думал что "Flip – меняет местами передний и задний буфер" как написано было в одном учебники =)
|
Ответ: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Одна из наиболее оптимизированных (по меркам Blitz3D) реализаций алгоритма преобразования целоисчисленного представления ранее записанного выровненным (символами нуля) текстом десятичного числа к исходному виду:
Код:
Function Val4(DWord%) ; Для четырехзначных чисел (ReadInt). |
Ответ: очень маленькие хинты
Вот такая конструкция вернет после "Not" не "0", а ваши числа:
Num=32 ;начальное значение переменной if keyhit (but) then Num=Num-16*(Num=32)+16*(Num=16) ; переключает с 16 на 32 и обратно значения могут быть любыми. Это Тадеус подсказал за что ему огромное спасибо!!! |
Ответ: очень маленькие хинты
Посоны, вы чего? Можно же намного изящней!
Код:
var = 16 |
Ответ: очень маленькие хинты
Вложений: 1
Представляю вам первый алгоритм из серии "не думай @ ищи". уголок дорога как сделать круто бесплатно без регистрации 2D 3D ну клеточки чтоб работало Блочная графика #1 |
Ответ: очень маленькие хинты
Всегда подобное использовал для тайлов..
Только разница в том, что я подумал а не искал, тем самым извлёк знания и опыт. |
Ответ: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Цитата:
Есть тайл, и четыре к нему прилегающих, тебе нужно высчитать какую картинку вставлять. Можешь сделать тупо кучей If'ов (16*4), и будет у тебя гипер говнокод, на строк 70. А можно тупо сделать по умному немного приложив логику. Разжую. Исходя из картинки сверху, поле является таким: Код:
0 1 0 0 Смотрим на тайл в первой картинке по координате 2,3. Относительно ему есть тайл сверху и справа. Если за условность взять нумерацию как показано на первой картинке: вверх - 1; вправо - 2; вниз - 4; влево 8. Числа кратные двум, и их можно плюсовать как угодно. В одно число можно запаковать все четыре, или любую другую комбинацию. Например 4+2+1 = 7, при этом иначе ты 7 не разберёшь, как только на 4, 2 и 1. (кратные двум). Если рассмотреть в бинарном коде, то тут всё просто: Код:
1: 0001 Такой подход используют много где, в тех же флагах в виде параметров для функций. Но длина ограничена естественно, 16 чисел - это будет 16 бит. Если брать уже 32 числа, то это будет весьма длинное число: 2^32-1 = 4,294,967,295. Столько флагов обычно не используют. Вернёмся назад. Значит у нас есть 4 числа, и нужно получить флаг. Предположим мы разбираем центральную ячейку и поле такое: Код:
0 0 0 Далее рассмотрим такой сценарий: Код:
0 1 0 Смотрим если все вместе (1+2+4+8 = 15), это будет последняя перекрёсток. Если справа пусто, а везде в других есть, то будет 1+4+8 = 13, и по картинке с тайлами сходится. Это весьма хорошая смекалка, и если кто-то додумался до подобного сам, то ему огромный зачёт (себя хвалю :-D). LLI.T.A.L.K.E.R., если ты не понял сам, то не гони, а лучше скажи что не понимаешь, тебе объяснят, если сам не способен. |
Ответ: очень маленькие хинты
Напечатано в журнале «The American Scientist», 46, №3 (1958):
Цитата:
Придумать шифрующий алгоритм проще, чем его взломать. Додуматься до приведённого выше алгоритма кодирования - просто, расшифровать картинку без пояснений? ололо - тему в раздел "загадки" (ну или разрешите наконец писать HEX-ом). |
Часовой пояс GMT +4, время: 13:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot