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

Народная 2010 разработка


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

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

Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро.

Изменено пользователем Dennis_Chikin
  • Нравится 2
  • Полезно 1
Ссылка на комментарий

О звуках опять:

 

Ну, анекдоты и реакции на анекдоты - еще понятно. Там реально размеры немаленькие.

А вот время загрузки всяких characters_voice\human_*\*\help\,

особенно, wounded_heavy\help_, wounded_psy\psy_, not_wounded\help_ - по сравнению с историями вроде и быстро, но соотношение время/размер какое-то не очень адекватное. Imho.

 

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

 

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

 

P.S. И, да, БТР, которому как звук двигателя грузится балалайка - возможно, это и смешно. Было. Тому кто делал.

  • Нравится 1
  • Полезно 1
Ссылка на комментарий

И что, игроки действительно слышат звук балалайки вместо звука двигателя БТР?
В каком эпизоде игры?
Или это для красного словца было сказано?

ASUS P8Z77 \ Intel Core i5-3570 3400MHz \ RAM 16GB 1600MHz \ ASUS PH-GTX1060-3 ГБ 192 бит\\ ОС Windows 10 Pro x64 на SSD

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

SergeT, если он где-то спавнится - да, там будет балалайка. Чем изучать весь allspawn и все простыни диалогов на предмет этого БТР с балалайкой мне лично оказалось проще сам БТР поправить (в порядке истребления балалайки как предмета).

 

dtyz8, там надо не столько увидеть/услышать, а именно прослушать, идентичные "по источнику" (скажем, у вояк, долга, свободы и сталкеров обоих видов (и по 3 варианта каждого - музыка практически полностью идентична, и кто именно играет - на слух сказать нельзя))- собрать в один каталог, и прописать в конфиге признак, что брать именно оттуда. Ну а дубликаты (скажем, stalker и woman отличаются форматом, а звук абсолютно одинаков), соответственно, убрать.

 

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

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

@Saruman, как так? Неужели нельзя вытащить из сохранения текущее состояние ПДА\инвентаря? И потом записать туда?

==================

Эта тема имеет самые строгие правила в разделе "Народная Солянка".

Здесь пишут только разработчики и те кто помогает или хочет помочь в разработке или тестировании.

Ваш флуд здесь никоим боком .....!

Итого : Офф-топ, флуд и чат - спам.

+10 в шкалу.

BFG

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

Я, пожалуй, в этом оффтопике тоже поучаствую. В познавательных, так сказать, целях.

 

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

Если на страницу назад, то там будет про то, что вся загрузка даже для первого запуска игры может быть доведена до 20-30 секунд.

 

Вопрос первый: что именно хотелось бы сделать с ПДА/инвентарем за эти 20 секунд ?

Вопрос второй: да, ПДА и инвентарь на самом деле можно получить где-то с 10-й или 15-й секунды. Ну, за счет некоторого увеличения общего времени загрузки. Это действительно надо ?

 

Ну и вопрос третий, риторический: когда у нас перестанет игнорироваться то, что уже есть, и писаться про проблемы, решенные месяц-год-3 года назад ?

  • Полезно 1
Ссылка на комментарий

Если на страницу назад, то там будет про то, что вся загрузка даже для первого запуска игры может быть доведена до 20-30 секунд.

Действительно, на предыдущей странице было упоминание про столь хороший результат.

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

Уже на этой странице я отвечал по этому поводу, в силу каких условий можно получить время загрузки игры всего 18 секунд. На весьма среднем компьютере, причем.

(пост 1226).

У меня есть определенная уверенность, что на предыдущей странице время загрузки игры измерялось некорректно, т.е. ранее игра загружалась, перезагрузка компьютера НЕ выполнялась.

Разумеется, при повторной загрузке игры мы получим упомянутые 20-30 секунд. А у меня даже 18 получилось.

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

ASUS P8Z77 \ Intel Core i5-3570 3400MHz \ RAM 16GB 1600MHz \ ASUS PH-GTX1060-3 ГБ 192 бит\\ ОС Windows 10 Pro x64 на SSD

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

Несколько слов по поводу пропажи оружия у неписей:

основная причина - отнюдь не аддон Бака, а вовсе даже кривой amk_offline_alife.script

 

Исправленное исправлено все одним большим куском, и просто так ни на старую соль, ни на ООП и прочее не налезет. По принципу "спасение утопающих - дело рук самих утопающих" проще всего либо истребить отовсюду всех вызовов amk_offline_alife.process_trade(), либо (хуже, но проще) оставлением от самой функции огрызка

function process_trade() end

где дальше идет следующая function чего-то_там()

 

С какой именно строки начинается истребляемое, и на какой заканчивается - зависит от версии скрипта.

 

Глюк с "я без оружия" останется (вот он как раз в rx_*.script), но само оружие пропадать будет значительно реже.

 

P.S. Да, если кто-то чувствует желание попробовать себя в адаптации исправлений (по факту - переписанная полностью офлайн-торговля+уборшик+переодевание) под все 100500 версий имеющихся в обращении солянок - плиз в личку.

 

 

upd:

Внезапно, опять про время загрузки, лаги и кэширование ;)

 

Кто владеет, поиграйтесь с кодом в xr_logic:

local string_find, string_sub = string.find, string.sub
local ini_cache = {}
function get_customdata_or_ini_file( obj, fn )	-- можно и серверный и game object
	if fn == "<customdata>" then return obj:spawn_ini() or ini_file( [[scripts\dummy.ltx]] )
	elseif string_sub( fn, 1, 1 ) == "*" then	-- динамический ltx
		local p = string_find( fn, "*", 2 )
		return gulag_tasks.loadLtx( string_sub( fn, 2, p - 1 ), string_sub( fn, p + 1 ) )
	end
	--local pt = profile_timer()
	--pt:start()
	--local i
	--if ini_cache[fn] then i = ini_cache[fn]
	--else i = ini_file( fn ); ini_cache[fn] = i
	--end
	--pt:stop()
	--log( "info", "get_customdata_or_ini_file 3: " .. pt:time() .. " f: " .. fn )
	--return i
	local i = ini_cache[fn]
	if i then return i end
	i = ini_file( fn )
	ini_cache[fn] = i
	return i
end

 

Вот здесь кэширование таки нужно. Только не чтения файла, а "открытия". Которое собственно и есть "чтение". Ага. 10 неписей - пол секунды тормозов.

 

P.S. Модераторы, кто-нибудь может растащить пост в 2 разных по смыслу ?

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

 

Глюк с "я без оружия" останется (вот он как раз в rx_*.script), но само оружие пропадать будет значительно реже.

Уж не знаю что и где намудрили скриптеры, однако, в тестируемой нынче Солянке уже минимум год как отсутствует такое явление.
Совсем.
 

ASUS P8Z77 \ Intel Core i5-3570 3400MHz \ RAM 16GB 1600MHz \ ASUS PH-GTX1060-3 ГБ 192 бит\\ ОС Windows 10 Pro x64 на SSD

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

Вообще-то я там это и правил. Внезапно. И даже не год, а ровно 2 года назад.

Вот только те правки в старую не пойдут. Слишком много к чему привязано.

 

P.S. Вообще, Сергей, я Вашим постам удивляюсь периодически.

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

Требуется помощь зала.

У кого если вдруг есть коллекция солянок разных версий, закинуть файлики, загрузиться хоть с НИ, хоть с сэйвов, выйти, и ...

 

Все, разобрался. На самом деле просто надо какую-нибудь солянку чем древнее, тем лучше, и из нее файлик gamedata\config\misc\artefacts.ltx

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

Из допы от 22.07.2009г. пойдет? http://rghost.ru/47045234

Есть и из более поздних, если надо - залью.

 

Вот еще более древний нашел, из Соли от 14.06.09 - 

http://rghost.ru/47045605

 

То, что надо. Спасибо. dc.

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

Вы ленивы, следовательно - вы изобретательны. © граф Де Гиш

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

Гм. А посмотрите, кому не лень, в своих солянках файлики bind_monster.script

 

На предмет строчек function generic_object_binder:reload

Они там в одном экземпляре, или в двух ?

  • Нравится 1
Ссылка на комментарий

 Dennis_Chikin

НС(3.09.10)+ОП .

Нашел 2 шт.

1. в Обработчик мутантов

2. в  АМК. Очистка рестрикторов
 
 

Я имел в виду - в одном конкретном файле (именно в bind_monster.script) вот эту конкретную строчку.

Тупо, поиском в самом файле. Сколько строчек нашлось - одна, или 2 ?

 Вот я и написал в каких разделах  bind_monster.script . , тупо 2 штуки.

 

 

Изменено пользователем akva
  • Нравится 1

akva.gif

" Кто людям помогает , тот тратит время зря! Хорошими делами прославиться нельзя ! " ©

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

 Dennis_Chikin. тоже две (соль от 19.04.10) -function generic_object_binder:reload(section) 
 

Ага, спасибо. В других можно уже не смотреть. "О, сколько нам открытий чудных..." dc

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

Чудесное (из amk_mod.script):

 

if sini:line_exist ("respawn", "creature_binded_logic") == true then
local cfg_name = utils.cfg_get_string(sini, "respawn", "creature_binded_logic", false, false, false, "")
local t = amk.read_monster_params(obj)
t.custom = "[logic]\ncfg = scripts\\amk\\"..cfg_name..".ltx"
amk.write_monster_params(t, obj)
end

 

Ага, вот такой вот файл замечательный пытаемся читать: scripts\amk\.ltx

 

Кстати к вопросу о вылетах по стеку: получил устойчивый вылет именно по повисанию респавнеров. Любая ошибка в любой вызываемой из него функции. Разумеется, вылет в итоге на абсолютно любом скрипте и в абсолютно любой строчке - что чаще дергается, на том чаще и вылетает.

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

Ночью уже было поздно экспериментировать, попробовал щас.

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

 

 

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: f:\s.t.a.l.k.e.r\gamedata\scripts\amk_mod.script:2819: attempt to concatenate global 'cfg_name' (a nil value)

 

 

Такого вылета в Солянке никогда не наблюдалось (поиск!).

Это и доказывает, что "файл замечательный scripts\amk\.ltx" существует лишь в воображении, а в реальности скрипт оформлен строго по правилам и работает как положено.

 

Не закомментировать, а заменить на cfg_name = ""

Другое дело, что "в норме" такая ситуация возникать никогда не должна, а при отладке/тестировании там надо отсутствие строки/секции в лог выводить. dc

Изменено пользователем Dennis_Chikin
  • Нравится 1

ASUS P8Z77 \ Intel Core i5-3570 3400MHz \ RAM 16GB 1600MHz \ ASUS PH-GTX1060-3 ГБ 192 бит\\ ОС Windows 10 Pro x64 на SSD

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

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

 

Надо распаковать полностью ресурсы оригинала и солянки, чтобы получить ветку gamedata\sounds\characters_voice\*, по всем подветкам проверить (прослушать ушами) файлы на идентичность по смыслу (то есть, если там нет чего-то принципиально разного, а есть неполные наборы, двуязычность, отличия по качеству формату для C gamedata\sounds\characters_voice\human_01\, human_02\, human_03\, и в них соответственно для веток bandit\, dolg\, ecolog\ и т.д.,

и слить все в один каталог gamedata\sounds\characters_voice\human_01\stalker (образец: https://dl.dropboxusercontent.com/u/27871782/sounds_sample.7z - это я для музыки все сделал), лишнее - поудалять, оставив затычки.

 

После чего закинуть себе файл https://dl.dropboxusercontent.com/u/27871782/sounds_scripts.7z, найти в нем соответствующую строку (для музыки из примера это ["guitar"] = { ["rnd"] = { ["stalker"] = { 1, [[music\guitar_]] } } }, и ["harmonica"] = { ["rnd"] = { ["stalker"] = { 1, [[music\harmonica_]] } } }, ) и поменять в нем цифру 1 на 2.

 

Начать желательно с gamedata\sounds\characters_voice\*\*\help и gamedata\sounds\characters_voice\*\*\states\idle.

 

Ну а потом посмотреть на то, что станет с лагами и временем загрузки. Да, одна ветка даст изменение весьма небольшое, так что смотреть надо будет после хотя-бы упомянутых help и states.

 

P.S. Если найдется несколько желающих (в чем я весьма сомневаюсь), распределите между собой.

UPD: там, где я писал про замену 0 на 2 читать 1 на 2.

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

И хотелось бы высказаться, так сказать, по порядку ведения:

 

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

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

 

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

Соответственно, топик - фиксы и патчи, любые, временные или финальные.

 

Также вполне обсуждаемо и всячески желаемо что-либо новое, что не порождает явной несовместимости, не ухудшает играбельность, не накладывает на кого-либо каких-то дополнительных требований. Только не в виде "а вот сделайте мне это", а уже в готовом (как это выкладывается в "народном творчестве"), но с учетом обеспечения некоего единства всего, что делается. Либо, например, в форме "вот, у меня есть такой код, которые делает так вот и так, давайте вместе подумаем, как и куда его лучше вставить." Или, даже, в исключительных случаях, "я попытался сделать нечто новое которое должно исправить проблему/внести вот такие вот улучшения, но оно почему-то не работает, помогите".

 

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

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

 

Хороший пример - см. ссылки в шапке темы.

Или тот же файл с уменьшенными иконками инвентаря, которые много кто делал, но "окончательный релиз" так и не вышел. ;)

 

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

 

Вот как-то так это хочется все видеть.

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

убрал под спойлер, слишком много букв ни о чем

Все ясно.
Ответ аналогичный ответу на вопрос об загрузке Солянки за 18 секунд...
Т.е. уход от конкретного вопроса.
Какое интересно выяснение отношений? Все вопросы исключительно в попытках уточнить конкретные условия тестирования.
Если нет конкретных ответов на конкретные вопросы, то и смысла нет больше беспокоить.
Посты можно и удалить.
Однако, прошу обратить внимание, что практически все озвученные тезисы я проверял с конкретным и точным описанием методики проверки и с конкретными цифрами и логами.
О чем и писал в постах.

1. Условия тестирования: изменения в коде (общий объем на данный момент 6 129 652 байт, минус не знаю сколько, но много по сравнению с оригинал ТЧ + соль, около мегабайта мусора, думаю) + патчи из шапки + отключение всех посторонних программ включая антивирусы + оборудование, указанное в треде.

2. Про строки: прежде чем что-либо тестировать, потрудитесь разобраться, что и при каких условиях делает ВСЯ приведенная совокупность строк.

3. Если кому интересно пообсуждать/поспорить про вылеты по стеку на уровне, соответствующем теме, да потрудится во-первых переформулировать свои высказывания до этого самого уровня.

 

4. Про стирание, в свете Ваших более ранних высказываний, Вы уж, действительно, решайте с модераторами.

 

UPD: кстати, да, по 18 секунд: в зависимости от количества и разнообразия входящих в онлайн неписей, последняя фаза синхронизации способна меняться на эти же самые 18 секунд. И даже больше. За счет загрузки звуков. Так что игра в месте первого старта будет запускаться в полтора-два раза быстрее, чем около Волка. А где нет принудительно переводимых в онлайн солдат (или, как в ТД - бандитов), быстрее, чем где-либо на кордоне.


 

Виноват, еще раз побеспокою.
Повторно описываю МЕТОДИКУ измерения времени и все начальные условия измерений.
1. Чистая игра Сталкер ТЧ, патч 1.0006, настройки графики - полное динамическое освещение, максимальный настройки графики.
2. Конфигурация компьютера на котором производится измерение - в подписи.
3. Имеется сейв буквально со старта игры - прямо из бункера Сидоровича чуть не доходя до Волка.
Т.е. заданий никаких, число задействованных в игре объектов - минимум миниморум.

4. Антивирус, браузер и пр. посторонние программы отключены.
5. Включаем компьютер.

6. Загрузка Сталкера с проверкой лиц. диска, но с ключом -nointro.
Загрузка игры до меню длится 17 сек.
7. Загрузка упомянутого сейва длится 33,8 секунды.

8. Выходим из игры и НЕ ПЕРЕЗАГРУЖАЯ компьютер опять запускаем игру и загружаем тот же сейв.

Имеем результаты:
Загрузка игры - 14 секунд, загрузка сейва - 16 секунд.
Т.е. один и тот же сейв при прочих равных условиях может загружаться 33,8 сек и 16 (!) секунд.

Та же самая тенденция имеется и в Солянке - результаты я приводил в этой теме ранее.

Аналогичные же измерения я проводил, когда обсуждались вопросы включения\выключения кеширования. Отписывался с конкретными цифрами.
Эти же моменты мог проверить ЛЮБОЙ игрок. Но и пальцем не пошевелил никто, увы.


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

Однако я вижу лишь абстрактные рассуждения типа как в песне застойных времен "...Если кто-то кое-где у нас порой...".

Почему интересен этот вопрос?

Да потому что, если сейв Солянки на стандартном железе с холодного старта  загружается 18 секунд - это революция!

И всю команду GSC надо было давным-давно отправить работать пастухами в самое глухое село.

Аналогичная ситуация происходит и с другими задаваемыми вопросами.

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

Да еще и отписываться об полученных результатах...

 

 

P.S. а вот этот пост убедительно прошу не удалять. Все остальные - пожалуйста. Считаем, что они были не в тему. Сам удалить не имею прав.
 

Скрыл ненужное. Развернутый ответ отдельно. Далее прошу по всем непонятным местам уточнять без излишней лирики.

Изменено пользователем Dennis_Chikin
  • Нравится 1

ASUS P8Z77 \ Intel Core i5-3570 3400MHz \ RAM 16GB 1600MHz \ ASUS PH-GTX1060-3 ГБ 192 бит\\ ОС Windows 10 Pro x64 на SSD

Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   0 пользователей

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