В общем, планируется небольшая браузерная игра с мультиплеером и шлю.. плюшками =)
Входные данные:
За плечами есть опыт коммерческой разработки на C#. Отсюда, JS в его чистом виде с прототипно-ориентированным стилем не привлекает, более по душе синтаксис
TypeScript. Ну, и в качестве IDE, соответственно, до боли знакомая
Visual Studio Community.
Сам проект логически разбиваю на 3 дочерних проекта:
- клиентская часть (скорее всего в виде одностраничного приложения) -
Backbone.JS
- серверная часть на сокетах -
Node.JS
- игровой клиент (будет подгружаться клиентской частью, но для упрощения процесса разработки выношу отдельным проектом) -
PhaserПринцип работы:
Пользователь авторизуется на сайте, после чего переходит на страницу с игрой. При авторизации открываем сокет-соединение, которое в последующем "подхватываем" в игре.
Структуру проекта вижу примерно следующим образом:
Solution/
--libs/
----typings/
----node_modules/
--client/
----app/
------static/
------views/
------models/
------collections/
------app.ts
----index.html
--server/
--game/
----states/
----prefabs/
----app.ts
Где
- папка libs - все используемые проектами зависимости (решил не плодить таковую в каждом отдельном проекте).
- серверная часть будет частично заимствовать логику клиентской (точно пока структуру файлов набросать не могу)
Собственно, основной вопрос:
Мучает организация клиентской части: оставить, как есть, либо видоизменить следующим образом:
--client/
----app/
------modules/
--------demo-module/
----------static/
----------views/
----------models/
----------collections/
------app.ts
----index.html
То есть, разбить на (не)зависимые модули (например, та же игра является неким отдельным модулем). Такое разбиение кажется вполне логичным, но боюсь, что с ростом проекта такой подход может вызвать сложности с ростом зависимостей между модулями (всё-таки не в сказочном мире живём, когда удаётся полностью независимые создавать).
Собственно, основной вопрос в структуре приложения и рациональности выбранных инструментов, подхода к реализации.
Ну, и конечно же:
Буду благодарен за аргументированную критику и советы
P. S::
Не хочу ASP.NET в качестве backend-а и про Angular знаю