ID:151361
 
Part of a game is feeling like you're immersed in the world. Showing off the beautiful graphics on your entire display. Interactive, and entertaining. One of the basics of this would be to have a transparent Input and Output. However, there seems to be no easy way to do so...and have it be up-to-speed.



Does anyone have a solution for me?
IainPeregrine, some time ago, showed me a trick he was using...

He uses image objects rather than client screen objects for HUDs, because updating a client screen object results in the whole client screen being redrawn and updated to the client.

I suspect that it is very possible to use image objects here, and only update when needed.
I don't use transparency for the game I'm working on, don't see any reason to.

But when I tried, I didn't see any problems, difficulty or issues with it.
http://files.byondhome.com/TheMagicMan/transparency.png

I used interfaces for the above screenshot, and got no slow downs or lag at all. If you for some reason do experience lag due to using transparency, you may very well simply need a more up to date computer.

Although, maybe there is some sort of different issue you are experiencing. Your post is vague and doesn't really say what issues you're having.
In response to The Magic Man
How do you do that, please assist?
In response to OrangeWeapons
Like I said, I used interfaces.
http://files.byondhome.com/TheMagicMan/interfaces.jpg

Like so.

The face is just a blank window with a transparent color set, the background of the image used is the same as that transparent color.

Like I said, I've never experienced any issues with this method. No slow downs, lag or errors of any kind. I don't really understand what you're having difficulty or issues with though.
In response to The Magic Man
Ah, you also gave me an easy idea for the input. I'll just have a transparent rectangle, and when you click on it, it will seem to 'solidify' with the output appearing there.

...Wait, doesn't creating a new window cause your focus to be like, messed up?
In response to The Magic Man
Also, how am I supposed to go about re-sizing it?
In response to OrangeWeapons
Yes, focus will go to the output window but the players shouldn't notice too much if the output has the same macros and you could also remove the default titlebar and make something of your own to cover it up.
In response to The Magic Man
It would be very helpful if you could explain further how you managed to place this window onto the main window with the map smoothly.
In response to Duelmaster409
proc
GetWinPos(mob/M)
var/v=winget(M,"default","pos")
var/sppos=findtext(v,",")
XPos=text2num(copytext(v,1,sppos))
YPos=text2num(copytext(v,sppos+1,0))


I use this function to grab the main windows position, then just use winset(usr,"window","pos=[XPos],[YPos]") to set the windows position.

The downside is interface windows can be moved, and don't follow around the main window. You could make some sort of loop to keep updating the position of the windows visible if you wanted to. But I don't because the windows are not visible constantly and don't need to be repositioned much.

In response to The Magic Man
Oh, I already know about this method. I thought you managed to overcome the necessity to have a 1-tick-delay loop going on updating the position. :(
In response to Duelmaster409
Yeah, there is nothing you can really do about that. The only way to constantly update an interfaces position is to manually update it.

Like I said, in my case, it's not really a significant issue. But I guess you could have the game automatically maximize it's self, so it can't be moved around. It's not the best of fixes, but most people seem to maximize the games window anyway.
In response to Duelmaster409
On a side note, I don't know how much of a process hog it would be if you were doing this with the already built in ticks for libraries such as HDKMouseKeys and Pixel_Movement.

It might just be feasible with the tick_lag as 0.25.

Or instead, if we had an "on move" command for windows, we could be able to have it check itself when being moved, and the main window will also call this so that the transparent window will reposition itself.


Oh balls, I think I just figured out how to incorporate skin transparency without a major rewrite to the engine. I'm posting the idea to byond features right now.
In response to The Magic Man
Just to poke this in this thread, while we're on the subject of interface and transparency:
http://www.byond.com/members/ BYONDHelp?command=view_tracker_issue&tracker_issue=1623

If we had this added, you would not have to change the entire windows transparency -and- you could have different transparent levels on the same interface window using the label transparency suggestion. :3
In response to The Magic Man
The Magic Man wrote:
http://files.byondhome.com/TheMagicMan/transparency.png

Heh, I saw you post that game on a certain image board the other day.

I used interfaces for the above screenshot, and got no slow downs or lag at all. If you for some reason do experience lag due to using transparency, you may very well simply need a more up to date computer.

This is a big problem. Most BYONDer's (myself included) are using rather old computers. Using transparency requires the game to be ran in software-rendering mode which really bogs down overall performance. My computer in particular will drop down to about 3fps for whatever game I'm playing.

Transparency is not worth the drawbacks.
In response to SuperAntx
SuperAntx wrote:
Transparency is not worth the drawbacks.

Then why don't we fix Dream Seeker to where it can use transparency effects without switching?
Isn't the whole reason we're having problems with transparency because of interface? Meaning, because you have different controls (output, input, browser, etc.) on the actual window, you can't achieve transparency that way?

Couldn't the entire interface be drawn in DirectX, using skins for the interface modules?