Yaponchick
Новичок
Скорее всего тема больша для теории, но всё таки тут.
Имеем игру eve online. Так же она выдаёт всякие интересные данные через свой API.
Был написан модуль, позволящий читать, что получили(вещи, налутали) игроки участвующие в 3х часовом бою.
Собственно данные в текстовом файле, и названия айтемов без ид, пример:
И так, задачи:
1) Валидация айтемов(вдруг этот лог "читерный")
2) Запрос реальных цен на айтемы: Велдспар около 17.00, Денс Велд около 18.75, Продж Туррет около 40000;
Цены берутся с другого сайта(через API), который только ценами и парсит
3) Нахождение выгодных действий: Продажа на рынок, Переплавка и продажа на рынок
Пункт №1 реализуется достаточно просто, ив предоставляет дамп базы айтемов и другой информации, соответственно я их всех могу найти.
А вот, Пункт №2, пугает меня тем, что лог файл через 3 часа будет размер в 5+ кб, соответственно там айтемов будет о-го-го, соответственно придётся о-го-го запросов отсылать на донора цен.
В принципе можно сделать а-ля delayed query, котороый будет динамически запрашивать цены и кешировать их же. Тут мне хотелось бы просто выслушать ваши идеи, если таковы есть, просто альтернативных вариантов в голове моей — нэма.
И мего пункт намба фри:
Для рассмотрения возьмём Veldspar. Это руда, которая может быть переработана в Tritanium. Переработка 333 велда, даёт нам 1000 тританиума, !но! это при идеальных навыках(скиллах) и идеальном отношении перерабатывающей станции к игроку(стендинг).
1 тританиум нынче около 6.01 на рынке.
Проблем с получением перерабатываемых данных нет, есть таблица стендингов и таблица скиллов, и соответственно таблица item (1:m) => refined_items.
Но, есть и другие руды, Pyroxeres(333), рефайнится в 844 Tritanium, 59 Pyerite, 120 Mexallon, 11 Nocxium.
Модули, так же рефайнятся в материалы, и причём в разные.
И мы возвращаемся опять же к запросу цен у донора.
Ладно, договорюсь я с донором о платном "забытии о мини-досе". Но как огранизовать определение выгодности действий, КРАСИВО!, никак не уложится в моей голове.
Простейший и тупейший вариант: тупо лимитировать рефайн до 2-3 лвла, т.е. (Hulk) рефайним в (30 x Capital Ship Armor Plates), а их уже в (49 x Armor Plates).
Но, Armor Plates можно ещё раз рефайнуть уже в материалы...
Можно конечно (блин, вылетело из головы слово...) бесконечным циклом... но!
рефайнить руду можно только пачками (333 / 500 / 400 / 440 и тд) для каждой руды своё требование. Допустим у нас 3430 Велда это 10 х 1000 Тританиума + 100 велда останется.
Так вот эту сотню, можно отрефайнить если получить из Medium Projectile Turret ещё 233 велда, и при ётом останутся другие ресурсы уже от модуля, но велд будет полностью отрефайнен )
А ещё... разные скиллы, разный йелд рейфана, и некоторые "игроки" не получат 233 велда с MPT, а некоторые получат 389
А ещё... торговых мест в игре 4, и цены там отличаются
И мега трабла, когда этих модулей в логе очень много ))) и вариантов рефайнов тонна.
Т.е. по сути, я нуждаюсь в алгоритме по определению эффективной стоимости действий.
Я извиняюсь за такой "полёт" мысли, что смог, то выжал.
Буду благодарен за любые ссылки, советы, книги на похожую тематику.
Ну и критику бы тоже )
Суть этого всего, чтобы вывести пользователю, выгодные направления действий с его лутом: продать, докупить там, перепродать там, отрефайнить + скрафтить + продать там )
P.S. Пока писал, почему-то в голове вылез Strategy Pattern...
P.P.S. Для тех кто играет в ив, не придерайтесь к описанной механике, по сути я объединил лут хистори с blueprint calc ((mine + buy + loot) => refine => manufacture)
P.P.P.S. Логистика!
Имеем игру eve online. Так же она выдаёт всякие интересные данные через свой API.
Был написан модуль, позволящий читать, что получили(вещи, налутали) игроки участвующие в 3х часовом бою.
Собственно данные в текстовом файле, и названия айтемов без ид, пример:
Код:
Pestilence | Veldspar | 4534
Roman | Dense Veldspar | 14000
Pilar | Medium Projectile Turret | 2
1) Валидация айтемов(вдруг этот лог "читерный")
2) Запрос реальных цен на айтемы: Велдспар около 17.00, Денс Велд около 18.75, Продж Туррет около 40000;
Цены берутся с другого сайта(через API), который только ценами и парсит
3) Нахождение выгодных действий: Продажа на рынок, Переплавка и продажа на рынок
Пункт №1 реализуется достаточно просто, ив предоставляет дамп базы айтемов и другой информации, соответственно я их всех могу найти.
А вот, Пункт №2, пугает меня тем, что лог файл через 3 часа будет размер в 5+ кб, соответственно там айтемов будет о-го-го, соответственно придётся о-го-го запросов отсылать на донора цен.
В принципе можно сделать а-ля delayed query, котороый будет динамически запрашивать цены и кешировать их же. Тут мне хотелось бы просто выслушать ваши идеи, если таковы есть, просто альтернативных вариантов в голове моей — нэма.
И мего пункт намба фри:
Для рассмотрения возьмём Veldspar. Это руда, которая может быть переработана в Tritanium. Переработка 333 велда, даёт нам 1000 тританиума, !но! это при идеальных навыках(скиллах) и идеальном отношении перерабатывающей станции к игроку(стендинг).
1 тританиум нынче около 6.01 на рынке.
Проблем с получением перерабатываемых данных нет, есть таблица стендингов и таблица скиллов, и соответственно таблица item (1:m) => refined_items.
Но, есть и другие руды, Pyroxeres(333), рефайнится в 844 Tritanium, 59 Pyerite, 120 Mexallon, 11 Nocxium.
Модули, так же рефайнятся в материалы, и причём в разные.
И мы возвращаемся опять же к запросу цен у донора.
Ладно, договорюсь я с донором о платном "забытии о мини-досе". Но как огранизовать определение выгодности действий, КРАСИВО!, никак не уложится в моей голове.
Простейший и тупейший вариант: тупо лимитировать рефайн до 2-3 лвла, т.е. (Hulk) рефайним в (30 x Capital Ship Armor Plates), а их уже в (49 x Armor Plates).
Но, Armor Plates можно ещё раз рефайнуть уже в материалы...
Можно конечно (блин, вылетело из головы слово...) бесконечным циклом... но!
рефайнить руду можно только пачками (333 / 500 / 400 / 440 и тд) для каждой руды своё требование. Допустим у нас 3430 Велда это 10 х 1000 Тританиума + 100 велда останется.
Так вот эту сотню, можно отрефайнить если получить из Medium Projectile Turret ещё 233 велда, и при ётом останутся другие ресурсы уже от модуля, но велд будет полностью отрефайнен )
А ещё... разные скиллы, разный йелд рейфана, и некоторые "игроки" не получат 233 велда с MPT, а некоторые получат 389
А ещё... торговых мест в игре 4, и цены там отличаются
И мега трабла, когда этих модулей в логе очень много ))) и вариантов рефайнов тонна.
Т.е. по сути, я нуждаюсь в алгоритме по определению эффективной стоимости действий.
Я извиняюсь за такой "полёт" мысли, что смог, то выжал.
Буду благодарен за любые ссылки, советы, книги на похожую тематику.
Ну и критику бы тоже )
Суть этого всего, чтобы вывести пользователю, выгодные направления действий с его лутом: продать, докупить там, перепродать там, отрефайнить + скрафтить + продать там )
P.S. Пока писал, почему-то в голове вылез Strategy Pattern...
P.P.S. Для тех кто играет в ив, не придерайтесь к описанной механике, по сути я объединил лут хистори с blueprint calc ((mine + buy + loot) => refine => manufacture)
P.P.P.S. Логистика!