FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
Цитата:
Если не удалять все его комменты, будет =) Но врядли найдётся настолько полный кретин. И, имхо, чтобы разобраться в вексорианских творениях нужно как минимум понять систему SCV, что дано далеко не каждому. А без этих знаний фиг чё вставишь в свою карту. А с этими знаниями можно и самому придумать всё, что угодно... |
|
04.12.2007, 13:05 | #41
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
возрадуйтесь - скоро будут результаты.
ADOLF добавил: Итак, вот и завершен еще один конкурс. B связи с тем, что работы сделанные заслуженными мастерами шли вне конкурса общий уровень работ обидно низок - мы с смогли выбрать работу только на I место. Однако я надеюсь, что этот конкурс будет хорошим обучающим материалом не только для участников, но и для простых пользователей - ведь есть несколько работ и заслуживающих внимания, тем более отрицательный опыт - тоже опыт. Далее следует список работ, а ниже я рассмотрю каждую работу отдельно и напишу ее положительные/отрицательные стороны. Работы, участники конкурса: Лось - 6 (утечки - 1, способ выполнения - 2, MUI - 2, возможность настройки - 1, бонус от жюри - 0) FREEZE_ball - 5 (утечки - 1, способ выполнения - 1, MUI - 2, возможность настройки - 1, бонус от жюри - 0) Alex_Hell - 5 (утечки - 1, способ выполнения - 1, MUI - 2, возможность настройки - 1, бонус от жюри - 0) Uk_gruby - 2 (утечки - 0, способ выполнения - 1, MUI - 0, возможность настройки - 0, бонус от жюри - 1) Работы участников, идущие мимо конкурса: ADOLF - 9 (утечки - 2, способ выполнения - 3, MUI - 2, возможность настройки - 2, бонус от жюри - 0) Markiz - 8 (утечки - 2, способ выполнения - 2, MUI - 2, возможность настройки - 2, бонус от жюри - 0) Shadow Daemon - 8 (утечки - 2, способ выполнения - 2, MUI - 2, возможность настройки - 2, бонус от жюри - 0) //=============================================== Пользователь Лось получает приз 200 опыта. Далее идет описание всех работ. не стесняйтесь, спрашивайте - либо автор, либо другие пользователи разяснят особености кода и т.д. Alex_HellПочти все характеристики занесены в констант функции. function SpellDamage Аргументы обнулять незачем. суть обнуления в том, что бы полность удалить обьект, а он небуде удален до тех пор, пока на него существует ссылки (т.е. он помещен в переменную) а при передаче его как аргумент такая ссылка не создается. Спел неиспользует таймер, т.е. по сути это не волна, а нанесение просто урона по линии (даже не сектор как в оригинальной волне). function UnitAddGroupOnLine Алгоритм сортировки юнитов крайне неправильный. Во первых вложеный цикл, правильней было бы создать один фильтр и использовать его в групировки юнитов. Также очень заметный баг - юниты вроде групируются все дальше и дальше от точки каста, но в конечном итоге помещаются в одну группу, в результате чего при цикле, который уже непросредственно наносит урон урон наносится не обязательно ближайшему юниту (в случае если его лимит исчерпан). FREEZE_ballfunction FREEZEballShockWave_DamageForLevel Не очень оптимально, т.к. много проверок, для тако простой операции. я бы заносил значения в массив (как я и сделал ^^). Функции настройки как правило принято делать константными. Опять нанесение урона по линии. function FREEZEballShockWaveTrig_ShockWave_Conditions Очень плохое впечатление, как от GUI2JASS =/ function FREEZEballShockWaveTrig_ShockWave_Actions Во первых сплошной BJ Код:
Мягко говоря непорадавало. Код:
омг! Сколько раз рассказывали о том, насколько это глючно. опять же, ребята, запомните, обнуляются только некоторые handle переменные в некоторых случаях только. Вкратце действия скритпа сводиться к созданию юнита, на который регистрируется тригер, срабатывающий на приближения к юниту. это тоже не очень хорошо, т.к. тригеры не удаляются полностью. в результате - потенциальная утечка. ЛосьИспользуется фильтр - это сразу плюс. Теперь по самому спелу. Вобщем неплохо, внешне выглядит вполне идентично стандартной волне. минусы - использование локаций (которые незначительно медленнее координат) и их необнуление. С другой стороны спел выполнен правильно. хотя можно было бы немного и оптимизировать - к примеру использовать один фильтр, а не создавать его постоянно, не использовать BJ и т.д. Смысл действия - создается таймер - и на его handle значение через RB и кешь вешаются значения (координаты, угол, урон и т.д.) потом таймер запускается, и при кажой его сработке через опять же RB и кешь считываются необходимые обьекты, и производятся необходимые действия. также, на таймер вешается integer счетчик, который при его равентсве 0 запускает удаление обьектов и записей в кеше. вот и все) MarkizMConfigSystem Хотя это и мое имхо, но мне показалось это идиотизмом. Что бы записать в массив integer мы записываем его в виде строки и потом вложеными циклами ищем запись и переводим ее обратно в integer. Я долго пытался придумать, когда бы это смогло быть удобным, но так и не смог. ничего кроме гемороя и тормозов этот способ не приносит. Ну да ладно=) впринципе к самой волне это почти неимеет никакого отношения. Хотя осадок остался тяжелый. Принцип действия тот же - создание юнита, вешание значений на таймер, хотя тут есть несколько вопров. во первых почему один таймер для нанесения урона, другой для передвижения самой волны. одного мало что ли?) От этой работы у меня остались смешанные впечатления. Пока я не запустил карту. увидев, как создается еффект волны (он всегда смотрит на восток, в сторону Австралии) Мои впечатления окончательно испортились. Тупые навороты, которые кроме якобы красивого внешнего вида кода ничего не дают (хотя нет, дают понижение быстродействия ^^) и нежелание сделать нормальный ефект = незачот. От афтора я ждал большего. Shadow DaemonЧто у нас тут?) О, период таймера .01 цитата из CS Векса: Цитата:
Идем дальше... function Sockwave_Runtime Утечка. при групировке юнитов conditionfunc создается и не удаляется. Хотя нет, спасибо Tc за поправку + я сам проверил по хендл значениям - утечки нет. function Sockwave_Filter Не обнуляется локалка. Впринципе сделанно вобщем правильно, но нехватает немного нормального внешнего оформления) Больше сказать нечего ;) Uk_grubyопять Gui2JASS =/ на этот раз откровенный=/ Запустви волну в игре, я долго думал, баг это или фича, что после запуска волны при повороте кастера волна меняет направление. увы так и непридумал ;), но смотрелось прикольно ;) Код:
Это некоректно, т.к. данная функция отсчитывает время, даже когда игра находится на паузе. Волна сделана на глобальных переменных, за счет включения/выключения тригера. понятно, что говорить о двух одновременных коректных кастах тут нельзя. кроме кучи утечек нам тут больше искать нечего, а афтору марш читать статьи=) Но он получает бонус от жюри - неплохое начало для изучения Jass'a + очень понравилась фичебага с поворотом волны, да и волна выглядела красиво ADOLFНезнаю, но мне почемуто моя волна понравилась больше всех остальных ;) Сейчас вкратце опишу принцип работы... используется vJass со всеми (ну скажем не со всеми, но с многими) его прелестями. создается класс S (ShockWave), который при касте создается и в него заносятся основные характеристики волны (уровень, координаты, группа и т.д.). Точно также запускается таймер, но на него не вешается через не особо быстрый кешь множество значений, на него вешается через Toadcop's XAT (система на массивах) лишь S. поэтому за период идет всего одно обращение к сложной структуре (в остальных работах как правило вешали на таймер через кешь все и вся). Дальше проверка юнитов от точки (кстати у меня урон идет не линией а сектором) и нанесение урона. я делал особый упор на быстродействие, к примеру пик юнитов идет только в том случае, если волна не нанесла еще максимальный урон. также я использую часто глобальные переменные, для передачи значений в другие функции. Отредактировано ADOLF, 06.12.2007 в 12:52. |
|
05.12.2007, 15:08 | #42
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
хм, адольф немного ошибся ) сейчас подредактирую, там бонусы от жюри были ) |
05.12.2007, 18:23 | #43
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
кста? у кого какие впечатления от работ? какие мнения о исполнение? о внешнем виде?
нестесняемся) |
05.12.2007, 19:13 | #44
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
Цитата:
А на 2ом месте, получается я? Или нет? А на 2ем кто? |
|
05.12.2007, 19:38 | #45
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
чиорт, я таки забыл написать, что выдали только первое место, ибо уровень работ недотягивал=/ |
05.12.2007, 19:41 | #46
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Markiz
offline
Опыт:
11,432Активность: |
Цитата:
ADOLF Ну, поехали. 1. MConfigSystem -- работа со строками идет в инициализации. Дальше не используется ни одного цикла, наоборот все операции мгновенны. Такой способ хранения констант мне показался более удобным, поскольку не требует монструозно много места. 2. Про поворот забыл. Мой косяк, да. Исправляется одной строчкой. 3. Два таймера удобнее, т.к. один можно поставить с меньшим периодом -- в два-три раза уменьшить число обращений к кэшу, что показалось мне достаточно разумным подходом. Плюс, как нетрудно догадаться, это позволяет закодить движение прожектила один раз (были еще варианты, конечно, но такой показался мне наиболее оптимальным) 4. Какой нормальный эффект от меня требовался? Гм? 5. В чем заключается тупость наворотов? Гммм? --- В общем, как-то странно. Столько непонятных претензий, но баллы поставлены достаточно высокие. И на том спасибо. p.s. Проверил еще раз насчет угла поворота. Оказывается это такое дебильное свойство вексовской модельки =) p.p.s. 90% vJass'овских фич (кроме ПЖАССа и возможности объявления глобалок внутри кода) -- мракобесие и идиотизм. Отредактировано Markiz, 05.12.2007 в 20:48. |
|
05.12.2007, 20:36 | #47
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Markiz, эффект - серьезный косяк который испортил полность внешний вид волны. тупые навороты - нконфигсистем/два таймера, второй совершенно ненужен.
вообще нехочу разводить тут срач по типу срача на опер. ресурсе. вобщем я высказал свое мнение относительно того, как бы ты мог сделать свой спел лучше и что ты на мой взгляд упустил. у каждого свой подход) ладно, положение обязывает отбиццо: 1) система как и в конкретном данном случае дает весьма сомнительный выигршышь в удобстве (имхо недает вообще). если тебе кажеться - пожалуйста))) 2) я сужу результат а не отмазки... ты ее хоть запускал? что незаметил такого косяка... 3) насчет двух таймеров в упор невижу удобство/быстродействие. хотя не, удобство мб и есть... вот только на гуи подменюшки выбирать наверное еще удобней))) шучу. в любом случае на каждый таймер нужно аттачить значение. 4) и 5) зри вверху поста. почитал я... наверно у нас просто разные взгляды на код: мой критерий качество и скорость выполнения. у тебя же как написать проще неудосуживая себя лишними задачами. попроавь меня если я неправ) кста остальные работы зрил?) |
05.12.2007, 20:47 | #48
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Markiz
offline
Опыт:
11,432Активность: |
ADOLF
2. Запускал. Проверял мультинстансовость в первую очередь + баги с клиффами. Я не отмазываюсь -- сам виноват. Посыпаю голову пеплом. 3. Еще раз. У второго таймера период в 3-4 раза больше, чем у первого, это означает в 3-4 раза меньше обращений к кэшу = меньше тормозов. 4. Ладно, бог с ним. Никогда ничего не смыслил в эффектах. 5. Не согласен. Цитата:
Эм. Как раз нет. С этими конфигсистемами и вынесением в отдельную часть создания/движения прожектила я решал лишние задачи. Но фокус в том, чтобы соблюсти принцип модульности и разделения задачи на более мелкие, тем самым обезопасивая себя от написания одного и того же кода сто раз. Остальные работы пока не смотрел. Позже. |
|
05.12.2007, 20:55 | #49
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
делать один таймер и вешать коунтер, что бы скажем сработка была каждые 3-4 периода. это же елементарно) Цитата:
Цитата:
хм... скажу немного грубо, но думаю ты поймешь о чем я: для таких целей лучше использовать моск а не всякие системы, тем более такие (ну непонравилась она мне ^^) т.е. если все норамально продумать изначально то таких проблем не дб. имхо. |
|||
05.12.2007, 21:04 | #50
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Markiz
offline
Опыт:
11,432Активность: |
ADOLF
По первому пункту это изврат и только портит впечатление. А если я хочу чтобы проверялось раз в секунду, а период 0.014 (тоже, кстати, руководствовался заветами векса :)) --- по последнему -- и все-таки налицо разница в подходах. Не решая одну задачу по 1123345346457 раз, ты тупо больше времени потратишь на решение важной задачи, чем на написание рутинного кода. Не говорю, что мой подход идеален, но он позволяет уменьшить время на разработку без заметной потери качества (ну забудем про тот баг с англом, ну пожалуйста )) Markiz добавил: ADOLF Эти задачи, кстати, лишние только с точки зрения кодирования волны. Если мне надо накодить волну, затем еще два десятка спеллов, эта задача ен только лишняя, но скорее обязательная и первостепенная. |
05.12.2007, 21:27 | #51
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
имхо изврат все, что делает в конечном итоге код менее работоспособным. Цитата:
поставь счетчик до 71 и уменьшай его) будет правда не 1 а .994))) Цитата:
я промолчу что задача в конкретном случае именно в этом и заключалась, и скажу, что на написание волны ушло минимум полчаса, в то время как занесение такого же колва значений в массивы у тебя заняло скажет 30 сек, а так оно бы заняло 2 минуты. к примеру. не играет это значения. Цитата:
кста я скоро столкнусь с подобной задачей ;) вообще я не говорил что комплексный подход к коду плох. я не говорил что ненадо продумывать все изначально. я говорю только что все по возможности надо делать оптимально. |
||||
05.12.2007, 21:40 | #52
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Markiz
offline
Опыт:
11,432Активность: |
ADOLF
Баланс между временем разработки и оптимальностью работы -- наше все :) p.s. а срачей, кстати, бояться не надо. в одном сраче можно почерпнуть больше мыслей, чем в десяти дискуссиях. |
05.12.2007, 21:48 | #53
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
дефолт период 0.025 ) |
06.12.2007, 00:51 | #54
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
ADOLF +1 =)
Markiz ты некогда не решал... Цитата:
то объект будет "двигатьса с фреймами" хотя это тож очень относительно =) (т.е. с фреймами в идеальном случаи т.е. 64 фпса) но имхо на практике это не нужно. а тру аццы вообще делают 1 таймер и нахрен нечего аттачить не надо :Р Цитата:
|
||
06.12.2007, 02:19 | #55
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
проверил, действительно. чиорт, пока в один день вникал во все коды моск впал в состояние, в котором был достоен быть выкинутым на мусорку=) всеравно, если ли смысл создавать его постоянно или создать один раз глобалку? зы давно тебя в асе нету, назрели вопросы, как нибудь надо с тобой поговорить...) Цитата:
срач ставит своей самоцелью доказательства того, что низкий уровень креатива обусловлен умственными способностями, в то время как это и так всем понятно, с другой стороны дискуссия направлена имено на разьяснение констуктивно допущеных ошибок именно с целью повышения онных способностей - чем я и занимаюсь) ADOLF добавил: Цитата:
впринципе да) кста, почему все молчат? почему нет коментариев по спелам? их хоть кто то смотрел?) |
|||
06.12.2007, 12:59 | #56
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Цитата:
Цитата:
Цитата:
у меня глючи шли xD (VM = Virtual Machine грубо сказать интерпритатор Джасса угу Пайп сейчас имбу делает :Р и я буду в ТсХ юзать =) ну пока там еще трабблы есть но он тока чуть этим занималса.) еще посмотрю... кстати =) если нету деформа террайна надо было добавить камера шейк что бы круче выгледило 8-) |
|||
07.12.2007, 02:27 | #57
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
Цитата:
Обалденно... А насчёт того, чтобы держать свои слова: Цитата:
|
||
07.12.2007, 13:32 | #58
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
основная проблема невыдавания экспа в количестве работ, а не в качестве, просто должно было быть 6 работ, а тут только 4 ) |
07.12.2007, 17:20 | #59
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Лось
offline
Опыт:
7,223Активность: |
Ткните меня носом где утечки плз =) |
07.12.2007, 17:40 | #60
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|