Сейчас 06:08:53 Воскресенье, 14 августа, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASS] Несколько аргументов для перехода на джасс
[JASS] Несколько аргументов для перехода на джасс
FkoFFДата: Четверг, 18 Ноября 2010, 19:24:17 | Сообщение # 1
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Многие картоделы задаются вопросом "Стоит ли переходить на Jass2(в народе просто jass)?", в противовес ставят ответ "У меня и на ГУИ все получается что я хочу!".
Аргумент конечно веский, однако стоит рассмотреть перспективу перехода на джасс более детально. Давайте сравним все плюсы и минусы


Плюсы GUI:


• Легкость восприятия для новичков
• Невозможно допустить синтаксическую ошибку (исключительно логические)
• Наглядность


Минусы GUI:


• Недоступные по умолчанию локальные переменные
• Скорость работы на порядок ниже
• Ограниченный функционал
• Очень высокая в сравнении с Jass2 ресурсоемкость.



Плюсы Jass2:


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


Минусы Jass2:


• При отсутствии опыта легко допустить синтаксическую ошибку
• Тяжел для восприятия новичками


Но покамест это только слова. Следует так же объяснить на примере смысл вышеописанного.

При создании заклинания вы в 90% случаев используете условия. Самые классические это:
Здоровье (unit) больше 0 (или то же самое действие через Boolean: Is Unit Alive)
Is (unit) is allie of (player)
Unit is здание\герой

При подобном наборе условий внутри триггера (допустим в ифзене или хуже того - в pick every unit) создается отдельная функция с if\then\else массивом внутри. Каждый раз когда вы будете использовать в триггере эти условия - будет создаваться отдельная функция.

Еще хуже когда вы используете AND \ OR логические операции на гуи. В таком случае будет создан блок функций - Количество сравниваемых условий + количество использованных AND\OR'ов.

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

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

Во первых - это значительно ускорит процесс работы триггера
Во вторых - это значительно облегчит сам код.

Более того, вы можете вписать данное условие в Custom Code карты (самый верхний триггер с иконкой свитка) - и вызывать его из всех своих триггеров ниже.
Тоесть сделать несколько различных функций подходящих под самые распространенные параметры и в последствии, вместо того что бы переписывать одинаковые условия для всех ваших триггеров - можно будет просто вызывать условие из функции записанной в Custom Code.

Это так же касается всего что только можно вообразить. В том числе и движение снарядов. Представьте что достаточно написать один раз нужный набор действий (чистый, без утечек) и в последствии нужно будет лишь вписать к примеру call MoveUnitToUnit(GetTriggerUnit(), GetSpellTargetUnit(), скорость, максимальная дистанция)


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

Ну и самый основной плюс Jass2 в отличии от GUI это возможность создавать безутечный\практически безутечные функции.
Вы думали что call RemoveLocation(lochandle) действительно убирает утечку? К сожалению это ложь. Как бы то ни было - локации все равно отсаются в памяти и засоряют её. Ну и, конечно же, можно вообще практически не использовать хэндлы.



Перспективы перехода на Jass2

После перехода на Jass2 и его модификации (vJass \ cJass ) вам откроются практически безграничные возможности в плане систем и наработок. Хоть воздушные бои с самонаводящимися снарядами, хоть весь учебник физики с рычагами и силой притяжения. Все что угодно можно реализовать на джасс, однако для подобных вещей требуется незаурядное знание методов вычисления и алгебры.

Однако стоит отметить что на GUI подобные вещи фактически не реализуемы. Переход на Jass действительно дает возможность перевести вашу карту на совершенно другой уровень, практически выпрыгнуть за пределы движка варкрафта.


Ну и для тех, кого эта статья убедила перейти на джасс очень рекомендую скачать программу [Jass Craft].
Данная программа - отличный инструмент для написания кода, тем более для новичка.




Сообщение отредактировал FkoFF - Четверг, 18 Ноября 2010, 21:36:32
 

PUVerДата: Четверг, 18 Ноября 2010, 19:44:20 | Сообщение # 2
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
FkoFF, хорошая статья :) Меня как раз терзает этот вопрос и всё никак не решаюсь...
 

FkoFFДата: Четверг, 18 Ноября 2010, 20:15:50 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Чуть переоформил статью

 

H_A_PKДата: Четверг, 18 Ноября 2010, 20:20:30 | Сообщение # 4
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
А как же возможность создавать утончённых систем (дгуи, фсгуи и т.д.)?
А как же расширеный выбор типов переменных, гигантский набор нативных функций и констант?


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Четверг, 18 Ноября 2010, 20:20:58
 

FkoFFДата: Четверг, 18 Ноября 2010, 20:39:58 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
H_A_PK, дгуи ты на Jass2 не сделаешь, точнее можно но через [censored].
Набор нативных функций и есть функционал джасс. У нас максимальное ограничение лишь возможности сочетаний нативных функций.


 

H_A_PKДата: Четверг, 18 Ноября 2010, 20:50:32 | Сообщение # 6
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (FkoFF)
H_A_PK, дгуи ты на Jass2 не сделаешь, точнее можно но через [censored].

Речь не только о нём так-то
И да, можно точно также создавать структуры и в Jass2, что и позволит нам создавать дгуи.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

FkoFFДата: Четверг, 18 Ноября 2010, 21:18:26 | Сообщение # 7
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Добавил небольшой раздел "Перспективы перехода на Jass2"



Сообщение отредактировал FkoFF - Четверг, 18 Ноября 2010, 21:37:01
 

Banzay89Дата: Пятница, 19 Ноября 2010, 12:08:28 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Что такое Jass2 ???
 

FkoFFДата: Пятница, 19 Ноября 2010, 16:36:08 | Сообщение # 9
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Banzay89, это тот что в народе просто Jass

 

H_A_PKДата: Пятница, 19 Ноября 2010, 16:42:13 | Сообщение # 10
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
FkoFF, по сабжу не
Quote (Banzay89)
Jass2

а JASS2 ;)


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

MuradorДата: Пятница, 19 Ноября 2010, 17:31:46 | Сообщение # 11
Группа: Проверенные
Сообщений: 1221
Награды: 1
Репутация: 446
Блокировки:
FkoFF, не вынуждай меня делать воздушные бои на GUI, я ведь могу! -_-
 

FkoFFДата: Пятница, 19 Ноября 2010, 17:59:46 | Сообщение # 12
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Murador, адекватную физику на GUI безутечной не сделаешь хотя бы по той причине что будут утечки в 90% функций. Ну и это по факту не реализуемо еще и по той причине что невозможно получить Z юнита, пользуясь исключительно GUI.

 

Vova5009Дата: Пятница, 19 Ноября 2010, 19:08:00 | Сообщение # 13
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:
FkoFF, Я бы в статье упомянул про такую вещь как Локальные переменные, т.к. именно они в свое время убедили меня (и многих других кого я знаю лично) перейти на jass
 

MuradorДата: Пятница, 19 Ноября 2010, 21:35:07 | Сообщение # 14
Группа: Проверенные
Сообщений: 1221
Награды: 1
Репутация: 446
Блокировки:
FkoFF, :P а если я например буду пользоваться своими кустам либами GUI? (Custom Lyb), формально это будет GUI ,но не GUI
 

Banzay89Дата: Пятница, 19 Ноября 2010, 21:44:03 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
а если

а если бы бабке *** она бы дедкой быда...

 

FkoFFДата: Пятница, 19 Ноября 2010, 22:27:17 | Сообщение # 16
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Vova5009, локальные переменные затронуты в тексте ровно на столько, на сколько они этого заслуживают. Потому как локальные переменные далеко не повод переходить на джасс. Реальный повод перейти на джасс - безутечность и расширение функционала. Локальные переменные не расширяют функционал.

Quote (Murador)
FkoFF, :P а если я например буду пользоваться своими кустам либами GUI? (Custom Lyb), формально это будет GUI ,но не GUI

Custom Script = Jass2


 

MetanolДата: Суббота, 20 Ноября 2010, 00:33:09 | Сообщение # 17
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
В статье ничего полезного или нового не прочёл.
Сам бы давно перешёл на жасс, проблема только, что не удобен он для освоения. А для того, чтобы реализовать то, что мне нужно, мне хватает массивных переменных.


новый акк:
http://warcraft3ft.info/index/8-70993
 

MuradorДата: Суббота, 20 Ноября 2010, 00:44:10 | Сообщение # 18
Группа: Проверенные
Сообщений: 1221
Награды: 1
Репутация: 446
Блокировки:
Quote (FkoFF)
Custom Script = Jass2

не Custom Script ,а Custom Lyb - это интегрированные мною в игру дополнительные функции которые можно исполнять использую интерфейс GUI, кстати это вещь отлично работает в качестве протекта карт :P
 

FkoFFДата: Суббота, 20 Ноября 2010, 01:18:02 | Сообщение # 19
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Murador, ну, по факту это в любом случае будет уже не то о чем мы ведем речь )

 

NnoitoraДата: Понедельник, 22 Ноября 2010, 18:44:10 | Сообщение # 20
2 уровень
Группа: Проверенные
Сообщений: 36
Награды: 0
Репутация: 23
Блокировки:
Дайте ссылку на статью где можно узнать больше о GUI пожалуйста
 

DarkVaderДата: Понедельник, 22 Ноября 2010, 22:46:15 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Nnoitora)
Дайте ссылку на статью где можно узнать больше о GUI пожалуйста

а что там в гуи узнавать? там же все написано, открыл редактор и узнал=)))) а мелочи уже по ходу дела

 

FkoFFДата: Вторник, 23 Ноября 2010, 19:07:35 | Сообщение # 22
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Metanol)
А для того, чтобы реализовать то, что мне нужно, мне хватает массивных переменных.

реализуй пожалуйста элементальный урон, будь добр.

Что бы у предметов была защита от какого то элемента и каждый спелл наносил определенный элементальный урон.
Сделай систему нанесения не мгновенного урона, так называемый DOT (Damage Over Time)

уверяю тебя - бесполезное и глупое занятие пытаться сделать что то подобное на GUI. Почему? да хотя бы по тому что на гуи придется каждый раз вбивать весь код на сравнение предметов и их показателей с тем элементом, которым наносится урон.


 

MetanolДата: Вторник, 23 Ноября 2010, 19:12:21 | Сообщение # 23
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
Quote (FkoFF)
да хотя бы по тому что на гуи придется каждый раз вбивать весь код на сравнение предметов и их показателей с тем элементом, которым наносится урон.

Но можно, я так и делаю...


новый акк:
http://warcraft3ft.info/index/8-70993
 

FkoFFДата: Вторник, 23 Ноября 2010, 19:20:36 | Сообщение # 24
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Metanol, и каждый раз, мало того что ты нагружаешь поток ненужными действиями так ты еще и увеличиваешь вес своей карты текстом.
Да и "читаемость" твоего триггера от этого падает в десять-двадцать раз )


 

MetanolДата: Вторник, 23 Ноября 2010, 19:23:49 | Сообщение # 25
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
Quote (FkoFF)
Metanol, и каждый раз, мало того что ты нагружаешь поток ненужными действиями так ты еще и увеличиваешь вес своей карты текстом. Да и "читаемость" твоего триггера от этого падает в десять-двадцать раз )

Мне всё это известно, но жассом пользоваться не умею, поэтому приходится пользоваться альтернативой.


новый акк:
http://warcraft3ft.info/index/8-70993
 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASS] Несколько аргументов для перехода на джасс
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2022 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz