Vadik29
Choice Battle 1.6а
offline
Опыт:
15,245Активность: |
Лимит кода.
Я столкнулся с очень странной проблемой. В моей карте примерно 58к строк кода и когда я начинаю писать еще код, какие-то триггеры не срабатывают, причем код не битый ошибок там нет (проверял в других карта), но если удалить любой старый кусок кода, то как бы освобождается место для нового кода и карта благополучно сохраняется. Не знаете в чем может быть проблема или в редакторе действительно есть такой лимит (стоит JNGP с cJass)? |
17.01.2015, 16:31 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Возможно превышен лимит операций в "потоке". Попробуй инициализировать часть триггеров по таймеру. И да, 60к строк скорее всего значит, что в коде тысячи мусора, советую задуматься. |
17.01.2015, 17:33 | #2
+3/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vadik29
Choice Battle 1.6а
offline
Опыт:
15,245Активность: |
Doc, Да нет, в карте 77 героев по 5 спелов (у некоторых больше, до 20) + куча разных систем. Но запускать по таймеру, хорошая мысль. |
17.01.2015, 19:11 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
77*10 (округлим для тех героев у которых 20 заклинаний, видимо 100500 инвокеров с разноцветными фаерболами лол) == 770 спеллов
60 000 строк кода на 770 заклинаний, получаем каждое заклинание 70 (лол) строк кода.
вот объясните мне уважаемый, что в вашем супер проекте такого, что спелл каждого героя занимает 70 строк
если люди без психических заболеваний, делают одну систему движения снарядов и после только вызывают один метод из этой системы, снижая размер спеллов до 1 строки кода, видимо у вас каждый спелл совершенно уникален и унификация невозможна? |
18.01.2015, 14:39 | #4
+7/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Просто ради интереса, киньте сюда код одного из заклинаний, есть подозрения, что написаны они совсем не рационально. |
18.01.2015, 17:26 | #5
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
|
19.01.2015, 00:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vadik29
Choice Battle 1.6а
offline
Опыт:
15,245Активность: |
DioD, как бы карта на аниме тематику и хоть ты извращайся как только можешь, составить закономерность у тебя не получится, потому что у всех абсолютно разные эффекты и стили.
» пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
|
24.01.2015, 21:06 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
velmir
offline
Опыт:
8,257Активность: |
Vadik29:
это все исправимо примерно как сказал DioD:
Vadik29: просто почитай что такое ооп и поймеш, как оптимизировать однотипные скилы.. зи говоря об однотипных я говорю не о всех в которых одинаковые скилы (ефекты дамики) я говорю об механике, к примеру все скилы создающиее линию из дами, или заставляющие дами двигатся) |
25.01.2015, 10:46 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Что можно урезать:
Меняется на:
Будет сгенерировано немного больше кода, чем тут, но все равно, каждый раз копировать создание триггера - это такая нелепица. Как и проверять boolean через ее сравнение с true, об этом еще Мриз писал (если вы поняли о ком я...).
Далее, в cJass модно не обнулять локальные переменные, он это делает автоматически и в целом адекватно.
Еще очень хочеться надавать по шапке за использование ключей для хеша в виде цифр, линк.
Идем дальше - вопрос про группу. Если я правильно понял алгоритм - группа создается и сохраняется просто для перебора юнитов? Используйте одну глобальную группу (могут быть некоторые проблема, но весьма редко), или используйте глобальную группу для каждого заклинания, или используйте cJass фишку:
Меняется на:
Сейчас еще посмотрю...
ADOLF добавил:
Ах да, анонимные функции:
|
25.01.2015, 12:06 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
если логика не верна, не важно сколько сахара будет вбито в код, код всё равно останется дерьмом, даже пусть сладким, но всё равно дерьмом.
да и раковый сижас только скрывает реальный код от пользователя, не изменяя его суть.
в ряде случаев раздувает его и делает совершенно абсурдные конструкции которые нормальный программист никогда бы не сделал сам. |
25.01.2015, 12:45 | #10
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Теперь поговорим про алгоритм - я крайне советую использовать 1 структуру (на крайний случай ее можно наследовать, хотя я вполне уверен, что в vJass это сделано через одно место, так что проще просто добавлять максимум для всех заклинаний), которая является универсальным заклинанием. Я так делал в морлоках ;)
Обычно, данные заклинания - это наборы координат (четыре real, две точки), еще несколько значений, будь то урон, дистанция, угол и т. д., несколько юнитов (владелец заклинания, цель), игрок, иногда группа (чтобы в нее помещать уже пораженных заклинанием юнитов), несколько целочисленных (уровень, счетчик) и т. д.
Так вот, вы просто присобачиваете эту структуру к таймеру, и пользуете ее, описывается она всего 1 раз.
» click
ADOLF добавил:
Я пока набирал... ADOLF добавил:
Я согласен, но это не повод писать не сахарно, но тупо.
Ой-ли, раковый Си скрывает реальные опкоды и машинные команды. Мы что,место 1 команды должны каждый раз писать 10? Хотя я не спорю про то, что программист должен понимать, как работает та или иная команда, и что в нее завернуто. Больше про vJass, с cJass я фанател от низкоуровневой оптимизации, он там максимум скобочку где-то добавит. Никакого мусора. |
25.01.2015, 13:17 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,258Активность: |
ADOLF:
Отредактировано Кет, 25.01.2015 в 15:37. |
25.01.2015, 13:30 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
стоит отойти от "ява для чайников" и делать чтото не предусмотренное базовым курсом - добро пожаловать в те самые опкоды и имплементацию нативных методов на си.
стоит отойти от си для чайников и например написать драйвер какойнить экзотической фигни, добро пожаловать в ассемблер с опкодами уже процессора.
про то что было много случаев когда находили баги в коде процессора (особенно касается графических карт) тоже можно не говорить.
человек должен понимать как выполняется код, скрывая от него те самые опкоды за сотней обёрток язык не делает ничего хорошего.
система движения 2д рисуется на коленках за 5 минут на любом языке, и всегда это будет массивом или таблицей по которой будет бегать таймер, поток, итератор или еще чтонить такое в бесконечном цикле.
3д рисуется на коленках за час, там будут углы и прочие радости, но опять таки это будет массив зарегистрированных снарядов которые будут двигаться некоторым методом. |
25.01.2015, 17:58 | #13
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
А что, часто приходится? А как же черные ящики? А должен ли я знать конкретно архитектуру процессора? А должен ли я понимать, как там электрический заряд скачет? Это все конечно интересно, но в излишнем уходе в "низкий" уровень толка мало. Все выше перечисленное - специфические области, и зачем программисту, который пишет код исключительно под виртуальные машины понимать архитектуру железа? Нет, это конечно полезно, но фишка языков высокого уровня в том и состоит, что позволяет делать что-либо легче. |
25.01.2015, 20:24 | #14
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
архитектуру железа нет, архитектуру виртуальной машины очень даже не помешает.
натипные методы вара в данном случае это второй уровень абстракции, первый это тот код который будет передан вару, нулевой это всякие раковые надстройки и гуи. |
26.01.2015, 10:06 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|