HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Простейшая физика
Вопрос к Xash Group
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Question Простейшая физика

У меня к вам вопрос, когда я изучал ваш мод, и его исходники.Я прочитал лог (history.txt), и обнаружил в нем такой текст "+добавлена простейшая физика".Этот текст очень удивил меня в том как вы смогли добавить физику в такой движок.Изучив я обнаружил physic.dll.Поняв что этот файл используете для физики.Когда я узнал что физика находиться в исходниках, я немедленно решил их изучить.Я обнаружил следующее:
defs.c

C++ Source Code:
1
// physics description
2
.vector		origin;
3
.vector		angles;
4
.vector		old_origin;	// interpolated values
5
.vector		old_angles;
6
.vector		velocity;
7
.vector		avelocity;
8
.vector		m_pmatrix[4];
9
.vector		m_pcentre[3];	// current centre of mass
10
.vector		torque;
11
.vector		force;
12
.vector		post_origin;
13
.vector		post_angles;
14
.vector		origin_offset;
15
.float		ltime;
16
 
17
.float		bouncetype;
18
.float		movetype;
19
.float		solid;
20
.vector		absmin, absmax;
21
.vector		mins, maxs;
22
.vector		size;


defs.c
C++ Source Code:
MOVETYPE_PHYSIC	// phys simulation

C++ Source Code:
SOLID_BOX,	// physbox

physic.c
C++ Source Code:
1
//=======================================================================
2
//			Copyright XashXT Group 2008 ©
3
//			physic.c - test game physic
4
//=======================================================================
5
 
6
void misc_physbox ( void )
7
{
8
  precache_model ("models/box.mdl");
9
  pev->owner = pev;
10
  pev->solid = SOLID_BOX;a
11
  pev->movetype = MOVETYPE_PHYSIC;
12
  setmodel (pev, "models/box.mdl");
13
}
14
 
15
void misc_barrel( void )
16
{
17
  string name = "models/barrel2.mdl";
18
 
19
  precache_model( name );
20
  pev->owner = pev;
21
  pev->solid = SOLID_CYLINDER; //test
22
  pev->movetype = MOVETYPE_PHYSIC;
23
  setmodel (pev, name );
24
}
25
 
26
void misc_sphere( void )
27
{
28
  string name = "models/nexplode.mdl";
29
 
30
  precache_model( name );
31
  pev->owner = pev;
32
  pev->solid = SOLID_SPHERE; //test
33
  pev->movetype = MOVETYPE_PHYSIC;
34
  setmodel (pev, name );
35
}
36
 
37
void item_healthkit( void )
38
{
39
  pev->model = "models/w_medkit.mdl";
40
 
41
  precache_model( pev->model );
42
  pev->owner = pev;
43
  pev->solid = SOLID_MESH;
44
  pev->movetype = MOVETYPE_PHYSIC;
45
  setmodel (pev, pev->model );
46
}
47
 
48
void func_physbox( void )
49
{
50
  pev->owner = pev;
51
  pev->solid = SOLID_MESH;
52
  pev->movetype = MOVETYPE_PHYSIC;
53
  setmodel (pev, pev->model );
54
}



Странно, но больше я ничего не нашел.Как на таком могла работать физика?
Я решил позаимствовать ими, и скопировал все в свой мод под движок Half-Life 1.Было очень много ошибок.Более чем за час я исправил все ошибки.Немного изменил структуру файла physic.c (поменял на physic.cpp) добавив его в проект.Я сделал его как Base Entity.Чтобы в редакторе я мог создать энтитью, которая и являлась physic.Во время компиляции ошибок не наблюдалось.Я ждал...
И тут когда компиляция прошла успешно, я запустил свой мод (через ярлык).И сразу в меню выскочила ошибка об hl.exe, и игра вылетела.Я подумал что это из-за того что я не добавил physic.dll в папку мода, но все равно бесполезно.
Прошу помочь в решении проблемы.
Заранее благодарен

Сообщить модератору | | IP: Записан
Сообщение: 41660

Старое сообщение 10-01-2009 05:54
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Frest ты не забыл прилинковать physic.dll? Я так думаю, что его следует загрузить, как fmod.dll, например, грузится, загрузить все его функции(используй программку dependency walker(C:\Program Files\Microsoft Visual Studio\COMMON\Tools\DEPENDS.EXE)чтобы просматривать функции дллок). Но лучше, я думаю, забей на это. Слишком много возни, и ради чего? Можно прекрасно обойтись без физики и рэгдоллов.

З.Ы. Кстати, а что за версию Ксаша ты смотрел ? У меня такое впечатление, что ты изучал не мод для ХЛ(Ксаш), а новый движок(Ксаш3Д).

Сообщить модератору | | IP: Записан
Сообщение: 41661

Старое сообщение 10-01-2009 06:49
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
У меня к вам вопрос, когда я изучал ваш мод, и его исходники

Ты не мод изучал, а движок. Вся интеракция скрыта от простого пользователя, наружу торчит только этот самый MOVETYPE_PHYSIC.
В самом ксаше запусти карту phystest, чтобы посмотреть на работу физики.

Добавлено 10-01-2009 в 12:29:

Да и еще - physic.dll это не только newton, но еще и 200 килобайт собственного кода.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41663

Старое сообщение 10-01-2009 09:29
-
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Ku2zoff Это все на деле XashXT beta048.
Дядя Миша Я прошлом году ещё смотрел этот phystest.Получается секрет физики в движке и его код закрыт (как и у HLFX), вы мне его не дадите.Значит придется не создавать физику :\
Дядя Миша Вопросы:
1. Как ты написал физику?
2. Где найти нужную информацию,учебники для создания физики в игре?
3. Очень хорошие советы по коддингу (которые помогли также тебе).

Заранее благодарен!

Сообщить модератору | | IP: Записан
Сообщение: 41667

Старое сообщение 10-01-2009 09:51
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Получается секрет физики в движке и его код закрыт

13 февраля выйдет Xash3D beta 0.56 и я подумываю о том, чтобы вынести физику в пользовательские дллки - потому что мне лень создавать различные физ.объекты, которые могли бы придумать пользователи.
Правда не факт что успею это сделать.
1. никакого секрета тут нет - взял и написал.
2. подобной информации, применительно к Quake-движкам я не нашел нигде. Дело в том, что в Quake-движках (к коим относится и Half-Life) мир повернут относительно дефолтных координат как минимум два раза на 90 градусов. Из-за этого возникают известные проблемы с передачей координат туда и обратно. Как эту проблему решали в Valve - можно посмотреть в исходниках украденной бетки hl2. Кое-что я почерпнул оттуда.
3. Мне помог исключительно 5 летний опыт кодинга, а не какие-то там советы.
Я могу выложить исходник physic.dll но толку от этого не будет - он все равно привязан к своему формату карт, к компилятору bsp, распихан равномерно по всему движку и просто так вставить это в халфу не выйдет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41668

Старое сообщение 10-01-2009 10:55
-
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 36

Рейтинг



Frest в лучшем случае у тебя на это уйдет год работы. Нужно ли тебе это?

__________________
avtobus zekov

Сообщить модератору | | IP: Записан
Сообщение: 41676

Старое сообщение 10-01-2009 14:42
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Jumpdaphuckup! кстати, а можно твою реализацию физики под Newton (у меня какой-то архивчик валяется), выложить во всеобщее пользование? Может кому и пригодится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41678

Старое сообщение 10-01-2009 15:03
-
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Jumpdaphuckup! надо подумать...
Дядя Миша ясно спасибо!
Выложи исходники physic.dll пожалуйста, а инструкция по использованию прилагается?

Добавлено 11-01-2009 в 04:40:

я попробую как нить изменить весь образ physic.dll на его же основе.И ещё изучить

Сообщить модератору | | IP: Записан
Сообщение: 41684

Старое сообщение 11-01-2009 01:40
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Выложи исходники physic.dll пожалуйста

physic.dll - это не сферический конь в вакууме. Он для своей работы хочет интерфейс более чем из 100 (ста) функций.
И если штук 30 из них можно заменить аналогами из винды и халфы, то остальные 70 заменить нельзя ничем и найти в сырцах других движков тоже невозможно, поскольку я писал их с нуля.
Во вторых - там чистая функциональщина, ни одного класса.
Куча указателей на функции и прочие сложные для понимания вещи.
Для человека, незнакомого с чистым Си это как оглоблей по загривку.
Наконец, даже если ты чуточку разберешься с кодом - он использует уникальный формат bsp, который сильно отличается от классического.
Не принципом работы, а методом доступа и хранения лумпов.
Таким образом изучение подобных исходников не влечет за собой ничего кроме разочарования.
На вот тебе для затравки самое важное из физического движка.
Если поймешь как это прикрутить к халфе - помогу в дальнейшем.

Вложение: physic.zip (11.1 кб)
Этот файл был скачан 529 раз.
XaeroX проверил это вложение на вирусы 11-01-2009 в 09:05

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41685

Старое сообщение 11-01-2009 08:49
-
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Спасибо!Учту твои слова.

Сообщить модератору | | IP: Записан
Сообщение: 41686

Старое сообщение 11-01-2009 09:03
- За что?
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 36

Рейтинг



Цитата:
Дядя Миша писал:
кстати, а можно твою реализацию физики под Newton (у меня какой-то архивчик валяется), выложить во всеобщее пользование? Может кому и пригодится.
Ты сам-то понял что-то в тех огрызках бажного кода?

__________________
avtobus zekov

Сообщить модератору | | IP: Записан
Сообщение: 41700

Старое сообщение 11-01-2009 20:33
- За что?
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Пока что я ничего не сделал(правда просто просмотрел).Просто вчера у меня не было времени занятся "тяжелой" работы, лучше начать с легких.

Сообщить модератору | | IP: Записан
Сообщение: 41703

Старое сообщение 12-01-2009 02:14
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Ты сам-то понял что-то в тех огрызках бажного кода?

Ну я их бережно храню на всякий случай

Добавлено 12-01-2009 в 09:07:

Цитата:
Этот текст очень удивил меня в том как вы смогли добавить физику в такой движок

А что конкретно тебя удивило. не подскажешь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41705

Старое сообщение 12-01-2009 06:07
-
Frest
Житель форума

Дата регистрации: Nov 2007
Проживает: (void)
Сообщений: 137

Рейтинг



Дядя Миша я имел ввиду что удивило как вы добавили физику
а текст всего лишь оправдал это

Добавлено 12-01-2009 в 12:56:

Скажите как мне репу свою поднять а то не хочу как позорник с низкой репой, я все таки изменился, стал добропорядычным человеком, ни то что было в прошлом году

Сообщить модератору | | IP: Записан
Сообщение: 41709

Старое сообщение 12-01-2009 09:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
я имел ввиду что удивило как вы добавили физику

да я её и не добавил, считай. То что я сделал - это так, мелочь.
Для игры такая физика не годится.
Цитата:
Скажите как мне репу свою поднять

Пиши туторы, будь активным пользователем и само вырастет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 41719

Старое сообщение 12-01-2009 16:27
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 14:04. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Простейшая физика
Вопрос к Xash Group
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024