![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Предлагаю всем форумом (всем желающим) сделать 64К демо на делфи [Delphi, Windows]
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]Т.е. один модуль - одна сцена, общих объектов и состояний нет?
Тогда при запуске каждый модуль указывает, каким он будет в очереди. И еще должно быть какое-то событие на завершение работы модуля, чтобы основная прога перешла к следующему. Так?