Commit Graph

8 Commits

Author SHA1 Message Date
Melichior
53db2cbcd1 Fixed 'in' precedence errors. 2015-12-29 17:16:09 -07:00
MrStonedOne
921c9eede1 Asset cache Fixes
Fixes asset cache locking up the MC initialization at world start.
Fixes asset cache not pre-loading resources to clients that connect from a world reboot.
Fixes a null reference runtime relating to the client disconnecting at the wrong time (I still conciser this to be a byond bug)
Fixes crew monitor registering assets because they exist
Fixes crew monitor trying to send zlevel assets for zlevels it hasn't processed.
Fixes nano ui sometimes not sending the template asset to the client on open.
2015-11-29 07:19:49 -08:00
MrStonedOne
c784ca902e Ports /vg/'s asset cache system; lowers interface lag when clients connect.
Byond will queue all browse(), browse_rsc(), and winset() calls to the client, to ensure they load in order, and ensure any resources from a browse_rsc call (css/html/js) are already at the client by the time any html windows loads.

How ever, each file is processed separately, and byond will wait for the reply from the client before it will send the next file.

Our current system sends all of these html resource files to the client at once when they connect, this is the sole cause of the lag when a client connects. Byond will not send the client a file it already has, but it has to ask the client first, and it does so one file at a time, waiting for a reply from the client before sending the next one down the pipe.

This system fixes that.

Basically it works like this:
Client connects: nothing happens, no massive queuing of browse_rsc() calls, so no interface delay
Client opens a asset_cache controlled html based interface
Asset cache gets notified by the html based interface what assets the client needs to have.
Asset cache checks to see if it's sent that client those files.
Asset cache sends the missing ones, adding them to the list of assets the client has.

This basically spreads out the delay to when you first open a window that uses resources, where it is much more manageable.

I've kinda done a halfass port without too much thought, I see some room for improvement to better fit /tg/'s coding style and make the system more flexible. I'm PRing this because if I don't, it will never get finished.

PDAs and html_interface has been imported in to the new system lazily to test. at 100ms connection start interface lag went from 35 seconds to 16 seconds. Nanoui hasn't been imported, and once it is, that should drop down to almost nothing.

I'll work on this some more after some sleep.
2015-11-15 23:49:05 -08:00
NullQuery
a3efc91ab9 Modifications to crew monitoring computer, procqueue and html_interface.
- procqueue: You can now schedule procs to be executed at some point in the future.
- Crew monitoring: see issue #10498
- html_interface: fix for Nanotrasen-style windows, refactor Javascript files and move them in their own folder
- Includes changelog entry for the crew monitoring changes.
2015-07-12 13:37:18 +02:00
NullQuery
c694febb77 Minimap support for the crew monitoring computer. 2015-06-28 23:00:39 +02:00
NullQuery
b4248b01e4 - Crew monitoring computer using the html_interface module
- Patch: Don't update html_interface clients that have been inactive for more than 10 minutes.
- Patch: Attempt to speed up _renderContent some more (in case of multiple clients) by using spawn.
- Patch: Second argument for hiIsValidClient hook: reference to the current html_interface object (used by crew monitoring computer).
- Feature: procqueue singleton. You can use this to put proc executions on a queue. Used by the crew monitoring computer to queue the update "for the next tick" when humans move.
2015-06-27 10:26:46 +02:00
NullQuery
43a12f93c1 Reduce lorem ipsum in the example code. 2015-06-08 22:23:55 +02:00
NullQuery
1b364c0e82 HTML interface module + playing cards (ported from Baystation12 with modifications) using the new module 2015-06-08 22:13:25 +02:00