Как стать автором
Обновить

Комментарии 20

Зашёл на веб-версию, просит зарегаться. Блин, опять выдумывать логин-пароль. О, есть кнопка логина через G+! Жму, разрешаю права, и… получаю ту же форму регистрации с предзаполненными полями мыла и логина, но надо всё равно придумывать пароль. Шта??? Всё, на этом игра для меня закончилась, конверсия не произошла.
У меня получилось не через создание аккаунта, а через линк «Войти», пароль не потребовали —
вот так
Раз:
image

Два:
image

Три:
image
Идея восхитительна!

Вы с самого начала задумывали систему плагинов, учитывая её при разработке, или пришли к ней позже?
Спасибо) Я с самого начала хотел плагины, но пришёл к ним позже.
На самом деле много кода пришлось переписать (эволюционно, мелкими итерациями) и ещё много — переписывается.
Основная задача (для возможностей «Агрессивного изменения») — это максимально минимальные методы. Чем меньше — тем лучше. (прям как в книгах пишут). Чем меньше метод — тем меньше влияния оказывает изменение автора плагина и легче переносится на следующую версию. Потому у нас практически не создаются функции в методах, а сначала мы перешли на bind, а потом вообще на подход с передачей объекта с нужными методами. Пример:
// Было
declare( 'Handler', {
  run: function () {
    this.button.addEvent( 'click', function () {
      // do stuff
    });
  }
});

// Первая замена
declare( 'Handler', {
  run: function () {
    this.button.addEvent( 'click', this.onClick.bind(this) );
  },

  onClick: function () {
      // do stuff
  }
});

// Вторая замена
declare( 'Handler', {
  run: function () {
    this.button.addListener( this );
  },

  onClick: function () {
      // do stuff
  }
});


Но, по сути, когда прикрутилась система плагинов — это всё постепенно улучшалось в рамках разработки задач и ежедневного рефакторинга старого кода.
Эм… Ждите ботов на свою игру :D Которые и играть будут лучше чем 51% игроков =)
Боты — не вопрос API. Точно так же можно написать через распознавание картинок (благо, достаточно сравнивать по паттерну) и кликам.
Распознавание картинок дело сложное и неблагородное. А вот подключится напрямую к методам это уже очень и очень круто. И никакая обфускация тут не поможет.
Просто я имею небольшой опыт написания ботов, и вот эта игра выглядит как очень хорошо и легко автоматизируемая, причём абсолютно безпалевно.

Не представляю себе как WG будет с этим бороться.
Почему бы нет? Первая игра, в которой будут развлекаться программисты, а не задроты.
На самом деле я тоже имею кое-какой опыт в этом и знаю, что обфускация — это вообще не решение))
Кроме парсинга картинок и кликов (я его сказал как крайний случай когда всё остальное закрыто) можно проанализировать запросы-ответы сервера и представляться настоящим клиентом. Без всякого API. Небольшой скриптик, скажем, на node.js.

Я к тому, что вопрос ботоводства и вопрос API — независимые вопросы).

Способы борьбы с ботами, к сожалению, обсуждать не могу.
жду статьи о технической стороне )
Там на самом деле нечего писать — всё самое интересное уже тут, а осталось только очевидное, как на меня. Если есть вопросы — я лучше на них тут отвечу)
я вообще не могу понять как вы функции подменяете
Ну нас самом деле в JavaScript это проще простого. Вот, допустим, есть класс в игре:

function GameObject (name) {
   this.name = name;
}

GameObject.prototype.getName = function () {
   return 'Getter:' + this.name;
};


Пишем в нашем API подменятор:
Plugins = {};

Plugins.refactor = function (Class, methodName, newCallback) {
   // чтобы можно было обратиться к пред версии
   newCallback.previous = Class.prototype[methodName];

   Class.prototype[methodName] = newCallback;
};


Теперь в нашем плагине просто подменяем метод:
Plugins.refactor( GameObject, 'getName',
   function method () { // обратите внимание - сохранил ссылку на колбек
      return 'Changed:' + method.previous.call(this);
   });


Пробуем:
// Changed:Getter:FooBar
console.log( new GameObject('FooBar').getName() );
Эхх. Очень нравятся такие речи:
о системе плагинов игры, которая вдохновлялась пакетными менеджерами в Linux

Или вот, например, статья, что Linux Foundation объявила о включении в свои ряды компанию Wargaming.
Пруф. (правда старенький, но я думаю ничего не изменилось, правда ведь?)

Внимание вопрос. Почему компания, входящая в Linux Foundation и берущая идеи из Linux, до сих пор не имеет нативного клиента для своей игры?
Зато какие пафосные речи:
“Our decision to join The Linux Foundation was influenced by the accelerated change of the game industry,” said Maksim Melnikau, Developer at Wargaming. “Having been in this genre for almost 15 years, we seek to reap enormous value from such a strong community and for Linux to advance the gaming industry.”

Да, в этом вы проигрываете Gaijin Entertainment, которая просто берет и делает. Хотя-бы клиент под Linux.
Про внутреннюю механику игр и тему доната затрагивать не хочу. Просто как-то не честно к пользователям и игрокам, не находите?
у них движок не кросс платформенный вроде бы.
Почему компания, входящая в Linux Foundation и берущая идеи из Linux, до сих пор не имеет нативного клиента для своей игры?

Я как-бы с Linux прекрасно играю в нашу игру и разрабатываю её. Более того — скриншоты в топике сделаны как раз в Kubuntu.
То, что вы используете костыли и велосипеды для игры и разработки, не делает игру лучше
image

Т.е. это как бы не оправдание.
Думаю, вы путаете игру, что обсуждается в этом топике (WoT Generals — карточная игра типа Хартстоуна), и сам WoT. :)
Нет, никогда такого не было!
Я изначально наезжал на Wargaming и WoT, про WoT Generals я ни одним словом не заикнулся :)
Так а топик то про WoT Generals.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий