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

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

 
Sailar

offline
Опыт: 8,555
Активность:
Я не сравниваю джазз это не язык вобще даже незнаю скрипт наверно не больше... Просто стало любопытно как подобное на языках програмирования делаеться.
Старый 28.08.2008, 23:55
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
ADOLF, просто коробит употребление слова "ссылка" для обозначения сути хендла, ты же не называешь ссылками индексы массивов.

Цитата:
рб никакой защиты не снимает, он снимает эту "искуственную типизацию"

Имелось ввиду защиту от прямого доступа к реальному значению хендла (int).

Статья годная, чтобы тут не говорили. Методика кодирования джасс поменялась с того времени кардинально.

Считаю, что нужно отредактировать статью на сайте в соотвестии с исравлениями, и дать двойное авторство.

Отредактировано exploder, 29.08.2008 в 00:41.
Старый 29.08.2008, 00:36
adic3x

offline
Опыт: 108,439
Активность:
"ссылка" не самое страшное... я видел в одной книжке трактовку хендла как "описатель"
ну я склоняюсь к варианту немного прическать ее (дописать послесловие) и либо засунуит как нить под тут либо добавить подстатьей как еще одно дополение (хз, нуно с дк поговоить как там наши скрипты на это смотрят)
Старый 29.08.2008, 02:11
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Честно говоря, статья лишь написана не слишком удобно. Я думаю, чтобы добавлять её на сайт, нужно избавиться от ссылок к статье Сергея, а вместо этого сделать связное объяснение. Другим вариантом будет дополнение каждого раздела учебника Сергея в конце подразделом с "комментариями" т.к. я все-таки нахожу большинство из них весьма значительными.
Старый 29.08.2008, 02:34
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
нужно избавиться от ссылок к статье Сергея

а как еще тогдапривязять что к чему потноситься? + равить каждый раздел достаточно сложно и немаловажно то, что статья сергея ориетирована для новичков, тут всетаки материал немного носит "отпугивающий" характер. хз, скорее всего просто добавим как подстатью
Старый 29.08.2008, 04:05
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Цитата:
а как еще тогдапривязять что к чему потноситься?
я имел в виду то, что весьма неудобно постоянно прыгать от одной статьи к другой. Таки соглашусь что вариант с подстатьей будет самым лучшим =)
Старый 29.08.2008, 10:54
Sergey
Старейший
offline
Опыт: 44,363
Активность:
ADOLF
Спасибо за проделанную работу. С интересом почитал твои замечания. По некоторым пунктам есть что возразить.
-----------
1. Что есть jass и для чего он нужен
Цитата:
в этом разделе это единственное с чем я не согласен. удобство редактора триггеров как и "сложность" написания JASS кода - вещи весьма сомнительные

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

Во-вторых, статья писалась в расчете на человека, который уже неплохо владеет редактором триггеров. Т.е. цель – плавно перевести его с триггеров на jass (который он совершенно не понимает и которого боится). Можешь считать это данью политкорректности к умениям читателя. ;)

2. Локальные переменные
Цитата:
именно так реализованны struct в vJass. реально этот метод более чем удобен, не имеет побочных еффектов (какие имеет wait) и оправдывает себя на 100%. я ниже опишу его.

Во-первых, вернемся к исходным условиям. Мы обучаем человека, который знает триггеры, но не знает jass. А для него такая задача становится значительно сложнее.

Во-вторых, разумеется, другие способы могут быть лучше. Тем не менее, методически задача этой статьи – объяснить что такое локальные переменные. Я считаю, что лучше всего это делать на том примере, который я описал.

Цитата:
конечно когда писалась эта статья JassHelper'а еще небыло (?).

Не было. А может и был, да я никогда с ним не работал. :)
Если есть некий справочник по jass, то, разумеется, его можно упомянуть в статье, дать на него ссылку и объяснить, как с ним работать. Но эта тема отдельной статьи. Почему? Потому что поначалу я стараюсь сделать работу с jass как можно более похожей на работу с триггерами. Так надо. Усложнять надо постепенно, иначе запугаешь и запутаешь читателя.

3. Применение локальных переменных
Цитата:
нет, нет и еще раз нет. если использовать таймеры - вы напишете примерно столько же кода, но обезопасите себя от тупых багов, более того с точки зрения быстродействия это также ужастно...

Позже. Это надо рассказывать гораздо позже.

Цитата:
понятно что в статье рассматриваются примеры "для новичков".

Именно так.

Цитата:
и опять же с точностью до наоборот) глобальные переменные нужны в т.ч. для отсроченных действий (к примеру какие либо счетчики, или главные герой, который будет использоваться на протяжении всей игры) а локальные переменные для действий в одном потоке (ну в одной функции без прерываний потоков (wait)).

Давай не будем делать каши в голове читателя.
Можно было выбрать другой пример – и тогда объяснения о ценности локальных или глобальных переменных были бы несколько другими.

Цитата:
Итак, Читатель, ты уже достаточно узнал, чтобы создать свой собственный jass код. Правда, есть определенные тонкости который тебе нужно узнать.

Цитата:
честно говоря это звучит как некоторая издевка. на самом деле изложенный в первых разделах материал - это даже не вершина айсберга, впрочем не стоит унывать, идем дальше)

Разумеется, имелось ввиду первая попытка применить custom script для создания локальных переменных и использования их в триггере.

До этого была лишь теория и изучение примеров. Теперь дается возможность сделать самому. Человек, которому в оригинале была адресована данная статья, с этой задачей успешно справился. Так что практика показала, что методика рабочая.
Это, конечно, не вершина айсберга, но первая маленькая победа картостроителя.

4. Условия, циклы в jass
Цитата:
сразу скажу что автор упустил то, что конструкция if куда более гибкая на JASS:

Согласен. В конце статьи можно добавить соответсвующий пример.

5. Функции в jass
Цитата:
остается уточнить что в конечно случае все функции, которые так или иначе воздействуют на игровой процесс "вшиты" в движок, определяются как native и их список находится в MPQ архиве в файле scripts\common.j

Согласен.

6. Устройство триггера с точки зрения jass
Цитата:
там где раньше была галочка "изначально включен" появляется галочка "продолжение инициализации карты", именно она и запустит триггер после инициализации.

Не совсем понял, но если чего упустил – можно исправить.

7. Динамическое создание триггера
Цитата:
хм, вообще пример с массивами не так уж плох. но на что я хочу тут обратить внимание... негоже искать юнита в массиве перебором всех его элементов. для этого используются разные damage detection системы, в общем принцип работы у них такой же, но на триггер "аттачиться" ссылка на юнита, но это уже другая тема)

Да. Об этом позже. Примеры идут по нарастанию сложности.

8. События с малым периодом
Цитата:
ну первое что я хочу заметить - имхо удобнее использовать место триггеров таймеры, хотя каких либо серьезных отличий этот вариант не имеет.

Согласен. Во время написания статьи я использовал такие конструкции. Позже перешел на таймеры, но как их использовать – не писал.

Цитата:
цикл в действие триггера/функции повешенной на таймер полностью себя оправдывает как с точки зрения удобства, так и с точки зрения быстродействия. это уже потом пойдут разные системы с кешем, которые в статье преподносятся как шаг вперед (фактически это куда менее эффективно и является шагом назад).

Что ж, вполне возможно... Использование кеша многие ругали впоследствии.

Если напишите альтернативные статьи про таймеры и массивы – я двумя руками за.

9. Полярные координаты (ликбез)
Цитата:
если у нас заранее не посчитан угол между точками - то вектором.

В каком классе изучают вектора и скалярное умножение? А в каком классе начинают изучать jass? Здесь намеренное упрощение материала, чтобы его могли понять разные читатели.

10. Оптимизация: утечки памяти
Цитата:
это не так - умерший юнит после разложения благополучно удаляется. более того его handle будет удален если на него нету никаких ссылок (он не находится в переменны)

Я таких нюансов не знаю. Но знаю, что если юнитов создается и гибнет много, то без их удаления торможение в игре начнется очень быстро.

Цитата:
более того, я скажу что в большинстве случаев можно считать координаты без точек вообще

Можно. Но давайте решать задачи по мере поступления. Мы обучает триггерщика и используем для этого привычные ему конструкции кода.

Цитата:
что же, это тоже неправда. лаги могут быть не только от засорения памяти, ну и от слишком "долгого кода".

Тебе виднее. Если можешь рассказать читателю, что еще можно сделать для оптимизации карты – напиши. Я за.

Цитата:
в этих трех строках сделано 4 ошибки)

Ок. Исправишь?

11. RETURN BUG (RB)
Цитата:
это не так, доступа к области памяти, в которой хранятся обьекты доступа с помощью RB добиться нельзя. на факте RB - это обход типобезопасности в JASS...

ОК. Если объяснишь читателю корректно и понятно – я за.

Цитата:
0x12345678

Только сначала придется объяснить, что это за конструкция с иксом.

Цитата:
стоп! это - измена! юниты создаются либо по координатам (что самое лучшее, т.е. два параметра типа real, либо надо передать обьект типа location, что не так удобно). как многие создавали юнитов раньше - это было сделано за счет создания точки посреди региона и в ней создание юнита. но это бесмысленно. это не нужно ни вам ни компьютеру! не делайте так!

Что за паника? Это просто пример. Причем рабочий. Но им итак никто не пользовался и вряд ли будет.

Цитата:
это - тоже не правильно, сейчас обьясню. к примеру мы создаем 10 регионов. пусть их handle будут равны x+0; x+1; x+2; ... ; x+9. теперь мы удаляем первые 5, тогда движок считает что первые 5 handle свободны и в них можно помещать снова ссылки. при повторном создание обьекетов их handle будут равны x+0; x+1; ... ; x+4; x+10; x+11; ... ; x+14. надеюсь ошибка понятна.

А вот не надо удалять. ;) На то и расчет, что регионы будут создаваться в определенном порядке. Иначе работать не будет.

Цитата:
и это не так) если вы будете удалять триггер в его же потоке, потом использовать TriggerSleepAction(real) и создавать новые обьекты - это более чем возможно.

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

13. Система Super Custom Value (SCV) или RB+cache
Цитата:
но, опять же. куда более элегантное решение - использование параллельных массивов. это удобнее, быстрее для движка игры, и небагоопастно.

Есть лучшее решение? Замечательно. Сможешь его понятно описать ?
-----------
И еще раз, спасибо за проделанную работу. Если доведешь ее до логического конца, сделаешь большое дело.

Sergey добавил:
zer0ne
Цитата:
не кажется если только начал изучать стандартный, то и это на заметку надо взять, иначе потом многое придется понимать заново

Просто всему свое время. Понимать заново в разы легче, чем осваивать с нуля. Если, конечно, не делать больших пауз во время обучения.

Van Damm
Цитата:
Честно говоря, статья лишь написана не слишком удобно. Я думаю, чтобы добавлять её на сайт, нужно избавиться от ссылок к статье Сергея, а вместо этого сделать связное объяснение. Другим вариантом будет дополнение каждого раздела учебника Сергея в конце подразделом с "комментариями" т.к. я все-таки нахожу большинство из них весьма значительными.

Согласен. Можно даже не только дополнения, но и исправления, критику, и новые статьи в сборник. Лишь бы читателям было понятно.

Если требуется мое разрешение на правку – я его даю. Все же желательно перед исправлением показать мне, что получилось.
Старый 29.08.2008, 19:28
J
expert
offline
Опыт: 48,447
Активность:
Если есть мнение что ничего дополнять не надо и пусть остается как есть, то я его поддерживаю
можно конешно написать ИсЧо АдНу статью по джазу, на нифиг это каму надо? всеравно прочтением супер статьи в которой расписано все и вся джазу не обучишся.
К томуже и так уже все расписано
Ты какойто фигней страдаеш то про оптимизацию написал в джаз разделе что уже давным давно все написано, то дополнение к статьям пишеш тоже большенство широко извесные вещи, это уже никому не нужно, нужно написать чтонибудь интересное, что почитать интересно будет даже мне, и не обязательно супер сложное
все удобства для "новичков" уже даны, статьи нормальные, еще никто не жаловался на "трудночтаемость", в любом случае можно поправить человека прямо на форуме, опыт большой, потому прислушатся должны, есть поиск
кстате очень полезнейшая весч это читать старые темы в джаз разделе по порядку, очень интересно (для незнающих)
Старый 29.08.2008, 19:51
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
Т.е. цель – плавно перевести его с триггеров на jass (который он совершенно не понимает и которого боится). Можешь считать это данью политкорректности к умениям читателя.

тогда моя цель плавно увести его окончательно от тригов.. а политкоректность - сраное понятие=/
а поскольку это именно как послесловие что ли к твоей статье, то тут ничего страшного нету

Цитата:
Во-первых, вернемся к исходным условиям. Мы обучаем человека, который знает триггеры, но не знает jass.

ну я в начале писал что если человек прочел всю статью и что то понял то тогда тока стоит приступать к этому... а вообще я бы писал статью с хелло ворда;)

Цитата:
Давай не будем делать каши в голове читателя.

вот как раз ты ету кашу и делаешь=/ ну я сказал что это стоит читать уже после всей той стаптьи (угу, а там и семплы с таймерами есть кажетьяс так что читатель после той статьи уже не тот нуб что был)

Цитата:
В каком классе изучают вектора и скалярное умножение? А в каком классе начинают изучать jass? Здесь намеренное упрощение материала, чтобы его могли понять разные читатели.

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

Цитата:
Я таких нюансов не знаю. Но знаю, что если юнитов создается и гибнет много, то без их удаления торможение в игре начнется очень быстро.

пока что это твоя догадка, мое же мнение основанно на конкретных примерах и тестах (или ты ставил время разложения 999999999. ?!)

Цитата:
А вот не надо удалять. ;)

изза одной хрени которая елементарно решается двумя риал массивами неудалять обьекты?! к чему бы это могло привести...

жон!11! жонн!11 круто!1!

Цитата:
почитать интересно будет даже мне

мне че детективы писать? или комексы?!

Цитата:
фигней страдаеш то про оптимизацию написал в джаз разделе что уже давным давно все написано

если ты о твоей мего статье то там там описанн окуда меньше е тоже куча неточностей + кто это мне говорит? кто сам любит пописать всякое такое?)

||--->



сабж, сергей впринципе я согласен что сразу валить на всяких гуишников это не стоит, но вообще я планировал онный материал добавить как еще одну подстатью просто (ну немного поправить что бы яснее было там и т.д.) т.е. человек прочел все то, осилил и терь иможет 1-избавиться от вредных привычек которым ты его приучил (вейты прочая хрень и т.д.) 2-понять как кодить быстро, просто и качественно)
Старый 30.08.2008, 01:19
J
expert
offline
Опыт: 48,447
Активность:
мангу рисуй, я почитаю)
Цитата:
0x12345678

ну вот и правда какой резон, когда научишся неписать эту фигню неоправдано?
Цитата:
там где раньше была галочка "изначально включен" появляется галочка "продолжение инициализации карты", именно она и запустит триггер после инициализации.

раз решил серьезный ввод в джас сделать то расписабы как это происходит, да и вообщебы структуру war3map.j расписал бы

а vjass следует говорить в самую самую последную очередь так как это не относится к базовому редактору, а является лиж надработкой, и чтобы понять читателю преемущества и недостатки нужно знать в нормальой степени сам jass

да и повторю что хватит описывать базовые прицепы кодинга, раз неможеш ничего нового написать, и нравится писать подобное напиши еще раз статью типа Создание простого stomp спелла т.к. эта статья мну не нравицо, там используй vjass структуры и нестандартные способы, все распиши, лучше на примере (непонял почему тебе ненравится расписывать примеры а предоставлять общую информацию, первый вариант куда эффективнее и нагляден) вот это уже чуть чуть и то полезнее было бы
Старый 30.08.2008, 01:38
ScorpioT1000
Работаем
offline
Опыт: отключен
Про Приложение 2: JESP стандарт еще неплохо бы написать, там вобще какая-то муть
Старый 22.09.2008, 01:33
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
Про Приложение 2: JESP стандарт еще неплохо бы написать, там вобще какая-то муть


там никакой мути, только описание корявого буржуйского стандарта

как будет время доработаю и повешу...
Старый 22.09.2008, 15:13
kvaDrug

offline
Опыт: 1,601
Активность:
Еще один шаг вперед от кеша... Ура! Да здравствует ADOLF!
Надеюсь, на очереди статья о потоках и о ддс.
Старый 22.09.2008, 15:55
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
"ссылка" не самое страшное... я видел в одной книжке трактовку хендла как "описатель"
очевидно, это машинный перевод, д.б. слово "дескриптор", аминь
Цитата:
Статья годная, чтобы тут не говорили. Методика кодирования джасс поменялась с того времени кардинально.
агри, однако
Цитата:
есть мнение что ничего дополнять не надо и пусть остается как есть, то я его поддерживаю

логичнее писать это отдельной статьей
и вообще, почему в эту статью ссылку на оригинальную статью должен вписывать я?

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

млин, ну ребят, ваши догадки про сборку мусора - это даже НЕ СМЕШНО! Все это было придумано 50 лет назад и работает на большинстве скриптовых языков...

Отредактировано NETRAT, 22.09.2008 в 17:34.
Старый 22.09.2008, 17:26
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
там никакой мути

какраз-таки муть т.е. неправильные решения
Старый 22.09.2008, 18:13
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
и вообще, почему в эту статью ссылку на оригинальную статью должен вписывать я?

потому что я ее недолелал)

Цитата:
логичнее писать это отдельной статьей

я думаю щасс... добавить ее отдельной статьей, а в послесловии статьи сергея повесить на нее линк (тут я думаю он против небудет)

Цитата:
читал с конца, статья после оригинала будет абсолютно непонятна, это скорее для матерых жассеров

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

Цитата:
очевидно, это машинный перевод, д.б. слово "дескриптор", аминь

аффтор - руцкий... хз, дескрипот как то ухо режет вообще, само слово)

Цитата:
млин, ну ребят, ваши догадки про сборку мусора - это даже НЕ СМЕШНО! Все это было придумано 50 лет назад и работает на большинстве скриптовых языков...

да и? че я не так написал?) я описал как оно работает...

ADOLF добавил:
вобщем я поработаю над ней и доведу ее до ума, но когда будет время)
Старый 23.09.2008, 11:52
adic3x

offline
Опыт: 108,439
Активность:
up
отредактировал, добавил мапу пример
Старый 19.11.2008, 18:18
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
Я постепенно изучаю vJass и постепенно прихожу к выводу что некоторые вещи кторые элементарно делаются на кеше с трудом реализуются на массивах. Основная его проблема в том что там нет никакой нормальной системы привязки данных к обьекту, в некоторых случаях это критический аргумент. В целом я думаю использовать vJass для спеллов или динамических систем но ни для чего более.
(это о сравнении vJass и кеша)
Старый 19.11.2008, 20:12
zer0ne

offline
Опыт: 11,219
Активность:
PlayerDark, XAT чем не нормальная система? Или ты не про то?)
Старый 19.11.2008, 20:29
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Я постепенно изучаю vJass и постепенно прихожу к выводу что некоторые вещи кторые элементарно делаются на кеше с трудом реализуются на массивах
нужно делать кеш+массивы, а не делать все на массивах...
Старый 19.11.2008, 21:08

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

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

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

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



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