Как добавить здоровье игрокам в примере NetworkDemo от yoyo?
|
|
Initro | Дата: Четверг, 04 Декабря 2014, 13:32 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Привет всем, помогите очень срочно надо это реализовать в мультиплеере! Вот скачал ихний пример все понял как работает, но одно не понимаю как игрокам добавить здоровье, если для клиентов спрайт игрока только один, соответственно и объект один Помогите реализовать здоровья игрокам, все перерыл, не нашел ответа, иначе бы сюда не писал бы .
Буду благодарен, если поможете!
|
|
| |
Fill_Freeman | Дата: Четверг, 04 Декабря 2014, 13:56 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Насколько я помню, на сервере для каждого клиента создается экземпляр клиентского объекта. Соответственно в нем здоровье и хранить.
|
|
| |
Initro | Дата: Четверг, 04 Декабря 2014, 17:40 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Fill_Freeman, Да, но еще раз напомню, что один спрайт(объект) для всех клиентов и как определить какой именно объект принадлежит клиенту( чтобы отнимать здоровье), я не знаю
Сообщение отредактировал Initro - Четверг, 04 Декабря 2014, 17:41 |
|
| |
Kwant | Дата: Четверг, 04 Декабря 2014, 18:11 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| NetworkDemo от yoyo у меня нет, но тут, в целом, всё просто.
На сервере заводишь каждому соединению-клиенту свой ID. Как только кто-то подключился, ты создал ID, создал игровой объект, привязал к игровому объекту его ID и ещё послал клиенту в ответ какой у него ID - там тоже привязать его надо к объекту. Теперь у тебя игровой объект существует на сервере и с HP, и с его уникальным ID, как и на клиенте.
Осталось только реализовать обработку сообщений на клиенте: 1.Принять пакет 2.Разобрать пакет 3.В пакете должен быть ID и уровень HP 4.Найти объект с этим ID 5.Обновить его HP
Ну и последние, что нужно бы понимать, что пакеты разные, а приходят все в одно место, чтобы разделить логику их обработки нужно как то Классифицировать эти, самые, пакеты - это значит, что нужно им тоже завести свои идентификаторы, но они уже буду обозначать то, какое событие произошло (подключение, обновление HP, смерть игрока и тому подобное).
Структура пакета будет, примерно, такой: [PID, UID, <data>]
Где: PID - идентификатор события UID - идентификатор игрового объекта <data> - твои, любые, данные
Для рассылки здоровья будет так: [2, 1, hp] - Тип пакета: 2 - обновление здоровья; для игрового объекта 1, уровень здоровья: hp
Ну, как то так, надеюсь, что понятно с этим. Если у тебя подобное вызывает сложности, то тебе стоит больше почитать теории какой либо, в области создания сетевых игр.
Сообщение отредактировал Kwant - Четверг, 04 Декабря 2014, 18:19 |
|
| |
Initro | Дата: Четверг, 04 Декабря 2014, 18:26 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Kwant, Спаибо!, но все же есть ли кто поможет именно с этим примером?
Сообщение отредактировал Initro - Четверг, 04 Декабря 2014, 18:30 |
|
| |