Выстрел в сетевой игре.
|
|
Сибирский | Дата: Суббота, 01 Октября 2011, 12:10 | Сообщение # 1 |
Javatar
Сейчас нет на сайте
| Способы реализовать выстрел в теории?
|
|
| |
Riftstalker | Дата: Суббота, 01 Октября 2011, 14:09 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| А в чем конкретно у вас проблема с реализацией выстрела? о_О
|
|
| |
Сибирский | Дата: Суббота, 01 Октября 2011, 14:11 | Сообщение # 3 |
Javatar
Сейчас нет на сайте
| Riftstalker, вопрос, какие варианты есть, проблемы пока нет
|
|
| |
Riftstalker | Дата: Суббота, 01 Октября 2011, 14:20 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Самый простой способ: создайте класс некой сферы, которая имеет координаты месторасположения в игровом мире и диаметр, добавьте метод определения пересечения этих двух представителей класса. И вот вам пули, мишени и коллбэк на "хит".
Добавлено (01.10.2011, 14:20) --------------------------------------------- Если скорость снаряда, которым стреляем, достаточно высокая, а его размер достаточно маленький, то это всё можно игнорировать - оставить только сферу мишени, а от "стреляющего" брать только вектор направления и смотреть пересекается ли луч со сферой/перпендикулярной плоскостью.
Сообщение отредактировал Riftstalker - Суббота, 01 Октября 2011, 14:21 |
|
| |
Сибирский | Дата: Суббота, 01 Октября 2011, 14:26 | Сообщение # 5 |
Javatar
Сейчас нет на сайте
| Riftstalker, это для одиночной, так все понятно, а как передать другим?
|
|
| |
Riftstalker | Дата: Суббота, 01 Октября 2011, 14:32 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| По какой технологии осуществляется связь между игроками? Клиент-сервер?
|
|
| |
Сибирский | Дата: Суббота, 01 Октября 2011, 14:33 | Сообщение # 7 |
Javatar
Сейчас нет на сайте
| Riftstalker, да
|
|
| |
Riftstalker | Дата: Суббота, 01 Октября 2011, 14:41 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| Тогда все что вам нужно, это добавить идентификатор для каждой "мишени" (а может и для "пули" тоже - если, допустим, разное оружие наносит разный урон). Так как статус игроков у вас хранится на сервере, то делаете так: вычисление выстрела и его коллбэк определяете в клиентской программе, при получении положительного значения коллбэка - отправляете серверу пакет с ID/именем пули и мишени. На стороне сервера: на основе полученных данных вычисляете какой урон какому персонажу был нанесен.
Добавлено (01.10.2011, 14:41) --------------------------------------------- Только постарайтесь выстрел и отправку пакета сделать неразрывными (например, если у вас будет отдельная функция для выстрела, то "вшейте" туда отправку пакета), для того что-бы вашу игру было сложнее "хацкнуть". : )
Не было выстрела - не было пакета <=> не было пакета - не было выстрела. Делайте одну проверку на стороне клиента, вторую на стороне сервера.
Сообщение отредактировал Riftstalker - Суббота, 01 Октября 2011, 14:45 |
|
| |
Сибирский | Дата: Суббота, 01 Октября 2011, 14:44 | Сообщение # 9 |
Javatar
Сейчас нет на сайте
| Riftstalker, спасибо! Будет чуть проще, т.к. ТДС на андроид
|
|
| |
Riftstalker | Дата: Суббота, 01 Октября 2011, 14:49 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Сибирский, не за что. На самом деле, я уверен, что есть способы еще проще, просто пока не было необходимости думать над этим серьезнее. ; )
|
|
| |