Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 30 Января 2015 Это популярное сообщение. Поделиться Опубликовано 30 Января 2015 (изменено) Судя по регулярно происходящему в других темах - таки нужна.Вот здесь как раз можете спросить про "зачем создали эту тему ?" А также про ООП, про как заниматься моддингом и его устарелости неустарелости, кто как его себе представляет и т.д. В общем, для много слов "обо всем". Что в более специализированные темы не лезет, но поговорить давно хотелось и хочется. Но таки да, пп 2.0, 2.1 и даже 2.5 правил здесь вполне таки действуют. Изменено 30 Января 2015 пользователем Dennis_Chikin 5 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Desertir 202 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 , я наверное не туда лезу, но все таки. Задача в чем заключается? Чтобы не плодить функций IsXXX()? ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 "Чтобы не плодить функций IsXXX()?" Как бы, типа того. Не то, что они объявляются совсем прямо вредными, но сначала понять их смысл: какие и сколько надо, и почему именно функции (и еще хуже - "методы", со всеми накладными расходами). Вообще, так вот подумав, что реально надо в повседневной жизни - это чтобы любой объект, имеющий конфиг, имел свойства, прописанные в конфиге. То есть, если мы в конфиге пишем "[неведомая фигня]\nтраляля = блаблабла" - то obj.траляля должно быть == блаблабла. кстати, еще неплохо таки сделать дефайны с инклудами, универсальные и для конфигов, и для скрипов. Это закроет весть вопрос с IsXXX() и прочими _g.ammo = [тыща строк] раз и навсегда. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Desertir 202 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 Короче - рассуждения. А была уже идея сделать одну функцию "проверить тип" с двумя аргументами? Первый - объект, второй - нужный тип. Все типы хранятся в хеш-таблице (аля енум). Не ну а чо. А непосредственно тип вещи пишем в св-во объекта. Хотяяя, как то не логично, вид вещи должен представлять класс. Я бы конечно сделал по ООП, абстракция -> базовый класс -> дочерние классы. В абстрактном классе говорим, что есть метод для проверки объекта, в базовом классе тупая реализация на РАВНО, ну и виртуальным на всякий случай сделать в базовом, чтобы дочерние в случае чего могли переопределить. Дальше по логике это все должно приводиться к уровню абстракции и там вызывается метод. По крайне мере я так ООП представляю PS: а что за негатив к "методам"? ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 333 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 PS: а что за негатив к "методам"? Ходят слухи что они неприлично много жрут, всего на свете... Хотя мне думается надо проверить. Насколько существенна разница. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) Задача в чем заключается? Чтобы не плодить функций IsXXX()?Насколько я понял, тут еще не все в курсе про smart_cast в движке и что его 3 года назад вытащили в скрипты в проекте Xray Extensions. Все простыни "isWeapon" разом отпали. http://www.amk-team.ru/forum/index.php?showtopic=10339&p=910319 game_object -> Методы для проверки типа объекта -> Регистрация функций в движке Изменено 24 Августа 2015 пользователем Shadows Ссылка на комментарий
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, начем с того, что в Луа нет методов. На этом можно было бы и закончить, но я проверил тут код ниже. local wpn = { base = "Call me like a " } function wpn:magic(ctype) local call_type = self.base..ctype end local cl = 3000000 local timer = 0 timer = os.clock() for i = 1, cl do wpn:magic("method") end print(os.clock() - timer) timer = os.clock() for i = 1, cl do wpn.magic(wpn, "static method") end print(os.clock() - timer) function magic(self, ctype) local call_type = self.base..ctype end timer = os.clock() for i = 1, cl do magic(wpn, "function") end print(os.clock() - timer) --[[ first time 0.28 0.29 0.27 second time 0.27 0.31 0.28 third time 0.28 0.32 0.3 ]] Не ну функции определенно быстрее. Лол. Изменено 24 Августа 2015 пользователем Desertir 1 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) Кстати про ООП. Интересно и даже по-русски. Хватит уже изображать ворчливого старика)Что ты, я за слово "метод", оно мне нравится, я так сказал потому, что существенной разницы нет. Изменено 24 Августа 2015 пользователем Desertir 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Zander_driver, начем с того, что в Луа нет методов Хватит уже изображать ворчливого старика) Знаю я про своеобразие "Луа-ООП" который как бы не совсем ООП, от слова совсем не. Но это не мешает нам его так называть. Насколько я понял, тут еще не все в курсе про . . . Xray Extensions Вот кстати. Я когда заглядываю в тему X-Ray Ext, то вижу там много вроде бы вкусного, но требующего хитрых танцев с бубном при определенных совпадениях фазы луны, нигде не указанных.Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ? Ну а мой пост что, не подходит под эти условия? Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Нет, не подходит. Много описания вкусностей "смотрите что у нас есть", но нет самих вкусностей. Где готовый собранный файл, который можно положить в папку и пользоваться без шаманских плясок? Не вижу. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, http://rghost.ru/private/7RK6xBwXb/648fb32a73b3e30b2879a8630f0886dc Дефолтная конфигурация, не требующая никаких скриптовых добавок (вроде все отключил). Изменено 24 Августа 2015 пользователем Shadows 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) 2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми. И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда). Изменено 24 Августа 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 , Можешь скинуть уже готовый SVN_portable_r230 для самостоятельной сборки dll ? Tortoise не работает у меня. 1 Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @TIGER_VLAD, это тебе к Макрону... Тем более он собирался как раз. Изменено 24 Августа 2015 пользователем Shadows 1 Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 , Ок, подождем)) Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми. И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда). Давайте мы при прочих равных факторах, обозначим список "подозреваемых причин" А затем проведем исчерпывающий тест. А то эти страшные мифы про то что ООП-код работает в 80 раз медленнее чем состоящий только из прямого вызова функций, уже конкретно достали. , Я так понимаю, с расширением Луа от RvP - не совместимо? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Dennis_Chikin, тот же сайт, тот же код, жмакал кнопку Run 3 раза. local cl = 3000000 local timer = 0 timer = os.clock() for i = 1, cl do local wpn = "wpn123" local s = wpn:gsub("123", "ABC") end print("method "..(os.clock() - timer)) timer = os.clock() for i = 1, cl do local wpn = "wpn123" local s = string.gsub(wpn, "123", "ABC") end print("function "..(os.clock() - timer)) method 0.4 function 0.45 method 0.41 function 0.44 method 0.4 function 0.43 На движке Сталкера не измеряю принципиально, т.к. там может быть всё, что угодно. Привык использовать то, что доступно сейчас, а не 10 лет назад. Еще не надоело думать о наносекундах? Давайте мы при прочих равных факторах, обозначим список "подозреваемых причин"Нужный спецы по компилятору Луа, я не в курсе, как он точно разворачивает конструкции obj:method(...) и obj.method(obj, ...). Я вижу два отличия, первое - явно передаваемых аргументов больше на один (как передается неявный self ?) и обращение к глобальному string. Возможно это сказывается на производительности... только не в ту сторону и не на те величины, чтобы на это обращать внимание. Изменено 24 Августа 2015 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 На движке Сталкера не измеряю принципиально, т.к. там может быть всё, что угодно. Привык использовать то, что доступно сейчас, а не 10 лет назад. Если учитывать тот факт, что обсуждаемые на этом форуме вещи часто сопряжены с практическим применением чего-либо именно на движке сталкера, то такой подход я бы не назвал верным... Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, а я нет, ибо исходники в доступе, актуальные версии чего либо подключить возможно. Правда никто не говорит, что это просто. Под шумок дополню. Я предоставил несколько кода и чуть чуть цифр, я не агитирую никого использовать методы или функции. Мне это без разницы, но ради спортивного интереса сделал. Я не считаю, что это обсуждение вообще достойно внимания, разница незначительна. По мне так есть более интересные задачи, вон в ковырялке двигла с транспортом разбираются, занятная вещь. Изменено 24 Августа 2015 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 ладно убедил Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти