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

Лидеры


Популярный контент

Показан контент с высокой репутацией 28.07.2022 во всех областях

  1. 1 балл
    Единственно верным ориентиром для оценки приближения TLWY является значение os.clock(). Более-менее устойчиво работающий код может выглядеть, например, так: computer.pullSignal(0) c0 = os.clock()+4 while os.clock()<c0 do -- вычисления -- ... end На устойчивость влияют: Доступный резерв времени. В данном случае 1 секунда из 5 доступных секунд (по умолчанию). Тяжесть кода, производящего вычисления. Быстродействие сервера, то есть, его способность обработать вычислительную часть кода. Текущая загрузка сервера другими процессами, никак не связанными с выполняемым кодом. Приведённый код способен устойчиво работать в течение длительного времени, но полной гарантии, что его выполнение не закончится ошибкой, конечно же, нет. Точное прогнозирование TLWY возможно на слабонагруженных серверах. Но на реальных серверах внезапно появившаяся нагрузка может сломать любой прогноз. Выше я упоминал, что пачку из 10 вызовов computer.pullSignal(0) желательно распределять во времени. Такой подход кроме прочих его преимуществ позволяет снизить вероятность получить TLWY. Полагаю, этот момент не требует объяснений.
  2. 1 балл
    @num_pi, технически realTime хоста можно узнать через создание временного файла в /tmp/ и fs.lastModified(), хотя тут будет вполне достаточно computer.uptime или os.clock @rootmaster, столкнулся с TLWY, когда требовалось конвертировать жирные 5-мегабайтные картинки из PNG в свой формат. Проблему решил через вызов pullSignal раз в несколько итераций обработки пикселей и несколько секунд работы компьютера. Эти числа подбираются эмпирическим путём, т.к. все зависит от тяжести алгоритма и TPS сервера, хотя, думаю, более умные люди смогут вычислить идеальные значения. Но сам концепт прост как три копейки и работает безотказно: -- Снимаем нагрузку на индексацию таблиц в основном цикле local computerUptime, computerPullSignal = computer.uptime, computer.pullSignal local timeLimit, iterationsLimit, iteration, uptime = 2, 200, 0, computerUptime() local deadline = uptime + timeLimit while true do -- Деляем грязные делишки iteration = iteration + 1 -- Чекаем, нужно ли вообще что-то предпринимать для текущей итерации if iteration > iterationsLimit then iteration, newUptime = 0, computer.uptime() -- Чекаем, нужно ли yieldиться с учётом затраченного времени uptime = computerUptime() if uptime > deadline then computerPullSignal(0) deadline = uptime + timeLimit end end end
  3. 1 балл
    Причина, скорее всего, та же, по которой была добавлена ошибка TLWY: излишне агрессивные программы, создающие высокую нагрузку на сервер, должны почаще уступать ресурсы. Все же знают игроков в Майнкрафт: ради экономии планки памяти мы готовы постоянно дёргать сборщик мусора, чего обычно не происходит в более реальных применениях. А существующая механика OpenComputers позволяет запрашивать уборку мусора не чаще чем один раз в 125 ms. Это и так много — 8 раз в секунду можно прибраться. По факту получается несколько реже, т.к. часть этого времени использует сама программа. К слову, не всегда требуется запускать именно 10 раз. Бывает так, что к текущему моменту os.sleep, например, уже запускался раз 5, а внутри него было 8 вызовов computer.pullSignal. Знание этих фактов позволяет сократить ожидание перед уборкой мусора, если хочется выжать максимум. Также желательно вызывать серию computer.pullSignal не пачкой по 10 штук, а более размеренно чередовать их вызовы с вычислительной нагрузкой. Это позволит программам на других компьютерах поддерживать ритмичность их работы, что очень важно, например, для управления ядерными реакторами.
  4. 1 балл
    Доброго времени суток, посетители форума. Эта игра создана для мода OpenComputers версии 1.5 и выше. Она сделана в традициях игр '2D RPG для одного игрока', но вид не сверху, а сбоку (нет ширины, только длина и высота). И кстати, подобных и лучше игр в интернете очень много, а для OpenComputers таких пока что больше нет, поэтому сделал для опенкомпов. Ссылки на либы, благодаря которым я смог сделать игру: Thread lib by Zer0Galaxy DoubleBuffering lib by ECS Image lib by ECS ColorLib by ECS Скачать игру: Версия 1.2.7 обн. 5 Ссылка: https://pastebin.com/8ZjNP1y3 Команда для OC: pastebin get 8ZjNP1y3 w16.lua Процесс загрузки занимает 1-2 минуты. 04.05.18: обновление 4. 25.06.18: обновление 5. Требуется интернет-карта в вашем компьютере в minecraft. Краткое описание: Вы находитесь в деревне Зеленый Камень (Greenstone Village), слева находятся квестовый НИП и торговцы/ремесленники, справа стоит стражник. Чтобы поговорить с НИПом, подойдите к нему и нажмите 'E' Также кнопка 'E' используется чтобы собрать ресурс или сундук или зайти в портал. В правом верхнем углу есть две палочки, тык по ним левой кнопкой мышки открывают меню паузы. 1)Кнопка 'Продолжить' закрывает меню паузы. 2)Кнопка 'Инвентарь' открывает ваш рюкзак и показывает все ваши вещи. Тык ПКМ по иконкам некоторых предметов позволяет использовать/надеть/снять вещь/предмет или открыть шкатулку. Тык левой кнопкой показывает описание предмета. 3)Если зайти в раздел 'Умения персонажа', можно увидеть информацию о ваших умениях и изучать их за определенную цену. 4)Характеристика. Информация о вашем персонаже, а также улучшение характеристик героя путем распределения очков, данных за уровень. За 1 уровень персонаж получает 1 балл для распределения. 5)Текущие задания. Информация о ваших квестах, например, какая награда вас ждет за выполнение. 6)Сохранение игры. 7)Загрузка игры. Загружает уже сохраненную ранее игру. 8)Выход из игры. Не предлагает сохраниться, просто останавливает все циклы. Всех, у кого есть полоска здоровья, можно атаковать, а они, кстати тоже могут побить вас. Атаковать монстров можно кнопками 1 2 3 4 5 (пятое нужно активировать в разделе умения персонажа) Из крипов и боссов, подчиняясь великому рандому, вываливаются различные предметы. Если вы получили какой-то ценный предмет, а инвентарь переполнен, можно освободить ячейку в инвентаре (продать, выбросить, использовать), затем снимите игру с паузы, подождите пару секунд. Снова загляните в инвентарь: там должен был появиться тот самый предмет, который не поместился. У НИПов можно покупать/продавать/создавать предметы. У кузнеца покупается и создается оружие, у портного - броня и т.д. *НИП - неигровой персонаж. Версия 28. Что добавлено: Подземелье для 7+ ур. Долина для 11+ ур. Новые локации, квесты, нипы, монстры, боссы, предметы. Мобы и боссы теперь используют свои умения (отравление, сжигание маны и т.п.). Некоторые квесты могут быть взяты повторно. Желтые и зеленые штуковины над НИПами, отображающие состояние квестов у них. Появились накидки и кольца. Можно изучать и увеличивать умения. Добавлен амулет, восстанавливающий здоровье автоматически. Добавлен обрывок книги для изучения умений Что изменилось: Поменял много формул. Некоторые "прямые" формулы изменены на "кривые". Улучшение вещей теперь подчиняется логике. Может быть прикручено одно и тоже улучшение на один предмет несколько раз. Можно продавать НИПам свои вещи из инвентаря. Что исправлено: Полоска хп над мобом/боссом не хотела отображать цифры в некоторых случаях. Эффект на моба при смерти изредка давал ошибку. Ошибочные id предметов давали ошибку. Квесты на поиск предметов криво работали. Исправлены ошибки с крафтом предметов. Куча багов. Все 90 иконок предметов в инвентаре: 1-20 21-40 41-60 61-80 81-90 (это устаревшие изображения)
  5. 1 балл
    Добрый день, игроки. Сейчас я хотел бы вам представить игру с не сложными правилами, "Сапёр", реализованную на компах из ОС. О игре: Мы видим перед собой прямоугольное поле Нам необходимо найти все мины - по сути раскопать всё вокруг них Мы можем ставить метки ПКМ - который блокируют ЛКМ по ним, но так же можем их снимать всё тем же ПКМ Если мы видим цифру, она обозначает сколько мин находятся рядом с этой клеткой (от 0 до 😎 Проигрышем считается подрыв на мине Выигрыш засчитывается, если мы всё обкопали вокруг мин Метки лишь вспомогательный инструмент и никак на результат выигрыша не влияют Плюсы: Лёгкая настройка количества мин, размеров поля и подобное Наработки на будущее. Например отступ от краёв экрана, который я никогда не использую, но зачем то всегда пишу в свои проги. Минусы: Заметите баги - сообщайте. Это не полная версия, ещё буду улучшать. Ссылка на код: http://pastebin.com/SXVe5pX9 Установка: pastebin get -f SXVe5pX9 saper.lua Скрины: Видео обзор: Планы на будущее: Игра будет дополняться, пока не примет приличный вид полноценной первой версии.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...