Что имеется: Провайдер - МГТС, в квартиру заведена оптика, подключена к их роутеру - InnboxG93.
Проблема: В различных игрушках(Фортнайт, дота 2, Дедлок, Лига Легенд, Танки от Лесты) с самого подключения провайдера(2 месяца) периодически возникают сильные лаги на несколько секунд, от одной до десятка, вплоть до полного таймаута от сервера и вылета.
Проведенная диагностика на нескольких устройствах разным способом подключения, а именно: 1) ноут с чистой виндой со встроенным wi-fi приемником 2) десктоп с TP-Link archer tx20u plus с включенным впн 3) десктоп с TP-Link archer tx20u plus без впна 4) десктоп, подключенным по витой паре 5) десктоп, подключенный к роутеру в режиме точки доступа, который подключен витой парой к роутеру мгтс.
Результаты: Во всех случаях ping и psping до мгтс роутера показывал задержку в 1-5мс с периодическими поднятиями до 500-600мс, иногда лесенкой 1-5-30-70-150-300-500, а иногда сразу 1-5-600-18-1. За один час таких пиков могло быть 10-20, иногда терялись пакеты. Во время этого тестирования я так же играл и записывал точное время лагов в игре, они всегда совпадали с этими скачками. Такой же ping и psping до моего роутера в режиме точки доступа не превышал 30мс, и это был один скачок за час тестирования.
Погуглил, поизучал тему и ничего не смог найти. В поддержке мгтс сказали, что помочь не могут, могут только предложить установить gpon-розетку и поставить bridge, чтобы не было посредника, а я уже воткну туда свой роутер. Обоснованно это было тем, что скорее всего dns-сервер тормозит пакеты. Но как это возможно, если я пингую роутер, считай, в локальной сети, и причем тут вообще днс-сервак, я так и не понял. У меня есть сомнение, что это поможет, а скорее даже вызовет новые проблемы.
Возможно кто-то сталкивался и знает, что с этим можно сделать?
UPD: название роутера(оптического терминала) - InnboxG93
Привет, Лига! Появилось свободное время и захотелось мне воплотить давнюю мечту - перенести один из моих придуманных сюжетов в игру. История мрачная, жуткая, отлично подходящая под жанр триллер, а может даже немного и хоррор. Активных действий в ней не так много, зато диалогов и размышлений - тьма. Поэтому было решено взять Ren'Py, вооружиться ИИшками, чтобы были заглушки, на которых можно все тестировать, и начать изучать доселе невиданный мир разработки видеоигр. Нужно оговориться, что бэкграунд у меня довольно посредственный, я бэк-разработчик на питухоне, игрушки раньше не делал, но все бывает в первый раз.
В какой-то момент я задумался. что в рамках новеллы мне тесно, и мне вспомнилась одна из моих любимых игр - The 7th Guest. Квест с видом от первого лица, в котором можно было передвигаться по объемным экранам-сценам, кликать на различные предметы, декорации и головоломки. Затем мне вспомнилась другая не менее значимая ля меня игра - Zero Escape. Визуальная новелла с квестовыми сегментами аля "выберись из комнаты". "Вот оно!" - подумалось мне, буду делать визуальную новеллу с квест сегментами. Геймплей интереснее, история и персонажи все еще во главе всего. Но вот проблема, Ren'Py не поддерживает такого из коробки. Надо было что-то придумать.
И я придумал! Вместо того, чтобы насиловать не предназначенный для этого движок, я начал писать фреймворк на его основе. Ren'Py сам по себе все еще отвечает за визуальную новеллу, а фреймворк отвечает за квестовые сегменты. Разделяй и властвуй! Смысл всего затеянного был в удобстве и универсальности написания квестовых комнат для любого разработчика, именно из этого я исходил, когда начинал его писать. Но давайте от описаний к другим описаниям :D
Главные плюсы: 1) Распределение обязанностей. Для построения квестов существуют такие сущности: квест - это весь сегмент от точки входа до точки выхода(коих может быть много). Комната - это часть квеста, которая олицетворяет собой одно замкнутое(хотя это необязательно) помещение. Сцена - это часть комнаты. Один из экранов, которые могут быть показаны в комнате. Это могут быть и отдельные виды камер, например, на каждую из стен в квадратной комнате, приближение чего-либо или сцена отдельной головоломки. К сцене так же крепятся другие сущности: хотспот - зона взаимодействия мира и мыши, а так же объект - чаще всего пнг-картинка, которая представляет из себя какую-то зону интереса, может быть отображена или скрыта. А к этому всему(хотспотам, объектам, сценам и комнатам) могут быть применены условия и события. Еще два ключевых элемента управления квестом. Пока не устали? Дальше интереснее. 2) Универсальность. Благодаря внутренней структуре разработчики могут писать свои расширения(extension). По умолчанию есть несколько основных условий и несколько основных событий. Например, перейти на другую сцену, добавить предмет в инвентарь, сделать хотспот кликабельным - это примеры базовых событий. А значение флага(еще одного ключевого элемента), выбран ли предмет в руке - это примеры базовых условий. И события, и условия, и даже какие-то новые ключевые элементы разработчик может добавлять с помощью расширений. Достаточно лишь описать его по шаблону в json файле и прописать логику на примитивном пайтоне. Таким образом можно добавить различные поведения для игры: таймеры, счетчики, систему репутации, здоровье, рассудок и прочее-прочее, на что хватит фантазии. 3) Визуальный редактор. Это отдельная гордость. Не нужно больше по несколько часов настраивать квесты с помощью кода, достаточно лишь открыть редактор, сделать все необходимое в нем, сохранить и продолжить писать код новеллы на сценарном языке Ren'Py.
И именно на редакторе хотелось бы остановиться поподробнее и наконец показать, что это, и с чем это едят.
Главное окно редактора
Я ведь говорил про универсальность? Редактор сам по себе является отдельным приложением, написанном на пайтоне с использованием PySide6. Изначально редактор был прямо внутри игры, назывался Developer Mode, но Ren'Py так плохо рендерил большое количество изменяемых объектов, что было принято решение сделать редактор выносным. Открываете редактор - выбираете любой проект, хоть уже существующий, хоть пустой, работаем со всем, что есть. А затем нужно всего лишь уcтановить фреймворк. Как? Очень просто, это уже встроенно в редактор.
При открытии проекта нас встречает экран первоначальной настройки
Настраиваем пути так, как нужно, выбираем язык, в данный момент или русский, или английский, но любой разработчик может сделать перевод, универсальность же, выбираем разрешение по умолчанию, и айда устанавливать сам фреймворк.
Окно установки фреймворка
В редактор уже зашит фреймворк, достаточно кликнуть на установить, все необходимые файлы скопируются по необходимым путям и можем наслаждаться разработкой. Далее буду показывать на демонстрационном варианте, на котором все это и разрабатывалось, и тестировалось. Особо чувствительные к ИИ-изображениям, извиняюсь заранее.
Главный экран приложения с подгруженным демо-стендом
И вот мы приступаем к работе. Красные выделены хотспоты, синим - выбранный в данный момент объект. Все хотспоты подписаны, не потеряемся. Разберем кратко интерфейс. К сожалению, менюшек слишком много, а я не UI\UX-дизайнер, чтобы сделать это максимально красиво, поэтому как видим, есть ползунки, менюшки просто листаются вниз-вверх.
Начнем с левого блока: 1) Список квестов 2) Список комнат 3) Список сцен 4)Список флагов(неких состояний, на которых завязаны условия и события)
Правый блок: 5) Инспектор, показывающий нам свойства выбранного хотспота или объекта 6) Список объектов, находящихся на выбранной сцене с возможностью добавлять\редактировать\дублировать и ставить один объект выше другого(какой из них на каком плане находится) 7) Список хотспотов с возможностью переименования, удаления или добавления вершин. Да, забыл упомянуть, хотспот - это некий полигон, состоящий из соединенных вершин.
Продолжение правого блока
8) Настройка условий активности(кликабельности) и видимости хотспота и только видимости у объекта. Сами объекты не являются кликабельными. 9) Настройка взаимодействия хотспота - главная магия алгоритмов.
Переключим сцену на table_closeup, то есть "Стол крупным планом". В самой игре это работает по нажатию на огромный хотспот, расположенный по всему столу.
А вот и ключик
Здесь мы видим два хотспота: back - вернуться на сцену main(Общий вид), и key_hotspot, который отвечает за подбор ключа в инвентарь. Сам ключ - это пнг-изображение, а в рамках фреймворка - объект. Объект сам по себе не кликабельным, с ним нельзя взаимодействовать, это просто изображение, которое можно вертеть по своей оси и которому можно изменить размер. Поэтому рисуем вокруг него хотспот и задаем правила в поле, которое чуть раньше я описывал в правом блоке под номером 9
А вот и простой алгоритм
Настраивается все довольно просто, все флаги, события, условия - это выпадающие списки, не нужно ничего особо запоминать, все сделано для удобства. В данном случае алгоритм очень простой и понятный: Условие: Если флаг key_taken = false, то происходят 4 действия в заданном порядке: 1) Выводится сообщение: "Вы взяли ключ", 2) Ключ добавляется в инвентарь как предмет, 3) Флагу key_taken присваивается значение True 4) Совершается переход на сцену main
В игре ключика бы уже не было на столе
Флаг visible_when, существующий у всех объектов, становится равен false, то есть ключ перестает быть видимым, если флаг key_taken перестанет быть false. Все просто и лаконично.
Рассказывать можно было бы еще очень много, но оставлю это на следующие части, если вдруг эта окажется полезной. Фреймворк вместе с редактором будут распространяться на безвозмездной основе на itchi.io как только я буду уверен в их полной готовности увидеть свет.
Спасибо за ваше внимание, собратья игроделы!
И напоследок демонстрация, как этот квест выглядит внутри самой игры.
Мне 29 лет, я большой и упитанный все еще молодой человек, который недавно вышел из длительных отношений и наконец-то смог понять, чего именно ему хочется от отношений и от близкого человека. А хочется вот чего: 1) Разделять интересы и хобби(видеоигры, кулинария, фильмы\сериалы\аниме). Это самое основное, что я понял за все время отношений - хотя бы какие-то интересы должны совпадать и вам должно быть интересно вместе. Приготовить что-нибудь вкусное, а затем засесть за World of Warcraft, Split Fiction или какой-нибудь сериал за ТВ - это отличный вечер. 2) Уметь общаться напрямую и без намеков(с ними тоже можно, но без перебора) 3) Грамотно излагать мысли и уметь поддержать беседу о чем-угодно. Разговор о World of Warcraft может плавно перетечь в обсуждение экономических проблем Ночного Дозора, а затем и вообще перерасти в постель. Такие нынче времена) 4) Иметь представление о life-work balance. Да, работать по 12 часов в день - это прикольно, пока не начнешь замечать, что крыша понемногу съезжает, а это не есть хорошо. 5) Пуритане и прочие блюстители морали отвернитесь. Быть открытой и раскрепощенной к разнообразным экспериментам в сексе. Да, мне все еще интересны различные практики в различных областях. Без пограничных извращений, конечно, но хотя бы про БДСМ в разных ролях не забываем, на лицо присаживаемся, на нем вполне удобно.
Ну и теперь, когда отсеялись почти все девушки и несколько мужчин(мы все же очень любопытные) могу рассказать о себе: Здесь и в дальнейшем можно звать меня Бэмби, такое прозвище закрепилось за мной в разных тематических чатах и группах, а мне и понравилось. Мне 29 лет, я довольно большой - 180см рост и 130кг вес, постепенно пытаюсь похудеть, есть тату, когда-то давно был пирсинг, ношу очки. Курю, пью, ругаюсь матом. Если ты тоже - хорошо. Если нет, то что-то из этого я могу и поменять, т.к. это не основа моей жизни, разве что кроме мата, очень уж он звучный. Работаю программистом со всеми вытекающими: душнила, любитель техники, перфекцехуист и где-то даже немного педант, но у этого есть и свои плюсы - аккуратность, чистоплотность, умение выстраивать свою жизнь так, как хочется и нужно. Я довольно открытый к разному человек, в том числе и к отношениям, последние 6 лет были открытые отношения, и в целом это неплохой опыт. Хотелось бы вернуться к моногамии, но чем черт не шутит, рассмотрим любые ваши предложения) Считаю важным заметить: у меня прекрасные отношения с родителями и старшей сестрой, хорошие отношения с несколькими бывшими(мы все же расставались друзьями без криков и ругани) и в целом у меня нет бед с головой и сопутствующих войн с родственниками и окружающими, чего ожидаю и от девушки.
А сейчас, когда осталась только парочка читающих - мои предпочтения: 1) пол - женский 2) рост - не важен 3) вес - желательно не больше моего, но фетиш на полненьких девушек у меня есть, да 4) возраст - от 22 до 32, хотя опять же, чем черт не шутит 5) тату, пирсинг и прочее - положительно 6) голова не забита бредом вроде радикального феминизма, астрологии, таро и прочего(да, я за феминизм, но против радикального отношения к чему-угодно, и да, у меня есть несколько наборов карт таро, но я в них не верю, они просто прикольные)
Для связи можно использовать тг: @lucifervalenstein или тут в комментариях, если тг не удобен.
Всех обнял-приподнял
UPD:
Как выяснилось из комментариев и сообщений в тг, не все понимают, что значат мои интересы. Это буквально основа моей жизни и ищу я человека близкого к этому. Проводить все свободное время за игрушками, ездить на игровые фесты, засиживаться в настолки допоздна, обсуждать самые мелкие детали в играх\сериалах или наоборот смотреть громкие трейлеры на выставках вроде Summer's game fest - вот этого я ищу в партнере, чтобы нам никогда не было скучно.
Tornado, сука, russian! Энергетический напиток, содержащий ПАВ, оказывается, халяль. Здрасьте, приехали. Когда свинину маркировать начнете? Деньги же не пахнут.
Периодически в тиктоке попадаются видео про различные математические парадоксы. Выдается какой-нибудь парадокс с кучей различных иллюстрацией, но чаще всего без доказательств. Мне, как математику, такой формат интересен, можно самому поразмышлять и выяснить, что к чему. И вот мой любимый парадокс.
Парадокс Монти Холла: вы участвуете в некотором шоу, условия следующие: есть три двери, за одной из них - автомобиль, за двумя другими - ничего(в изначальной вариации за дверьми были козы). Вы можете выбрать любую дверь, после чего ведущий, знающий, где находится автомобиль, открывает одну из двух дверей, за которой ничего нет и задает вопрос: "Будете ли вы менять дверь?" Большинство людей подсознательно дверь не меняют, считая, что раз двери две, то и шанс 50\50, но именно в этом и заключается парадокс. Дверь менять нужно.
И как я уже говорил, мне нравится именно такой формат. Рассказать о парадоксе, чтобы каждый человек сам мог подумать над его решением(если оно есть), причем желательно без участия гугла.
Есть, конечно и дельные советы, но есть и полный бред.
5. В соусе пасту и доготавливают. И да, итальянцы так и делают, вспомнить даже их стандартные карбонару, альфредро.
9. Тефлон используют крайне редко, сейчас есть кучи других антипригарных поверхностей. Более того, некоторые созданы для того, что использовать с ними металлические приборы.
12. Бред собачий, просто нужна сковорода с нормальным покрытием, толстыми стенками и дном. Чугун, нержавейка и прочее - это дешевый заменитель качественных современных сковород.
14. Да, да, и еще раз да. Тупые ножи непредсказуемы и в любой момент могут съехать с продукта в любом направлении. Острый нож режет по заданной траектории, поэтому он безопаснее.
Ну и лично от меня:
1. Слишком строгое следование рецепту и слишком большое отхождение от рецепта, если только учишься готовить. Строгое следование рецепту не научит готовить самостоятельно, слишком большое отхождение превратит еду в мусор(если, конечно, готовит не гений).
2. Место повара должно быть чистым. Никаких ошметок еды, подтеков жидкостей и прочего. Загрязнили рабочее место - уберите его сразу, а не в конце готовки.
3. Качество ингредиентов влияет на качество конечного блюда. Если взяли пластиковые помидоры за 150р и такие же пластиковые огурцы за 100р, то не удивляйтесь, что вам гаспачо - это просто вода с легким привкусом овощей.
4. Наваристые костные бульоны варятся долго. Для курицы это 1.5-3 часа, для свинины или говядины - 4-5 часов, для рыбы(головы, хребты, хвосты) - 1-2 часа. Можно, конечно же, варить и меньше, но насыщенности будет так же меньше. Бульон же составляет львиную долю вкуса в супе или соусе. P.S. Это если мы не говорим о условных раменах, в которых бульоны могут вариться и по 10-12 часов.
5. Жарить или запекать мясо по времени, а не по температуре. Куски чаще всего разные, внутренняя температура тоже. Использование термощупа невероятно сильно облегчает готовку цельных кусков мяса.
6. Молотые приправы из пакетика в магазине и свежемолотые дома - две разные приправы с разным результатом блюда. Когда-то нужны свежие, когда-то пакетированные.