самое интересное и важное на данный момент — синхронизация кадров:
1) разные скорости подключения = desync
2) разные мощности cpu = desync
3) «затыки»(stall) по сетке = desync
«хотя бы» 3 эти задачи покрыть если, то уже было бы супер.
сама передача-то данных — не очень интересно, т.к. реализация зависит от выбранного языка. больше интересны именно решения проблем с которым столкнется каждый при создании мультиплеера. Т.е. интересна статья не про сам транспорт (TCP/UDP на любимом языке), а именно решения конкретных задач — хотя бы синхронизация кадров. Ну или хоть с псевдо рандомайзера начать.
Я при разработке(2D аркада) отталкивался немного от другого: есть Location — по-сути просто координата в пространстве с различными состояниями, есть объект (наследник от координаты) и дальше по нарастающей — выстрел — наследник от объекта, наводящаяся ракета — наследник от выстрела, лазер — наследник от выстрела, корабль — наследник от объекта ну и т.п.
Всем этим рулит класс «игровое пространство», где через DirtyRectangles все отрисовывается/удаляется. как-то так.
Расширяемо — да, гибко — да. Единственное но — все заранее отрисованно в данный момент, хотя в принципе никто не мешает все это заменить на runtime отрисовку, но пока смысла не вижу.
интереснее всего было бы почитать статью про мультиплеер по сетке — сам борюсь и не победил все нюансы еще. Там ведь сразу много задач вылазит — начиная от псевдо рандомайзера, синхронизацией кадров и т.п.
но боюсь, что такую статью нам тут никогда не увидеть :)
слишком уж как-то примитивно что ли. в своей игре(как хобби) я использую базовый класс Controller который делает частично про что написано тут, но оперирует «состояниями» без привязки к клавишам и вообще типу контроллера: «вперед» — активно, «поворот влево» — активно, «огонь» — не активно.
Дальше сделал наследников этого класса — классы KeyboardController — где уже проверяются заданные клавиши, MouseController — различные состояния мышки, MixedController — (на самом деле в итоге я пришел к одному контроллеру — Mixed, в котором просто в зависимости от настроек проверяются либо клавиши, либо мышка для получения состояний котроллера. В результате можно использовать различные комбинации).
По такому же принципу я сделал AIController — это всего лишь наследник от Controller.
А так в целом схема примерно такая:
BasePlayer {
BaseContoller controller;
…
}
HumanPlayer {
MixedController controller;
…
}
AIEasyPlayer {
AIController controller;
…
}
AIHardPlayer {
AIController controller;
…
}
Что-то типа такого. Конечно такой расклад не подойдет для всех жанров(RTS, например), но для аркад вполне жизнеспособен.
а что php программисты уже не программисты? у меня, например, 10 лет c/c++, хотя последние лет 5 плотно сижу на php, т.к. интересно все что с веб. Правда сейчас еще c# подтягивать стал (Silverlight).
не надо говорить про «так было всегда». выше я уже писал про свой опыт. со мной такого «всегда» не было. другие все ваши письма доходили очень даже хорошо. Хотя если вы про то, что я должен был сам вам написать гневное письмо и умолять, чтобы вы перевели меня бесплатно на новую «мажорную» версию из-за того, что вы обновились и перестали поддерживать предыдущую — то да, тогда вы правы. Но что-то здесь не так.
лично мне таких писем не приходило. все что пришло — ура, настал новый год, новая программа, покупайте заново. Про бесплатный переход на новую «мажорную» версию тогда речи не было уж точно. Но сейчас это в любом случае уже не имеет значения.
в этом плане у них есть портал со статьями, так что «финансовый ликбез» обеспечен.
я говорил про другое немного — что это я х.з. как назвать когда бетатестят за мой счет и причем чтобы я продолжал быть их тестером, я должен каждый год платить по 20 у.е. что ли. Так же винда, игра и прочий софт — в выходом «мажорных» версий продолжают обновлять старые версии еще достаточно долгий период. А тут получается — вот тебе полуработающая хрень, мучайся как можешь год, а потом… пофиг на баги, хочешь и дальше багфиксы — покупай заново.
Я нормально отношусь к «подпискам на обновления», но когда это законченный продукт, а не поделка еле работающая. У меня точно так же есть и другие лицензионные продукты, та же IDEA и их же PhpStorm, но если там я плачу за продукт которым можно пользоваться и даже без апдейтов, то тут совсем другой расклад был. И проверять поменялось ли у них с тех пор что-то — желания никакого нет. Все это явно показало их отношение к своим клиентам.
Я не знаю как сильно поменялось что-то у вас, но вашим клиентом я больше не буду никогда. Мне хватило версии 2008 — продукт который я купил сам и рекомендовал тогда еще своим друзьям, которые его тоже купили. В результате после плотного использования, я понял, что продукт дырявый. Постоянно экспешены, учет в некоторых местах слетал и показывал неверные числа. Но я был готов все это терпеть это какое-то время, но когда через год меня пришло радостное письмо, что теперь я должен купить НОВУЮ версию 2009, чтобы получать дальнейшие апдейты — это уже было перебором. И это при том, что я постоянно отсылал баг-репорты и пожелания — те же ПИФы, чтобы добавили, я пинал постоянно, даже присылал данные откуда брать можно информацию. В общем от вашего продукта остался очень негативный оттенок и сейчас я никому его больше не рекомендую и это при том, что я был клиентом-мечтой — купил, рекомендовал, терпел злые баги(в программе для учета, нет хуже багов, чем баги в учете), слал баг-репорты, слал рекомендации по улучшению. Весь этот продукт в конце-концов напоминал, поделку студента самоучки, недавно узнавшего, что такое Дельфи/Builder. Кроме красивых «фантиков»(отчетов), в программе на тот момент ничего не было, чтобы ее можно было всерьез воспринимать.
Возможно сейчас что-то и изменилось, но дважды в одну и туже реку… да еще за мои деньги… ну уж нет.
p.s.: никаких ссылок приводить на сторонние ресурсы не буду. хотелось просто поделить своим опытом использования этого «продукта». не удивляйтесь, если вам придется еще вести учет, за программой для ведения учета.
1) разные скорости подключения = desync
2) разные мощности cpu = desync
3) «затыки»(stall) по сетке = desync
«хотя бы» 3 эти задачи покрыть если, то уже было бы супер.
Всем этим рулит класс «игровое пространство», где через DirtyRectangles все отрисовывается/удаляется. как-то так.
Расширяемо — да, гибко — да. Единственное но — все заранее отрисованно в данный момент, хотя в принципе никто не мешает все это заменить на runtime отрисовку, но пока смысла не вижу.
но боюсь, что такую статью нам тут никогда не увидеть :)
Дальше сделал наследников этого класса — классы KeyboardController — где уже проверяются заданные клавиши, MouseController — различные состояния мышки, MixedController — (на самом деле в итоге я пришел к одному контроллеру — Mixed, в котором просто в зависимости от настроек проверяются либо клавиши, либо мышка для получения состояний котроллера. В результате можно использовать различные комбинации).
По такому же принципу я сделал AIController — это всего лишь наследник от Controller.
А так в целом схема примерно такая:
BasePlayer {
BaseContoller controller;
…
}
HumanPlayer {
MixedController controller;
…
}
AIEasyPlayer {
AIController controller;
…
}
AIHardPlayer {
AIController controller;
…
}
Что-то типа такого. Конечно такой расклад не подойдет для всех жанров(RTS, например), но для аркад вполне жизнеспособен.
я говорил про другое немного — что это я х.з. как назвать когда бетатестят за мой счет и причем чтобы я продолжал быть их тестером, я должен каждый год платить по 20 у.е. что ли. Так же винда, игра и прочий софт — в выходом «мажорных» версий продолжают обновлять старые версии еще достаточно долгий период. А тут получается — вот тебе полуработающая хрень, мучайся как можешь год, а потом… пофиг на баги, хочешь и дальше багфиксы — покупай заново.
Я нормально отношусь к «подпискам на обновления», но когда это законченный продукт, а не поделка еле работающая. У меня точно так же есть и другие лицензионные продукты, та же IDEA и их же PhpStorm, но если там я плачу за продукт которым можно пользоваться и даже без апдейтов, то тут совсем другой расклад был. И проверять поменялось ли у них с тех пор что-то — желания никакого нет. Все это явно показало их отношение к своим клиентам.
dervish.ru/
но сам ей не пользуюсь, т.к. к тому когда узнал учет вел уже в другой платной.
но знакомый уже лет 5 ведет в ней и все ок вроде.
Возможно сейчас что-то и изменилось, но дважды в одну и туже реку… да еще за мои деньги… ну уж нет.
p.s.: никаких ссылок приводить на сторонние ресурсы не буду. хотелось просто поделить своим опытом использования этого «продукта». не удивляйтесь, если вам придется еще вести учет, за программой для ведения учета.