Понедельник, 11 Ноября 2024, 06:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Выстрел в сетевой игре.
СибирскийДата: Суббота, 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
почетный гость
Сейчас нет на сайте
Сибирский, не за что. На самом деле, я уверен, что есть способы еще проще, просто пока не было необходимости думать над этим серьезнее. ; )
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг