Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Shagg_E

Страницы: [1] 2 3 ... 35
1
Я нужные функции, которых нет в SDK, добавлял перед "using namespace plugin;" так:

Код: C++
  1. auto    StoreShadowToBeRenderedd = (void(__cdecl *)(unsigned char type, unsigned int texture, CVector* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, bool drawOnWater, float scale, int realTimeShadow, bool drawOnBuildings))0x56E6C0;
  2.  

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

Я собственно, почему и не брался за всё это. Во первых, я не догадывался о возможности оптимизации именно через урезание кол-ва объектов. Я думал, что дело именно в полигонаже. Оказывается, что нет.
Во вторых, конечно же объем работы. Верх платформы требует просто циклопического объема работ, а здесь еще и руины такую подляну устроили. Себя очень трудно переосилить.)
Я тоже про оптимизацию количеством объектов не додумывался, но после поста Sector-а всё встало на свои места.
Надеюсь, для daniltk2 тоже хоть что-нибудь оказалось в этой теме полезным/новым(т.к. мы в его теме флудим, кек)

3
А вот в col-моделях лимит ~2200 трианглов.

Не совсем. Хоть 3000, хоть 3500 полей - главное чтоб вес кола не превышал 64 КБ.
О, спс за инфу. Когда ковырял этот вопрос - не догадался про вес.

4
То есть сделать завал единым объектом с общей лэнд-массой? А как-же полигонажный барьер? В обломках в среднем по 80-90 поликов. Это если совсем усреднить.
В деревьях по 300 где-то, но они и не кучкуются особо, к тому-же они не имеют лодов даже. Они редко появляются и быстро исчезают, основная проблема именно город.

Если обломки объединять и мержить в один объект, в принципе, можно уменьшить кол-во объектов вдвое-втрое. Это решит основную проблему?
У тебя там еще не оптимизированы колы.
Полигональный барьер для dff моделей какой-то запредельно высокий, так что не думаю, что ты в него упрешься. А вот в col-моделях лимит ~2200 трианглов.
Иначе говоря - делаешь так:
1) Аттачишь обломки и камни к лэнду там, где они навалены кучей. Кол для них сильно упрощаешь(нет смысла в проработанности кола там, где игрок это не сможет "прощупать").
2) С домами на нижнем уровне поступаешь так же. У тебя там куча мест, где просто тупо в коле лишние трианглы, убрав которые ты мог бы получить возможность объединить несколько частей здания в одну(в обратном порядке, разумеется: сначала объединяешь здание в 1 объект, потом упрощаешь кол).
3) То же касается кусков автобуса и прочих подобных объектов. Там вообще можно сделать один мега упрощенный кол из 50-100 поликов(ок, мб чуть больше) для всего автобуса - никто не заметит.
4) В верхнем мире есть такие элементы. В них по 300-500 трианглов максимум в среднем. Т.е. смело можно объединять по 4 таких объекта в один даже без оптимизации кола(удаления этих лишних трианглов).
5) Если ко всему вышеперечисленному оставить ту фишку с системой интерьеров, над которой мы с тобой работали - я думаю, в сумме будет существенный прирост производительности.

Я знаю, что это адовая куча работы, но это вайс ¯\_(ツ)_/¯
С момента его выхода процы не так хорошо развились, в отличии от видеокарт. Современные движки это учитывают, и всё большую нагрузку отдают последним(даже просчет физики, лол). Старенький же Renderware образца Вайса диктует свои правила. Так что приходится "разгружать" проц и "нагружать" видюху "вручную"...

5
По поводу вайса. У тебя, кстати нет идей по поводу мешей, про которые упомянал Сектор?
У тебя на карте много обломков, камней, обгорелых деревьев и т.п. не динамических объектов. С точки зрения экономии ресурсов видеокарты ты сделал правильно, что не стал объединять несколько одинаковых обломков, лежащих в одной куче(в радиусе 50 метров, например), но т.к. процесс игры однопоточный, то с точки зрения процессора очень затратно производить вызов для каждого объекта, когда таких объектов очень много.
Т.е. всё, что не является динамикой(не имеет своей физики или анимации) - лучше аттачить к лэнду(1 mesh - 1 вызов, грубо говоря).

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

7
Только сейчас просмотрел видео... так интересно, на ностальгию пробило.. тоже когда-то баловался с подобными идеями в Вайсе.)
https://www.youtube.com/watch?v=KeMZUvmlyYk
Ого! Не знал, что это есть в твоем моде. Круто!

P.S. Сорян за редактирование сообщения - спросонья мискликнул :-\

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

9
О, зачет! Мало кто уделяет этому внимание!

10
Концепцией мода является сделать родной город с передачей восприятия местности, чтобы каждый уголок воспринимался так же, как в реальности
У тебя в реальности советская ГАИ разъезжает по городу?  ;D

Если серьезно, то здания годные, будет интересно следить за проектом!

11
Скриптинг / Re: Прицепить звук к объекту.
« : Август 05, 2018, 08:41:21 pm »
Звук идет с какими-то перерывами, это хреново.

1. В VC юзабельны только 2 слота wav(1 и 2)
2. Указывать положение wav можно только перед его воспроизведением. Если поменять положение во время воспроизведения - ничего не произойдет.
3. Wav продолжает проигрываться с той громкостью и в тех каналах, в каких он начал проигрываться. Т.е. если звук начинает воспроизводиться "с правой стороны вдалеке"(в правом канале с уменьшенной громкостью) - он таким и останется, даже если повернуть камеру в другую сторону(т.е. будет "вечно" звучать "справа").
4. Для поезда лучше заменить один из sfx звуков и воспроизводить их:
Vice City
Id Enum SFX[3] Range Notes
1 SOUND_PART_MISSION_COMPLETE 364-366 unlimited blip
3 SOUND_POLICE_CELL_DOOR_CLUNK 143 40.0 metal gate
5 SOUND_GARAGE_DOOR_CLUNK 102 80.0 garage door finished open/close
7 SOUND_RACE_START_3 364-366 unlimited blip
8 SOUND_RACE_START_2 364-366 unlimited blip
9 SOUND_RACE_START_1 364-366 unlimited blip
10 SOUND_RACE_START_GO 367-369 unlimited high pitch blip
12 SOUND_SHOOTING_RANGE_TARGET_HIT 162-164 50.0 bullet hit ground, random selection between 162 and 164
13 SOUND_AMMUNATION_BUY_WEAPON 361-363 unlimited successful select
14 SOUND_AMMUNATION_BUY_WEAPON_DENIED 361-363 unlimited unsuccessful select
16 SOUND_IMRAN_ARM_BOMB 178 unlimited "Demolition Man" and "Trojan Voodoo" arm bomb
18 SOUND_WILLIE_CARD_SWIPE 334 40.0 "No Escape?" card swipe
19 SOUND_MALE_AMBULANCE_OUCH intermittent male pain
20 SOUND_FEMALE_AMBULANCE_OUCH intermittent female pain
35 SOUND_SEAPLANE_LOW_FUEL 465 1000.0 "Dildo Dodo" Skimmer low fuel ping
52-54 162-164 50.0 bullet hit ground, random selection between 162 and 164
56 267 80.0 ringing phone
57 147 60.0 glass breaking
58 147 60.0 glass breaking
59 146 60.0 glass breaking
60 148-151 55.0 glass breaking, random selection between 148 and 151
61 327 60.0 boxes destroyed
62 328 60.0 boxes destroyed
63 136-140 60.0 metal sheet explosion, random selection between 136 and 140
64 33 60.0 tire hit ground
65 339 60.0 beach ball
66 156-157 20.0 gun shell drop, dependent on what collision the player is currently standing on

Либо можно попробовать юзать зацикленные sfx:
Vice City
Id Enum SFX Range Notes
0 SOUND_BANK_ALARM_LOOP 470 80.0 alarm
2 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP 176 80.0 gate open/close
4 SOUND_GARAGE_DOOR_SLIDING_LOOP 176 80.0 gate open/close
6 SOUND_SNORING_LOOP 471 6.0 "No Escape?" snoring
11 SOUND_SHOOTING_RANGE_TARGET_MOVING_LOOP 331 40.0 Moving shooting range target
36 SOUND_NEW_BUILDING_BAR_1 472 80.0 Greasy Choppers "Alloy Wheels of Steel"
37 SOUND_NEW_BUILDING_BAR_2 473 80.0 Greasy Choppers "Messing with the Man"
38 SOUND_NEW_BUILDING_BAR_3 474 80.0 Greasy Choppers "Hog Tied"
39 SOUND_NEW_BUILDING_BAR_4 475 80.0 Greasy Choppers (unused)
40 SOUND_NEW_BUILDING_MALIBU_1 476 80.0 Malibu Club night, will not play if Malibu.mp3 is playing in the background
41 SOUND_NEW_BUILDING_MALIBU_2 477 80.0 Malibu Club day, same behavior as index 40
42 SOUND_NEW_BUILDING_MALIBU_3 478 80.0 Malibu Club evening, same behavior as index 40
43 SOUND_NEW_BUILDING_STRIP_1 479 80.0 Pole Position night, will not play if Strip.mp3 is playing in the background
44 SOUND_NEW_BUILDING_STRIP_2 480 80.0 Pole Position day, same behavior as index 43
45 SOUND_NEW_BUILDING_STRIP_3 481 80.0 Pole Position evening, same behavior as index 43
46 SOUND_NEW_BUILDING_CHURCH 482 80.0 South Washington Beach church
51 SOUND_NEW_WATERFALL 316 80.0 Fountain

НО! Там тоже нельзя менять положение звука, когда он уже начал воспроизводиться, так что для такого варианта нужно расковырять массив зацикленных звуков, как я описал в первом сообщении в этой теме.

12
Скриптинг / Re: Прицепить звук к объекту.
« : Август 05, 2018, 04:52:36 am »
А делов-то на две строки ))

 ;D Я не так тебя понял: думал, что ты это уже пробовал и тебя это не устраивает из-за сильного разброса партиклов, как огненный пердеж в этом видео.
Вариант DK делает по сути то же самое(только без скриптовой задержки), так что проблема разброса партиклов сохраняется. Горящий автомобиль имеет ту же проблему, к сожалению, так что мой вариант тоже не айс. В то же время, при сокращении "времени жизни"(кол-ва кадров) у партикла подобный "аттач" будет выглядеть более-менее нормально(если вспомнить дым из выхлопной трубы автомобиля).

P.S. Эх, в SA такой проблемы нет: там партиклы реализованы на порядок лучше...

P.P.S. Есть еще вариант: помимо сокращения кол-ва кадров, можно задавать партиклам скорости движения, идентичные скоростям движения "родительского" entity, либо исходя из разницы положения партикла из текущего и предыдущего игрового фрейма, тогда итоговоый "дым" или "огонь" будет выглядеть очень близко к идеальному даже на больших скоростях.

13
Скриптинг / Re: Прицепить звук к объекту.
« : Июль 12, 2018, 06:13:34 pm »
Если в IDE ты прикрепил 2dfx дым, и он работает лишь тогда, когда ты ставишь объект в IPL, а через SCM - нет, то пока это никак не реализовать. У меня это записано в списке идей для новых опкодов, но когда это "случится" - пока сказать не могу(времени катастрофически не хватает).
Если ты кодер, то вот мои мысли, где копать:
1)2dfx-партиклы, как и зацикленные sfx-звуки(опкоды 018D и 018E) должны иметь свои массивы, по типу горящего огня(есть кстати подозрение, что для дыма есть отдельный массив, как у огня).
2)В этих массивах должны быть смещения с координатами партикла или звука.
3)Можно динамически менять эти координаты.
4)???
5)PROFIT!
Примерно на этом принципе я и планирую запилить аттач звуков и партиклов к entity или их частям, но я предлагаю не ждать меня, а попробовать своими силами, если спешишь.

14
Где то еще должен быть пункт который добавляет к источнику lens-flare
Это уже в 2dfx. PointLight - это чисто сам свет от источника. Т.е. то, что освещает педов, авто, катсценовые и динамические объекты.
Так же у источников есть тот самый 2dfx + "тень"(отрисовка текстуры света на горизонтальной поверхности). Это уже в другом массиве(ах).

Это насколько я это всё понимаю(могу ошибаться, но вроде всё верно).

15
CPointLights:

0x9751B0 - количество PointLights
0x7E4FE0 - начало массива PointLights (максимум - 32 элемента)
каждый PointLight состоит из 44(0x2С) байт.

Структура совпадает с GTA3, я просто добавлю пояснения.

0x00 [float] - x coord
0x04 [float] - y coord
0x08 [float] - z coord
0x0С [float] - x direction
0x10 [float] - y direction
0x14 [float] - z direction
0x18 [float] - дальность света
0x1С [float] - red(0.0-1.0)
0x20 [float] - green(0.0-1.0)
0x24 [float] - blue(0.0-1.0)
0x28 [byte] - тип света(0 - светит во все стороны из центра, 1 - directional(фары), светят строго по вектору, 2 - не используется(вроде), становятся слабее, если источников этого типа много, 3-4 - хз, не освещают динамику, скорее всего нужны для источников, которые кроме 2dfx никак не проявляют себя)
0x29 [byte] - тип "дымки" вокруг света(0 - нет "дымки", 1 и 2 - есть)
0x2A [bool] - генерация дополнительной тени авто игрока вблизи источника света(0 - нет, 1 - да), работает только для типа света 0, при параметре LightShd в timecyc.dat больше 0
0x2B [byte] - не используется(пустышка)

Продолжаю разбор каждого элемента, пост будет обновляться.

Страницы: [1] 2 3 ... 35