Четверг, 28 Марта 2024, 22:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Программирование .NET » Обновление мира на сервере (реализация таймера)
Обновление мира на сервере
_pDirectDeviceДата: Четверг, 05 Сентября 2013, 11:48 | Сообщение # 1
частый гость
Сейчас нет на сайте
Использую DateTime.Now.Seconds для вычисление времени. У меня при каждой 4 секунде посылает всем клиентам состояние мира, все норм, но как только число обновление превышает 20 раз (20 раз отправил данные всем) то обновление перестает работать

//в конструкторе
int startTime = DateTime.Now.Seconds;

//в update
int currentTime = DateTime.Now.Seconds;
int totalTime = currentTime - startTime;

if(totalTime == задержка(4 сек))
{
startTime = currentTime;
UpdateWorld();
}

Есть варианты по этому поводу?






VigilemДата: Пятница, 06 Сентября 2013, 16:20 | Сообщение # 2
частый гость
Сейчас нет на сайте
Здесь всё правильно. Ищите ошибку в другом месте.
VinchensooДата: Пятница, 06 Сентября 2013, 16:23 | Сообщение # 3
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Есть вариант сделать нормально. Timer

VolkodavADДата: Пятница, 06 Сентября 2013, 21:45 | Сообщение # 4
частый гость
Сейчас нет на сайте
С чего цифра 20, незнаю.
и как реализовано "задержка(4 сек)"? просто переменная? Просто похоже что startTime доходит до 55-59, и все! DateTime.Now.Seconds уже не может быть больше 59, поэтому и totalTime = currentTime - startTime не больше 3.

я бы по другому немного делал:
Код
int currentTime = DateTime.Now.Seconds;

if(
((currentTime - startTime ) > 4) || ((startTime  - currentTime) > 4)
)
{
startTime = currentTime;
UpdateWorld();
}


Думай, что говоришь. Говори, что думаешь.

Сообщение отредактировал VolkodavAD - Пятница, 06 Сентября 2013, 21:50
FadeBakerДата: Пятница, 06 Сентября 2013, 22:08 | Сообщение # 5
JavaSE Game Developer
Сейчас нет на сайте
Цитата (VolkodavAD)
я бы по другому немного делал:

Код
if (DateTime.Now.Seconds / 4 % 2 == 0) UpdateWorld();

Должно работать, если я правильно понял.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.


Сообщение отредактировал Fade - Пятница, 06 Сентября 2013, 22:09
VolkodavADДата: Понедельник, 09 Сентября 2013, 18:30 | Сообщение # 6
частый гость
Сейчас нет на сайте
Fade,
Цитата (Fade)

Должно работать, если я правильно понял.
чето кто то чего то не понял, может и я проверь: Если брать за начало 0 секунд, то до истечения 1 секунды деление целочисленное выдает всегда ноль. Остаток деления будет то же нось. Далее, от 8, до 11 - деление на 2 даст в результате 2. Остаток от деления останется 0, то есть равенство будет выполняться с начало 999млс, потом около 4 секунды подряд, причем при при каждом вызове uodate в этих временных промежутках. а надо ж при каждой 4 секунде, и на сколько я понял, один раз


Думай, что говоришь. Говори, что думаешь.

Сообщение отредактировал VolkodavAD - Понедельник, 09 Сентября 2013, 19:27
Форум игроделов » Программирование » Программирование .NET » Обновление мира на сервере (реализация таймера)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг