0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
1

Какую клиент-серверную архитектуру лучше использовать для многопользовательской игры

18.09.2014, 18:37. Показов 4824. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Более-менее подучил C#, есть небольшой опыт написания приложений WinForms и WPF.
Сейчас появилась идея реализации сетевой многопользовательской игры. Собственно, сам вопрос - насчет архитектуры игры.
Логика игры продумана, необходимые классы почти дописал. Хочу написать сервер, собственно - все действия будут происходить на сервере. Планирую использовать протокол TCP/IP для связи сервера с клиентами. Но, тут наткнулся на трехзвенную архитектуру, подумал - почему бы не организовать некоторую БД игроков, их статистика, рейтинг и т.п.

Так вот, сам вопрос - какую клиент-серверную архитектуру лучше использовать для этих целей - двухзвенную (клиенты и сервер приложения + на сервере организовать хранение данных об игроках) или трехзвенную (клиенты, сервер приложения и сервер БД)?

А так же не нашел внятных примеров трехзвенной архитектуры в приложениях, если у кого-то найдется - буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2014, 18:37
Ответы с готовыми решениями:

Какую архитектуру баз данных лучше использовать?
8-)

Какую архитектуру баз данных лучше использовать
Всем привет, на этапе очередного хобби замута столкнулся с аспектом организации баз данных. По...

Какую архитектуру двухколоночного макета сайта лучше использовать?
Здравствуйте! Меня интересует построение макета сайта с помощью двух колонок. В своем сайте я...

Как лучше спроектировать систему и какую архитектуру разработки приложения использовать?
Всем привет, ситуация такая: Сейчас появилось время и решил снова заняться разработкой САПР для...

9
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 09:24 2
Цитата Сообщение от Blaize Посмотреть сообщение
какую клиент-серверную архитектуру лучше использовать для этих целей
Каких целей? Они не озвучены.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 09:31  [ТС] 3
Цитата Сообщение от Blaize Посмотреть сообщение
Сейчас появилась идея реализации сетевой многопользовательской игры. Собственно, сам вопрос - насчет архитектуры игры.
Логика игры продумана, необходимые классы почти дописал. Хочу написать сервер, собственно - все действия будут происходить на сервере. Планирую использовать протокол TCP/IP для связи сервера с клиентами. Но, тут наткнулся на трехзвенную архитектуру, подумал - почему бы не организовать некоторую БД игроков, их статистика, рейтинг и т.п.
Карточная игра с ролевой системой. Как лучше это реализовать? Понятно, что будет сервер, все действия происходят на сервере - клиенты лишь отображают действия отдельных пользователей. Так вот, лучше использовать для хранения данных об игроках сервер приложений или использовать трехвенную архитектуру и организовать сервер БД отдельно?
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 09:54 4
Цитата Сообщение от Blaize Посмотреть сообщение
Карточная игра с ролевой системой.
Это не цель. Зависит все от того, чего необходимо добиться. Может сервер и вовсе не нужен - каждый клиент может выступать как клиент, так и сервер, а вся информация хранится локально. Какого типа должен быть клиент?
Потом, если даже сервер все-таки и нужен по каким-либо причинам, то необходимо знать какой объем пользователей он должен выдерживать.

Цитата Сообщение от Blaize Посмотреть сообщение
использовать трехвенную архитектуру
Обычно придерживаются такой классической архитектуры, но на практике может получиться нечто другое. Обычно основная проблема в расходах.
1
3596 / 2517 / 707
Регистрация: 02.08.2011
Сообщений: 6,791
19.09.2014, 09:59 5
Еще раз, а что в вашем понимании, 3-х звенное приложение? Просто определиться с терминами.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 10:13  [ТС] 6
Цитата Сообщение от I2um1 Посмотреть сообщение
Это не цель. Зависит все от того, чего необходимо добиться. Может сервер и вовсе не нужен - каждый клиент может выступать как клиент, так и сервер, а вся информация хранится локально. Какого типа должен быть клиент?
Потом, если даже сервер все-таки и нужен по каким-либо причинам, то необходимо знать какой объем пользователей он должен выдерживать.
Информация ни в кое случае не должна храниться локально, в этом весь смысл. Клиент должен только отображать процесс, который происходит на сервере. Все действия происходят только на сервере. Пользователь щелкнул мышкой в область клиентского окна - данные передались на сервер, сервер среагировал - ответил.
Насчет количества пользователей. Вообще играют по двое. Сервер естественно должен обрабатывать хотя бы до нескольких сотен игроков одновременно: нашел противника - играешь, не нашел - ждешь подходящего.
Цитата Сообщение от IamRain Посмотреть сообщение
Еще раз, а что в вашем понимании, 3-х звенное приложение? Просто определиться с терминами.
Связка клиенты - сервер приложений - сервер БД (сама БД)
http://www.4stud.info/networking/img/3-tier.png
0
3596 / 2517 / 707
Регистрация: 02.08.2011
Сообщений: 6,791
19.09.2014, 10:17 7
Лучший ответ Сообщение было отмечено Blaize как решение

Решение

Вот к примеру:
1. Браузер
2. Веб-сервер
3. Сервер БД (служба клиент-серверной СУБД)
Обычно 2-3 рассматриваются как одно целое (данные везде хранить надо), в итоге обычные веб приложения не считаются 3-х звенкой. Поэтому не совсем понятен вопрос.


А вот такое:
1. Браузер
2. Веб-сервер
3. Веб-сервисы, которые хостятся на веб-сервере. От которых можно получать некоторый доп.функционал, в моем понимании. - Вот это уже полноценная трехзвенка.
В вашем случае это обычная двухзвенка, ну понятно, что с БД. Поэтому и спросил про то, как вы это понимаете.

Добавлено через 1 минуту
2 и 3 звено как одно целое рассматривается.

Добавлено через 1 минуту
Поправьте, если не прав.
1
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
19.09.2014, 10:19 8
Лучший ответ Сообщение было отмечено Blaize как решение

Решение

IamRain:
1. Клиентский код.
2. Бизнес-логика.
3. Код для работа с данными (не обязательно с СУБД).
Причем это все можно вместить в одно клиентское приложение и получить трехуровневую архитектуру. =)

А так согласен, что
Цитата Сообщение от Blaize Посмотреть сообщение
Связка клиенты - сервер приложений - сервер БД (сама БД)
двухровневая.
1
0 / 0 / 1
Регистрация: 05.06.2013
Сообщений: 13
19.09.2014, 10:23  [ТС] 9
Цитата Сообщение от IamRain Посмотреть сообщение
2 и 3 звено как одно целое рассматривается.
Честно говоря не задумывался об этом, точнее, не нашел внятного примера, реализации. Хотелось бы, конечно, чтобы все данные хранились только на сервере. Ну да, получается, в моем понимании это скорее двухзвенка с БД получается.

Добавлено через 54 секунды
Что ж, спасибо, открыли мне глаза, с архитектурой однозначно определился. Тему можно закрывать
0
3596 / 2517 / 707
Регистрация: 02.08.2011
Сообщений: 6,791
19.09.2014, 10:30 10
I2um1, мы говорим не про n-уровневые, а про n-звенные. Это разные вещи.
Вики говорит, что обычные веб-апп - трехзвенка. Хотя, думаю, это уже спорный момент.

Добавлено через 4 минуты
Трехзвенка - это что-то посерьезнее. Есть еще пиринговые системы, где каждый узел одновременно и клиент и сервер и бд распределена по всем им. (skype, torrent). Но это уже довольно сложно реализовать, по крайней мере, для меня.
0
19.09.2014, 10:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2014, 10:30
Помогаю со студенческими работами здесь

Какую архитектуру программы лучше выбрать?
Помогите, пожалуйста, определиться с подходом для решения следующей задачи: Реализую предметы,...

Какую ide лучше использовать для c++
какой ide лучше использовать для c++?

Какую функцию лучше использовать для линейной интерполяции
Здравствуйте! Есть опытные данные зависимости коэффициента k от параметров X,Y (зависимость...

Какую библиотеку лучше использовать для работы с файлами в с++?
Какую библиотеку лучше использовать для работы с файлами в с++? stdlib\fstream?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru