Movement question

If for example, you rescripted a player system so that the actual player was invisible. Then made a showimg of the player visible to all players, and moved that showimg based on a new x,y value. Then blocked off sections of the level in number ranges (effectively like tiletypes). Moved the display thru setfocus.

Could there be many benefits to this system, or only redundancy?

Off the top of my head, I think of being able to zoom player, player transparency, edit player colors(hair for example), show status effects on player, quicker collision detection maybe?, and getting to ignore all pre-existing graal systems for blocking and damage.

You cannot use effects on showani, if you could do transparency, it would apply to all layers (looking sloppy). However, making the players invisible except for showani/showimg will have a flaw, they will not show to other players.

You have been warned D:

[QUOTE=Beholder;15035]However, making the players invisible except for showani/showimg will have a flaw, they will not show to other players.[/QUOTE]

That’s only if you disable the player’s visibility through enablefeatures, if you simply set their gani to hidden and moved their real position to -100,-100 you wouldn’t have that problem at all.

if you moved em to -100 -100 you wouldn’t need to hide their gani (since you can’t see past -64) and on an overworld that would send them up-left at 2 levels a frame o_o

So hide their gani instead. And it wouldn’t send em levels up, because no level link is being touched.

Well I was thinking of using all showimgs (just animating using spritesheets instead of gani’s) with a index of higher then 200 or whatever, so it shows to all players. Then like you said, puttin the invisible players at like 1x,1y.

For the map, I guess I could just work the new player x / y’s into a custom map script.

What do you mean by transparency applying to all layers?

(lol no positives thought up for this idea yet?)

It’s a bad idea. If you’re willing to do this, make your own game. Graal is too shotty of an engine to do this on.

You could use a weapon script to draw all of the players on each person’s client if you wanted to be able to manipulate the zoom or transparency. You would lose the ability for players to change their body colors (coat, sleeves etc.) unless you broke each image up into many parts, but other than that it is possible. Graal’s built in wall detection only checks 3 points or so, which would let you make more accurate wall checks and change player movement speeds. The only real problem with not using Graal’s built in systems is that they run much faster than the same things scripted using gscript. For example you most likely wouldn’t be able to draw a level’s tiles using a script since 4096 images would put a huge strain on most computers if drawn using gscript.

You can’t see showanis or showimgs cross-level on a bigmap in Graal…

well not this version

Would a rescripted player graphic really put that much extra strain on the client? Bomy scripts do it, only differnce is their positioning coincides with the invisible player.

Won’t strain the client, but its what the client is capable of. You would not be able to see said person if they were on another level.

Well I could have it make an npc representation of the players on the 4 connecting levels, since I have the x/y and level of all players as server.strings. But, i’m pretty sure not having that won’t bother me to much. Building most of my levels around a high resolution, and on my client atleast, in high res’s it doesn’t seem to show connected levels anyway.

Uh… Having every players level, x and y in server strings is a really bad idea.

It’s a ton of lag for each client…

Each setstring sends a packet to the server, each serverstring sends a packet to each player. Every player trying to send a serverstring will over write the serverstring by what each of them sees locally.

Seemed to run okay lag wise. But what do you mean by, [quote]Every player trying to send a serverstring will over write the serverstring by what each of them sees locally. [/quote]
There is 3 string lists in all for x,y and lvlname. Each player replaces the string value at their assigned playerid on the stringlist. I guess each player will constantly be getting updates to those 3 strings, and also be constantly updating those 3 strings at intervals. With 13 players tho, didn’t see much of any slowdown.

Didn’t you say once that chat should lag more then server strings? or just the fact that the strings are being updated often makes it a possible sink hole?

I wonder if you might be able to get around the inability to ‘showimg’ in adjoining levels by drawing everything on screen, using visibility levels of 4 or greater. You would have to draw everything that you wanted to show over the player at a higher level, including guis, and do some converting of coordinates, but it should be possible. The only problem I can really think of with this off the top of my head is sometimes things drawn with a visibility of 4 or higher seem to lag behind the player, so if you were using ‘setfocus’ the images might lag behind the screen movement.

What I think Beholder means by this is that you have to keep in mind client<>server communication isn’t instant. If 2 players are moving, they read the string for all of the players, and then only update their position, and then send the entire string back. Since they don’t receive new player coordinates instantly, but instead 0.05 or 0.1 seconds later or more, they are sending back all of the other players’ old coordinates that they received in the string. This means if 2 players are moving, they are constantly overwriting each others positions with older versions of the same string.

This problem could be worked around though by using different strings for each player, such as server.position_#a and then use a loop to check the position of each player in the level using server.position_#a(index), or just using the player parameters like #P2 and #P3.

Ah I see, thanks. Connecting levels do seem to add a factor then. As of now, i’m not using the server strings x/y for anything display wise except for map position, since showimgs with high indexs show to all other players.

I was kinda curious how that might play out tho. Like if one player updates a string position on a string list, does it pretty much “book” out that string and make a change, then send it back to the server? So if multiple ppl were changing the same string then you’d get errors to the string? Not really an issue if the client only submits the changes to the location in the string list, but it is if it sends the whole modified string list as one update.

Also, the way someone said it, was that server strings are sent to all players as soon as their is an update to them? I probably falsely assumed that the server.strings were only sent to the player when called for by a script?

[edit:] Anyone think of a creative way to Stress test the client?

Client would be fine, its the server that would have to bust a nut. But generally, server doesn’t do much “work”, so it should be fine. if anything dies, its a player’s poor connection.

My client died to pure shit fps after writing and storing a 4096 character string… So be careful.