Задание: Веб-программист. Запуск Lua приложения в вебе на Python/Rust, обработка с его помощью инфы из Path of Exile, PoE/PoB (Дистанционная работа)
Имеется прога PathOfBuilding (исходники https://github.com/PathOfBuildingCommunity/PathOfBuilding) написана на Lua, она берет информацию о персонаже из игры Path of Exile, симулирует различные ситуации из игры и просчитывает итоговые результаты персонажа по урону и прочим характеристикам.
У неё есть headless режим, для запуска без ui - https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/dev/src/HeadlessWrapper.lua
Если хорошо погуглить можно найти немного подробностей как запустить его в headless на unix на Reddit'e. Рекомендуют использовать luaJit насколько я понял.
Нужно написать модуль на Python (или возможно Rust, об этом ниже) которая будет использовать эту прогу как обработчик и выдавать нам итоговую информацию после подсчетов в ней.
Пример:
- Есть данные - https://pobb.in/XD4ODNTyhmQb (по факту они хранятся в строке в правом верхнем углу в сжатом XML)
- Загружаем в прогу PoB'а эти данные
- Получаем общую информацию о персонаже: его здоровье, урон, какие предметы он использует, какие способности и т.п.
- Сохраняем в удобном для нас формате (скажем json) и грузим все нам в базу
Часть нужной для нас информации можно получить если просто обработать исходный XML, но это нам не подходит, т.к. таким образом мы НЕ получим расчеты которые проводит PoB симулируя ситуации из игры, а самим это делать будет в разы сложнее.
Конкретно данный заказ и задача состоит в следующем:
- Запустить PathOfBuilding в headless режиме на сервере
- Организовать базовую возможность открывать с его помощью профилей персонажей (пример https://pobb.in/XD4ODNTyhmQb), чтобы ничего не крашилось и все работало стабильно
- Выгружать из полученных данных информацию о способностях персонажа (они же Skills/Active skills/gems/support gems). В примере https://pobb.in/XD4ODNTyhmQb (можно его открыть по ссылке) это будет информация которая содержится в блоке Gems справа: Crushing Fist, Pulverise,Fist of War,Fortify а также уровни способностей и их качество
- Сохранять их в json'e
Есть итоговое решение которое выполняет нужные нам задачи - https://github.com/Dav1dde/pasteofexile
Но оно написано на Rust'e. Его можно использовать в качестве примера, чтобы посмотреть как делается то что нам нужно (например инфу о способностях он обрабатывает здесь https://github.com/Dav1dde/pasteofexile/blob/master/app/src/components/pob_gems.rs ).
Либо, если вы разбираетесь в Rust'e - можно сделать наше решение основываясь на этих исходниках. Это обсуждается.
Я отвечу на любые вопросы по игре и функционалу, т.к. вы наверняка не знакомы с игрой Path of Exile и подобным софтом. Хотя в техническом плане здесь не особо сложно (как мне показалось на первый взгляд).
По сути в самом заказе есть вся нужная инфа чтобы вы сами попробовали запустить PoB в headless режиме и попробовать открыть с его помощью персонажа из примера, это не так сложно, главное разобраться с запуском lua и обработать возникшие ошибки.
Итоговое решение должно быть написано как "модуль" на питоне (можно использовать дополнительные либы), либо микросервисом. Мы используем Python 3.12.
Если хотите реализовать на Rust - нужно обсудить детали.
Пожалуйста, если у вас особо нет опыта в веб-разработке и вы пишите большую часть кода с ИИ особо не вникая в то что вы делаете - не откликайтесь на этот заказ, мы нам не подойдете.
В идеале ищу человека который сможет и в будущем дорабатывать этот проект, т.к. он будет активно использоваться. Это не просто софт "на раз".
Либо хотя бы сможет заложить хороший фундамент, чтобы другие прогеры смогли позже над ним работать.
Обязательно используем git, репа на гитлабе будет.