Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Предлагаю всем форумом (всем желающим) сделать 64К демо на делфи [Delphi, Windows]


Страницы:   1 2 3

Darth ©   (2005-01-20 18:41:00) 

Сабж... Можно и 128К и 256К.. не суть важно. Главное всем вместе и опенсорс.

Как предлагаю делать:
Участники делают модули с некими сценами. Я подготовлю болванку с созданием окна, окном настроек и т.д. Потом мы все это савокупляем и получаем готовое демо.

Что скажите господа?

Мне это интересно просто потому что интересно. Очень много времени тратить на это не планирую, но именно потому и нужна помощь. Кто-то может сделать метаболы, кто-то еще какую хренЬ :) Жду мнения.


Darthman   (2005-01-28 21:22:00) [21]

Набросали кое-что.
http://code.rpro.ru/MastersDemo.zip- 5Кб


Darthman   (2005-01-27 00:50:00) [22]

Да, я вот подумал. Инициализация у всех будет в начале. А при старте только если обнуление счетчиков каких.


Darth   (2005-01-26 22:58:00) [23]

Я абсолюно не против :) Пиши. А я дополнительный с определением расширений накатаю и прочей лабудой.


XProger   (2005-01-26 22:30:00) [24]

dredd, нет ничего невозможного!
NailMan, но эти самые "верхи програмерского геймдева" с чего-то же начинают? ;)

ЗЫ
Нужно больше фантазии...

Darth, давай я основной модуль напишу?


dredd   (2005-01-26 21:43:00) [25]

Я тоже думаю дело дохлое но Darth ты попробуй напиши кусок выложи хтото допишет и так может пойдеть, а вот на щет 64к это невозможно если хтото скажет что возможно то пример с исходиком пожалуста


NailMan   (2005-01-26 21:14:00) [26]

Darth
Поверь мне, что написать 20 сек демо не легче чем игрушку, ибо запихать генераторы текстур, звука, анимацию, параметрические данные моделей и прочие вещи в 64, 128, 256 к очень непросто.

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


Darth   (2005-01-26 20:46:00) [27]

В чем-то я с тобой согласен. Но в целом нет. Супер пупер игрушка много чего требует. В том числе и художников\сценаристов и т.д. Тут же речь о написании 20 секундного ролика. Те кто умеют могут это сделать. Первая строчка про 64К тоже сказана постольку поскольку. Если прочитаете дальше, Там и про 128 и 256Кб сказано. Да и я не призываю никого делать. Я только предложил.


NailMan   (2005-01-26 18:59:00) [28]

что-то мне ваша идея, а точнее автора ветки напоминает очень проекты коллективного написания супер-пупер-мега игрушки в стиле РПГ с мегаинтеллектом, которые(проекты) тут появляются с завидной частотой.

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


wiz   (2005-01-26 17:59:00) [29]

PS: комментарии внутри сорцов. если что-то непонятно, спрашивайте.
PPS: если кому придёт в голову еще какие-то интересные формулы - очень хотелось бы посмотреть :)

PPPS: (для людей как я - с подвижной психикой) Будьте осторожней со временем общения с этой программой. Лично я пока писал эту прогу заработал немаленькую головную боль - может быть от количества выкуренных сигарет, может быть от изображений :)))


wiz   (2005-01-26 17:44:00) [30]

В качестве разминки и подготовке к созданию демки решил почитать про процедурную генерацию текстур. :)

Отчитываюсь о проделанной работе :)))
-------------------------------------
Один из интересных способов (и как я понимаю часто употребительных) - генерация текстуры с помощью некой математической функции color(x,y) с добавлением в её аргументы некоторых "случайных" добавок, которые сами по себе плавно зависят от координат (если что-то непонятно, лучше перечитать эту фразу еще раз).

т.е.

есть color(x,y) - функция которая "выдаёт" геометрически правильную текстуру.
есть xadd(x,y) и yadd(x,y) - какие-то случайные функции, которые относительно плавно меняются.

тогда нашей текстурой будет newcolor(x,y) = color(x+xadd(x,y),y+yadd(x,y))

Осталось только построить эти функции xadd() и yadd(). Один из простых способов - задать xadd и yadd в виде матрицы чисел, которая заполняется "шумом Перлина".
В приведённом примере я строю матрицу по алгоритму шума Перлина размером вдвое (по каждой координате) меньше получаемой текстуры и при построении текстуры "отражаю" матрицу с шумом Перлина относительно середины (по гориз. и вертик.) текстуры. Таким образом добавки на швах текстуры совпадают и получается бесшовная (почти) текстура.

исходники того, как это работает:
http://gnar.fatal.ru/tex_maker_src.zip
(~12kB, delphi5, vcl, все компоненты стандартные)

для тех у кого под рукой нет delphi, но хочется узреть - бинарник:
http://gnar.fatal.ru/tex_maker_bin.zip
(~170kB, размер такой большой, т.к. писалось на vcl. Сам алгоритм - экстра-маленький :))))

На сегодня всё. Жду отзывов и комментариев :)


Nic87   (2005-01-26 00:48:00) [31]

Интересная идея. Я только учу OpenGL и всегда хотел посмотреть как такие вещи делаются, так что удачи!
p\s Может быть присоединюсь :)


Darth   (2005-01-26 00:05:00) [32]

По всем 3 пунктам согласен. Да и в принципе согласен.


XProger   (2005-01-25 22:46:00) [33]

Darth  
Может в таком порядке:
- Инициализация всех модулей
- Прокрутка всех сценок
- Высвобождение ресурсов всех модулей
Иначе при переходах между сценами тормоза будут.

1) Создать общий модуль - надстройка над OpenGL (В основном, для проверки расширений, да и прочих часто используемых функций) к примеру GL_Lib;
2) Не использовать class!!!
3) uses Windows, OpenGL, GL_Lib;


Darth   (2005-01-24 11:24:00) [34]

//1) полностью ли модуль контролирует вывод openGL? (т.е. установка камеры, движение итп)
Практически. Тоесть общую инициализацию и финализацию + некоторые общие функции берет на себя главный модуль. Остальное - дело каждого модуля.

//2) как осуществляется переход от модуля к модулю?
Как уже было сказано выше - вызывается Init модуля, меинлуп:булеан. Как меинлуп становится "ложь" вызывается финализация модуля и дальше все по новой для след. модуля.

//3) Каково время работы каждого модуля?
Не больше полминуты думаю. Иначе действительно будет затянутость, да и фантазии на 30сек тоже должно хватить, блин :) Хотя если сможете сделать на 3 минуты - флаг в руки. Но чтобы не скучно и не затянуто.

//4) Звуковое оформление...
Над этим будем думать в последнуюю очередь.
Как я говорил выше - суть не в 64К, а суть в написании демосцены руками форумцев. Пусть это будет 512К (и даже пусть из них будет 450Кб музыки, главное факт). Да и потом - все ужмем UPX для красоты :)

//5) Каковы ориентировочные требования к компьютеру?
Что можете выжать - то и выжимайте. Только соответствующие проверки делайте. Ориентирумеся не меньше 1 джифорса. Тоесть все его расширения считать как должные. Все что свыше (шейдеры и иже с ними) уже проверять на наличие. Если шейдеры основная часть сцены и без них никак - сбрасываем и переходим к следующей.

//6) Тематика :)))
Предлагаю внести предложения. Я за красивую абстракцию :)

И еще: Прошу обратить внимание что я в данном вопросе подкован не больше вас всех, так что это такой же здоровый интерес, как и у вас.


wiz   (2005-01-24 08:40:00) [35]

2 Zer0: тогда вообще не нужно state... вызываем функцию, она первой строкой смотрит на некий var mega_puper_flag:boolean=false;

а) if флаг лежит в false, then делаем init и ставим флаг в true;

б) делаем mainloop;

//после которого еще одна проверка:
в) if пришло_время_прощаться, then делаем finish_him, ставим флаг в false, ставим result в false;
else ставим result в true;

г) выход


MsShtaer   (2005-01-23 16:45:00) [36]

А чё, Дартц звучало бы прикольно


Zeqfreed   (2005-01-23 16:26:00) [37]

Насчет трекерной музыки - http://biocyborg.narod.ru/rev/delphi_music.htm.Возможно это пригодится ;)

Насчет остального пока воздержусь )


Zer0   (2005-01-23 14:50:00) [38]

procedure MainLoop; меняем на function MainLoop:boolean;

в основной либе делаем открытую процедуру которая выдает время с начала работы модуля (MainLoop-а) в самой функции смотрим скока уже работаем, как тока отработали нужное время - закругляемся. (result=false)

а вообще есть идея все свети в одну процедуру:
function module_name_handle( state:integer):boolean;
0 - инициализация
1 - главный цикл
2 - финиш хим.

---
k3wl


wiz   (2005-01-23 12:15:00) [39]

несколько вопросов к Дарзу и тем кто хочет участвовать:

1) полностью ли модуль контролирует вывод openGL? (т.е. установка камеры, движение итп)

Если да, то тогда предложение: сделать _одну_ на всех либу по отсчёту межкадрового времени (всё равно каждый будет это делать/пользоваться)

тогда процедурка может приобрести вид: procedure MainLoop(ElapsedTime:single);
где ElapsedTime (например) в миллисекундах.

2) как осуществляется переход от модуля к модулю?
видится два варианта:
а) "без перехода" - т.е. например главный модуль делает однокадровый белый flash на весь экран и начинает работать следующий модуль.

б) "с переходом" - сложнее, но и интереснее :) тогда каждый сцено-делатель должен заложиться на некий "вход" и "выход" из модуля (некая дверь, портал, туннель, коллапс, что-то еще).
Потом (если получится), можно попробовать на переходах сделать "двойную работу" - т.е. выводят оба модуля, входящий и выходящий... (я понимаю, что звучит бредово и геморрно, но зато это единое пространство, а оно imho того стоит)

3) Каково время работы каждого модуля?
Чтобы не было разнобоя и затянутости - предлагается определиться с примерным временем отображения одного модуля... Нет! Я _не_ предлагаю жестко фиксировать и ограничивать народ, но я думаю будет правильно сказать, что примерно одинаковые "в эстетическо-техническом плане" сцены должны на экране провести примерно одно время (а не 10 секунд и 2 минуты)

Предлагаю ориентировку: 20-30 секунд. Как мне кажется, это такое время, за которое видеоряд хорошо запомнится, но еще не успеет (я надеюсь) надоесть.

4) Звуковое оформление...
И хотя в этом пункте не стоит знака "вопрос", звук в данном творении - это один большой Вопрос!. imho нам нужен доброволец :))) (я сам не очень большой спец в вопросах электронной/трекерной музыки)

5) Каковы ориентировочные требования к компьютеру?
Здесь я ничего не предлагаю, просто хочу услышать оценки тех кто будет участвовать.
Про себя: сижу на P3-1200/GF-2, отсюда и буду плясать... т.е. лично я, похоже, не буду использовать последние достижения "науки и техники", вроде пиксельных шейдеров...

6) Тематика :)))
Будет ли у демки какая либо тематика или "кто в лес, кто по дрова"? :)
Вопрос в основном к Дарзу, как идеологу всего мероприятия

хм-м-м... похоже пока всё :)


Asteroid   (2005-01-23 01:33:00) [40]

Т.е. один модуль - одна сцена, общих объектов и состояний нет?
Тогда при запуске каждый модуль указывает, каким он будет в очереди. И еще должно быть какое-то событие на завершение работы модуля, чтобы основная прога перешла к следующему. Так?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо