Zadrot FPS

03.06.2021 - Zadrot

Пробую писать аддоны для The Elder Scrolls Online

Недавно обратил внимание, что игра лучше всего работает с ограничителем в 65 фпс
Может быть это только у меня, однако при 65 фпс нагрузка на CPU и GPU ниже, чем при 60 фпс (с ограничителем или VSync)
Так же в игре нет функции ограничения кадров в фоновом режиме (да и в обычном тоже)
Вот из-за этого всего пришлось разобраться и сделать маленький 1 КБ аддон

Использование: /zfps  фпс  фпс_в_фоне
Пример: /zfps 65 20

Собственно 65 20 - это значение по умолчанию. Можно просто установить и ничего не делать. При этом должна повыситься производительность, а нагрузка на железо уменьшиться

Качать тут:
Zadrot FPS (Curse)
Zadrot FPS (EsoUI)

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
local Name = "Zadrot_FPS"
local foreground = 65
local background = 20

local function Load()
	if Zadrot_FPS_Saved and Zadrot_FPS_Saved[1] and Zadrot_FPS_Saved[1] > 0 then foreground = Zadrot_FPS_Saved[1] end
	if Zadrot_FPS_Saved and Zadrot_FPS_Saved[2] and Zadrot_FPS_Saved[2] > 0 then background = Zadrot_FPS_Saved[2] end
end

local function Set(active)
	if active then SetCVar("MinFrameTime.2", 1 / foreground)
	else SetCVar("MinFrameTime.2", 1 / background) end
end

EVENT_MANAGER:RegisterForEvent(
	Name,
	EVENT_ADD_ON_LOADED,
	function(_, loadedAddon)
		if loadedAddon == Name then
			EVENT_MANAGER:UnregisterForEvent(Name, EVENT_ADD_ON_LOADED)
			Load()
			--Set(DoesGameHaveFocus())
			Set(true)
		end
	end
)

EVENT_MANAGER:RegisterForEvent(
	Name .. "FocusChanged",
	EVENT_GAME_FOCUS_CHANGED,
	function(_, focus)
		Set(focus)
	end
)

local function ZadrotSC(args)
	Zadrot_FPS_Saved = {}
	for d in string.gmatch(args, "%d+") do
		table.insert(Zadrot_FPS_Saved, tonumber(d))
	end
	Load()
	d("Foreground = " .. foreground .. ", Background = " .. background)
	Set(DoesGameHaveFocus())
end
SLASH_COMMANDS["/zfps"] = ZadrotSC