sfw
nsfw

Результаты поиска по запросу "как запустить свой сервер"

Хм, а ведь не стоит забывать и про браузерные игры, ведь среди них есть и хорошие примеры, например такая игра как BrowserQuest от Мазилы, очень хорошая mmo в 8-bit стиле, помогает скоротать время...
На github у них лежат исходники, также и исходник сервера. Поэтому я немного поковырялся и запустил свой сервер BrowserQuest. Милости прошу ;)
-----
Адрес игры: http://thedollars.ru/game/client/
-----
Вот так выглядит система безопасности Киевстар
 Неспособна ddos атака уничтожить ПО на серверах.
IТ-инфраструктура «Киевстара» частично разрушена, – гендиректор Комаров

Предварительно целью атаки было именно разрушение инфраструктуры. Спецы работают над решением, но могут быстро сеть не восстановить.

Это первая такая сильная атака хакеров за всю историю мобильной связи Украины.

В «Киевстаре» сейчас работает следственно-оперативная группа.
,Kyivstar,Київстар,безопасность,Украина,страны

StudioFOW была забанена на Patreon

,Patreon,интернет,цензура,пиздец товарищи,NSFW,песочница

Из-за грядущего «анти-порно» закона США сервис был вынужден забанить популярный канал StudioFOW, авторы которого занимались порно-пародиями на различные видеоигры, включая Tomb Raider, Bioshock, NieR: Automata и многие другие. Студия при этом продолжит свое существование и запустит собственный ресурс, через который поклонники ее творчества смогут заносить деньги.

Отличный комментарий!

Погодите. На Патреоне банят порно? На Патреоне?

760 тысяч за 3 дня

Свен написал в своём твиттере что ожидал онлайн в районе 100К. Теперь он боится подходить к своему IT отделу

Отличный комментарий!

Да не, совсем не популярная игра, это все хайп с медведем
А если серьезно то хочется верить что подобный успех после успеха элдена заставит хоть немного больше студий делать игры вместо микротранзакций с элементами геймплея
не чел, всякий высер типа диабло иммортал, стоит в миллиард раз меньше времени и затрат на производство, ненавидим всеми и вся еще до запуска, но при этом, все еще принес сверхприбыль

В память о 13 героях, Элизиум опускает свой занавес.

Пак знаний, учение свет. #3 Wireguard, поднимаем свой VPN.

Сап джой, будет много текста и картинок, но тебе это понравиться (надеюсь).
Давно хотел написать эту инструкцию, но всё времени не было. Решил заставитьсебя.
Немного предыстории, пройдёмся по цифрам и приступим к практике.

Предистория:

  Когда я выбирал какой протокол выбрать для поднятия забугорногоVPNсервиса,я ориентировался на то, что-бы туннель обладал высокой пропускной способностьюи не бы чувствителен к небольшой потери сигнала\пакетов (привет мобильноеинтернет соединение).
Тут была инструкция по настройке OpenVPN. Ни в коем случае не хочу приуменьшить вклад анона,так как «я за» любое просвещение людей в компьютерной грамотности. Вот только авторумолчал что OpenVPN  достаточно медлителен,и тот же IPSecAES почтив половину производительнее.
Так же любитель пожрать ресурсы хоста.
Throughput
WireGuard IPsoc (ChaPoty)
IPsec (AES-GCM)
OpanVPN
128
256
384
512
640
768
896	1.024
megabits per second (higher is better),реактор образовательный,самообразование,it-безопастность,мануал,VPN,сделай сам,системный администратор,it,длинный пост
Да и скажу честно, в принципе это сложно было назватьинструкцией.
Так же автор забыл о защите самого хоста, а это не мало важно.
Перейдём к практике:
Допустим вы уже приобрели себе VPS (вкомментах я подкину парочку, которые я сам юзаю, если хотите) И самостоятельно установили ОС. Я обычно использую либо Debian либо Ubuntu, вданном случае второе.
Давайте обновим пакеты, и поставим нужный софт:
Unpacking Iibqrni-glib5:arnd64 (1.30.4-l~ubuntu20.04.1) ...
Selecting previously unselected package libqrni-proxy.
Preparing to unpack .../21-libqrni-proxy_l.30.4-l~ubuntu20.04.l_amd64.deb ... Unpacking libqrni-proxy (1.30.4-l~ubuntu20.04.1) ...
Preparing to unpack .. ./22-fwupd_1.7.5-3~20.04
sudo apt update && sudo apt upgrade -y && sudoaptautoremove -y && sudo apt install git screen fail2ban mc
Конструкция «sudo apt install git screen fail2ban mc» отвечает за установкунужного нам ПО:
1) git– это апекуха для импортирования проектов из git-репозиториев. Просто навсякий случай.
2) screen– это для того, что бы в случае обрыва sshсоединениявы могли продолжить работать с того же места, где произошёл обрыв.
3) fail2ban–это для защиты второй лини нашего vpnсервиса.
4) MC – (MidnightCommander)это удобный файловый менеджер в «консольной среде», что бы не возится скомандами навигации.
Обновляем и ставим всё это дело, после этого можноперезагрузить хост, и подключиться по SSH.
После подключения набираем команду screen, чтобы в случае обрыва связи, мы смогли вернуться обратнок работе без потерь. 

Далее скачиваем деплой-скрипт с github.
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
Делаем его исполняемым (даём права на выполнение для всех пользователей)
sudo chmod+x wireguard-install.sh
Запускаеми сразу после старта нас любезно спросят важные для сервера параметры. Давай ихразберём.
Первая строка выводит нам твой внешний (белый) ip-шник к которому мы будемцепляться. Его не меняем, как бы не хотелось. Далее.
Public interface– имя сетевой платы (если по простому) через который будетработать сервер.
Wireguard interface– имя виртуальной сетевой платы. (имя вашего соединения, егонужно запомнить)
Следующие две стоки, внутренние ip-адреса.Здесь вы можете указать удобный для вас диапазон адресов, которое будутприсваиваться вашим устройствам при подключении к серверу.
Далее указываем внешний порт соединения к вашему серверу.
Стандартный порт: 57141.Я бы рекомендовал его сменить и\или запомнить, он пригодится очень скоро.
Последнее два вопроса, это dns сервера. Вы можете указать свои (если знаете какие) у меняже это адреса adguard. Что-бы блокировать рекламу.
Нажимаем Enterи ждём завершенияустановки\настройки. Скрипт начнёт скачивать нужные файлы для сервера.
По завершению тебя попросят ввести имя. Это имя твоегопервого соединения. Далее тебе предложат набрать ip-адрес.Лучше оставь его как есть. И в принципе всё. Тебе сгенерируется qr-коддля настройки соединения на твоём мобильном устройстве и путь к файлуконфигурации для других платформ. Сделай скрин, он нам потом пригодится. Что бысоздать ещё одного клиента просто запусти скрипт ещё раз и пройди все шагиснова заполняя данные. Под каждое устройство лучше иметь отдельную конфигурацию.

Длянастройки клиента на Winows\Mac\Linux тебепонадобится файл конфигурации. Он будет находится в директории указанной нижу qr-кода.Вот тут нам и понадобится MC. Запускаем его просто набрав “MC” (илиsudo mc, если хотите запустить с правами суперпользователя, нотогда придётся прогуляться по папкам)
В появившемся окне находим файл .conf именемкоторый мы давали конфигурации, нажимаем F4. Всписке текстовых редакторов лучше выбрать nano. Простоставим цифру, на против которой имя редактора и клацаем enter. Переднами конфигурационные данные, которые мы уже видели при создании пользователя.Скачиваем клиент для вашей ОС (в моём случае это Windows)
Клацаем на треугольник рядом с кнопкой добавить туннель àДобавитьпустой туннель. В открывшаяся окно копируем из ssh сессииданные из файла, сохраняем. Ctrl+x выйтииз редактора и F10 выйти из MC. И впринципе с создание туннеля всё. Весь ваш трафик теперь перенаправляется на вашVPN. На этом можно было бы и закончить, но как я говорил,нужно обезопасить ваш сервер. Но сначала добавим возможность автоматическогозапуска туннеля, так как при перезагрузке сервер не запустится. 
sudo systemctl enable wg-quick@имя_вашего соединения (wg0)
Готово.

Безопасность:
Небуду описывать сколько в интернете ботов и всякого другого дерьма, просто скажу,что их много и надо уметь постоять за себя и свою инфраструктуру. Этом мы ибудем заниматься.
 Для начала сменим порт ssh-соединения.Открываем файл конфигурации ssh-сервера. (да, без оболочки. Так быстрее.) Запускаемобязательно с правами суперпользователя (sudo)
sudo nano /etc/ssh/sshd_config
Ищем в файле sshd_config строку «port 22» Она обычно сверху. Убираем #, и меняем цифру на вашпорт, допустим 4422. Не забудьте его! Выходим предварительно сохранивизменения.
Перезапускаем службу ssh, что бы она получила новые параметры из файла.
sudo systemctl restart ssh.service

 Перезапускаем ssh-сессию,не забывая сменить порт в подключении и при подключении снова набираем screen. Далеенастраиваем firewall. По умолчанию он выключен в ubuntu. Что бы проверить этонабираем sudo ufo status.И ответом нам будет  Status: inactive. Прежде чем включать firewall настроим нужные правила, иначе удалённый хост станетнедоступен для нас по ssh. Вот список команд, просто вставляйте их в консоль:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 4422 <--
 наш ssh
sudo ufw allow 57141 <-- 
наш Wireguard туннель

В двух словах что мы сделали: разрешили весь исходящий трафик, запретиливесь входящий кроме нашего ssh и нашего Wireguard сервера.
Включаем наш firewall командой:
sudo ufw enable
Вы получите предупреждение:
Command may disruptexisting ssh connections.Proceed with operation(y|n)?
Это означает, что запуск этого сервиса может разорвать текущее ssh соединение.
Но, так как мы его уже добавили ssh вправила, этого не произойдет. Поэтому просто нажмите (y).
Можно перезагрузится :)

 
Так же мы качали такую замечательную вещь как Fail2Ban, еёможно не настраивать так как она прекрасно работает из коробки. Я оставлю всессылки на все полезные ресурсы в конце, если захотите покопаться.

Заключение:
Отсылаяськ началу этой статьи я бы хотел сказать, что OpenVPN неплохой протокол, как это могло показаться. У Wireguard есть 2существенных минуса:

1) При подключении к хосту, клиенты могут видеть друг-друга. То есть вы можетепропинговать ваше соседнее устройство. Это можно исправить настройками firewall’aи не так критично, но из коробки OpenVPNсразуотрезает подобное.
2) У Wireguard  легко детектится его трафик, а именно момент обмена хендшейков(handshake) то есть в сам туннель попасть сложно, но вот определитьи прикрыть его можно легко. Нужно делать обфускацию трафика что-бы было сложнееего заметить. Сам я ещё не опробовал, но хочу заюзать socks5 дляпередачи первичной передачи хендшейка. У OpenVPNестьже готовая приблуда так же «из коробки»
Так же стоит упомянуть что я не настроил авторизацию на сервере через ключ-файл потому что мне лень, но я осталю на это линк ниже.
В принципе на этом всё, спасибо что прочитали, все ссылки на полезные ресурсы прилагаю.
Пост написан исключительно для любимого Джояи для тебя анон лично.
Занимайтесь самообразованием, остаюсь с вами на связи в комментах, если что то забыл - дополню там, пока.
,реактор образовательный,самообразование,it-безопастность,мануал,VPN,сделай сам,системный администратор,it,длинный пост
Понравилось?
Да, хочу ещё! :)
334(53,18%)
Нет, пшёл вон :(
37(5,89%)
Я картошка
257(40,92%)

Ничего необычного, просто Cyberpunk 2077 запущенный на машине

Пидоры, разделите со мной мою радость, зацените что собрал на своем ведре, и что для этого потребовалось:

Тачка, в котором я поменял штатную голову на Android 12.5 inch IPS (8 core, 4gb ram) с Али.
Сама игра воспроизводится посредством Moonlight (есть на Github), управляется через Dualshock 4.
4G сим-карта с дешевым безлимитным интернетом ($3 в месяц) от яичного оператора. В нерезиновой вроде норм работает если не вплотную к густым застройкам из человейников. Скорость обычно в диапазоне 40-150 Mbps с джиттером ~0-3ms и пингом до моего игрового сервака в 20-25 ms.
Игра транслируется домашним игровым сервером со статическим IP через Nvidia Gamestream и Moonlight.
Работает это дело на презете UltraRT & Psycho при 60FPS и разрешении 1920x720 с DLSS. Нативное разрешение дисплея в тачке.

В комментах еще несколько скринов.

Как потерять больше 500 тысяч долларов из-за обиженного сотрудника или Индусы Наносят Ответный Удар

Экс-сотрудник американской консалтинговой компании взломал сеть компании-клиента, поспособствовавшей его увольнению, и удалил 1200 учеток в Microsoft 365 из 1500. Это полностью нарушило работу компании, и восстановить все удалось лишь спустя три недели и почти $600 тыс., потраченных на услуги специалистов. Теперь сотрудника ждут два года тюрьмы и штраф в размере этой же суммы.
Месть удалась, но не совсем
Бывший сотрудник ИТ-консалтинговой компании Дипаншу Кхер (Deepanshu Kher) решил отомстить за свое увольнение удалением аккаунтов сотрудников одной из компании-клиента, расположенной в Карлсбаде (Калифорния, США) в сервисе Microsoft 365. На нем, согласно обвинительному заключению окружным судом Калифорнии, были завязаны все основные бизнес-процессы, и диверсия Кхера остановила работу компании более чем на два дня. Названия обеих компаний в документах суда не раскрываются.Кхер удалил 1200 аккаунтов из 1500 имеющихся. Пользователи потеряли доступ к документам, календарям встреч, корпоративным каталогам, видео- и аудиоконференциям, а также к контактам – они не могли связаться с клиентами, а те в свою очередь не имели возможности выяснить, что происходит, и почему сотрудники этой компании вдруг резко перестали выходить на связь.Согласно судебным документам, Дипаншу Кхер, гражданин Индии, работал на ИТ-консалтинговую компанию в период с 2017 г. по май 2018 г. В 2017 г. компания из Карлсбада обратилась за консалтинговыми услугами в эту фирму – ей нужна была помощь в переводе сотрудников на Microsoft 365. Выполнить эту работу руководство поручило Кхеру, но Carlsbad Company осталась недовольна им, и в январе 2018 г. Кхера отстранили от проекта. 4 мая 2018 г. Кхер был уволен, а в июне 2018 г. он вернулся в Дели (Индия), затаив обиду на компанию из Карлсбада.
««««/-
ж««««,индусы,взлом,информационная безопасность,Америка,cisco,Microsoft,Майкрософт,многобукв
Спустя около трех месяцев после своего увольнения, в начале августа 2018 г., Кхер, находясь в Индии, взломал сервер калифорнийской компании и удалил учетные записи сотрудников. Как именно ему удалось проникнуть на сервер, следствие не раскрывает.

Последствия взлома
Атакованная Кхером компания частично восстановила работу лишь спустя двое суток после взлома. Тем не менее, на тот момент удалось вернуть не все данные, и сотрудники по-прежнему испытывали немало трудностей с получением доступа к необходимым им корпоративным материалам. На полное восстановление потребовалось три месяца и почти $600 тыс., и под конец вице-президент компании по вопросам ИТ заявил: «За свои 30 с лишним лет работы в сфере ИТ я никогда не попадал в более трудную рабочую ситуацию».
На арест Дипаншу Кхера был выдан ордер, и его смогли задержать 11 января 2021 г., когда он вылетал из Индии в США. Расследование вело ФБР, и Кхер до последнего не знал, что американским властям удалось получить разрешение на его арест.
Вынося приговор, судья окружного суда США Мэрилин Хафф (Marilyn Huff) отметила, что Кхер совершил серьезное и изощренное нападение на компанию, нападение, которое было спланировано и явно было местью. Хафф приговорила его к двум годам тюремного заключения, трем годам под надзором полиции (после освобождения) и штрафу в размере около $567,1 тыс. (43,05 млн руб. по курсу ЦБ на 24 марта 2021 г.) – в эту сумму пострадавшей компании обошлись мероприятия по устранению последствий хакерской атаки Кхера.
ИТ-диверсии индусов в тренде
Месть при помощи информационных технологий за несправедливое (по мнению уволенных) лишение работы в XXI веке стала весьма распространенным явлением. Одним из ярких примеров является ситуация, в которой оказалась компания Cisco.
В конце сентября 2018 г. экс-сотрудник Cisco Судхиш Касаба Рамеш (Sudhish Kasaba Ramesh) с индийскими корнями в отместку за увольнение взломал облако компании в Amazon WebServices и запустил туда некий код, который хранился в его аккаунте Google Cloud Project. Это привело к удалению 456 виртуальных машин, на которых функционировали приложения Cisco WebEx Teams, что в итоге привело к исчезновению аккаунтов в WebEx Teams вместе со всем содержимым.
Cisco потратила две недели на восстановление удаленных данных. Ущерб от действий Рамеша она оценила в $2,4 млн – $1 млн компания потратила на компенсации пострадавшим клиентам, а оставшиеся $1,4 млн пошли на оплату труда ее специалистов, помогавших восстанавливать данные.
В июле 2020 г. Рамеш признал себя виновным в содеянном. Как сообщал CNews, в середине декабря 2020 г. его приговорили двум годам тюрьмы, полутора годам под надзором полиции и $15 тыс. штрафа.
В марте 2018 г. стало извесно о похожем случае в Санкт-Петербурге. Сотрудник туристической фирмы из северной столицы после своего увольнения уничтожил базу данных собственной компании. В ней хранилась информация, необходимая для доступа сотрудников турфирмы в офис. Мотивом к уничтожению данных послужил конфликт злоумышленника с руководителем ИТ-отдела, а сам инцидент произошел 14 февраля 2017 г. Для уничтожения базы данных он использовал свой ПК, откуда имелся доступ к серверу компании, где хранилась база. Против него было заведено уголовное дело, расследованием которого занялось ГУ МВД России по Санкт-Петербургу и Ленобласти. Хакеру грозило до четырех лет лишения свободы.
В апреле 2017 г. в США завели уголовное дело против Нимеша Пателя (Nimesh Patel), который в течение 14 лет работал системным администратором в компании Allegro MicroSystems. Ему пришлось уйти из компании, и он решил отомстить бывшему работодателю путем заражения вирусом базы данных его бухгалтерии на СУБД Oracle.
В сентябре 2016 г. системный администратор Джо Вито Вензор (Joe Vito Venzor), уволенный из компании по производству обуви Lucchese Bootmaker, в отместку обрушил ее сервер. Он также удалил файлы, необходимые для его восстановления. Производство ковбойских сапог Lucchese Bootmaker, существующее с 1883 г., простаивало, пока сторонний подрядчик не починил сервер, и компании пришлось потратить две недели, чтобы полностью восстановить производство и наверстать упущенные заказы.
Если работодатель недостаточно платит своим сотрудникам, то он тоже рискует стать жертвой ИТ-мести. На себе это испытал в 2002 г. банк UBS Paine Webber. Когда «логическая бомба» удалила все файлы на главном сервере его центральной базы данных и двух тысячах серверов в 400 филиалах, при этом отключив систему резервного копирования. Виновником случившегося оказался системный администратор банка – он получил вдвое меньшую премию по итогам года, что и заставило его отомстить работодателю.

Суд в Москве оштрафовал Discord на 3,5 миллиона рублей за «неудаление запрещенной информации»

Об этом пишет РИА Новости.
На прошлой неделе стало известно, что российские власти готовятся заблокировать популярный у геймеров мессенджер. Как писал «Коммерсант», с 20 сентября Роскомнадзор направил администрации площадки пять решений, что Discord якобы нарушает российские законы.
,политика,политические новости, шутки и мемы,Россия,страны,Discord

Отличный комментарий!

Админы Дискорда вообще в курсе, что их оштрафовали?
,Factorio Dev Diary,Factorio,Игры
Здравствуйте!
Несмотря на то, что при разработке версии 2.0 много времени было потрачено на новые функции и качество жизни, мы по-прежнему заботимся о мелких деталях и технических улучшениях.

Детерминированная многопоточность — это сложно

Недавно нам сообщили об ошибке рассинхронизации, связанной с API моддинга и несколькими компьютерами под управлением Windows и Linux, которые использовал игрок. Моим первым инстинктом было обвинить разработчика мода в том, что он сделал что-то не так, но за эти годы я видел достаточно отчетов об ошибках, чтобы знать, что отклонять один из них без предварительного расследования — плохая идея и отличный способ сесть в лужу.
Воспроизвести рассинхронизацию мне не удалось, но плеер смог с легкостью. Сначала я подумал, что это проблема Windows и Linux (у нас было много таких), но потом плеер смог воспроизвести ее с Linux на обоих компьютерах. Затем я подумал, что это аппаратная проблема: мы видели немало неисправных компьютеров, которые просто не делают того, что должны. Убедить кого-то, что его оборудование сломано, сложно и в лучшем случае отнимает много времени.
После нескольких неудачных попыток воспроизвести проблему на моем одном компьютере Боскид, используя несколько своих компьютеров, смог это сделать. Я думаю, что возможность воспроизводить ошибки локально занимает около 90-95% времени, потраченного на исправление обнаруженных ошибок. Воспроизведя проблему по требованию, Боскид смог сузить ее до того факта, что компьютеры имели разное количество ядер ЦП. Благодаря этим новообретенным знаниям он смог провести тест, который можно было запустить на моем единственном компьютере, чтобы воспроизвести рассинхронизацию, искусственно притворившись, что у меня меньше ядер процессора, чем на самом деле.
В конечном итоге проблема заключалась в том, что нужно было собрать вместе 4 разных движущихся части, чтобы выявить проблему детерминизма потоков, которая присутствовала в игре с тех пор, как я добавил ее туда 22 июля 2017 года.
1) Моду необходимо было прослушивать событие, генерируемое чанком, и менять тайлы на чанке, когда оно происходило.
2) Моду необходимо было запросить создание нескольких фрагментов.
3) Моду необходимо было принудительно сгенерировать все запрошенные фрагменты прямо сейчас .
4) Игру необходимо было запустить на двух компьютерах с разным количеством ядер процессора.
Логика генерации фрагментов «прямо сейчас» будет пытаться использовать все доступные ядра ЦП, но это было сделано таким образом, что количество ядер - в сочетании с другими движущимися частями - слегка меняло результаты генерации фрагментов.
Исправление оказалось не таким уж сложным в реализации, и оно появится в версии 2.0, но оно просто показывает, что многопоточность — это сложная задача, а детерминированная многопоточность тем более.

Многопользовательская игра с автопаузой

У нас есть особенность выделенных серверов: когда последний игрок отключается, сервер автоматически приостанавливается. Это прекрасно работает и означает, что вы можете оставить выделенный сервер включенным, не беспокоясь о том, что кусаки съедят вашу базу, когда вы уйдете. За исключением некоторых крайних случаев, с которыми нам так и не удалось справиться (до сих пор).
Случай 1: Когда вы присоединяетесь к автоматически приостановленному серверу, он мгновенно возобновляет работу, даже если вы не полностью загрузились в игру. Оказывается, решить эту проблему было невероятно просто, но по какой-то причине с годами она не ушла в прошлое. В версии 2.0 автоматически приостановленные серверы будут оставаться приостановленными до тех пор, пока хотя бы один игрок полностью не загрузится в игру.
Случай 2: Присоединяющимся игрокам необходимо не отставать от текущей игры. Это отлично работает для «обычных» игр и позволяет существующим игрокам продолжать игру, не дожидаясь присоединения игроков. Но игроки сталкиваются с проблемами, связанными с гораздо большими картами или медленным подключением к Интернету. Для присоединения кого-либо может потребоваться 1, 2 или несколько минут, чтобы загрузиться и полностью подключиться к серверу. В версии 2.0 мы добавили опцию «автоматическая пауза, когда игрок присоединяется», которая работает именно так, как указано.

Более быстрые задачи строительных роботов

Такое ощущение, что каждую неделю кто-то спрашивает: «Почему мои строительные роботы не работают?» и на скриншоте, который они предоставляют, есть небольшое предупреждение, показывающее «600 рабочих мест, не хватает материалов/роботов». Эта проблема существовала с самого начала появления роботов, и до сих пор у нас нет хорошего решения для нее.
Проблема в том, что, учитывая задачу, которую должны выполнить роботы-конструкторы, игре необходимо найти лучшего робота из логистической сети, который находится в пределах досягаемости, чтобы выполнить эту задачу. Проверка того, находится ли эта логистическая сеть в радиусе действия объекта, равна O(Roboport-Count). Мы не контролируем, насколько медленным это будет, потому что игрок может построить 1 Робопорт, или 100 000, или столько, сколько сможет вместить его компьютер. Поэтому нам нужно убедиться, что эта операция не приводит к остановке игры во время ее работы. Мы делаем это, обрабатывая всего несколько задач строительных роботов за каждый такт.
В версии 1.1 игра будет проверять строительные работы 3 раза за каждое обновление. Если ему не удастся найти робота, он остановится для текущего обновления. Оповещения о неудачных попытках длятся 10 секунд. Таким образом, при 60 обновлениях в секунду и 10 секундах на каждое оповещение это означает, что будет создано 600 оповещений до истечения срока действия первого. Вот откуда берется волшебное количество предупреждений «600 рабочих мест, не хватает материалов/роботов».
Так работало с тех пор, как я работал над Factorio, и, скорее всего, так будет продолжаться на каком-то базовом уровне. Мы не можем просто увеличивать количество задач, проверяемых при каждом обновлении, потому что знаем, что работа потенциально замедлится тем больше, чем больше робопортов строит игрок.
Ранее в этом году кто-то ( сообщение на форуме ) снова столкнулся с этой проблемой, но решил «решить» ее самостоятельно, сделав то, что, как мы сказали, мы не можем сделать: «запустить проверенные задачи для каждого обновления», за исключением того, что они перешли с 1 на каждое обновление. до 374. Также построено 36 815 роботопортов. Как и предполагалось, это было медленно.
Но это заставило меня задуматься: а что, если бы я мог сделать медленную часть намного быстрее ? Хотите быстрее изменить алгоритм? Вдохновение пришло ко мне, когда я вспомнил, что в игре уже есть набор логики, позволяющей взять зоны логистики и строительства роботопорта и вычислить полученное объединение прямоугольников. Проще говоря, он создает красивый набор дедуплицированных прямоугольников, которые покрывают общую площадь всех роботопортов. Мы используем это для рендеринга, чтобы избежать перерисовки, когда роботопорты находятся рядом друг с другом.
Это, в сочетании с сортировкой полученных прямоугольников, означало, что я мог выполнить простой двоичный поиск, чтобы проверить, находится ли данная задача в пределах сети. В конце концов проверка изменилась с O(N) на 36 815 роботопортах до O(N) на 900~ прямоугольных объединенных областях и до O(logN) на 900~ прямоугольных объединенных областях.
Время проверки «есть ли оно в этой сети» из дорогого превратилось в практически незаметное. Благодаря этому ускорению я смог увеличить скорость проверки задач для версии 2.0 и, надеюсь, решить эту проблему.
Как всегда, сообщайте свои мысли в привычных местах.
Форум Редит
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме как запустить свой сервер (+1000 постов - как запустить свой сервер)