Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

В скриптах особо не силен. Именно в написании. Но чисто имхо.
Использование SGM таймеров, более простое, да и разумнее наверно тоже. 
Пользовался, для реализации жажды, и прочих вещей. Отлично работают. Да и голод в чн ими реализован.
Амк конечно хорош. Но там черт ногу сломит. 

Ссылка на комментарий

Ну...

 

Жрет вызов функции. Факт.

Жрет выборка из таблицы в зависимости от размера таблицы.

2 выбора из таблицы жрут больше, чем 1 выбор из таблицы, даже довольно большой, но меньше, чем вызов функции.

 

Мораль: обратно ломать, чтоб все как было - ничего не будем.

И, да, если нечто используется довольно часто, и есть форма записи, которая быстрее, чем другая - почему бы и не использовать более быструю ?

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

И, да, если нечто используется довольно часто, и есть форма записи, которая быстрее, чем другая - почему бы и не использовать более быструю

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

Ломая совместимость чего ?

 

И мне казалось, что profile_timer() выдает результаты в микросекундах.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@Dennis_Chikin, дели на 10000, но про тысячные наносекунды я не буду говорить. Совместимость - имеется ввиду существующие моды. На самом деле ничего не будет с пары глобальных переменных. Вообще про совместимость лучше не начинать, под одну гребенку все не причесать.

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

Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Читаю потихоньку ваши труды. Ну вот правда, где РЕАЛЬНО вы видели циклическое размусоливание system_ini() или math.random по 10000 раз за апдейт? Для неких практических нужд. А если видели, ну, вызовите доктора тому кто такое написал. Страдает же человек.

По факту никто такой ерундой не занимается, я думаю. У меня вот спавнятся мои аномалии, замерял, жрут что-то около секунды на генерацию всей локации. Только секунда эта, в загрузке уровня находится. Ну сокращу я допустим эту генерацию с 1000мс до 600мс. кому-то от этого жарко или холодно станет? Нет.
На самом деле даже огорчает, что столько времени и сил вы тратите на выигрывание каких то миллисекунд там где они не решают ничего совершенно. Дело ваше, но неужели ничего более полезного не нашлось? неужели там в солянке все коды так "идеально" организованы, что больше нечего оптимизировать кроме этого.

Гораздо полезнее было бы наверно, прочесать коды и выкинуть циклы оттуда где они не требуются, вычистить простыни из 100500 if .. then странного содержания, и превратить их в нечто более благородное и лаконичное. Пользы будет в разы больше. Не говоря уж о том что на ясном, лаконичном и кратком коде, проще создавать что-то новое. Удобнее, знаете ли.

  • Нравится 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий

 

 

А вообще таймеры не нужны.

Нет :) Просто мало кто умеет их готовить. Полезным (и незаменимым!) может быть что угодно.

  • Нравится 1
  • Согласен 3

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий
@Zander_driver, практика показывает, что все по своему вычищают простыни и всякий мусор, т.к. уже вычищенные скрипты крайне не понятны и требуют (порою немалого) времени для "разобраться", прежде чем что-то начать на них делать ("пиксельные" выдергивания оптимизированного кода разве что будут). Допустим два человека тут уже выложили свои скрипты, ты сам лично на них начал-бы разработку? :)
Ссылка на комментарий

О ком идет речь, если не секрет?) Если о том что лежит в этой теме - пардоньте, тут либо идет погоня за миллисекундами в процессах вроде загрузки уровня, либо то что мне совершенно не надобно, т.к. имеется свой аналог такой же или лучше.
Я разработку веду давно, используя повсеместно для всяческих нужд скрипты Артоса. Ну и плюс Кираг, другие авторы по немножку, свои где мне чего-то не хватает.

уже вычищенные скрипты крайне не понятны и требуют (порою немалого) времени для "разобраться", прежде чем что-то начать на них делать

 

Это да, имеет место быть. но наверно эту проблему мог бы решить автор "чистки" - подробными комментариями что где и зачем. Артос вот завел себе привычку прикладывать к своим скриптам понятный любому ридми - и почему то проблем с использованием его работ у меня нет.

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий

На мой дилетантский взгляд идея рефакторинга (или реинжиниринга, как угодно) в нашем конкретном случае очень даже полезна. Ибо, как говорил Денис, разбираться в чужом восьмисоткилобайтовом скрипте априори сложнее, чем в шестидесятикилобайтовом. Это даже не то чтобы сложнее, а просто зануднее.

 

 

такие переделки либо для каких-нибудь любителей красивого кода

Вот-вот, только Денис, как я понимаю, пытается объяснить, что дело не в красоте, а в сокращении времени загрузки и предвидении разумного количества постпотраченного кем-то, кто будет разбираться для каких-то своих целей, времени.

 

 

А рефакторингом пусть занимаются сами разрабы модов

Такой вопрос: а когда они создавали те скрипты, рефакторинг которых показывает сейчас Денис, они чегой-то не занимались этим? А товой, что они в тот момент были на свете всех милее, всех румяней и белее. По крайней мере, их зеркало им об этом говорило. Ну, вы понимаете. И лучше сейчас этой статьей показать подводные камни тем, кто начинает, чем потом заставлять их все переосмысливать. Эти грабли для начинающих в целом сейчас гораздо более опасны, чем раньше, когда на очень многое закрывались глаза.

Или я не прав?

Ссылка на комментарий

@Murarius

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

Т.к. (по аналогии выходит) если писать "как всегда", то в итоге получим "плохо"

 

Я всегда был за! усовершенствование кода.

Только с этим делом нужно не переусердствовать.

"Выпиливать " целый день код, который работает от силы несколько раз, или даёт минимальный  положительный эффект - неразумно.

Разве что личная неприязнь к "простыням" или моральное удовлетворение от красивого кода (я в этом числе ) ).

 

@Dennis_Chikin

В любом случае, я (например) за. +1.

Изменено пользователем Nazgool
Ссылка на комментарий

"Выпиливать" иногда приходится элементарно для того, чтобы разобраться, как оно вообще работает. Многое выглядит, как прогнанное через обфускатор (а может быть и не "как").

 

Плюс начинаешь разворачивать, а там такое... От банальных опечаток и до, действительно "надо доктора вызывать".

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

 

 

Если глянуть по ссылке, про "историю пессимизации" - там вообще-то 10-15 секунд загрузки на вычищенных конфигах, и аж минуты на невычищенных. Плюс "хромота" непосредственно в игре. Плюс 10 секунд (до 2-х минут на ОПКМ) той же загрузки на "торговле", + 4 на тайниках, + 4 на ящиках, плюс 10-30 загрузки и лаги непосредственно в игре по 2 сек на звуках. Ага, вот это у нас называется нынче "гоняться за наносекундами", и "делать ничего не надо". Запуск игры по 4 минуты и перезагрузка по полторы-две после каждой смерти... На не самом древнем железе. Ну нифига ж себе - "неважно"... Не говоря о десятках и сотнях мегабайт памяти при разборах этих конфигов. Да, я понимаю, можно сказать и про "сначала конфиги зачисти". Ага, во всех солянках, всех дмх, всех опах и что там еще наплодили, я вот должен бегать и конфиги чистить. Офигеть...

Ну я не говорю вообще-то что в таком тяжелом случае за сокращением времени гоняться не надо. но вы согласитесь, это же случай в самом деле ужас какой тяжелый. Вы этого лагодинозавра любите и хотите его лечить - дело ваше. Я бы наверно не стал. и если б мне предложили разобрать и привести в благообразный вид 800кб чужого кода из мерзких if-then портянок, ну, я бы задал вопрос "А что оно вообще делает?" и написал бы свое для этих целей, с нуля. А разжиревшего динозавра - просто в корзину.

 

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

 

 

 

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий

@Nazgool, в полном переписывании всех скриптов игры есть один существенный плюс. В конце ты разбираешься что и как делает каждый скрипт. Хотя-бы ради этого я думаю стоит заниматься этим делом. И да, в общем и я сам из касты любителей прекрасного, правда навыков нет пока ничерта, но стараюсь разбираться и хоть как-то пытаться писать вменяемый код.

 

 

 

или его устраивает так и ходить по граблям.

Ну допустим если ты делаешь какой-нибудь сюжетный мод, то тут оно и не надо на мой взгляд. Все зависит от вектора твоего проекта.

Ссылка на комментарий

Вот, в точку! проекты совершенно разные бывают, с разными целями у разработчиков. Некоторые вообще без скриптера в команде обходятся, и ничего.

 

Кстати, приведу одну цитату, ко всем "не надо ничего !" ;)

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

Этим и занимаюсь - делаю простые как бревно, вещи, которых никто почему-то не сделал. Очевидно потому что считали - не нужно, и так хорошо. А я считаю что - нужно. То что было в АМК 1.4.1 лично меня не устраивает."

 

dc

Изменено пользователем Dennis_Chikin

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий
local c_wnp = _G.c_wpn or {} -- здесь должна быть табличка clsid стволов.

Хороший посыл. 

clsid стволов - (т.е. просто константы) для оригинала прошиты в движке (см. lua_help.script), и таки кто-же возмётся их всех прописать (с учётом модификаций оригинала) в такой супер табличке? У Вас есть кандидаты на такой подвиг?

А как Вы думаете? почему никто не правил function isWeapon(object)? из _g.script? да именно по этой причине. Оптимизаторы...

 

Да. кстати, предупреждение по 2.1. Пока без r/o. Тут недавно люди и за меньшее получали. С баллами. dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Вот это - function isWeapon(object)
local clsid_weapon = {
    [clsid.wpn_ak74_s]              = true,
    [clsid.wpn_bm16_s]              = true,
    [clsid.wpn_grenade_f1]          = true,
    [clsid.wpn_grenade_fake]        = true,
    [clsid.wpn_grenade_launcher]    = true,
    [clsid.wpn_grenade_rgd5]        = true,
    [clsid.wpn_grenade_rpg7]        = true,
    [clsid.wpn_groza_s]             = true,
    [clsid.wpn_hpsa_s]              = true,
    [clsid.wpn_knife_s]             = true,
    [clsid.wpn_lr300_s]             = true,
    [clsid.wpn_pm_s]                = true,
    [clsid.wpn_rpg7_s]              = true,
    [clsid.wpn_shotgun_s]           = true,
    [clsid.wpn_svd_s]               = true,
    [clsid.wpn_svu_s]               = true,
    [clsid.wpn_usp45_s]             = true,
    [clsid.wpn_val_s]               = true,
    [clsid.wpn_vintorez_s]          = true,
    [clsid.wpn_walther_s]           = true,
}
    return (object and clsid_weapon[object:clsid()])
end - по Вашему - ЧТО ?

 

Только заполнена неправильно, и реализация, опять же, странна (создание таблицы при каждом вызове).

 

Плюс к тому, за заведомый бред, запощенный в этот раздел, про lua_help в частности, хотя скриптовые классы на самом деле определяются в class_registrator, будете отправляться в r/o каждый раз, как оттуда вылезете.

Изменено пользователем Dennis_Chikin
  • Нравится 1
Ссылка на комментарий
@Dennis_Chikin, еще по моему в 2010 все сделали эти массивы ВНЕ функций, а строили их на "старт колбеке". Сама же функция проверяет юзердату, либо готовый клсид (у меня так). Кстати подобного ужасающего кода просто валом, и в модах в том числе.
Добавлено Dennis_Chikin,

Здесь просто первый попавшийся фрагмент из чего под руку попалось. В качестве примера на "кто-же возмётся их всех прописать".

 

Ну а в скрипте, который обсуждается, оставлена просто пустая таблица, именно по тому, что мало ли у кого как, и как называется. Скажем какое-нибудь IAmAWeapon или еще что. В общем, просто вписать.

  • Согласен 3
Ссылка на комментарий

@Serge!, lua_help.script вообще движком не читается. это файл-справочник, который когда-то был нужен разработчикам.

 

 

почему никто не правил function isWeapon(object)? из _g.script?

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

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий

Скорость? С нетпакетами? Вы серьезно? О_о

Библиотека нетпакетов создавалась для использования on demand, а не в polling режиме. 

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...