Перейти к содержимому
swg2you

Игровое время и часы на ОС

Рекомендуемые сообщения

Задумал я значится в своей программульке часики в углу выводить, куда ж без них.

 

Пишу такой

while true do
  local e={computer.pullSignal(1)}
  prnto(1,1,os.date('!%R'))
  --...
end

ан, нет. Часики то выводятся, но минутки иногда проскакивают через одну. Как оказалось, игровая минута вовсе не равна игровой секунде.

while true do
  local e={computer.pullSignal(.833)}
  prnto(1,1,os.date('!%R'))
  --...
end

а вот так намного лучше.

 

1 игровые сутки == 20 реальных минут
24ч*60м=1440 игровых минут == 20м*60с=1200 реальных секунд
1200/1440=0.8(3)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Думаю для параллельных вселенных движущихся относительно нас с неравномерной скоростью это норма )

 

Всегда можно повысить частоту опроса написав local e={computer.pullSignal(.05)}, но в этом случае не лишним будет добавить условие, и выводить время только если оно изменилось,

local ot=''
while true do
  local e={computer.pullSignal(.05)}
  local t=os.date('!%R')
  if t~=ot then
    prnto(1,1,t)
    ot=t
  end
  --...
end

чтобы избежать неоправданных трат драгоценной энергии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю для параллельных вселенных движущихся относительно нас с неравномерной скоростью это норма )

И зачем тебе часы, которые показывают время, которое никакое на самом деле не время? Какое применение, хотя бы, теоретическое, или, эстетическое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И зачем тебе часы, которые показывают время, которое никакое на самом деле не время? Какое применение, хотя бы, теоретическое, или, эстетическое?

Как не время? То что оно идет неравномерно относительно нас, ничего не значит. Солнце/луна движутся, день сменяет ночь, внутриигровое время тикает.

Или на сервере время отсутсвует как класс? о_О

 

зы

аж побежал смотреть от любопытства, но не смотря на выданную кирку, застрял на стадии авторизации в лаунчере )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local e={computer.pullSignal(.05)}  - и зачем такая лагулька?  Для чего его так часто гетить? Тем более, как правильно говорит Крутой, с реальным временем оно никак не связано. Игровое время на ИТ есть в http://puu.sh/itUyl/8d6d022db1.jpg,   включается кнопкой 'О'

 

Время на ИТ замедлено для более спокойной и размеренной смены дня и ночи от ванилы  (я его привязал к тикам, игровое время сейчас на сервере в 6 раз быстрее, чем астрономическое) В ваниле там 20 мин = игровым суткам. У нас игроые сутки - это 4 часа астрономических.

 

То есть 10 сек реального времени = 1 минута игровая майна. Игровые секунды выводить вообще смысла не вижу, так как это 1/6 реальной секунды. Для чего они там нестись, как бешеные.???? Их и глаз не увидит

 

Даже если вывести игровое время на монитор, где показаны температура реактора и прочее и сбоку есть желание прилепить игровое время, данные чем раз в секунду (os.sleep(1) ) обновлять нет смысла. Чаще, чем один фрейм в секунду с инфой какой-то просто не нужен.Это лагулька уже, а не программа.

-- 1 фрейм/c с инфой для чего-то
while true do
    os.sleep(1)
    t = os.date('%H час. %M мин.')
    -- принт времени куда-то, чистка экранов, окон, вывод всякой инфы меняющейся в фоне на экран
end

 Ну а реальное время можно получить так, а не 1970 год, 1 апреля и игровое время Моджанга=),

 

И ЕГО ТОЖЕ НЕ СЛЕДУЕТ ГЕТИТЬ ЧАЩЕ, ЧЕМ РАЗ  В СЕКУНДУ! Это лишние телодвижения для ЭВМ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

!%R - секунд не дает

 

os.date('!%R') --> 18:25

 

а если время замедленно и 1 игровая минута==10 секунд, тогда вызов раз в секунду действительно, более чем достаточен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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