Можно ли использовать поверх game-loop архитектуру MVC?
Доброго времени суток.
Пишу игру для себя, что-то вроде RPG, использую pixi.js в виде движка, реализовал базовые классы UI, Камеру, movieClips, несколько видов анимации. Я веб-разработчик, привык к MVC, Backbone, Angular, ExtJS. Вначале хотел взять чуть хелперов из underscore, extend для классов, декораторы и сделать иерархию классов, от Base, до Window, Player HUD, Dialogues, Invertory, ItemClass. Но задумался о производительности, несмотря на полную поддержку движком WebGl и откат до Canvas в других браузерах, не будут ли тормозить все эти бесконечные for in и вложенные циклы внутри?
Не зря же все нормальные игры пишут на C++ по большей части логику именно в процедурном стиле. Ну и, конечно, сразу понимаю, что JS однопоточный... Поэтому решил не делать наследование с помощью красивого .extend(class, options), возможно зря, но было бы удобно рисовать окошки с шмотками, окно персонажа, диалоговые окна на готовых классах, что сильно поможет потом в скорости разработки. (Поправите если не прав). Конечно, можно все классы описать так: var mycl = function(){}. mycl.prototype.contstructor = mycl. mycl.prototype.methods, properties ... behavior (Как сделано в pixi.js) и не думать про for in, deep copy, map если у класса будет больше 500 строчек и 100 свойств. (не хочется время тратить, чтобы убедиться что все лагает ) :) соответственно вопрос...
У меня вопрос к игростроителям - можно ли использовать поверх game-loop архитектуру MVC ( Взять модель и LOGIC ( Соединяем Controller, Render )). Читаю игродев сайты, пишут про statemachines и прочие сущности, посоветуйте как организовать модульно игру. И какую в моем случае архитектуру применить? Ссылки будут полезны. Спасибо за внимание, набиваю опыт и кругозор в новом направлении. Писать лапшу код не хочется :)
Мне кажется, вполне можно совмещать game loop для собственно геймплея и всякое MVC для интерфейса (который, как правило, не требует высокого FPS и не создает большой нагрузки).