Автор - Defong
Тема: 8. Игровые системы
Цитата
1. Что такое система ?
2. Виды систем
3. Как создать систему ?
1. Что такое система ?
Система — множество элементов, находящихся в отношениях и связях друг с другом, которое образует определённую целостность, единство!
Создание системы в редакторе "Warcraft 3" - это множество событий, действий и условий предназначенных для выполнения определенных требований для реализации ваших идей!
Так-же вам нужно понимать что система это не какая нибудь математическая формула по которой вас заставляют работать... Это в первую очередь ваша идея, система составляется благодаря логике и воображению. Другими словами - как хотите так и делайте!
Хочу сразу подметить, что создание мощных рабочих систем не такое уж и легкое дело! Чаще всего в неопытных руках сложные системы могут ломаться при стаке с какими нибудь способностями, которые двигают юнита\ставят его в паузу\убивают\заменяют и.т.п.
Но если всё делать правильно - всё получиться! - (Правило программистов №1 > Работает ? - Не трогай!
Виды систем
В основном системы представляют из себя:
1. Арены \ Дуэли
2. Нестандартный выбор персонажей
3. Различные ивенты \ Квесты
4. ИИ - искусственный интеллект
5. Условия победы\поражения
6. Воскрешение боевых единиц
- И многое другое!
1) Арены за основу делают стандартным образом:
- Создают зону в которой собственное будет происходить сражение.
- Устанавливают контрольные "области" - центр арены, позиции героев, границы либо определенные участки арены.
- Пауза всех юнитов + выбрать случайных героев и двинуть их на арену
- После чего Включить триггеры отвечающие за условия победы\поражения
- Вернуть всё как было )
Обратите внимание что все эти пункты можно разделить на логические элементы:
- Месность
- Соперники
- Победа
Вот с такой мысли должна зарождаться система!
3. Как создать систему ?
Давайте всетаки попробуем создать свою систему "Арены"
- Вообщем я не буду париться по поводу ландшафта ) так-что создал за основу такой макет.
Между прочим если вам тоже лень париться можете взять этот макет - СКАЧАТЬ
Начнем!
Первое что нам сейчас нужно это "Области" - Скажем так, точки где будут появляться герои и.т.д
Открываем панель областей
И начинаем лепить области:
1) Область всей арены
2) Позиция героя для Клана 1
3) Позиция героя для Клана 2
Любая арена начинается с таймера
- Заходим в триггеры
- Если есть удаляем + создаем свою инициализацию
- Создаем новую категорию "Arena"
- Создаем новый триггер (и делаем всё как на скринах)
Для тех кто не знает как ставить таймер, вот скрин
http://cs322619.vk.me/v322619435/13f4/vLQahtvg-gg.jpg
После этого - Установите переменную этого таймера как последний созданный таймер
Теперь для красоты создадим рамку для таймера
http://cs322619.vk.me/v322619435/1404/PjAavhDQ-gU.jpg
Также само запоминаем его переменной (Тип переменной - Окно таймера)
Первый триггер готов!
Далее нужно отследить срок истечения запущенного таймера
- Создаем новый триггер (как всегда делаем всё как на скрине)
Событие:
Действия:
1) Отряд - Выбрать каждого юнита в зоне игровой карты и сделать множ.
цыкл:
- Добавляем функцию
- Добавляем условия в эту функцию
> http://cs322619.vk.me/v322619435/1422/wWHM8vRgh5Y.jpg
- Добавляем в "ИЛИ" следующие условия
> http://cs322619.vk.me/v322619435/142b/HVUSKkCpUSM.jpg
- Создаем еще одну функцию + в ней опять "ИЛИ" и добавляем туда игроков с клана 2 (Выглядит это примерно так:)
> http://cs322619.vk.me/v322619435/1434/0fii6AYGdXs.jpg
- Между прочим советую еще поставить логическоре сровнение на Героя
> http://cs322619.vk.me/v322619435/143d/7kDj3rPW-FI.jpg
- Теперь создаем две новых переменных и в первой функции, в "То действие" добавляем "Новое действие"
> http://cs322619.vk.me/v322619435/1446/HKB5bH8kIec.jpg
> http://cs322619.vk.me/v322619435/144f/o2Jl985jvIA.jpg
Тоже самое проделайте для второй функции (только там добавляйте игроков в Pack_2)
Извеняюсь! Небольшой баг =) лень было исправлять предыдущие скрины так-что вот!
http://cs322619.vk.me/v322619435/148f/Dod6kky0b0A.jpg
Создаем переменные боевой единицы - Hero (+массив)
- Установить переменную Hero[1] - Случайный юнит из Pack_1
- Установить переменную Hero[2] - Случайный юнит из Pack_2
Далее:
- Создаем переменную точки (Area + массив) - Если у вас такая есть то используйте ее!
- Установить переменную Area[1] - Позиция Hero[1]
- Установить переменную Area[2] - Позиция Hero[2]
Между прочим еще нужно настроить карту под наш вариант арены
> http://cs322619.vk.me/v322619435/147d/TOH_a6_HfNQ.jpg
> http://cs322619.vk.me/v322619435/1486/EfxN6fFDFZ0.jpg
Далее делаем ряд таких вот действий
> http://cs322619.vk.me/v322619435/1498/ledb_kpdOOc.jpg
Примерно вот так вот нужно заполнить новый триггер
> http://cs322619.vk.me/v322619435/14a1/pyMXLdtAYbQ.jpg
Если у вас что-то не получилось вы можете скачать и посмотреть мой вариант этой наработки!
Хочу подметить что всегда есть баги которые не сразу заметны!
Вот к примеру я завтыкал с условием на проверку "жив ли тот герой которого отбирает на дуэль" в итоге был баг - на арену кинуло труп ^^
Вообщем чтоб вы понимали это как история с пивом )) сколько не бери а второй раз в магазин идти прийдется...
>>> СКАЧАТЬ <<<
Вообщем теперь у вас есть хоть какой то опыт в создание систем
В следующих уроках буду учить вас чему-то посложнее
На этом восьмой урок заканчивается.
Если у вас остались вопросы - оставляйте их в комментариях!
Спасибо за внимание! Надеюсь было понятно...
И еще, отписывайтесь кому помогло кому нет ) Ато такое ощущение что сам для себя пишу это всё