Доработка для ускоренной загрузки

Chan_Roumen

Бета тестер
21 Авг 2016
31
0
21
--
russian-gamers.ru
Хочу предложить вам вариант ускоренной загрузки картинок на сервере, у вас картинки просто скачиваются, но лучше их создавать уже на самом сервере + игрок этого никак не заметит, крч проще переводить картинку из BASE64 в файл, и грузить его, могу скинуть функцию перевода из base64 в картинку
 

Alex_Correa

Разработчик
17 Дек 2016
1,063
0
Ваш вариант может замедлить создание текстур, или забивать память клиента. В первом варианте это отсылать с сервера на клиент картинку (далее буду называть текстура) при каждом открытии игроком какого то меню. Во втором варианте это отсылать на клиент все уже закодированные текстуры при подключении на сервер и держать их в памяти клиента даже если игрок может ни разу не воспользоваться какой то текстурой, это мусор в памяти. Теперь представим сколько подключений может быть в один момент на сервер. Сейчас мы стараемся отойти по возможности от текстур и используем меню на DX. Всёетекстуры качаютьс при первом заходе на сервер и в дальнейшем лежат на диске клиента и ждут своей участи. После того как они уже не нужны, выгружаються из памяти. На скорость влияет расширение файла, размер файла, формат текстуры, тип сжатия текстуры (DXT...). Можно заметить как загружается инвентарь и допустим личные данные персонажа, есть разница по скорости и количество текстур
 

Chan_Roumen

Бета тестер
21 Авг 2016
31
0
21
--
russian-gamers.ru
Пользователю не обязательно качать или создавать данный файл постоянно, а также сервер вообще не напрягается т.к вся логика находится у клиента, сам клиент принимает BASE64 и обрабатывает его, далее можно делать проверку (if file.Exis......), т.е пользователю хватает одного захода на сервер чтобы картинка подгрузилась...

Пример кода чутка из другой игры но язык один (LUA)
P.S Это код на стороне клиента
Код:
	function util.Base64Decode( data )
		local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
		if !data then return end
		data = string.gsub(data, '[^'..b..'=]', '')
		return (data:gsub('.', function(x)
			if (x == '=') then return '' end
			local r,f='',(b:find(x)-1)
			for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 && '1' || '0') end
			return r;
		end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
			if (#x ~= 8) then return '' end
			local c=0
			for i=1,8 do c=c+(x:sub(i,i)=='1' && 2^(8-i) || 0) end
			return string.char(c)
		end))
	end

	if not file.Exists("rgplay","DATA") then
		file.CreateDir("rgplay")
	end
	if not file.Exists("moneyik.png","DATA") then
			file.Write("moneyik.png",util.Base64Decode("iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHaSURBVDhPvVRJL0NRGH38Av4GfoJhSfqqr21CwpqQWElsCKkxrSE2IiK2Yte+GlYiESSGaFqxsDCsUG2aUiGlND733F7DfYNhwWlO0r57vnPf9517q/wrfD5fsRr0VKi65gDrF+vL8Uws/xzqilrqDLlHnbp25dTdJFOLY03TtRIh/xqOsKtaDblTZiOZ7I2TjFWizBps5xomyhmL/XtjnMbn0Nqaok3saizqXO+iSCLKObgzIq2BqEGtsPlAYWayuGW1jXL5J8q/5Cn7nCVg+mBG0nCG3AFhUwCSswpg9nCOm4zsBqhhuYkyj7d0ljmTNCCb+aWUPo6GUQROxaa54URkkv/u2eqjgZ1hkw6Eh7BjhrpWayVqXG6mi7tLemGfjfNNal/rMGneCA9hZ28IotXgsc5mmePz7N8estTJhjYtoz20ie+tq+10/3RPpzfmGYK4RcLuPZS4UXR8fcKCyJB3qZFcYS+lsik+AqMOoSikFAm7AhC9UTi+P8nnl35IczNg/mhB0oCsXb+w+YDdwe7e6qVoMkax5IFlwqixvddssYrxV1ePdVYpyq0hTE1vaiSbW+JbszeghcJVNAeFANiG/h//fX0G0sdxcAQ9daAr7Cozpfm3UJRXP+NY8oeq66YAAAAASUVORK5CYII="))
	end

	if not file.Exists("rgplay/1.png","DATA") then
			file.Write("rgplay/1.png",util.Base64Decode("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB+gAAAfoBF4pEbwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABzSURBVFiF7dPLCYAwEIThWbEMG7GQNKn2oX1oH5OLgqiLL8Je5r9mAx8kCyhVIJI9nY6zVQRQAAH21W8vkGwAtM7xaGbLP9I9IHkrRjKtM1pDAR532oLtI100m9lUHACgc2YHAB7uc+FPIIAAAggQDlAqAyd+YYp7TUkXAAAAAElFTkSuQmCC"))
	end
	if not file.Exists("rgplay/2.png","DATA") then
			file.Write("rgplay/2.png",util.Base64Decode("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB+gAAAfoBF4pEbwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACDSURBVFiF7dOxDYMwFIThe4QxWAQpG6T2JGzBKEDPACmSPWAOHw1FBLYgsiw397ecpU9CD1AqQyRHRjpuqxJAAQT4rf73AckGQBv5/DGzNY10DXCxEyPp9o3OUIDbna6gf79caPgwv3TP+ZsdYOAQGnpWE4AgLqXiv0AAAQQQoDhAqQ0m1WWJgDNfAgAAAABJRU5ErkJggg=="))
	end
	if not file.Exists("rgplay/3.png","DATA") then
			file.Write("rgplay/3.png",util.Base64Decode("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB+gAAAfoBF4pEbwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACNSURBVFiFY2AYBaOABuD///+r/+MA6GqZBsKBow4YdQAyYCFVQ+d+TxlGFiZLbHL///w7Xu64/QlNHcDIwmTJyPB/FXbTmMIYGBhWk2LegEfBqAMG3AEYibDrsHcoNoXMjP8eF9tsP0FzB+BK4f/+M61hYGDA6jhKwIBHwagDRh0w6oBRBwy4A0bBKAAAI68xYkTF4n8AAAAASUVORK5CYII="))
	end
 

Alex_Correa

Разработчик
17 Дек 2016
1,063
0
Я думал мы говорим про создание текстур во время игры, понял. Если Вам интересно то в МТА реализованы функции base64Encode/Decode
https://wiki.multitheftauto.com/wiki/Base64Encode
https://wiki.multitheftauto.com/wiki/Base64Decode
Про загрузку, если опять же вам интересно, то в конфиге сервера есть можно устанавливать URL от куда будет производится скачивание ресурсов, если оно не установлено то загрузка происходит с сервера на прямую, с сервера скачивает медленнее на много
Код:
httpdownloadurl
. Скоро мы изменим "источник" для скачивания, так же идут работы по сокращению размера кеша сервера, и еще есть пару вещей над которым ведутся работы сейчас, но пока рано их анонсировать. Уверяю что скачивание ресурсов в скором времени станет быстрее
 

Chan_Roumen

Бета тестер
21 Авг 2016
31
0
21
--
russian-gamers.ru
Alex_Correa написал(а):
Я думал мы говорим про создание текстур во время игры, понял. Если Вам интересно то в МТА реализованы функции base64Encode/Decode
https://wiki.multitheftauto.com/wiki/Base64Encode
https://wiki.multitheftauto.com/wiki/Base64Decode
Про загрузку, если опять же вам интересно, то в конфиге сервера есть можно устанавливать URL от куда будет производится скачивание ресурсов, если оно не установлено то загрузка происходит с сервера на прямую, с сервера скачивает медленнее на много
Код:
httpdownloadurl
. Скоро мы изменим "источник" для скачивания, так же идут работы по сокращению размера кеша сервера, и еще есть пару вещей над которым ведутся работы сейчас, но пока рано их анонсировать. Уверяю что скачивание ресурсов в скором времени станет быстрее
Скачка в любом случае упадёт после онлайна
 

Alex_Correa

Разработчик
17 Дек 2016
1,063
0
Chan_Roumen написал(а):
Скачка в любом случае упадёт после онлайна
Возможно, но сейчас тех ресурсов что еще не задействованы вполне будет хватать. Если у клиентов или у серверов будут какие то проблемы во время пиковых нагрузок то конечно мы будем принимать меры, это может быть base64, или же другие способы.