XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
[GUI/Jass] - Наработка пошагового боя "BattleTime"

Описание


BattleTime 1.0


Собственно, название этой наработки говорит само за себя. Наработка даёт возможность альтернативного ведения боя - пошагового, взамен реального. Это даёт возможность игрокам расслабиться, продумать всю битву, и служит нередко используемой игровой константой RPG.

Применение наработки очень узко-специализированное, однако, на мой взгляд, более оптимальное. Помимо этой наработки, насколько я знаю, на сайте присутствует всего одна наработка пошагового боя (на мой взгляд она слишком вялая).

Реализация


На XGM была уже не одна попытка создать систему пошагового боя, но лишь одна оказалась заслуживающей внимания. Одни предлагали строить под ногами кружки, другие - квадратами ограничивать проходимость. Здесь как и везде нет никакой "фишки" - "единица измерения хода" заняла место еды.

С версии 0.9 все баги, влияющие на играбильность, исправлены

Планируемые улучшения системы


- Оптимизация кода (сделано)
- Автоматический вход в бой когда вы близко к противнику (сделано)
- Введение мультиборда для просмотра ожидания своего хода (заменено на game strings, есть некорректности)
- Устранение багов (исправлено)
- Вычисление "очков действия" по формуле (сделано)

В версии 1.N планируются следующие изменения
- Запрет на удар при ОД меньше положенного (сделано к 1.1)
- Перенос оставшегося OD в следующий ход (сделано к 1.1)
- Отладка Strings (сделано к 1.1)
- Авто выход из боя на далеком расстоянии (сделано к 1.2)
- Умный AI
- Рассчёт атакующих по инициативе
- Более гибкая настройка системы
- Исправление бага с выполнением приказа предыдущего хода, если он закончился раньше выполнения приказа. (сделано к 1.1)
- Исправление бага с отрицательным значением пищи (сделано к 1.1)

Вопрос/Ответ


» Как импортировать наработку к себе в карту?

Чтобы импортировать наработку в свою карту требуется проделать ряд действий
1. Зайдите Дополнительно -> Игровые константы, поставьте галочку напротив пункта "Использовать нестандартные игровые константы" и измените значение поля "Расходы: пища" так, чтобы первое число равнялось 1, а следующие - 10000 (или любое другое максимально возможное число)
2. Зайдите Дополнительно -> Игровой интерфейс, поставьте галочку напротив пункта "Использовать нестандартный игровой интерфейс" и измените значения следующих полей:
"Пиктограмма: пища" - ReplaceableTextures\CommandButtons\BTNBootsOfSpeed.blp (или любую другую иконку которая вам по душе)
"Текст - Общий - Нет расходов" - |Cff00ff00Ход окончен
"Текст - Общий - Расходы - 30%" - |Cffffff00Ваш ход
3. Скопируйте все измененные способности и эффекты.
4. Добавьте всем героям, которые будут участвовать в бою способности "Неизбежность" и "Начать бой" Уберите у этих юнитов возможность атаковать.
5. Скопируйте все триггеры.
6. Настройте систему:
В триггерах из категории "GUI-часть" настройте систему под себя
В триггере AttackItem вы можете добавить свои условия отнятия очков действия за вещи и дописать урон, наносимый каждым предметом.
В триггере AttackSkill вы можете изменить количество очков действия, затрачиваемое на удар, а так же ввести собственную формулу вычисления урона (придется применить фантазию самим)

» Я хочу немного изменить наработку. Что значит каждая глобальная переменная?

Логические (boolean)
Battle - активируется при начале боя. Собственно обозначает когда битва началась, а когда закончилась
OvzorBattle - отвечает за включение/выключение автоматического начала боя при нахождении близко к противнику
NextTurn - выделяет время между ходами, нужна для предотвращения фатал еррора вследствии бага
String - отвечает за включение/выключение игрового текста наработки
Группы
BattleGroup - группа, собирающая в себя воюющих юнитов. Опустошается после инициализации боя.
BattleUnts - группа, собирающая в себя воюющих юнитов. Не опустошается, служит для ваших манипуляций, если фантазия позволит
Юниты
BattleHeroActive - обозначает игрока который ходит в данный момент
BattleUnit - обозначает отдельно каждого воюющего юнита (в массивах), принадлежащего к группе BattleUnits и BattleGroup.
NowN - в нее заносится случайный юнит с мапы, служит для отлова "Неизбежности". Не выполнено на локалке, чтобы не забивать участки памяти.
Интегеры
NumberTurnUnit - служит для отлова следующего ходящего
NumbUntAlly - служит для отлова следующего ходящего
OD - очки действия ходящего игрока

PointStartShag (точка) - откуда начался шаг
Shag (реальная) - расстояние, которое прошёл юнит
Прикрепленные файлы
Тип файла: w3x BattleTime0.7.w3x (34.9 Кбайт, 40 просмотров )
Тип файла: w3x BattleTime0.8.w3x (39.6 Кбайт, 23 просмотров )
Тип файла: w3x BattleTime0.9.w3x (38.4 Кбайт, 27 просмотров )
Тип файла: w3x BattleTime1.0.w3x (36.5 Кбайт, 126 просмотров )

Отредактировано theFT, 02.11.2009 в 17:14.
Старый 30.10.2009, 15:50
XOR

offline
Опыт: 38,159
Активность:
Ну... Неплохо, только сыровато, исправил баги бы и выкладывал имхо. И выложи что ли версию с jassом
Старый 30.10.2009, 16:05
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
XiMiKs, знаю знаю, мне просто важно знать как вам сама задумка, мб я зря стараюсь...
Старый 30.10.2009, 16:08
Rewenger
The culprit will not die
offline
Опыт: 35,873
Активность:
theFT, если уж гуи, то зачем конвертировать в текст?
А ещё я маленько не догнал, от чего зависит кол-во разрешённых атак? Мне показалось, что каждый раз оно разное.
Старый 30.10.2009, 16:09
XOR

offline
Опыт: 38,159
Активность:
Зависит от еды. Точнее еда как показатель ходов
Старый 30.10.2009, 16:12
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
Rewenger, там я просто для пробы поставил 60 очков. Конвертировал, чтоб глаз лишних не было, в финале планирую поставить на ГУИ лишь ту часть, что отвечает за переменные которые должен указать сам пользователь "под себя", а остальную часть оптимизировать. Уж извиняйте за громкие слова
Старый 30.10.2009, 16:13
laViper

offline
Опыт: 10,883
Активность:
Что насчет такой фишки как "Инициатива" например (вроде так называется в Героях 5). Ее смысл в том, что в бою существо с больше инициативой будет ходить раньше и чаще. (тоесть например при инициативе существ 3,5,10 существо с ин-й 10 сходит в 2 раза больше чем существо с ин-й 5).
Точно не знаю как сделано в HoMM5, но могу могу подсказать свой способ как это реализовать.
Старый 30.10.2009, 16:16
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
laViper, я конечно могу это сделать, но боюсь что придется менять основные характеристики и подстраивать под систему, а они ведь могут кому то понадобиться. Хотя если ты подскажешь отличный способ вычисления то пожалуйста...
Старый 30.10.2009, 16:25
Rewenger
The culprit will not die
offline
Опыт: 35,873
Активность:
theFT, ну поставить в установке начальных параметров "InitiativeMode = да" и прочие сеттинги...
Кстати, а неплохо бы сделать ещё и вариацию "неподвижной пошаговой". Это когда камера из-за спины ваших героев (напралена на врагов), персонажи не могут двигаться, только делать скиллы и по очереди. Или у каждого персонажа естьсобственный "таймер хода", который определяет, когда он может сходить (полосочками плавающего текста, скажем).
Старый 30.10.2009, 16:42
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
Rewenger, хм, насчёт параметра очень даже удобно получится...

Насчёт другого пошагового боя я подумаю)

Исправил баги
Старый 30.10.2009, 17:16
BK.Jugg
террорист из КиП
offline
Опыт: 27,066
Активность:
нормальная наработка, но имхо если атака требует 10 ед., то если < 10 ед., то атака невозможна?
Старый 30.10.2009, 17:28
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Если ты сделаешь что нибудь похожее на Fallout:tactic или на Silent Storm то наработка будет стоющей а так это очередной боян.
Старый 30.10.2009, 19:30
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
ELDAR, ссылку где ты видел что-то похожее на движке вара, чтобы стояще говорить что это "боян". Я делаю то что видел в игре "Златогорье 2" и в будущем стараюсь перемешать с UFO Aftermath. ИМХО это люди хотят видеть. Я бы хотел.
Старый 30.10.2009, 20:08
laViper

offline
Опыт: 10,883
Активность:
Через инициативу делается до банальности просто - суммирование и обнуление. Возьмем 3 существа с инициативой 5, 6 и 11 (это значит что I и II юнит хождят примерно одинаково быстро, а III в два раза быстрее - но для I больше чем в 2 раза, для II менее)
и так каждый ход накапливаем инициативу и передаем ход тому у кого MAX при этом обнуляя ее.
I II III
5 6 11 - ходит 3 (обнуляем становиться 0 и на след раз снова увеличиваем)
10 12 11 - ходит 2
15 6 22 - ходит 3
20 12 11 - ходит 1
5 18 22 - ходит 3
10 24 11 - ходит 2
15 6 22 - ходит 3
20 12 11 - ходит 1
вот и выходит что I и II ходят примерно одинаково (у них разница будет на 30 ходе), а вот III получает ход в 2 раза чаще. Кстатит удобная системка не только для пошагового боя, но и для вычисления приоритетов. Использовал у себя для кузницы - норм работало.
Старый 31.10.2009, 08:27
FunkieFoO

offline
Опыт: 7,159
Активность:
наработка похожая на UFO, хорошая идея, только в ЮФО используеться не чисто пошаговый бой, а альтернативный режим, а т.е, во время хода игрока, ИИ совершал действия семмитрично с игроком, я думаю реализация вовсе невозможна или очень сложна... лучше делай наработку классического пошагового боя, когда после действий одного игрока, действия выполняет другой... а так если че могу помочь с развитием идеи и фиксом багов, если че пиши в лс
Старый 31.10.2009, 09:07
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
Новая версия
  • Добавлен автоматический вход в бой на близком расстоянии
  • Добавлен мультиборд (но еще не готов до конца)
  • Исправлен баг оружия
  • Очки действия вычисляются как ловкость+5
Позже доделаю еще
Старый 31.10.2009, 15:04
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
Проведена оптимизация кода! Наработка стала полностью играбильной!
Старый 01.11.2009, 12:20
zohan

offline
Опыт: 961
Активность:
theFT, толково 10/10 за последнюю версию!
Старый 01.11.2009, 16:20
FunkieFoO

offline
Опыт: 7,159
Активность:
Имхо, герою для удара нужно 10 очков хода, а даже при оставшихся <10, гер может свободно бить других... даже если 1 очко... фикс ит
ЗЫ советую сделать в тригге слип экшн, и потом уже при совпадении колл-ва нужной еды(очков хода) вызывать функцию с помощью executeFunc... да и еще когда не хватает очков для хода там или удара советую выводить симуляцию ошибки...
Старый 01.11.2009, 17:29
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
FunkieFoO, загляни в первый пост там написано об этом кратко
theFT:
В версиях 1.N постепенно добавлю следующее
  • Запрет на удар пр ОД меньше положенного
Старый 01.11.2009, 17:55
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 08:45.