ПрограммированиеФорумСеть

Почему лагают машинки (С++)

#0
17:55, 6 апр 2026

Игра разрабатывалась на собственном движке PhysX 2.8 + DirectX 9.0c;
Сеть написана на winsock 2;
Лаги особенно заметны когда 3 и более игроков.
Смотрите видео. Что сделано не так?

if (stream.isReading() && !(owner() && _net->isClient()) && !_player->GetFinished())
  {
    _dAlpha = 1.0f;
    
    D3DXVECTOR3 dPos = pos - car->GetPxActor().GetPos();    
    float dPosLength = D3DXVec3Length(&dPos);
    if (dPosLength > 4.0f)
    {
      car->SetPosSync(pos - car->GetGrActor().GetPos());
      car->GetPxActor().SetPos(pos);
    }
    else if (dPosLength > 0.1f)
      linVel += dPos * 2.0f * car->GetNxActor()->getMass();*/

    D3DXQUATERNION dRot;
    QuatRotation(dRot, car->GetGrActor().GetRot(), rot);
    D3DXVECTOR3 dRotAxis;
    float dRotAngle;
    D3DXQuaternionToAxisAngle(&dRot, &dRotAxis, &dRotAngle);
    if (abs(dRotAngle) > D3DX_PI/24)
    {
      car->GetPxActor().SetRot(rot);
      car->SetRotSync(dRot);
    }

    car->GetNxActor()->setLinearMomentum(NxVec3(linVel));
    car->GetNxActor()->setAngularMomentum(NxVec3(angVel));
    
    car->SetMoveCar((GameCar::MoveCarState)moveState);    
    car->SetSteerWheel((GameCar::SteerWheelState)steerState);
    car->SetSteerWheelAngle(steerWheelsAngle);
  }

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#1
23:19, 6 апр 2026

Чет не похоже на собственный движок. Даже своей математики нет.

#2
3:21, 7 апр 2026

FlashRoyal
> Смотрите видео. Что сделано не так?
для начало надо убедиться что с выключенным всинхом есть лаги. А то там суде по 59.9 фпс болтающемся всинх есть который может быть кривым.

#3
14:15, 8 апр 2026

Может дело в этом?
https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B… 3%D0%BB%D0%B0

ПрограммированиеФорумСеть