Прошлые домены не функционирует! Используйте адрес
ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Уже несколько месяцев решаю одну задачу.
Я хочу сделать так, чтобы люди которые занимаются разработкой 3D графики для игр(ы), фильмов, или каких-либо интерактивов, не суть... не просто тупо моделили вершинки и грани в Максе, а наделяли свои 3d сцены, хоть малейшей логикой или физикой или каким-либо интерактивом, ещё на стадии моделирования. И причем ! Тупо на стадии моделирования ! Где-нибудь в векторном редакторе. К примеру делает кто-то сундук с драгоценностями (ну под каких либо там "пиратов Карибского моря"). И видеть его творческая душа, что после попадания шпаги по крышке этого сундука, должно произойти следующее:
1) Крышка треснула
2) Золото издало звон внутри ящика
3) текстура древесины меняется на текстуру царапаной древесины.
4) Координаты Х и У сундучка, чуток translate в сторону.
5) 3D модель идеально целого сундука навсегда исчезла (выгрузилась) из памяти программы, заменившесь на какой-либо "Sunduk.Nadkolot"
6) после удара саблей, пробежала искра (пусть даже рандомных параметров). И в течении 5 сек пусть идёт из сундука дым, а вот параметры двма не рандомных, а вполне себе manual'ные клуб пара радиусом1 метр, и виден этот дым до 30 метров.
------
Приведенные выше цели - это весьма объективные цели.
Есть также и субъективные цели у сундучка:
1) уровень владения шпагой у ударяющего =+ 1
2) враги в радиусе Х метров обернулись в сторону того кто ебанутый шпагой этот сундук.... Но это ладно, эти задачи - они уже второстепенные. Они могут быть решены на уровне движка.
Вернёмся к первым 6 целям.
Я разрабатываю сейчас небольшой язык нет, даже не программирования, а скорее - язык моделирования. Задача в том, чтобы он был понятен далёким от программирования людям, художникам, текстурщикам и тд. Людям творческим. Но так, чтобы они могли излагать на нем свои простейшие задумки. И так чтобы код писать не в Ide куда-либо в страшные фигурные скобки, а просто добавлять в имя файла модельки или целиком сцены (если она представляет из себя съатаченные во единое целое, модели).
Если перевести мой первый пример с сундуком в естественный вид. То есть так как оно будет уже на компе :-) , то получится примерно такой список файлов:
1) sunduk(Ttxd_new_box.png).3ds
2) sunduk(v20).3ds
3) sunduk(v40).3ds
4) sunduk(v55-).3ds
5) sunduk(D5,).3ds
6) sunduk(D9,Zstuk.mp3).3ds
7) sunduk(D12, Ttxd_old_box).3ds
8) sunduk(D15-,P(100,5)).3ds
9) stuk.mp3
10) txd_new_box.png
11) txd_old_box.png
Поясняю
1) << всё хорошо. Сундук только-только проинициализировался. Он целый и имеет текстуру "целого сундука".
2) тоже самое но уровень детализации слабее. Так как для расстояния 20 метров
3) тоже самое но уровень детализации слабее. Так как для расстояния 40 метров
4) тоже самое но уровень детализации слабее. Так как для расстояния 55 метров. А вот знак "-" говорит о том что далее 57,58,.... 100500 метров сундук необходимо отключать полностью (visible = false).
5) после удара эквивалентного 5 кг
6) после удара эквивалентного 9 кг, атут ещё и звук удара проиграть!
7) после удара эквивалентного 12 кг, тут уже и текстуру сменим.
8) пар Диаметр 100 см , длительность 5 сек.
Разумеется игра не про сундуки какие-либо и сокровища, а сундук это чисто пример, для понимания. Это более простой пример просто.
Я прописал почти все вспомогательные функции которые необходимы для обработки главной логики интерпретатора моего языка.
Пишу на Паскале:
Function get_str_from_grp(Group:string;number:integer):string; function info_par(par:string):string; function is_par_in_str(stroka:string;par:string):boolean; function is_par_in_grp(List_obj:string;par:string):boolean; function get_Fname_str(code_obj:string):string; function get_Gname_str(code_obj:string):string; function get_kol_par(code_obj:string):integer; function get_par_from_str(stroka:string; par:integer):string; function is_lod_for_obj_in_grp(List_obj:string;name_object:string):boolean; function is_lod_for_obj_in_grp(List_obj:string;name_object:string):boolean; function get_metr_lod_for_object_in_grp(List_obj:string;name_object:string;Number_of_LOD:integer):integer; function info_finishing_for_obj_in_grp(List_obj:string;name_object:string):string; function get_par_obj_in_grp_for_dist(List_obj:string;name_object:string;metr:integer):string; function get_code_metra_for_obj_in_grp(List_obj:string;name_object:string;metr:integer):string; function is_DEF_in_group (List_obj:string;name_object:string):boolean; function is_l(par:string):boolean; function is_t(par:string):boolean; function is_c(par:string):boolean; function is_d(par:string):boolean; function is_f(par:string):boolean; function is_z(par:string):boolean; function is_a(par:string):boolean; function is_p(par:string):boolean; function is_o(par:string):boolean; function is_s(par:string):boolean; function is_m(par:string):boolean; function is_j(par:string):boolean; function is_plus(par:string):boolean; function is_minus(par:string):boolean; function is_w(par:string):boolean; function is_x(par:string):boolean; function is_e(par:string):boolean; function is_g(par:string):boolean;
Grp - это стриноговое значение в котором хранятся вообще весь список файлов объектов сцены. С разделителем "|||" (Типо всё что в доме, дверь.3Ds|||windowA.3ds|||windowB.3ds||| и тд.
Каковы вообще перспективы всего этого. Доделаю я это или нет? Все функции работают но порознь.
Если я перестану сейчас писать на Паскале и перейду на пролог, это будет лучше? Он справляется с такими задачами как у меня?
Притом меня рендер мало вообще интересует в игре, интересует больше логическая мощность движка. Рендер и пр можно взвалить на irlicht мли на Glscene. На что угодно