Jump to content

Подгрузка текстуры с сайта


Recommended Posts

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

На них я заменяю текстуру (маловесную, около 30 кб). Которая подгружается и генерируется на Web-сервере.

Понятное дело что заменять надо на Клиентской стороне, с помощью:

dxSetShaderValue() и engineApplyShaderToWorldTexture()

И вот, при тесте сервера, при онлайне выше 20 человек и кол-ва элементов около 50-100 с заменнённой текстурой, при входе игроков наблюдаются провисания ФПС и кружок подгрузки у Всех игроков на сервере, потому что при входе нового игрока я заного подгружаю все текстуры на эти элементы, с помощью:

for _,v in pairs(getElementsByType("vehicle")) do 

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

Link to comment

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

Я так понял у Вас хендлер повешен на root, что и вызывает повторную подгрузку у всех игроков.
 

-- server
addEventHandler('onPlayerJoin', root, function()
    local tex = getTexFromWebServer()
    triggerClientEvent('onServerSendTex', source, tex)
    						-- второй аргумент - source - кому дергать этот триггер.
    						-- Т.е. тому игроку, кторый только что зашел на сервер.
    						-- Если указать root, то дернет триггер у всех клиентов. 
end)


-- client
addEvent('onServerSendTex', true)
addEventHandler('onServerSendTex', root, function( tex )
    applyTex...(tex, ...)
end)

 

Edited by obuhhh
Link to comment

@obuhhh, твой код не будет работать, так как при onPlayerJoin клиент мог не стартовать все ресурсы. При старте ресурса на клиенте слать триггер на сервер( или не слать, если вы кэшируйте ), с  сервера уже картинку на клиент. Можно использовать более специализированную функцию для этого

Link to comment
8 minutes ago, TheNormalnij said:

@obuhhh, твой код не будет работать, так как при onPlayerJoin клиент мог не стартовать все ресурсы. При старте ресурса на клиенте слать триггер на сервер( или не слать, если вы кэшируйте ), с  сервера уже картинку на клиент. Можно использовать более специализированную функцию для этого

Таки да, не учел. Но мой и не должен был работать. Отвечал, дабы указать скорее на ошибку, а не дать готовый код.

Еще интересует каким образом можно контактировать с внешним веб-сервером? Или я что-то неверно понял?

Edited by obuhhh
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...