Jump to content

Синхронизация и временные интервалы


Recommended Posts

Всем привет, в процессе разработки игрового мода, не могу решить пару вопросов.

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

2. При езде на велосипеде, зависают или изменяются произвольно анимации езды или положения игрока на велосипеде (например игрок едет на нем лежа или вовсе стоит на велосипеде).

3. Как во время разработки кастомной системы бана/тюрьмы/блокировки чата, расчитывать временной интервал например бан на 30 дней, значит что в MySQL добавляется запись о том, что для определенного игрока срок бана заканчивается через ИМЕННО 30 дней, а по тюрьме, например через 40 минут? Временные интервалы как реализовать в MySQL понятно, не понятно как полученную информацию на сервере (в формате ngnix (time)) расчитывать интервалом как например в той же функции mySQL.

Link to comment
18 hours ago, SalwadoR said:

1. Баг

2. Баг

3. timestamp можно получить как в МТА, так и в SQL, скорее всего тебе это надо, но это не точно.

1 и 2 пункты, баги именно МТА или с моей стороны может быть косяк?

За пункт 3 спасибо, попробую повнимательней изучить timestamp метки в LUA/MTA!

Link to comment

@PrototypeX, в мта есть следующие функции:

getElementSyncer ( theElement )
setElementSyncer ( theElement, thePlayer )

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

Всё это конечно порождает определенного рода лаги, и не всегда просто их решить. В сущности ваша задача компенсировать не синхронность, в том месте где она вас не устраивает, самая крайняя мера в конкретном случае с прицепом, это вообще не синхронизирующийся объект.

По второму пункту, речь о том как видят другие или он сам? Если другие, то однозначно мта, и решить не так уж просто, если возможно. А если он сам, то тут уже и у вас может быть косяк, в любом случае проверять и применять/отменять анимацию должно помочь.

А что непонятного с 3м пунктом, я не пойму. Вы на тему того что у вас за формат времени, википедию или поиск использовали? Unix-время оно в ближайшее время не планирует меняться, поэтому это всегда секунды от конкретной даты. Интервалы между числами, они и в Африке интервалы.

 

Link to comment
On 18.12.2016 at 10:46 PM, fabervox said:

@PrototypeX, в мта есть следующие функции:


getElementSyncer ( theElement )
setElementSyncer ( theElement, thePlayer )

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

Всё это конечно порождает определенного рода лаги, и не всегда просто их решить. В сущности ваша задача компенсировать не синхронность, в том месте где она вас не устраивает, самая крайняя мера в конкретном случае с прицепом, это вообще не синхронизирующийся объект.

По второму пункту, речь о том как видят другие или он сам? Если другие, то однозначно мта, и решить не так уж просто, если возможно. А если он сам, то тут уже и у вас может быть косяк, в любом случае проверять и применять/отменять анимацию должно помочь.

А что непонятного с 3м пунктом, я не пойму. Вы на тему того что у вас за формат времени, википедию или поиск использовали? Unix-время оно в ближайшее время не планирует меняться, поэтому это всегда секунды от конкретной даты. Интервалы между числами, они и в Африке интервалы.

 

Огромное спасибо за столь развернутый ответ, мне всё стало понятно!

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

Реализовал проще, бан посуточный + расчёт времени бана система делает автоматически на cron'e в веб-среде. Соответственно минусует от текущего количества 1 единицу каждые сутки. С заглушкой и тюрьмой всё куда проще, по-секундно, тобишь таймер в игре, который на клиенте меняет элемент дату игрока связанную с тем или иным наказанием.

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

Edited by PrototypeX
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...