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

Аватара пользователя
Chan_Roumen
Бета тестер
Контактная информация:
Откуда: --
Сообщения: 31
Зарегистрирован: 21 авг 2016, 01:00

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

13 май 2019, 13:05

Хочу предложить вам вариант ускоренной загрузки картинок на сервере, у вас картинки просто скачиваются, но лучше их создавать уже на самом сервере + игрок этого никак не заметит, крч проще переводить картинку из BASE64 в файл, и грузить его, могу скинуть функцию перевода из base64 в картинку
╔=======================╗
Vyacheslav_Vyatkin
Тел: 437 72-64
╚=======================╝
Аватара пользователя
Alex_Correa
Разработчик
Сообщения: 1058
Зарегистрирован: 17 дек 2016, 00:17

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

13 май 2019, 16:40

Ваш вариант может замедлить создание текстур, или забивать память клиента. В первом варианте это отсылать с сервера на клиент картинку (далее буду называть текстура) при каждом открытии игроком какого то меню. Во втором варианте это отсылать на клиент все уже закодированные текстуры при подключении на сервер и держать их в памяти клиента даже если игрок может ни разу не воспользоваться какой то текстурой, это мусор в памяти. Теперь представим сколько подключений может быть в один момент на сервер. Сейчас мы стараемся отойти по возможности от текстур и используем меню на DX. Всёетекстуры качаютьс при первом заходе на сервер и в дальнейшем лежат на диске клиента и ждут своей участи. После того как они уже не нужны, выгружаються из памяти. На скорость влияет расширение файла, размер файла, формат текстуры, тип сжатия текстуры (DXT...). Можно заметить как загружается инвентарь и допустим личные данные персонажа, есть разница по скорости и количество текстур
Аватара пользователя
Chan_Roumen
Бета тестер
Контактная информация:
Откуда: --
Сообщения: 31
Зарегистрирован: 21 авг 2016, 01:00

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

13 май 2019, 18:21

Пользователю не обязательно качать или создавать данный файл постоянно, а также сервер вообще не напрягается т.к вся логика находится у клиента, сам клиент принимает 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
╔=======================╗
Vyacheslav_Vyatkin
Тел: 437 72-64
╚=======================╝
Аватара пользователя
Alex_Correa
Разработчик
Сообщения: 1058
Зарегистрирован: 17 дек 2016, 00:17

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

13 май 2019, 18:40

Я думал мы говорим про создание текстур во время игры, понял. Если Вам интересно то в МТА реализованы функции base64Encode/Decode Про загрузку, если опять же вам интересно, то в конфиге сервера есть можно устанавливать URL от куда будет производится скачивание ресурсов, если оно не установлено то загрузка происходит с сервера на прямую, с сервера скачивает медленнее на много

Код: Выделить всё

httpdownloadurl
. Скоро мы изменим "источник" для скачивания, так же идут работы по сокращению размера кеша сервера, и еще есть пару вещей над которым ведутся работы сейчас, но пока рано их анонсировать. Уверяю что скачивание ресурсов в скором времени станет быстрее
Аватара пользователя
Chan_Roumen
Бета тестер
Контактная информация:
Откуда: --
Сообщения: 31
Зарегистрирован: 21 авг 2016, 01:00

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

13 май 2019, 18:43

Alex_Correa писал(а):
13 май 2019, 18:40
Я думал мы говорим про создание текстур во время игры, понял. Если Вам интересно то в МТА реализованы функции base64Encode/Decode Про загрузку, если опять же вам интересно, то в конфиге сервера есть можно устанавливать URL от куда будет производится скачивание ресурсов, если оно не установлено то загрузка происходит с сервера на прямую, с сервера скачивает медленнее на много

Код: Выделить всё

httpdownloadurl
. Скоро мы изменим "источник" для скачивания, так же идут работы по сокращению размера кеша сервера, и еще есть пару вещей над которым ведутся работы сейчас, но пока рано их анонсировать. Уверяю что скачивание ресурсов в скором времени станет быстрее
Скачка в любом случае упадёт после онлайна
╔=======================╗
Vyacheslav_Vyatkin
Тел: 437 72-64
╚=======================╝
Аватара пользователя
Alex_Correa
Разработчик
Сообщения: 1058
Зарегистрирован: 17 дек 2016, 00:17

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

13 май 2019, 19:04

Chan_Roumen писал(а):
13 май 2019, 18:43

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

Вернуться в «Технический раздел»