Конфиграция упрощена:
- Убраны настройки вермени фарма и простоя между фармом
- Разделены основной конфиг и конфиг с рабочими данными (см Configs/Accounts/Run).
Настройка конфигурации
В дериктории с исполняемым файлов нужно создать (если не создана ранее) следующую струтуру файлов
- Configs/MainConfig.json
- Confgis/Accounts/<accountName>.json
где:
MainConfig.json файл основной конфигурации следующего содержания:
{
"StartTimeOut": 30,
"CoolDownAfterLoginError": 120,
"LogWorker": false,
"IdDropCooldown": 1, //1 sec
"IdDropErrorCooldown" : 11,//11 sec,
"CheckItemDropCooldown": 30, //min,
"DropConfig" : [
{
"GameId":232090,
"DropItemIds": [910000, 90000]
},
{
"CheckItemDropCooldown": 60,
"GameId":252490,
"DropItemIds": [10]
},
]
}
Описание полей
- StartTimeOut: время задержки между запусками аккаунтов на фарм в секундах
- CoolDownAfterLoginError: время задержки между запусками аккаунтов на фарм после ошибки авторизации в секундах
- IdDropCooldown: время задержки между запросами дропа к стим в секундах
- IdDropErrorCooldown: время задержки после появления ошибки при попытке дропа в секундах
- CheckItemDropCooldown: время задержки до следушего цикла дропа (для каждой игры можно переопределить свою задержку) в минутах
- LogWorker: вести логирование работы SteamDroplerApi.Worker
- DropConfig: описание идентификаторов дропа
- GameId: идентификатор приложения
- DropItemIds: список идентификаторов генераторов дропа
- CheckItemDropCooldown: переопределенное время задержки до следушего цикла дропа в минутах
<accountName>.json файл конфигурации одного аккаунта steam следующего содержания:
{
"Password": "pass",
"IdleEnable": true,
"SharedSecret" : "secret",
"AuthType": "WithSecretKey"
}
Описание полей
- accountName: login аккаунта
- Password: пароль от аккаунта
- IdleEnable: активен ли бот
- SharedSecret: секрет из .maFile
- AuthType: тип аутентификации (пока что всегда через SecretKey)
В ходе работы приложения будут созданы следующие директории
- logs: директория с файлами логов, дублирующй вывод на консоль (для анализа или для передачи в отладку)
- Configs/Accounts/Run: директория с динамическими данными сформированными во время запуска процесса фарма по каждому аккаунту(если есть необходимость сбросить состояние аккаунта, можно удалить файл из этой папки)
Для старта необходимо запустить основной исполняемый файл SteamDroplerApi(.exe).
- Считывается MainConfig.json. Если данного файла нет, или файл содержит ошибки, будет выведенно предупреждение и программа будет завершена
- Считаются файлы конфигурации аккаунтов. Если файлs будут повреждены, будет выведенно предупреждение, система продолжит работу с валидными аккаунтами
- С переодичностью в 30 секнуд будут запускатся дочерние процессы SteamDroplerApi.Worker(.exe) непосредственно с логикой фарма.
Обоснование
Данное решение потребляет больше ресурсов (RAM, CPU), но
- Падение 1 процесса не повлияет на фарм других аккаунтов
- Возможно подключение proxy (TODO)
- Отпадает необходимость дублировать дроплер по папками с ~200 аккаунтов
- Запускается api для взаимодействия с аккаунтами.
- Количество одновремено запущенных игр не можеть привышать 32 (по факту меньше, возможно ~10). Для того чтобы наигровка была по всем играм, идет отравка активных игр каждые 2 минуты с циклическим смещением (в средем одна игра активна 1 час, после чего простой зависящий от количиства игр)
Пример
жирным отмечены активные игры
g1,g2,g3,g4g5...g62,g63,g64
g2,g3,g4,g5g6...g63,g64,g1
g3,g4,g5,g6g7....g64,g1,g2
....
g64,g1,g2,g3g4...g61,g62,g63
По умолчанию, для работы приложения не требуется взаимодействияс ним. Но для оптимизации настройки конфигов и для отслеживания состояния аккаунтов было добавленно api.
Для получения информации по api, после запуска приложения нужно будет перейти по адрессу http://localhost:7832/swagger/index.html (в случае наличия браузера). В данном интерфейсе можно будет выполнять запросы напрямую. Если барузера нет, то запросы можно выполнять через curl|postman
Api:
- /api/Account/get - возвращает список аккаунтов с их текущим состоянием
- /api/Licensing/addApps - добавить всем аккаунтам free License по appId
- /api/Licensing/addPackage - добавить всем аккаунтов игру по packageId
Список api будет расширяться
-[] вывод дропа и состояния аккаунтов в google таблицы чтоб можно было мониторить состояние онлайн
-[] расширение api
- включение/выключение бота
- изменение конфига дропа
- ченить еще, хз
-[] поддрежка proxy и porxy листы