Текущее время: Сб 11 янв 2025 10:43

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 567 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 19  След.
Автор Сообщение
 Сообщение Сб 5 май 2012 14:05
Профиль  
Техногенный
Сообщения: 8299
Зарегистрирован: Пт 29 дек 2006 17:31
Я, повторюсь, считаю, что сначала нужно создать минималистичную локацию для теста физики. Касательно огромного внешнего мира - нахрена он нужен, если будет пустовать абсолютное большинство времени? По той ссылке, которую я давал, выдвигалось предложение об ограниченных локациях, на которых происходят бои.
Касательно уровней.
Карта высот, конечно, удобнее и проще, но она предоставляет меньше форм рельефа. К тому же, может ли она быть динамической?

_________________
thrusting squares through circles


 Сообщение Сб 5 май 2012 19:22
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
smt005 писал(а):
Лично мне не интересно что ты напишиш про форматы даннйх.
Лично мне интересно, что напишут другие и ты в том числе. Или мне отдельный топик создать по движку М3? Просто из названия этого не следует, что это твой личный топик твоего конкретного движка... :roll:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Сб 5 май 2012 19:35
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 4676
Зарегистрирован: Вс 29 авг 2010 18:18
Блин, он тебе говорит, что тебе нужно делать, чтобы стать полезным текущему проекту, который в данный момент делается, в отличие от того проекта, к которому ты придумываешь идеи.
Как бы еще один шанс поворочать мешки для тебя.

_________________
GAMES ARE ONLY FUN IF THEY HURT A LITTLE BIT


 Сообщение Сб 5 май 2012 20:00
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Шаман писал(а):
Просто из названия этого не следует, что это твой личный топик
Нет, кто угодно может написать движёк, значит тема для всех. Pek правильно выразил мою мысль. Если хочешь помочь, делай то что предлагают (НЕ требуют), если хочешь просто пофлудить, пожалуйста.

Единственное Pek ошибся, в моём текущем проекте никаких изменений не будет, но уже начат другой паралельный проект.

Мне будет интересно если ты реально сделаешь (напишиш код) "это", пусть в простом виде.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Сб 5 май 2012 20:05
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 4676
Зарегистрирован: Вс 29 авг 2010 18:18
Цитата:
если хочешь просто пофлудить, пожалуйста.

Даааааааа

_________________
GAMES ARE ONLY FUN IF THEY HURT A LITTLE BIT


 Сообщение Сб 5 май 2012 20:23
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Frozen_Light писал(а):
К тому же, может ли она быть динамической?
Уж она так точно динамической может быть безо всяких осложнений. Гарантирую, ибо сам испытывал.
Frozen_Light писал(а):
Я, повторюсь, считаю, что сначала нужно создать минималистичную локацию для теста физики.
Ну так нужно понять, что создать. Локация - это абстрактно. Я конкретизирую - локация=карта высот, матрица чисел, символизирующих высоты соответствующих точек на ландшафте. Какой размер карты высот (к примеру, 1024х1024 вершин), какой формат (char/int/float/double), что насчёт карты нормалей, текстурных координат? И т.д.
У нас нет дэдлайнов. У нас есть время подумать и обсудить, чтобы сделать не на скорую руку, а обдуманно. Я умирать завтра не собираюсь, а возвращаться к старым проектам для переделки очень не люблю.

Мои мысли: в файле хранить только матрицу высот. Нормали вычислять после загрузки, но не динамически во время отрисовки; текстурные координаты вычисляются динамически (прямо в шейдере). Т.е. в файле на диске хранится лишь массив высот, затем при подгрузке этот массив грузится в память, создаётся дополнительный массив нормалей и рассчитывается. Всё это делается отдельным потоком - когда Игрок подлетает на определённое расстояние к требуемому куску карты (но ещё не захватывает его в зону видимости), менеджер графических данных (МГД) метит в карте мира требуемый кусок карты загружаемым, затем запускает поток-загрузчик, который выполняет вышеописанные действия, и по оканчании процесса этот кусок карты помечается готовым к использованию, а сам поток-загрузчик захлопывается. Когда МГД определяет, что кусок карты вошёл в зону видимости, он ссылается на соответствующую ячейку в мировой карте на предмет готовности требуемого куска карты. Если кусок ещё не готов, МГД останавливает все процессы на х миллисекунд в ожидании завершения процесса подгрузки карты, затем проверяет статус снова, и т.д.
Вышедшие из зоны использования куски карты сохраняются обратно на диск.

Насчёт динамического изменения карты. Каждый кусок карты может изменяться лишь одним потоком - если два и более потока будут менять одни и те же данные, в лучшем случае, результат будет не определён. Это значит, что куски ландшафта, возможно, стоит делать меньше по размеру, а воронкоштамповательным свойством наделять не всё оружие (или только терраформинговую технику). В добавок, изменения ландшафта на уровне карты высот не получится сделать анимированными - если занять единственный процесс постепенным изменением формы одной воронки, то вторая воронка может появиться лишь после оканчания анимации первой. Посему изменения ландшафта должны быть дискретными: взрыв - воронка, пук терраформера - яма на (санти)метр глубже. После изменения карты высот карта нормалей тоже должна быть пересчитана.

Посему размер куска карты ландшафта подлежит обсуждению. Возможно, 256х256 вершин будет оптимальным решением?

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Сб 5 май 2012 20:25
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 4676
Зарегистрирован: Вс 29 авг 2010 18:18
Начни с определения используемых тобою терминов. Мне кажется, ты не совсем точно их понимаешь.

_________________
GAMES ARE ONLY FUN IF THEY HURT A LITTLE BIT


 Сообщение Сб 5 май 2012 21:53
Профиль  
Механоид 2 поколения
Аватара пользователя
Сообщения: 248
Откуда: Санкт-Петербург
Зарегистрирован: Ср 25 апр 2012 19:17
Изображение

:supercool:


 Сообщение Вс 6 май 2012 13:34
Профиль  
Механоид 4 поколения
Аватара пользователя
Сообщения: 680
Зарегистрирован: Вс 2 янв 2011 8:15
Goshis, +1.

_________________
Following our will and wind
We may just go where no one's been
We'll ride the spiral to the end
We may just go where no one's been


 Сообщение Вс 6 май 2012 14:42
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
2 Goshis -1
2 lambda-01 -1

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вс 6 май 2012 19:52
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Сделал топик по ландшафту на соответствующем форуме. Описал метод вычисления нормалей.
Мыслил над идеей. Споткнулся о краевые эффекты. Что насчёт вершин у края карты? Перекрываются ли крайние вершины у двух соседних кусков карты (дупликация же)? Если нет, то рендер куска карты должен идти совместно для группы ближайших кусков - нельзя рендерить каждый кусок карты отдельно, ибо тогда получатся щели длиной в 1 клетку между кусками.
Выходит, нормали для конкретного куска карты вычислять тоже нельзя, пока не будут загружены 4 соседних куска (крестик).
Щас поработаю над визуализацией - надеюсь, найдутся желающие обсудить...

Добавлено спустя 25 минут 50 секунд:

Итак, картина манипуляций кусочками карты:
Изображение
В центре - наблюдатель. Немножко великовато обрисовал его дальность видимости - кружок должен умещаться в клетке.
Итак, четыре куска карты рядом с наблюдателем - это рендеримая зона (R). Для этих 4-х кусков должны быть в наличии готовые карты нормалей. Далее идёт зона (N), где отдельным потоком генерируются нормали. И вокруг этой зоны находится зона загрузки (L).
Такая вот мысля.
Минусы очевидны - если Игрок быстро передвигается, зоны перераспределяются с большой скоростью. Если размер каждого куска карты слишком велик (а его размер подразумевается как двойная максимальная дальность видимости), то мы имеем огромный трафик данных (6-11 кусков зоны L загружаются) и большой объём данных для вычисления (для 4-7 кусков вошедших в зону N рассчитываются нормали).
А если макс. дальность видимости всё-таки не связывать с размером куска карты, то в придачу получится ещё и головоломный код.
Мысли (по делу) есть? :sad:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Вс 6 май 2012 21:37
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Шаман писал(а):
надеюсь, найдутся желающие обсудить...

У меня есть желание обсудить то как у тебя будет это загружаться, и так чтобы при загрузке не было фризов.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вс 6 май 2012 22:29
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
smt005 писал(а):
У меня есть желание обсудить то как у тебя будет это загружаться, и так чтобы прри загрузке не было фризов.
Отдельным потоком. Поток создаётся виндовой API-функцией, например этой:

int _beginthread( void( *start_address )( void * ), unsigned stack_size, void *arglist );

Тут док на неё:
http://msdn.microsoft.com/en-us/library ... cb(v=vs.80).aspx

Процедура _beginthread запускает указанную тобой функцию отдельным потоком. Когда код запущенной функции завершает исполнение, поток автоматически закрывается.
Например, у тебя есть функция такая:

static void __cdecl MyFunc(void* Args){
...
free(Args); //Зачем эта строчка - будет ясно позже
}

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

//Сначала нужно описать структуру, содержащую аргументы для функции:
struct SData{
char FilePath[256]; //Путь к файлу
char* Buffer; //Адрес буффера для загружаемого файла
}

...
//Вот фрагмент кода движка, запускающего функцию загрузки отдельным потоком:
SData* Data = (*SData)malloc(sizeof(SData)); //Отводим память под экземпляр структуры данных, который будет передан функции
char fName[] = "Data/Maps/15,375.hgm"; //Это путь к файлу карты высот с координатами {15;375}
strcpy(Data->FilePath, fName); //Копируем путь к файлу в структуру
Data->Buffer = ...; //Копируем указатель на буффер для карты высот
//Запускаем функцию отдельным потоком:
_beginthread(MyFunc, 0, Data);
... //Движок пошёл дальше, а в параллель ему пошла работать функция MyFunc

Обрати особое внимание на аллокацию памяти под аргументы для функции MyFunc перед её запуском и на освобождение этой памяти внутри функции MyFunc.
Вопросы?

Добавлено спустя 5 минут 33 секунды:

З.Ы.: процедура _beginthread объявлена в хеадере process.h.

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Вс 6 май 2012 22:40
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Ну хоть что-то полезное написал.
Развивай это направление (паралельная загрузка).

Добавлено спустя 6 минут 30 секунд:

Только почему-то у тебя всё так просто а на страничке огромный код для примера.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вс 6 май 2012 22:44
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
З.З.Ы.: непосредственно перед запуском функции MyFunc движок должен пометить требуемый участок карты как загружаемый (чтобы не запустить функцию загрузки повторно, если условия необходимости загрузки карты случатся снова во время загрузки), а непосредственно перед тем, как захлопнуться, функция MyFunc должна где-то отметить, что карта загружена и готова к использованию. Когда движку эта карта понадобится, он должен сперва проверить, готова ли карта (закончилась ли загрузка), и если нет, то зафризаться на х миллисекунд, после чего проверить галочку снова. И т.д. Можно ввести ограничительный таймаут с красным крестом, проанимировать часики или ещё что-нить - дело хозяйское.

Добавлено спустя 3 минуты 41 секунду:

smt005 писал(а):
Только почему-то у тебя всё так просто а на страничке огромный код для примера.
Краткость сестра таланта. Просто я гений, о да! :wink:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Пн 7 май 2012 0:27
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
Ребят может у кого есть срочно нужны любые модели баз и глайдеров из М2, только для 3D макса или блендера?


 Сообщение Пн 7 май 2012 9:15
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 1260
Откуда: island Syberia
Зарегистрирован: Ср 10 янв 2007 9:14
Шаман, честно говоря, где-то я это уже видел. Даже название помню - Paging Landscape. По крайней мере в Огре сталкивался с таким менеджером ландшафта. Быть может ты изобретаешь велосипед. Снова.

offtopic:
2watcover3396, используй для этих целей утилитки от Разума - они помогут тебе вытащить из архивов М2 и модельки (в формате .obj) и текстуры конвертнуть.

_________________
_=S.A.L.K.E.R.=_
"Кто кого еще порвет" - сказала Тузику грелка, надутая до 10 атмосфер
"У нас большие леса. Они способны без остатка поглотить любое воинское формирование" (с)


 Сообщение Пн 7 май 2012 9:22
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Верно, надо литературу поштудировать. Не в Мехах же впервые большие локации появились.

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Вт 8 май 2012 0:05
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
Блин все получается, просто времени много займет конвертить все модели глайдеров. Я помню кто-то мне скидывал большой файл архив под 600 метров и там были практически все модельки глайдеров, прошу пожалуйста у кого есть скинте??:god: Просто тренируюсь на популярном движке CreEngine3, и хочу попробовать запилить что нибудь. :teeth:


 Сообщение Вт 8 май 2012 0:30
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
2 watcover3396 А как же учёба?

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вт 8 май 2012 0:31
Профиль  
Молектроид-разведчик
Аватара пользователя
Сообщения: 442
Откуда: Minsk, Blue-eyed Belarus
Зарегистрирован: Чт 29 мар 2012 19:35
Я скидывал. Постараюсь завтра откопать ссылку.
Цитата:
Просто тренируюсь на популярном движке CrуEngine3, и хочу попробовать запилить что нибудь.

Сложная, но мощная и классная вещь. Да, туда бы Мехов...

_________________
-=S.A.L.K.E.R.=- (ВП, 2008)
http://mechhistory.zbord.ru/ — ФРПГ "ИМ";
http://www.gamersgate.com/DD-AIM/aim — "Механоиды 1"
http://forum.skyriver.ru/viewtopic.php?f=23&t=4836 — таблица рекордов для игры "Механоиды: ГнВ"


 Сообщение Вт 8 май 2012 1:49
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
А Шамане всё в кубики играеццо. Подумалось мне - а можно ли рельеф полностью параллаксом выводить? Просто я никогда сий эффект не пробовал, и не знаю, возможно ли, теоретически, получить тот же результат, как если рисовать карту полигонами? Что-то мне подсказывает, что нет, но утверждать сие права нету. Кто-нить опыт с параллаксом имеет?
С чего это вдруг такая мысль меня посетила? Бибьясняю. Карта высот - массив одиночных флоатов, показывающих высоту (одиночная z-координата). Соответственно, при рисовке ландшафта обычным методом координаты x и y подставляются вручную. С таким подходом не получится рисовать ландшафт оптимальным способом (используя массивы вершин). Либо придётся создавать отдельно массив вершин, заполнять его, и после этого выводить на рисовку. Каждый раз при изменении рельефа придётся этот массив перезаполнять. И дисплей-лист составить нельзя опять же из-за терраформинга. Посему в видеокарту будут постоянно гулять огромные массивы данных - при каждом кадре.
Однако если карту высот юзать как текстуру, перезагружаемую только при её изменении, и рисовать рельеф на гигантском квадрате параллаксом, то можно даже нормали динамически вычислять в шейдере.
Это невпупенный объём головоломной работы, на который я бы не пошёл кроме как будучи уверенным в том, что результат параллакс-мапиингового рельефа МОЖЕТ выглядеть точно так же, как и рельеф, отрисованный полигонами. Пока что я конфужусь: картинки пророчат суперность реализма, но примеры кодов и описания методов внушают опасения о подводных камнях, скрытых в этом методе. Кто имеет опыт с параллакс-маппингом, отзовитесь, плиз.

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Вт 8 май 2012 13:39
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Шаман писал(а):
можно ли рельеф полностью параллаксом выводить?
Можно. Только не могу сказать что будет быстрее, очевидно (но не факт) что с паралаксом потребуется более мощьная видюха. И с текстурами скорее всего будет тяжло, ведь по сути тебе придётся текстурить один полигон разнами текстурами.

Есть статейка "Эфективный рендеринг", там описывается как можно можно частично передавать данные. Статейка не из лёгких, я три года назад ничего не понимал и сейчас не понимаю. http://www.gamedev.ru/articles/?id=20124

Твой способ расходится с моим соображениями о динамическом рельефе но у меня появилась мысли по этому поводу.
1. Теперь ты будешь изучать паралакс вместо менеджера загрузок? :lol:
2. Можно передать с помощью статического VBO вершины(которые будут храниться в видюхе) и карту высот (массив в качестве атрибута) и Z изменять с помощью вершинного шейдера. А если полигоны можно передавить используя XY то вообще замечательно получится.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


Последний раз редактировалось smt005 Вт 8 май 2012 17:56, всего редактировалось 1 раз.

 Сообщение Вт 8 май 2012 14:55
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
2 smt005
Учеба была и есть, но скоро закончится.


 Сообщение Вт 8 май 2012 17:57
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Понятно, опять отмазки...

Используй программу "3D Ripper".
Захват ресурсов видеокарты, Модели - сцена сохраняется в *.3dr (плагин для Макса устанавливается вместе с прогой) и *.obj. Текстуры в формате *.3ds, плагин для фотошопа найдёш на офицальном сайте NVidia.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


Последний раз редактировалось smt005 Вт 8 май 2012 18:06, всего редактировалось 2 раз(а).

 Сообщение Вт 8 май 2012 18:01
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
2 smt005
Блииин, снова программа, просто у меня весь рабочий стол забит программами.


 Сообщение Вт 8 май 2012 18:04
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
А что ты хотел, в паинте всё делать?
Сортируй ярлыки и папки с файлами и не обязательно хранить на рабочем столе. У меня ничего кроме ярлыков и временного не хранится на рабочем столе.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вт 8 май 2012 18:09
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
2 smt005
Да я знаю, просто впадло винду переустанавливать и жесткий чистить.


 Сообщение Вт 8 май 2012 18:31
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
А зачем винду переустанавливать? :lol:

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вт 8 май 2012 23:51
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 490
Откуда: Украина,Донецкая об.
Зарегистрирован: Чт 4 авг 2011 15:54
2 smt005
Просто у меня реестр забитый, тормозит и т.д. И у меня эта винда стоит уже 2 года...


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 567 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 19  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB