HTML5 Phaser ECMAScript 6

Часть 44: Разработка кликера Робин Гуд грабит богатых (часть 2)

Чем я занимаюсь сейчас? Я уже не помню, говорил ли я вам про кликер Робина Гуда? Так вот прототип в виде HTML страницы с кнопками я давно сделал. Ушло около вдух недель, а сейчас уже начал внедрять все в графику. Самое сложно это БАЛАНС. Тут я столкнулся с той же шелухой, что и в статьях копирастов по поводу заработка золотых гор с помощью «яблочного тетриса» или чего-то еще из того же разряда.

Ни одна статья не говорит всю правду о сложности кликеров! Очень сложно найти формулу или просто подогнать числа, которые сделали бы игру не слишком сложной и не слишком простой. Я пробовал много вариантов, опирался и на сложность, на доход, на время, на апгреиды и в итоге нашел свой подход.

карта с way point-ами с двумя опциональными путями

Я как бы создаю скилет дохода и апгреида. Потом все остальные фишки надстраиваю на нем. Если кто скажет, что для разработки игр не нужна высшая математика и психология, то бейте прямо в зубы! =) Например, что бы тележки двигались так красиво по карте, пришлось рисовать WayPoint-ы (если кто помнит в Counter Stiker-е были такие), а потом методом поиска кратчайшего пути между городами (в графе алгоритмом Дейкстры) для тележки, по которой она катилась.

 

пример перемещения тележек по карте в игре кликере Робин Гуд

Первые нарбоски я привожу выше… обратите внимание, это все собрано из того, что я нашел на просторах интернета и текстовые поля там чисто для информации (какие данные должны в последствии графически отображаться).

На этом я с вами прощаюсь, но не на долго =)

п.с. Вообще в этой игре я очень много уделил внимания сигналам (Phaser.Signal) без них разработка сложных игр просто сущий ад + класы… для примера Chapel (церковь, кнопка с тележкой) у меня создает тележки и управляем ими. По началу думал объекты тележек хранить в самом классе Chapel и получилась мусорка… сделал рефакторинг: вынес тележки в отдельный класс Carriage и сразу стало чисто!

2 thoughts on “Часть 44: Разработка кликера Робин Гуд грабит богатых (часть 2)

  1. Спасибо Ден, я вот тоже подумал о рекурсивном вызове функции для отправки тележки… но потом побоялся, что если что пойдет не так, получу бесконечный цикл или ты все же про саму логику?

    this.game.time.events.add(this._travel_time, function() {
      this.on_arrive.dispatch(this);
      if (this.DEBUG_MODE) console.log('carriage "#'+this.index+'" arrive to "'+this.from_point.index+'" and will be loaded');
    
      this.game.time.events.add(this._load_time * 1000, function() {
        this.on_load.dispatch(this);
        if (this.DEBUG_MODE) console.log('carriage "#'+this.index+'" at point "'+this.from_point.index+'" finished loading and going back');
    
        this._start_time = this.game.time.now;
        this._gate_time = this._start_time + this._travel_time;
        this.game.time.events.add(this._travel_time, function() {
          this.on_return.dispatch(this);
          if (this.DEBUG_MODE) console.log('carriage "#'+this.index+'" return and will be unloaded ');
    
          this.game.time.events.add(this._load_time * 1000, function() {
            this.on_unload.dispatch(this);
            if (this.DEBUG_MODE) console.log('carriage "#'+this.index+'" finished unloading');
            this.is_idle = true;
          }, this);
        }, this);
      }, this);
    }, this);

    Если не сложно, кинь ссылку про метод, о котором ты написал выше. Я очень люблю такие простые решения сложных задач =) Спасибо

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *