Jump to content
Vetalll

Архитектура сервера

Recommended Posts

Всем привет.. как хобби ковыряю сервер снуля.. были тут от меня вопросы..  Я программист с опытом на разных платформах.

Но есть одна задача которую я никак не могу решить...  Это архитектура без круговых зависимостей. 

К примеру.

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


Кто-то пытался вообще решить эту проблему?  Сделать красиво?  Часть проблемы могу решить через Observer паттерн.  Но часть нет. особенно  та что с сокетом.  Ни литературы ни статей толковых не нашел.

Share this post


Link to post
Share on other sites
Posted (edited)
8 часов назад, Vetalll сказал:

Всем привет.. как хобби ковыряю сервер снуля.. были тут от меня вопросы..  Я программист с опытом на разных платформах.

Но есть одна задача которую я никак не могу решить...  Это архитектура без круговых зависимостей. 

К примеру.

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


Кто-то пытался вообще решить эту проблему?  Сделать красиво?  Часть проблемы могу решить через Observer паттерн.  Но часть нет. особенно  та что с сокетом.  Ни литературы ни статей толковых не нашел.

Там же тема такая что клиент шлет набор байтов игроку и сервер игроку распарсивает. Есть фреймфорк для работы с сокетами  netty.

Или я не понял что ты хочешь)

Edited by Evolution

Share this post


Link to post
Share on other sites

Не ты не понял.. байты это я все понимаю. Просто  сама логика.   К примеру Пакет Чат.. 

Socket -> Client -> Player -> World -> Player -> Client -> Socket

Получается классы знаю про классы на уровень выше. А не должны..


в моем понимании должно быть что-то  КАКАЯТО_МАГИЯ -> World -> Player -> Client -> Socket
и вот вся суть в КАКАЯТО_МАГИЯ.  разве что подписку реализовать на пакеты...

Share this post


Link to post
Share on other sites

AOP, mvvm. 

Но опять же всё сводится к скорости отклика что важнее соблюдения solid

Edited by Edgar

Share this post


Link to post
Share on other sites

Ну чисто для боевого сервера мой вариант не проканает.. Но  моя основная цель - Сделать Архитектуру довольно большого сервера пименно по SOLID и с паттернами.. Так как сказать визитку  на Гит хабе.

Если интересно вот https://github.com/lebedynskyi/L2Server
А еще если покапаться в моих репах то там и бот который обходит Акуму )

Share this post


Link to post
Share on other sites
2 часа назад, Vetalll сказал:

А еще если покапаться в моих репах то там и бот который обходит Акуму )

l2ZMRwBSldnK0m.jpg


https://github.com/asweigart/pyautogui/blob/master/pyautogui/_pyautogui_win.py
Тут используются обычные keybd_event / mouse_event , которые не сложно контрятся  (например SetWindowsHookEx и WH_KEYBOARD_LL / WH_MOUSE_LL хуки с проверкой флага INJECTED)
Вы утверждаете, что Akumu не знает об этих базовых вещах?)

Share this post


Link to post
Share on other sites
1 hour ago, EasyGameProtection said:

l2ZMRwBSldnK0m.jpg


https://github.com/asweigart/pyautogui/blob/master/pyautogui/_pyautogui_win.py
Тут используются обычные keybd_event / mouse_event , которые не сложно контрятся  (например SetWindowsHookEx и WH_KEYBOARD_LL / WH_MOUSE_LL хуки с проверкой флага INJECTED)
Вы утверждаете, что Akumu не знает об этих базовых вещах?)

Да.. как первая часть.. И она контрится тем же смарт гвардом на проверку isInjected event
Но если посомтреть глубже

class ArduinoKeyboard(Keyboard):


Маленькая железяка которая за  $5  + OpenCV. = обходит абсолютно все. 
Нет инжекта в процессы или память или еще куда.. просто парсинг екрана и вытаскивание всей инфы. Управление клиентов через физичесскую клавиатуру через сокет с ардуинкой.  

ПРУФ - 

 

Edited by Vetalll
  • Upvote 1

Share this post


Link to post
Share on other sites
18 минут назад, Vetalll сказал:

Маленькая железяка которая за  $5  + OpenCV

Если так, то отлично
Но там в запасе теоретически есть еще один трюк - можно запретить приложениям захватывать изображение с определенного окна
Надо еще железка, чтобы забирать изображение прямо из HDMI
Тогда в системе вообще не будет никаких признаков бота, и, соответственно, нечего будет детектить античиту

Но все же стоит отметить, что бот будет проигрывать по возможностям "традиционным" ботам, которые взаимодействуют непосредственно с клиентом игры, плюс надежность распознавания объектов в игре тоже вызывает вопросы
Это явно решение не для массового потребителя

Share this post


Link to post
Share on other sites
8 minutes ago, EasyGameProtection said:

Если так, то отлично
Но там в запасе теоретически есть еще один трюк - можно запретить приложениям захватывать изображение с определенного окна
Надо еще железка, чтобы забирать изображение прямо из HDMI
Тогда в системе вообще не будет никаких признаков бота, и, соответственно, нечего будет детектить античиту

Но все же стоит отметить, что бот будет проигрывать по возможностям "традиционным" ботам, которые взаимодействуют непосредственно с клиентом игры, плюс надежность распознавания объектов в игре тоже вызывает вопросы
Это явно решение не для массового потребителя

Да.. проигрывает и колосально.. На выходе все равно это смесь Автокликера  + частички разума.. Это все делалось для личного пользования.. Акуму я писал еще весной. Там реально трудно отхендлить это все. а захват делается примитивно.. просто скрин всего экрана..

Share this post


Link to post
Share on other sites
18 минут назад, Vetalll сказал:

а захват делается примитивно.. просто скрин всего экрана

Если сделать определенный трюк, то даже при скрине всего экрана на месте клиента игры будет просто черный прямоугольник
Правда от этого пострадают стримеры. Но все же некоторые игры так делают

 

18 минут назад, Vetalll сказал:

Там реально трудно отхендлить это все.

Не сложно, а в принципе невозможно) Можно лишь максимально затруднить такой сценарий использования для потенциального ботовода, но из-за этого пострадает часть валидных игроков

Но таких игроков с "аппаратным" ботом наверное тысячные доли процента от общей массы. Также учитывая сильную ограниченность таких ботов - особо экономике сервера это не навредит

Edited by EasyGameProtection

Share this post


Link to post
Share on other sites

Ахахаха я так давно не смеялся) ардуино жабать ахахаха 

это как прикол про джаву и питон и ооп

Share this post


Link to post
Share on other sites
4 hours ago, KillMilk said:

Ахахаха я так давно не смеялся) ардуино жабать ахахаха 

это как прикол про джаву и питон и ооп

Ну и дурак..   есть скрипты даже для Пилота.. От туда и черпнул идею.

С Января на Реборне стоит SmartGuard.. Работает на ура по сей день.  Каптча парсится.. Спойл спойлится.. Манор манорится и здается в 2 замка с 99% вероятностью

Share this post


Link to post
Share on other sites
22 минуты назад, Vetalll сказал:

Ну и дурак..   есть скрипты даже для Пилота.. От туда и черпнул идею.

С Января на Реборне стоит SmartGuard.. Работает на ура по сей день.  Каптча парсится.. Спойл спойлится.. Манор манорится и здается в 2 замка с 99% вероятностью

Я юзаю шарной адрик на смарте на любом сервере) и?) чем меня удивить?

питон не плох, я не говорил что он уг, он реально божественен особенно после 3.9

Edited by KillMilk

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...