Проблема с внесением данных в массив

MakcMakc

Участник
Регистрация
6 Ноя 2023
Сообщения
3
Исходные данные:
Запуск игры - проверка на наличие переменных/массива и их создание, остановка и запуск циклов.
Цикл (5 тиков) который строит мост (в двух екземплярах) при каждой установке блока запускается асинк функция.
Событие игрок (игрок установил блок) - взять координату блока - вызвать асинк функцию.
Функция - внести данные координаты блока - провернуть счетчик индекса на +1.

Окончание игры - остановка и запуск циклов.
Цикл (0,33 тиков) на вызов асинк функции.
Функция - извлечение данных координаты - провернуть счетчик индекса на -1 - установить блок воздуха по извлеченной координате.


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


Вобщем я бы мог поставить кулдаун на установку блоков, или ввести другие ограничения, но интересны ваши соображения как лечить такую болячку. Концептуально или конкретным примером кода.
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
314
Исходные данные:
Запуск игры - проверка на наличие переменных/массива и их создание, остановка и запуск циклов.
Цикл (5 тиков) который строит мост (в двух екземплярах) при каждой установке блока запускается асинк функция.
Событие игрок (игрок установил блок) - взять координату блока - вызвать асинк функцию.
Функция - внести данные координаты блока - провернуть счетчик индекса на +1.

Окончание игры - остановка и запуск циклов.
Цикл (0,33 тиков) на вызов асинк функции.
Функция - извлечение данных координаты - провернуть счетчик индекса на -1 - установить блок воздуха по извлеченной координате.


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


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

MakcMakc

Участник
Регистрация
6 Ноя 2023
Сообщения
3
вызывай функцию занесения и очистки блока синхронно, запуская асинк функцию её можно сбить, тупо вызвав её ещё раз
Окак, попробую, большое спасибо
Сообщение объединено:

Видать я все еще не понимаю некоторых нюансов работы кода
 
Сверху