Автор: CCP Elerhino
| 2011.07.29 14:36:35 |
Привет!
Мы работали над новыми функциями API которые дадут доступ к информации о контрактах. Эти изменения войдут в силу в конце августа но мы создали этот ранний девблог для представления вам наших идей и для получения экспертного мнения.
Проблема
Контракты и рыночные ордера крайне похожи, да и создавали одни и те же головные боли когда мы пытались через API выдавать полезную информацию без больших нагрузок на базу данных ЕвЕ. Мы хотели получить очень простую информацию - действующие и устаревшие Х дней назад контракты. Но оказалось, что такую информацию можно получить с базы данных только угрожая ей топором. Если не вдаватся в подробности - данные просто не оптимизированы для таких запросов.
Решение
Было решено попробовать другой подход и загружать информацию только про активные контракты. То же самое мы когда то сделали для рыночных ордеров, тем самым ограничив ненужную информацию запрашиваемую через API и передаваемую клиенту. Это значительно улучшило запросы к базе данных но нанесло подлый удар клиентам API так как убрало важную информацию.
Одной из проблем является то, что ордера выданные и обрабатываемые в периоде обновления API кэша ордеров никогда не появляются в API. Чтобы восполнить этот пробел мы хотим включить в списке свежие ордера. Мы думаем что недельная история ордеров не только решит проблему, но и пригодится если все что вам нужно - это получать список раз в день или каждые несколько дней.
Другая возникшая проблема была в следущем. Когда старый ордер выполняется он исчезает из списка без какого-либо упоминания о том, что с ним случилось. Чтобы исправить это мы добавим страницу API, или, возможно, OrderID параметр в странице рыночных ордеров, так что вы можете искать исчезшие ордера и выяснить, что произошло с ними.
Контракты
Как и рыночные ордера список контрактов будет содержать выставленные и активные контракты, а также недавно выданные контракты. Мы также введем отдельную страницу или contractID параметр для просмотра отдельных контрактов.
На самом деле будет два набора страниц контрактов, одна для персонажей и еще одна для корпораций. Страница контрактов персонажа будет выдавать все контракты с которыми так или иначе связан персонаж. Корпоративная страница соответственно покажет контракты связанные с корпорацией или с альянсом, естественно эта страница потребует корпоративный ключ доступа. Вот тут мы хотим услышать ваше мнение, в игре корпоративные контракты видны любому члену корпорации, но в API мы хотим запереть эти данные под ключ, который может быть создан только директорами или CEO. Это своего рода мера безопасности в том смысле, что она предотвращает возможность случайного предоставления корпоративной информации членами корпорации третьим сторонам.
Списки контрактов сами по себе не будут содержать информацию о предметах, ставках или напоминаниях. Для предметов и ставок будут отдельные страницы, но вероятнее всего, напоминания будут полностью пропущены. Страница предметов покажет список предметов конкретного контракта, информация будет содержать данные навроде ID товара, количества, и требуется или продается предмет контракта.
Страница ставок будет немножко другой. Она будет показывать список недавних ставок от персонажей и корпораций. При каждом обновлении кэша вы получите список последних ставок (сделанных между обновлениями кэша) на контракты созданные вами или вашей корпорацией. Как упрощенный пример: при первом запросе списка ставок система вам выдаст ставки сделанные после вчерашней даты.
Коротко о графике введения изменений: с рыночными ордерами мы хотим разобратся как можно раньше но мы не имеем конкретной даты для изменений в конце августа. Введение девелоперского билда API в игру требует участие множества людей с разных отделов компании и учитывая период отпусков их очень трудно собрать вместе и скоординировать работу. Похоже вам придется немножко подождать.
CCP Elerhino
Сообщение отредактировал Мейер: 30 July 2011 - 10:42