Перейти к контенту

drksnc

Пользователи
  • Число публикаций

    21
  • Регистрация

  • Последнее посещение

  • AMKoin

    40 [Подарить AMKoin]

Баланс оценок

14

Недавние посетители профиля

1 032 просмотра профиля
  1. drksnc

    Шейдеры

    Что за странное сглаживание в UI на DX10 и DX11? Происходит при масштабировании изображений (в масштабе 1:1 все ок). MSAA отключал - не помогло. Также непрозрачные края текстур могут становиться прозрачными. Скрытый текст
  2. drksnc

    Multiplayer Extension

    Свежие новости. -Включена интерполяция для всех живых существ. Это минимизирует фактор сетевой задержки, все игровые объекты перемещаются плавно вне зависимости от пинга. -Добавлена вкладка "Контакты" в ПДА. -Добавлена система отрядов. В отряде может быть от двух до четырех человек. У членов отряда синхронизируются квесты, а так же появляются хп-бары над головой. Есть возможность установить метку на карту для отряда. -Синхронизирован стационарный пулемет. Демонстрация отряда Интерполяция Стационарный пулемет
  3. drksnc

    Multiplayer Extension

    Допиленный ревайв тыц
  4. Multiplayer Extension Платформа: Зов Припяти 1.6.02 Разработчики: drksnc, v2v3v4, M4dMurloc Multiplayer Extension - движковый мультиплеерный мод для Зова Припяти, изначально предполагавшийся как перенос ассемблерного soProject на исходники. На данный момент проект обладает следующими фичами: Скрытый текст -A-Life Simulator. -Диалоги. -Обысков трупов и ящиков. Работает перенос из инвентаря игрока в ящик, предметы обновляются в реальном времени (сразу несколько игроков могут полноценно осуществлять обыск) -Реплики NPC во время боя. -Включены и синхронизированы некоторые анимации, включающиеся скриптовыми схемами (например, анимация ожидания NPC после боя) -Квесты. -Скачивание карт. -Наброски для PvE режима под названием "Оборона" по защите от волн. -Выброс. Пока что движковый (переписан в код движка аналогично скрипту) и в рамках режима "Оборона". Полностью синхронизирован и повторяет оригинальный выброс. -Переработан и улучшен вид от третьего лица. -Различные мелкие правки и улучшения. Поскольку проект мультиплеерный, мы уделяем внимание тому, что было опущено в оригинальной игре ввиду спеицифики оригинальных режимов. Например, взаимодействие игроков друг с другом или разнообразные анимации для мировой модели. Сравнение нашего проекта с Ray of Hope неизбежно, однако стоит понимать, что RoH создаётся силой большой команды на протяжении уже пяти лет, в то время как мы работаем вдвоем-втроем в свободное время несколько месяцев. Также, RoH целится в первую очередь в массовость, создавая масштабную ММО, когда у нас стоит задача обновить и улучшить мультиплеер оригинальной игры, привнести чувство того, что игрок играет в классический сингловый сталкер, но вместе с друзьями, при этом освежить игровой процесс новыми кооперативными механиками. Что касается других мультиплеерных модов, то все они как правило базируются на soProject и представляют собой перетасовывание старого контента в виде моделей, текстур, звуков и правок конфигов, не предоставляя при этом никакого нового функционала и не внедряя принципиально новые игровые элементы. Поскольку такие проекты обычно имеют РП направленность, то весь геймплей там сводится к тому, что игроки просто переписываются в чате, поскольку платформа не предоставляет никаких способов интеракции между игроками кроме одного - убить. Первый трейлер Демонстрация системы поднятия игроков Демонстрация выброса Ноги от первого лица Скачивание карт Техническое видео с клиента
  5. Ищем маппера для создания небольшой карты для мультиплеерной модификации. В ЛС.
  6. С позицией и поворотами разобрался. Теперь косяк с анимацией - на клиенте после вызова PlayCycle, даже с включеным лупом, анимка останавливается на последнем кадре (вроде), причем на сервере с такими же параметрами все замечательно пашет. Еще есть animation().update(), но результат его работы оставляет желать лучшего
  7. А, нет. это сообщения от PHGetSyncItem(0). Но почему их ТАК много.
  8. Клиент получает её один раз, просто сталкеров было двое . Причем у клиента координата оказывается в классе CSE_AlifeHumanStalker. Откуда она там берётся, если как я понял, в сопроджекте, откуда я скопипастил весь код, серверный клиент получает позицию из CAI_Stalker, отправляет её в CSE_AlifeHumanStalker, а тот в свою очередь раскидывает пакет нелокальным клиентам, данные из которых должны применяться в их CAI_Stalker. Причем клиент похоже делает успешный Set_state с этими данными вот здесь: CPHCharacter* Char; Char->set_State(NetState); потому что в консоли клиента куча таких сообщений current_state 5 next_state 5 item_sect wpn_ak74_up2 H_Parent stalker
  9. И ещё вопрос вдогонку. Вот этот код означает что в метод PHGetSyncItem класса EntityAlive в кач-ве аргумента передаётся 0? if(pEntityAlive__PHGetSyncItem) { // get sync item _asm { push 0 mov ecx, pClass call pEntityAlive__PHGetSyncItem mov PHCharacter, eax };
  10. Почему клиент только два раза получает серверную координату в самом начале? Я вроде бы один в один переписал код с soProject. Клиентский ai_stalker.cpp Скрытый текст void CAI_Stalker::net_Import(NET_Packet& P) { CStalkerAnimationManager* AnimationManager; CInventory* Inventory; CMovementManager* Movement; float position[3]; float direction[3]; float heading; float head_orientation[2]; u16 CurrentWeapon; P.r(&position, sizeof(&position)); Msg("SIZE CL: %f", sizeof(position)); Position().x = position[0]; Position().y = position[1]; Position().z = position[2]; Direction().x = direction[0]; Direction().y = direction[1]; Direction().z = direction[2]; SPHNetState NetState; NetState.position.x = position[0]; NetState.position.y = position[1]; NetState.position.z = position[2]; CEntityAlive* CEA; CEA->PHGetSyncItem(0); CPHCharacter* Char; Char->set_State(NetState); setVisible(TRUE); setEnabled(TRUE); } void CAI_Stalker::net_Export(NET_Packet& P) { CStalkerAnimationManager* AnimationManager; CInventory* Inventory; CMovementManager* Movement; float m_state_holder_state[35]; float position[3]; float direction[3]; float heading; float head_orientation[2]; u16 CurrentWeapon; if (Inventory) CurrentWeapon = (u16)Inventory->GetActiveSlot(); position[0] = Position().x; position[1] = Position().y; position[2] = Position().z; direction[0] = Direction().x; direction[1] = Direction().y; direction[2] = Direction().z; P.w(&position, sizeof(&position)); Msg("POS CL: %f", &position); } CSE_AlifeHumanStalker Скрытый текст void CSE_ALifeHumanStalker::UPDATE_Write(NET_Packet &tNetPacket) { // inherited1::UPDATE_Write(tNetPacket); // inherited2::UPDATE_Write(tNetPacket); // tNetPacket.w_stringZ(m_start_dialog); u16 objectid = object_id(); tNetPacket.w(&position, sizeof(&position)); Msg("SIZE SV: %d", sizeof(&sync_buffer->position)); } void CSE_ALifeHumanStalker::UPDATE_Read(NET_Packet &tNetPacket) { // inherited1::UPDATE_Write(tNetPacket); // inherited2::UPDATE_Write(tNetPacket); // tNetPacket.r_stringZ(m_start_dialog); tNetPacket.r(&position, sizeof(&position)); Msg("POS SV: %f", position[0]); }
  11. @_Призрак_ да, что интерполяцию надо будет подключить - понятно. Но я имею ввиду конкретно способ передачи позиции от сервера к клиенту. Нужно же как-то сначала передавать позицию, а потом применять интерполяцию на клиенте. А вот как именно передавать - я хз.
  12. Сам отвечу на свой вопрос: нужно научить клиента загружать граф и АИ-сетку, дополнив метод GameSpecific_Before класса CLevel. Пример можно увидеть в исходниках soProject. Клиент исправно получает хиты и может убивать NPC и монстров. Вот только с синхронизацией положения и поворотов не могу разобраться - как что откуда и куда надо передавать, исходники soProject не помогают. Единственное предположение - надо передавать tNetPacket.w_vec3 (o_Position) и все остальные данные из нужного класса в xrServer_Objects_Alife_Monsters.cpp, а потом в клиентском классе (напр. CAI_Stalker(?)) делать set_State с этими данными. Но как такое провернуть - не знаю.
  13. Ещё один вопрос по поводу мультиплеера. Чистое Небо 1.5.10. Экспериментирую с ai в мультиплеере. Подключил alife и смог заспавнить монстров. Есть несколько проблем, но самая актуальная - клиент валится на синхронизации, последовательность методов такая Скрытый текст 0023:049F15A6 xrGame.dll, CQuadTree<moving_object>::insert() + 22 byte(s), c:\xray-dev\cs\engine\xrgame\quadtree_inline.h, line 90 + 18 byte(s) 0023:049F0D6B xrGame.dll, moving_object::moving_object() + 283 byte(s), c:\xray-dev\cs\engine\xrgame\moving_object.cpp, line 27 0023:048C7381 xrGame.dll, CCustomMonster::net_Spawn() + 1185 byte(s), c:\xray-dev\cs\engine\xrgame\custommonster.cpp, line 763 + 26 byte(s) 0023:0484CF56 xrGame.dll, CAI_Stalker::net_Spawn() + 150 byte(s), c:\xray-dev\cs\engine\xrgame\ai\stalker\ai_stalker.cpp, line 352 + 45 byte(s) 0023:049C7798 xrGame.dll, CLevel::g_sv_Spawn() + 88 byte(s), c:\xray-dev\cs\engine\xrgame\level_network_spawn.cpp, line 108 + 16 byte(s) 0023:049C75A9 xrGame.dll, CLevel::cl_Process_Spawn() + 169 byte(s), c:\xray-dev\cs\engine\xrgame\level_network_spawn.cpp, line 40 0023:049B4EF2 xrGame.dll, CLevel::ProcessGameEvents() + 290 byte(s), c:\xray-dev\cs\engine\xrgame\level.cpp, line 465 0023:049B4723 xrGame.dll, CLevel::OnFrame() + 467 byte(s), c:\xray-dev\cs\engine\xrgame\level.cpp, line 603 0023:008D539A xrEngine.exe, CInput::OnFrame() + 154 byte(s), c:\xray-dev\cs\engine\xrengine\xr_input.cpp, line 470 0023:00885400 xrEngine.exe, CRegistrator<pureAppStart>::Process() + 80 byte(s), c:\xray-dev\cs\engine\xrengine\pure.h, line 77 0023:008A69AF xrEngine.exe, CRenderDevice::FrameMove() + 399 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 474 0023:008A6C07 xrEngine.exe, CRenderDevice::on_idle() + 183 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 267 0023:008A6B3A xrEngine.exe, CRenderDevice::message_loop() + 90 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 379 0023:008A6A88 xrEngine.exe, CRenderDevice::Run() + 168 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 423 0023:008DC31A xrEngine.exe, Startup() + 378 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 335 0023:008DBD88 xrEngine.exe, WinMain_impl() + 1048 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 496 0023:008DB8F6 xrEngine.exe, WinMain() + 54 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 521 0023:008A3E39 xrEngine.exe, __tmainCRTStartup() + 293 byte(s), f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c, line 618 + 14 byte(s) 0023:763162C4 KERNEL32.DLL, BaseThreadInitThunk() + 36 byte(s) 0023:77CC0F79 ntdll.dll, RtlSubscribeWnfStateChangeNotification() + 1081 byte(s) 0023:77CC0F44 ntdll.dll, RtlSubscribeWnfStateChangeNotification() + 1028 byte(s) Сразу оговорюсь что я не очень силен в программировании, поэтому может не вижу очевидных вещей. Подскажите куда копать.
  14. А разве простое удаление условия не поможет?
  15. Никто не знает как в ЧН/ЗП в сетевой игре включить возможность использования камер cam_2 и cam_3?

AMK-Team.ru

×
×
  • Создать...