ID:133993
 
So, from my understanding, all graphics in BYOND are stored server-side and downloaded to the client. However, when it comes to dynamic icons, it is my understanding that these are rendered first by the server, THEN downloaded by the client to view.

This explains things like why color changing in the character creation screen of Final Fantasy Online take a few seconds to show the new icon and why seeing alternate colored players coincides with an icon download, or why text/HUD drawing on the map window can sometimes appear flickery.

My question, thus, is this: IS it possible to have client-side dynamic icon generation? That is, the client itself would be able to generate an icon on the fly without the server having to care what the icon contains?
Clowd wrote:
My question, thus, is this: IS it possible to have client-side dynamic icon generation? That is, the client itself would be able to generate an icon on the fly without the server having to care what the icon contains?

We actually worked on this a little last year. The server generates instructions for the client to manipulate the icon, which in theory should be faster than the current system. In practice, it wasn't, and we just haven't had the time to work that out with everything else going on. But it's definitely on the docket.
In response to Tom
Ah, I see. Good to know it's on the to-do list. It'd make HUD graphics much nicer on hosted games to not have to see the flickering or wait for changes in the HUD (Again, see FFO or any Dragon Warrior game that uses the classic DW HUD).

Perhaps a method of creating client-side functions (that can only access client-side files via read-only) might be a more viable solution than your first try?

I'm not sure how BYOND handles it, and I am not that knowledgeable about whether or not that is possible with BYOND's current client implementation, so I don't even know if that'll work.

I hope you guys can find a solution!
In response to Clowd
The reason this was brought up was because I was fiddling with another way of rendering any form of graphics. So I designed a system that takes numbers from other objects and crafts a new /icon object based on those other objects' icons and x and y's using a series of Blend() and Shift().

The problem though is when a new icon is created the client has to completely redownload the icon entirely. So my pixel-based movement and rendering system is kind of at a brick wall. If I had one object change an x value over 10 refreshes of a new /icon object, the client would have to redownload the same icon 10 times and possibly miss out on all the animations.

I crafted a crude demo of it somewhat.

http://h1.ripway.com/Kheldar/GraphicsBox.zip
In response to Dark Master XII
y offset the pixels in the actual icon and not just change the pixel_x/y of the object?
also as to the flickering screen when HUD updates, this seems to only happen when OpenGL is turned off