Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

А не устраивать ли нам небольшие конкурсы по кодингу?   Найти похожие ветки 

 
wiz ©   (2004-07-23 18:12) [640]

PPPS: для тех кто не хочет ждать до завтра пример:

//ПсихЪ code
function Fast_Distance_2D( x : integer; y : integer ) : integer;
var
mn : integer;
begin
x := abs( x );
y := abs( y );

if x < y then
  mn := x
else
  mn := y;

Result := ( x+y-( mn shr 1 )-( mn shr 2 )+( mn shr 4 ) );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
 x,y,len:integer;
 worktime,dummy:double;
begin
dummy:=0;

TimerInit;
for i:=1 to max_iter do
 begin
 x:=random(10000)-5000;
 y:=random(10000)-5000;

 len:=Fast_Distance_2D(x,y);
 dummy:=dummy+len;
 end;
TimerTick;

edit1.text:=floattostr(dummy);
worktime:=timer_counter/max_iter * 10E9;
edit1.text:=format("%4.4f нс/выч",[worktime]);
end;

TimerInit, TimerTick - вызовы QueryPerformanceCounter;
dummy - чтобы компилер не "забил" на len;
edit1.text:=floattostr(dummy); - чтобы компилер не "забил" на dummy;
max_iter - очевидно количество итерации (1 000 000)


 
NailMan ©   (2004-07-23 18:19) [641]

Тоесть мой вариант на non-sqrt получился быстрее?

Сегодня у себя попробую потестить(AXP 3000+, DDR400 512Mb) аналогичный тест. И могу на AXP 2100+(DDR333) и Athlon 750(PC100).

---
WBR, NailMan aka 2:5020/3337.13


 
wiz ©   (2004-07-23 18:27) [642]

2 NailMan: я почти не сомневался, что

function Fast_Distance_2D_nailman_fast( x : integer; y : integer ) : integer;
begin
Result := x*x + y*y;
end;

на int"ах будет очень быстрым. Я сам пользуюсь именно таким (только на double"ах), т.к. обычно нафиг не надо брать корень (можно сравнивать квадраты).


 
OSokin   (2004-07-24 13:55) [643]

Слушайте, скачал с сайта паратрупер. Имхо, самая крутая графика в DeadMeat"а, но где враги?


 
NailMan ©   (2004-07-24 15:18) [644]

Оффтоп:
Ха! интересные результаты получились на моем варианте тестилки:

алгоритмы поиска столкновения сфера-сфера(3D) на синглах:

алгоритм(полностью процедуру я привел выше):

sQ:=Sqr(v2.x-v1.x) + Sqr(v2.y-v1.y) + Sqr(v2.z-v1.z);
If sq<=((r1+r2)*(r1+r2)) then result:=true;


выдал результат на 1млн итераций: 55 нс/итерация

алгоритм:
 
sQ:=(v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z);
If sq<=((r1+r2)*(r1+r2)) then result:=true;


выдал результат на 1млн итераций: 27.2 нс/итерация

Проц AXP3000+(2100MHz), мозг 512 DDR400.

Результат без использования SQR быстрей в 2 раза чем с этой функцией.

А если модифицировать так:
If (v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z)<=((r1+r2)*(r1+r2)) then result:=true else result:=false;

то получается: 24.4 нс/итерация

Вот она где сила....

---
WBR, NailMan aka 2:5020/3337.13


 
Zer0 ©   (2004-07-24 18:46) [645]

1. для бенчмарков вычисления дистанции рекомендую создать отдельный тред
3. есть оптимизации на притирки ассемблеровских команд.
2. а никто не заморачивался с fpu? ;)


 
cyborg ©   (2004-07-24 19:05) [646]

Попробуй ещё:

Result:=(v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z)<=((r1+r2)*(r1+r2));

Ещё одной проверкой меньше.


 
NailMan ©   (2004-07-24 21:10) [647]

Zer0 ©
Я заморачивался с 3DNow!. Фактически моя демка его активно использует, но об этом действительно надо в новой созданной ветке.

---
WBR, NailMan aka 2:5020/3337.13


 
}{enon ©   (2004-07-25 11:18) [648]

Собственно, тут появился один вопросик. Могу ли я использовать в своей игре чужой модуль (например, unit от чьего-нибудь ColorTetris"a)?


 
cyborg ©   (2004-07-25 11:21) [649]


> [648] }{enon ©   (25.07.04 11:18)

Можешь, только поблагодарить не забудь в титрах где нибудь. Это конечно, если у тебя совесть есть, ежели её нет, то это делать совсем не обязательно.


 
DeadMeat ©   (2004-07-25 14:44) [650]


> [643] OSokin   (24.07.04 13:55)

На врагов ты смотришь с самого начала... 5-пять корабликов пришелцев. Правда они сами в отпуске (лето всетаки) и поэтому корабли стоят на стоянке... А вообще если хочешь доделай, как я описывал ранее...

---
...Death Is Only The Begining...


 
Andr ©   (2004-07-25 15:40) [651]

to DeadMeat ©   (25.07.04 14:44) [650]
А ты что, доделывать не будешь?
Ты же обещал!


 
OSokin   (2004-07-25 16:00) [652]

[650] и [651]. Это правда. К тому же твой код - ты с ним можешь разобраться лучше. Это раз. У меня не дополнительных опенглюков. Это два. И третье - даже эти корабли пришельцев не уничтожаются.


 
DeadMeat ©   (2004-07-25 16:13) [653]


> [651] Andr ©   (25.07.04 15:40)

Не ну если так понравилось, то доделаю... Правда не скоро.


> [652] OSokin   (25.07.04 16:00)

До колижинов не дошел, но как уже сказал выше, выкрою время...

---
...Death Is Only The Begining...


 
wiz ©   (2004-07-25 16:20) [654]

2 }{enon:

в принципе - можешь... только советую тебе вначале спросить разрешение у того кто это написал, например и-мыльно... Не знаю точно, но я думаю здесь мало кто тебе откажет (в конце концов этот конкурс и задумывался, как опенсурс), так что этот вопрос (в некотором роде) формальность. Зато автору модуля будет приятно :)))


 
}{enon ©   (2004-07-25 17:50) [655]

Ок. Просто этот Xonix - моя вторая игра (первая была на DelphiX). Так что я не уверен, что успею освоить DerectDraw / OpenGL в установленный срок, а выводить графику через WinAPI как-то криво.


 
OSokin   (2004-07-25 17:57) [656]

Ага. Я пожертвовал размером и решил сделать на DelphiX.


 
DeadMeat ©   (2004-07-25 21:27) [657]

> Darthman
Не много не в тему, но всеже... Щас зашел на твою страничку (вдруг чего нового увижу :)) и заметил вот это

Описание всех правил игры и примера можно в разделе Xonix.

Как я понимаю, пропустил слово посмотреть
Это так... просто....

---
...Death Is Only The Begining...


 
Darthman ©   (2004-07-26 00:29) [658]

спасибки, поправлю :)
За себя говорю - мои исходники можно использовать как хошь, если не жаль будет, упомяни. Нет, Так нет :)


 
ПсихЪ_задумчивый   (2004-07-26 09:53) [659]

Исходники юзайте как хотите, мне не жалко. Только прошу не трогать идею Darthman"а в его Color Tetris"e. Ибо я её сейчас развиваю...

Окинул проблему Xonix"а своим программерским взглядом. Накодил парочку моделей. ДА!!! Косяков там целая туча. К тому же в комплексе это достаточно крутовато получается... (: Так что делание игры на работе мне представилось нереальным. Если найду в ближайшее время деньги на мать и проц, значится примаю участи. Нет, значит нет... ):

Всем хорошего кода!


 
Darthman ©   (2004-07-26 11:31) [660]

ПсихЪ_задумчивый:
Что же ты там мутишь (заинтересованно)? Обязательно покажешь :)


 
имя   (2004-07-26 17:34) [661]

Удалено модератором


 
}{enon ©   (2004-07-26 21:24) [662]


> ДА!!! Косяков там целая туча.

Может я чего-то не понимаю, но особых косяков там вроде бы нет... В классическом варианте все реализуется без особых проблем: волновой алгоритм, коллизия окружность-прямая и т.д. Можно конечно сделать клетки поля размером в 1 пиксель и возиться с отражением от кривой поверхности, но только зачем это нужно?


 
RagE ©   (2004-07-27 09:43) [663]

[662]
ты знаешь я еще за прогу не садился, только алгоритм обдумывал. И ты знаешь косяки есть, по крайней мере я увидел некую сложность  как определить отрезанный кусок, он же может быть любой формы. Я алгоритм надумал но будет ли работаь еще не знаю.


 
Darthman ©   (2004-07-27 10:46) [664]

Задачка хорошая? :) ИМХО сложная весьма... может быть продлевать придется.


 
Magikan ©   (2004-07-27 11:29) [665]

А что тут сложного - алгоритм заливки замкнутой фигуры


 
RagE ©   (2004-07-27 11:30) [666]

Darthman ©   (27.07.04 10:46) [664]
Да задачка довольно интересная. Я еще попутно с графикой разбираюсь :), Первый раз буду игру на API писать :) Да впринципе и игру тоже почти в первый :)


 
RagE ©   (2004-07-27 11:34) [667]

Magikan ©   (27.07.04 11:29) [665]
Тут сложным я считаю не залить фигуру а определить эту саму фигуру и есть ли в ней шарик. Вобщем то может все и просто но пока определенные трудности я уже вижу.


 
Darthman ©   (2004-07-27 11:39) [668]

Ну как определить есть ли в ней шарик я уже точно знаю. По методу Монте Карло тут просто все можно сделать. Вот.


 
Darthman ©   (2004-07-27 13:27) [669]

Хотя нет... это я сморозил, запутали меня, блин :(


 
RagE ©   (2004-07-27 14:22) [670]

А что за метод такой? Я даже не слышал о таком


 
Darthman ©   (2004-07-27 14:31) [671]

Да это вообще немного не отсюда, просто на работе голову заморочили :(


 
RagE ©   (2004-07-27 15:01) [672]

А все же? Интересно стало


 
Darthman ©   (2004-07-27 15:13) [673]

http://edu.ioffe.ru/register/?doc=efros/4.tex


 
RagE ©   (2004-07-28 09:24) [674]

Народ хелп плиз. У меня прога еще ничего не делает, только окно создает а уже весит 43к, а как только добавил в uses OpenGL12 113к стал. Неужели так и должно быть?


 
Darthman ©   (2004-07-28 10:08) [675]

SysUtils и Classes убери и будет не больше 30


 
П7   (2004-07-28 10:44) [676]

Точнее не совсем убери, а перенеси нужные тебе функции в отдельный файлик. Который и подключай вместо вышеназванных юнитов.


 
RagE ©   (2004-07-28 10:57) [677]

Сенкс попробую
Кстати пробовал вообще пустой проект откомпилить
program test
begin
end.
13 кил получается
нездорово это как то


 
Megabyte-CeerCop ©   (2004-07-28 11:37) [678]

У меня пустой, без Uses - 8 кб.


 
RagE ©   (2004-07-28 12:05) [679]

Megabyte-CeerCop ©   (28.07.04 11:37) [678]
Можешь дать свои настройки проекта? Всеже интересно чего я не так делаю, или пришли плиз уже скомпиленный exe. Я свой смотрел там куча пурги разной есть и вполне ненужной но как отключить не знаю.


 
Darthman ©   (2004-07-28 12:05) [680]

Удалено модератором



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26 27 
вся ветка

Форум: "Игры";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.59 MB
Время: 0.521 c
1-1102856803
Павел
2004-12-12 16:06
2004.12.26
Задержка


1-1102434424
DimonNew
2004-12-07 18:47
2004.12.26
Прорисовка StringGrid


3-1101802909
Russko
2004-11-30 11:21
2004.12.26
Проверка на "занятость" базы данных.


1-1102717713
Bobby Digital
2004-12-11 01:28
2004.12.26
Memo


14-1102056262
Leha
2004-12-03 09:44
2004.12.26
Копирование таблеток





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский