Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Не браузерные МО, ММО - C++

02.10.2011, 09:34. Просмотров 2164. Ответов 44
Метки нет (Все метки)

С чего начинать разработку не браузрной МО или ММО? Как делать регистрацию? Где хранить аккаунты? Где хранить игровые данные? Нужен ли игре форум? Как делать чат? Я хочу сделать 3D с помощью OpenGL. Есть по этой библиотеке какие нибудь туториалы? Как без директа делать звук? Как делать обмен между сервером и клиентами? Следует ли предпочесть UPD, или TCP? Какие данные передавать? Исходную 3D геометрию + текстуры, или готовое видео? А может модели с текстурами хранить на клиентах, а передавать только положения и ориентации? А может скомбинировать? Модели и текстуры предметов хранить на клиентах, а геометрию и текстуры местности передавать с сервера? На сколько сложно сделать войс-чат? Посоветуйте среду для разработки клиента, чтоб его можно было с минимальными затратами собрать для Windwos, alt LINUX, UBUNTU, XUBUNTU. Возможна ли сборка подо всё перечисленное на винде? Как писать, чтоб можно было собирать для всего перечисленного, не залезая в исходник? Как делать ботов для игры? Предположим, космическая леталка. Как для неё сделать бота? Как делать баланс в игре? Как делать экономику?
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 09:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не браузерные МО, ММО (C++):

Пошаговые ММО: что посоветуете? - MMO игры
Всем привет! Ищу интересные пошаговые ММО-игрушки, может знает кто какие, подскажите =) Играл в TimeZero, но маилру как всегда испортил...

Сборка системника для ММО игр - Игровой компьютер
Добрый день, решил обновить свою машину для ММО игр. В планах приобрести Мать : AsRock Z77 PRO3 (Было Asus P8P67 LE) Видеокарта -...

Выбор SSD для системы и пары ММО - SSD
Здравствуйте! Доброго времени суток! Пожалуйста, помогите выбрать SSD. Сам я не разбираюсь в контроллерах, долговечности, деградировании...

Браузерные артефакты? о.о - Windows 8, 8.1
В общем пару дней назад начала появляться вот такая чушь: ...

Браузерные ограничения JS - JavaScript
Во всех известных мне браузерах столкнулся с запретом на передачу информации между окнами ( и фреймами в т.ч. ). Т.е. var w =...

Delphi и браузерные игры - Delphi
Всем доброго времени суток! Интересует такой вопрос - можно ли, как нибудь, получить значения здоровья, маны, количество игровых денег и тд?

44
LosAngeles
Заблокирован
02.10.2011, 09:41 #2
Цитата Сообщение от taras atavin Посмотреть сообщение
С чего начинать разработку не браузрной МО или ММО?
собрать команду естественно



Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать регистрацию?
Цитата Сообщение от taras atavin Посмотреть сообщение
Где хранить аккаунты?
Цитата Сообщение от taras atavin Посмотреть сообщение
Где хранить игровые данные?
Цитата Сообщение от taras atavin Посмотреть сообщение
Я хочу сделать 3D с помощью OpenGL
Цитата Сообщение от taras atavin Посмотреть сообщение
Как без директа делать звук?
Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать обмен между сервером и клиентами?
амбиции у тебя непомерные. Один человек впринципе всё сделать не сможет, тем более с нулевыми знаниями во всех областях одновременно, попробуй хотя бы приличные танчики написать для начала...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 10:18  [ТС] #3
Цитата Сообщение от LosAngeles Посмотреть сообщение
ем более с нулевыми знаниями во всех областях одновременно
Знание языка у меня не нулевое, СУБД знаю. Я новичок только в игрострое и сетевом программировании. И без директа - не значит без библиотек.

Добавлено через 8 минут
Давайте начнём с разбора таких вопросов:
1. Где делать регистрацию? В клиенте, или на сайте?
2. Для хранения аккаунтов использовать СУБД, или хранить в файле данных самого приложения? Если СУБД, то какую?
3. Для хранения игровых данных использовать СУБД, или хранить в файле данных самого приложения? А может в оперативе? Если СУБД, то какую?

Добавлено через 2 минуты
Цитата Сообщение от LosAngeles Посмотреть сообщение
собрать команду естественно
Ну а помимо команды? Какие аспекты дизайна надо рассмотреть в первую очередь? Какие части сервера и клиента пишутся первыми?

Добавлено через 3 минуты
И ещё. О качестве игры в первом посте ни слова, а кривоподелуха по силам любому и в одиночку. Не хотелось бы кривоподелуху, но на сколько смогу. ММО - крайне сомнительна, а просто интернетная МО - вполне вероятна.
0
Nick Alte
Эксперт С++
1640 / 1012 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
02.10.2011, 10:37 #4
Цитата Сообщение от taras atavin Посмотреть сообщение
1. Где делать регистрацию? В клиенте, или на сайте?
Встречаются и такие, и такие варианты, иногда сразу оба. По большому счёту, без разницы, с учётом ответа на следующий вопрос.

Цитата Сообщение от taras atavin Посмотреть сообщение
2. Для хранения аккаунтов использовать СУБД, или хранить в файле данных самого приложения? Если СУБД, то какую?
Разумеется, только СУБД и только на сервере. Клиенту только предоставлять доступ для проверки пароля, при этом должен соблюдаться безопасный протокол "доказательства с нулевым знанием". То есть, сервер не должен знать сам пароль, должен хранить только его хэш. Для авторизации сервер предъявляет некую случайно сгенерированную информацию, клиент обрабатывает её хэшем пароля и предъявляет серверу, тот сравнивает с результатами такой же операции на своей стороне. Что до выбора СУБД, то нужно выбирать что-то по возможностям: что можно позволить себе с точки зрения финансов, что лучше знакомо, что потянет достаточно интенсивную работу с большим количеством игроков. Бывают варианты, когда проверку клиентов предоставляют сторонним организациям, но тут лучше всё самому.

Цитата Сообщение от taras atavin Посмотреть сообщение
3. Для хранения игровых данных использовать СУБД, или хранить в файле данных самого приложения? А может в оперативе? Если СУБД, то какую?
Все игровые данные, которые сохраняются между сессиями, хранить исключительно на сервере в СУБД, причём изменения вносить сразу же по мере их возникновения. Исключение - личные настройки пользователя, хотя и их можно на сервере хранить. По поводу СУБД - см. выше.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 11:27  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Разумеется, только СУБД и только на сервере.
То, что на сервере, это и так понятно.

Добавлено через 5 минут
Цитата Сообщение от Nick Alte Посмотреть сообщение
при этом должен соблюдаться безопасный протокол "доказательства с нулевым знанием". То есть, сервер не должен знать сам пароль, должен хранить только его хэш. Для авторизации сервер предъявляет некую случайно сгенерированную информацию, клиент обрабатывает её хэшем пароля и предъявляет серверу, тот сравнивает с результатами такой же операции на своей стороне
Сервер сгенерил случайное число, или несколько таких чисел и передал клиенту. Как теперь считатется хэш? Передал клиент этот хеш на сервер. С чем его сравнивать? Ведь если сервер не знает пароля, то не сможет вычислить его хеш. Значит надо подставить полученный хеш в обратную функцию. Как её определить? Понятно, что при разработке. Но как?

Добавлено через 3 минуты
Цитата Сообщение от Nick Alte Посмотреть сообщение
По большому счёту, без разницы
Тогда в клиенте.

Добавлено через 2 минуты
А в какой интегрированной среде лучше делать клиент, чтоб его можно было без изменения исходника собрать под разные операционные системы? JAVA и C# просьба не предлагать.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.10.2011, 11:31 #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Исходную 3D геометрию + текстуры, или готовое видео?
НУ БОЖЕ Ж МОЙ!

Вы СЛИШКОМ МНОГО НА СЕБЯ БЕРЁТЕ. Нулевые знания вкупе с отсутствием навыка использовать Гугл (а вопрос про туториалы по OpenGL говорит именно об этом. Вам MSDN), даёт чёткую уверенность в невозможности завершить этот проект в долгосрочной перспективе.

Тут каждое предложение это ОЧЕНЬ большой раздел, который не рассмотреть в рамках форума, не то что одной темы.

И я позволю себе добавить ещё вопросы к твоему списку:
Как нарисовать графику? Как построить 3D модель? Как записать звуки и музыку? Как загрузить модель в игру? Что такое UV-mapping? Как синхронизировать действия игроков? Как придумать сценарий?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 11:36  [ТС] #7
Необратимость или стойкость к восстановлению прообраза: для заданного значения хеш-функции m должно быть вычислительно невозможно найти блок данных X, для которого H(X) = m.
Стойкость к коллизиям первого рода или восстановлению вторых прообразов: для заданного сообщения M должно быть вычислительно невозможно подобрать другое сообщение N, для которого H(N) = H(M).
Стойкость к коллизиям второго рода: должно быть вычислительно невозможно подобрать пару сообщений , имеющих одинаковый хеш.
А с чем тогда сервер будет сравнивать поученный хеш?

Добавлено через 41 секунду
Цитата Сообщение от Deviaphan Посмотреть сообщение
Как построить 3D модель? Как записать звуки и музыку?
Ну это как раз известно.

Добавлено через 33 секунды
Цитата Сообщение от Deviaphan Посмотреть сообщение
Как загрузить модель в игру? Что такое UV-mapping?
Тем более.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.10.2011, 11:37 #8
Цитата Сообщение от taras atavin Посмотреть сообщение
Тем более.
Ну это же прекрасно! Теперь остались только сложные вопросы решить.(
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 11:45  [ТС] #9
Цитата Сообщение от Deviaphan Посмотреть сообщение
Как синхронизировать действия игроков? Как придумать сценарий?
Что значит "синхронизировать"? Это игра, а не синхронное плавание. А место второго вопроса должен занимать "С каких аспектов начинать диздок?".

Добавлено через 2 минуты
Вообще http://ru.wikipedia.org/wiki/%D0%9A%...86%D0%B8%D1%8F - это о том хеше, или о чём то другом?

Добавлено через 4 минуты
Конкретная хеш-функция должна быть засекречена?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.10.2011, 11:51 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от taras atavin Посмотреть сообщение
Что значит "синхронизировать"? Это игра, а не синхронное плавание.
По лесу шёл Злобный Тролль. Шёл, никого не трогал, как вдруг, на опушке леса увидел прекрасную принцессу, которая собирала ягоды. Тихо к ней подкравшись, Тролль отвесил принцессе пенделя. Взвизгнув принцесса скрылась за горизонтом...
Компьютер 1: принцесса пролетела 100500 метров и упала в озеро. Прекрасный принц вытащил её, откачал и они жили долго и счастливо.
Компьютер 2: принцесса пролетела 100499 метров (погрешность вычислений, пичалька), зацепилась за вершину дерева, вспорола себе живот и так и осталась висеть, разлагаясь под палящим солнцем. Принцу она, почему-то не понравилась.
Для остальных 100 компьютеров развития событий тоже могут пойти по разному.
Как будешь синхронизировать, чтобы одно и то же действие имело одни и те же последствия на всех компьютерах сети?

P.S. Если думаешь, что я прикалываюсь, то спешу тебя расстроить. Это реальная проблема, возникшая при разработке игры Blac&Whit, только я персонажей поменял.
Читал блоги разработчиков.)
3
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 11:55  [ТС] #11
Пусть некий клиент, с именем name, производит аутентификацию по парольной фразе, pass, на некоем сервере. На сервере хранится значение хеш-функции H(pass,R2), где R2 - псевдослучайное, заранее выбранное, число. Клиент посылает запрос (name, R1), где R1 – псевдослучайное, каждый раз новое, число. В ответ сервер посылает значение R2. Клиент вычисляет значение хеш-функции H(R1,H(pass,R2)) и посылает его на сервер. Сервер также вычисляет значение H(R1,H(pass,R2)) и сверяет его с полученным. Если значения совпадают – аутентификация верна.
В такой ситуации пароль не хранится открыто на сервере и, даже перехватив все сообщения между клиентом и сервером, криптоаналитик не может восстановить пароль, а передаваемое хеш-значение каждый раз разное.
А откуда на сервере стал известен пароль, чтоб вычислить H(pass,R2)?

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
По лесу шёл Злобный Тролль. Шёл, никого не трогал, как вдруг, на опушке леса увидел прекрасную принцессу, которая собирала ягоды. Тихо к ней подкравшись, Тролль отвесил принцессе пенделя. Взвизгнув принцесса скрылась за горизонтом...
Компьютер 1: принцесса пролетела 100500 метров и упала в озеро. Прекрасный принц вытащил её, откачал и они жили долго и счастливо.
Компьютер 2: принцесса пролетела 100499 метров (погрешность вычислений, пичалька), зацепилась за вершину дерева, вспорола себе живот и так и осталась висеть, разлагаясь под палящим солнцем. Принцу она, почему-то не понравилась.
Для остальных 100 компьютеров развития событий тоже могут пойти по разному.
Как будешь синхронизировать, чтобы одно и то же действие имело одни и те же последствия на всех компьютерах сети?
Но ведь расстояние посчитано один раз на сервере! Оно не может иметь 100 разных ошибок округления.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.10.2011, 11:56 #12
Цитата Сообщение от taras atavin Посмотреть сообщение
Но ведь расстояние посчитано один раз на сервере!
Вот видишь! Ты уже принял решение, все физические расчёты выполнять на сервере. Уверен, что производительности сервера хватит?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.10.2011, 11:59  [ТС] #13
А ты предлагаешь доверить расчёты клиенту? Мало того, что кто нибудь обязательно в них влезет, так они ещё и насчитают каждый своё. А у кого нибудь точно не хватит или сети, или ЦП или посчитать всю динамику, или получить для неё данные. На роль же сервера выбирают мощную машину, но так как суперкомпьютер мне не свети, то
Цитата Сообщение от Deviaphan Посмотреть сообщение
Ты уже принял решение, все физические расчёты выполнять на сервере. Уверен, что производительности сервера хватит?
становится ещё одним аргументом против реализуемости ММО. Но не МО вообще. Спектруму и то хватало камня на все расчёты в космическом сингле. Думаешь пень четвёртый после этого не потянет все расчёты игроков для 16-ти? А со временем будет и многоядерный, то есть как раз мощный комп.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.10.2011, 12:03 #14
Я ничего не предлагаю. Ты проектировщик, ты принимаешь проектные решения. Я лишь задаю наводящие вопросы.

Если сто магов одновременно разрушат 100 домов в разных частях мира, сервер сможет вычислить происходящие разрушения в реал-тайм? (А скомпилировать потоковое видео высокой чёткости для 100 игроков одновременно и передать его в сеть?)
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
02.10.2011, 12:04 #15
Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать регистрацию? Где хранить аккаунты?
Лучше всего через сайт

Цитата Сообщение от taras atavin Посмотреть сообщение
Где хранить игровые данные?
На сервере

Цитата Сообщение от taras atavin Посмотреть сообщение
Нужен ли игре форум?
Обязательно

Цитата Сообщение от taras atavin Посмотреть сообщение
Какие данные передавать?
При самом запуске приложения, оно должно считать с серверной части размещение объектов (не текстур, а объектов). Текстуры же должны хранится в клиентской части. Передавать нужно размещение игроков относительно объектов и других игроков.

Цитата Сообщение от taras atavin Посмотреть сообщение
Посоветуйте среду для разработки клиента
QT

Цитата Сообщение от taras atavin Посмотреть сообщение
Возможна ли сборка подо всё перечисленное на винде?
Возможна, с незначительными изменениями

Цитата Сообщение от taras atavin Посмотреть сообщение
Как писать, чтоб можно было собирать для всего перечисленного
Писать исключительно по стандарту языка

Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать ботов для игры?
Бот понятие очень большое.

Цитата Сообщение от taras atavin Посмотреть сообщение
Как для неё сделать бота?
Зависит от того что бот должен делать.

Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать баланс в игре?
Баланс чего?

Цитата Сообщение от taras atavin Посмотреть сообщение
Как делать экономику?
Придумать некоторую игровую валюту, потом сравнивать ее количество, количество "опыта", для получения новых навыков
0
02.10.2011, 12:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2011, 12:04
Привет! Вот еще темы с ответами:

Зависают браузерные игры((( - Windows XP
Начинаешь играть, минут через десять игра виснет, по совету техподдержки обновил флэш, не помогает, в разных браузерах та же хрень....

Браузерные Flash игры - MMO игры
Здравствуйте, друзья... Я люблю поиграть в Flash игры на работе... Подскажите, какие вы знаете сайты с Flash играми?

текстовые браузерные игры - PHP
Здравствуйте. Подскажите пожалуйста, какие знания нужно иметь, или может есть какая cms для создания текстовых браузерных игр? Вроде...

Unity+WebGL. Браузерные игры - Unity, Unity3D
Толком ничего не нагуглил... Подскажите, пожалуйста, хороший русскоязычный туториал / манул по разработке брайзерных игр на юнити. Так...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru