Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.03.2013, 19:37
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Question Предрасчитанный бой. Способ организации отображения на клиенте.

Делаю игру, на подобие такой каких уже дофига, а именно на прокачку персонажа, с предрачитанными на сервере боями.
Уже несколько раз переписал полностью классы отвечающие за отображения сражения двух персов.
С предрасчетом боя на сервере нет проблем, там все четко рассчитывается и клиенту приходит строка с параметрами сражения. А вот как лучше поступить дальше?
Сейчас у меня происходит так: строка парсится, и из нее выдергиваются данные о каждом ударе, о том кто его нанес, какие повреждения должны быть нанесены жертве и тип удара. Вроде бы все ок, задумка ясна. Но по какой-то причине не получается нормально распределить удары между персонажами. Если бы бились двое, то все просто, но врагов может быть несколько.

Так вот, мне не нужно конкретное решение, меня интересует кто бы как сделал подобный алгоритм? Может быть навеется какой-то более интересный подход, чем у меня. Уже голова трещит с этой игрой. Или может кому-то уже доводилось делать такое

Старый 28.03.2013, 19:41
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Как это "не получается нормально распределить удары между персонажами", когда у тебя "выдергиваются данные о каждом ударе, о том кто его нанес, какие повреждения должны быть нанесены жертве".
Покажи строку.
__________________
мой пустой блог

Старый 28.03.2013, 19:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не в строке дело. Я уже сто раз проверял эти сроки. Блин, даже не знаю как объяснить..
Сама строка после первоначального разбиения выглядит так:
h-23:0 или так m-0:0 (m = missed)
в первой h означает hit (удар), далее уровень повреждения, а последнее число это индекс жертвы в массиве жертв. Эта строка передается в конструктор класса Hit, в котором все раскладывается по полочкам. Все эти объекты hit попадают в общий массив ударов для сценария боя. А далее берется первый удар, проверяется кто его нанес, к этому персонажу добавляется слушатель завершения удара и дается команда идти и нанести удар. Он идет, наносит удар, при этом "использованный" объект Hit вырезается из массива простым _hits.shift();
И в качестве действующего удара опять назначается удар, находящийся на нулевом индексе. И все сначала. Вроде бы все должно быть ок. Но вот время от времени объекты hit относящиеся к первому персонажу заканчиваются, а здоровье у него не на нуле. И в этот момент оба перса тупо останавливаются и ничего больше не делают.
Уже и на свой серверный алгоритм грешил, может там что не верно. Брал калькулятор, просчитывал все показатели, по всему должен был бы сдохнуть, а нет, жив.

Пришел к выводу, что подход кривой. А посему нужна какая-то другая идея. Может слегка другая реализация этой же идеи, в общем, не знаю.. Что-то я в тупик зашел

Старый 28.03.2013, 20:01
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 4  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Что-то как-то сложно.

Старый 28.03.2013, 20:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Тоже не очень понял, в чем проблема.
Описал в третьем посте.

Я не проблему прошу помочь найти, а подкинуть идею как это можно по-другому реализовать. Я уже готов переписать весь сценарий боя с нуля, пофиг. Главное нормальный подход найти.

Старый 28.03.2013, 20:08
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я баттл 5х5 далал так:
1. сервер просчитывал весь протокол баттла до самого конца
2. на каждом шаге баттла были данные о юнитах, виде удара и дамадже
3. я выбирал для каждого шага пару юнитов и показывал анимацию, после чего переходил к следующему шагу

все

Да, работал без слушателей - по таймингу.
В смысле - ничего не слушал от юнитов.

Старый 28.03.2013, 20:11
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Ну, в принципе идея та же, что и у меня.
А где можно глянуть как это работает?
или еще нет проекта?

Старый 28.03.2013, 20:15
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 8  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
А где можно глянуть как это работает?
В Землях шаманов на ВК или ОК, там до стадии множественного боя с обоих сторон проект не дошел, но баттл впятером против одного босса работает. В принципе, клиенту все равно сколько было показывать, не случилось решения на уровне геймдизайна.

А в прототипе баттла было как раз 5х5.

Старый 28.03.2013, 20:48
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 9  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
У меня небыло расчитанных на сервере боев. Но была пошаговая тактика типа desiples, где бой записывался, а потом законченный бой можно было посмотреть в отдельном окне. Данные тоже приходили строкой, xml-кой, чтобы было проще парсить, но это не важно. Точно так же я брал итем за итемом и отображал на экране, что происходит. Только, я уже говорил, я не очень люблю событийную систему, поэтому у меня просто вызывалась функция nextAction() сцены боя по окончанию нанесения удара.
Честно говоря, мне тяжело представить себе какую-то другой способ запрограммировать подобную боевку.
Пока что выглядит так, как будто у тебя где-то объект "съедает" GC. Ну, исходя из "Но вот время от времени объекты hit относящиеся к первому персонажу заканчиваются, а здоровье у него не на нуле". Локальный объект, который подписан на событие, но на который нет глобальной ссылки? Мы тут недавно доказали, что такие объекты GC таки кушает, несмотря на слушатель.
__________________
мой пустой блог

Старый 28.03.2013, 21:48
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
но на который нет глобальной ссылки?
Глобальная ссылка есть. Он лежит в массиве.
Его сборщик мусора не убивает. У меня стоят проверки на количество объектов.
Но раз уж других идей нет, то пока эту попилю. Возможно где-то простейшая оплошность какая-то, но еще не нашел где и какая

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.