![]() |
|
||||||||||
|
|||||
|
Хм, забавно. Я всегда представлял себе модель как "полное состояние игры", по которому можно восстановить процесс игры полностью. То есть, имея на руках модель и сериализатор этой модели можно сохранить её куда нибудь (например, в SharedObject), а потом загрузить, получив ту же самую ситуацию. То есть угол поворота шарика для бильярда — речь о том угле, который крутит шар в оси, который, по сути, меняет только положение циферки-номера шара на шаре — вот он не попадает в модель, потому что неважный. А координаты, соответственно, попадают.
Вообще именно ты мне рассказал об MVC и образовал в моей голове костяк информации об этой теме, а сейчас рушишь мои пирамиды знаний ) Как на самом деле?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И координаты не попадают
![]() В модели хранится ровно та информация, которая действительно необходима всему приложению. |
|
|||||
|
В бильярде я вижу такую модель игры:
GameModel - Players:Player (Array) - Balls:Ball (Array) - turnId:int (индекс в массиве players) - misc (ерунда, вроде рейтинговый матч или нет/and so on) Соответственно Ball имеет x,y,scored,num. Почему x,y не нужны всему приложению? Они нужны вьюхе. Кроме того, получив состояние игры с сервера нужно как-то расположить шары на поле. Приказывать вьюхе прямо? Последнее время мне совсем не нравится это дело. Приказы контроллер-вью я передаю через модель.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
x, y больше никому, кроме вью и не нужен, соответственно нет смысла хранить это и на сервере, он все равно не справится с контролем каждого клиента.
|
|
|||||
|
Ну так, примерно понятно. То есть можно трактовать это так: "в модели хранится то, что гипотетически может быть послано на сервер". В двойных кавычках, конечно.
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
По мне, тут нет однозначного правила.
В ммо - всегда хранятся координаты персонажей, например. В бильярде - Xто Знает. Как решено проверять логику, если не надо проверять на физику ударов от читеров, то координаты и не нужны.. Хотя для реконнектов всё равно пригодились бы..
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
Ну вот, вернулись в самое начало. Что хранит в себе модель? Контроллер знает о координатах вью, но меняет их через модель которой эти координаты как мертвому припарка. Или как? в модели есть состояния - идет/стоит, а вьюха видя состояние модели чалится вперед/стоит на месте, то-есть алгоритм движения во вьюшке а управляет этим алгоритмом контроллер через состояние модели?
Добавлено через 2 часа 6 минут А. Модель хранит в себе то, что необходимо в конкретной ситуации(имеется ввиду не в определенный момент времени, а реализация проекта)? Контроллер принимает решения типа "Нада памыть пасуду" и т.п. а вьюшка уже идет и моет посуду, идет она по своей воле ее не толкает контролер, а модель просто знает чем сейчас занята вьюшка, и если пользователь пхнет мышой во вьюшку, мол хватит, вьюшка сама по себе не перестанет мыть посуду(ну чисто визуально), она посылает контроллеру вопрос - мол хватит?, контроллер оценит степень чистоты посуды и вынесет решение - модель, мыть посуду еще 10 секунд. Вьюшка слушает изменения модели и через 10 сек заканчивает. Ну вот, снова получилось "на пальцах" и никакой конкретики. Последний раз редактировалось cr0w312; 03.03.2011 в 08:09. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Psycho Tiger, ну вот, в бильярде координаты серверу уж точно не нужны. Он просто не сможет гонять шары для всех-всех пользователей, никаких серверов не хватит (это к твоему вопросу насчет контроля).
Котяра, а что реконнект, клиент может и не закрывать сессию, отвалился-подключился, сервер состояние и так помнит. cr0w312, насчет изменения координат — всё зависит от конкретного проекта. В общем случае обязанности не распределишь. Если это бильярдный шар, то гоняет его вьювер-контейнер. Если это персонаж на локации, то его может гонять сама модель по заранее просчитаному пути, например. Если машинка какая-то, то тут уже контроллер ею может управлять. Про мытьё посуды почти так, только модель о вьюверах вообще ничего не знает никогда. Контроллер при получении события может оценить прогресс и, либо остановить процесс, путем изменения состояния модели, либо продолжить. |
|
|||||
|
Могу пример привести из моего любимого Toribash.
Физика там вся в клиенте, во вьюхе. На сервак отправляются просто команды следующего хода - согнуть коленку, выпрямить локоть. Сервак пересылает клиенту номер рас команды от клиента номер два, а клиенту номер два команды от клиента номер рас. Потом оба клиента получив оба пакета команд у себя это отрисовывают, независимо от сервера (модели). Как-то так. Такую же картину вижу и в бильярде. Если это мультиплей то координаты х.у. модели не нужны, (под моделью в данной ситуации я понимаю модель игры на сервере), в модели хранится только последний удар. Кто ударил по какому шару, и в какой точке. А дальше обе вьюхи оппонентов без проблем могут по серии этих ударов воссоздать всю партию. Так как физика в обоих вьюхах одинаковая.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Dukobpa3, ну да, примерно так. Только физику надо округлять, чтобы точно было одинаково.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|