Я пытаюсь научиться программировать (виртуальную) игру для коллекционных карточных игр (похожую на Magic the Gathering) в Javascript. Я немного читал об архитектуре и контроллерах MVC, но это все у меня над головой (у меня нет никакого формального образования в области CS), и мне интересно, есть ли у кого-нибудь хорошие ссылки или советы о том, как я мог бы узнать больше о коде архитектура на уровне начинающего.
Будет ли каждая «карта» представлена в виде объекта, и вся логика правил карт будет заключена в одну функцию большого игрового движка или множество мелких функций, связанных друг с другом?
Вот пример вопроса:
Представьте, что есть карта с надписью: «Когда эта карта вступит в игру, возьмите карту». Как мне спроектировать игру, чтобы подготовиться к этой ситуации, и как она запускается (наиболее эффективно)? Карта запускает игровой движок, или игровой движок анализирует каждую сыгранную карту?
Вот еще один пример:
Представьте, что есть карта, на которой написано: «Все ваши карты стоят на 1 меньше, чтобы играть». и он остается в игре постоянно. Как игра понимает, что она должна изменить свои правила в этом случае? Является ли эта функция прослушиванием карты, которая должна быть сыграна, и прерыванием стоимости? Как решается каждый ход, где хранится это правило? Существуют ли переменные, в которых хранятся основные правила игры (глобальный модификатор стоимости карты: 0; модификатор стоимости вашей карты: 0) и другие переменные, в которых хранятся те новые правила, которые вводят карты (модификатор стоимости вашей карты: -1), или переменные, динамически создаваемые игровым движком, когда карты меняют правила (ваш модификатор стоимости эльфа: -2)? И как правила узнают, как измениться, когда карта была уничтожена, таким образом, удалив модификацию правила карты?
Что мне нужно для начинающих слушателей и событий? (Я действительно ничего о них не знаю, но время от времени я видел ссылки на них.) Не могли бы вы указать мне направление на хороший ресурс?
Чтобы было ясно, я не пытаюсь сделать скучный запрос на людей, чтобы вручную Google для меня; Я слепо шариваю в темноте и спрашиваю, не подскажет ли кто-нибудь мне нужные слова или фразы для поиска. Спасибо!