ID:260159
 
I suggest adding a see_client var. Setting it to 1(default) will cause you to see other players, and 0 will make them not visible to each other. And perhaps even add a var that makes density of other players not apllying to you. So that other players' density dont bother you when you bump into invisible players.

The reason I want this added, is because I(and I'm pretty sure that there are way more) want to create a single-player game, but yet it's supposed to being hosted - you see, I want players to be able to communicate with each other but cannot see each other. So that everyone can calmly play the game, without even noticing the other players on the map. Of course I could play with invisibility and see_invisible, but it's all quite complicated and I believe it's even impossible to achieve what I want with that method.

I really want this variable added, in fact - maybe much more. Because I'd like more features that make it easier to create such multiplayer but yet singleplayer games. Such as editing icon states of objs/turfs that will be only visible to the mob changing the icon_state.

E.g.: lets say I want to change/flick the icon_state of a computer, the icon_state I want it to flick is an explosion, and called "explosion". And every player needs to destroy a computer if they want to get further in the game. And there is only one computer in the game, and lets say that 5 players are coincidentally at the same time at the computer, and see_client is 0. Of course it'd seem odd if the computer explodes 5 times by it's own - which is why icon_state changes/flicks should not only be viewable by everyone, but also only by individuals.

I hope that this will be considered, added in 4.0, and that games based on the single-but-yet-multiplayer games will popup after the releasment of BYOND 4.0. If you have any questions, comments, or if there is something not explained clearly then just drop a reply.

Thanks,

O-matic
O-matic wrote:
I suggest adding a see_client var. Setting it to 1(default) will cause you to see other players, and 0 will make them not visible to each other. And perhaps even add a var that makes density of other players not apllying to you. So that other players' density dont bother you when you bump into invisible players.

Both of these are doable by other means now. For the former, use /image. For the latter, just use Enter() and Entered().

The reason I want this added, is because I(and I'm pretty sure that there are way more) want to create a single-player game, but yet it's supposed to being hosted - you see, I want players to be able to communicate with each other but cannot see each other. So that everyone can calmly play the game, without even noticing the other players on the map. Of course I could play with invisibility and see_invisible, but it's all quite complicated and I believe it's even impossible to achieve what I want with that method.

If you want a single-player game that multiple players can play at once while communicating to each other, then you need multiple maps. Even if you were to forgo that and use /image for everything that could move, either way you'd run the risk of hitting one of DM's object limits.

I really want this variable added, in fact - maybe much more. Because I'd like more features that make it easier to create such multiplayer but yet singleplayer games. Such as editing icon states of objs/turfs that will be only visible to the mob changing the icon_state.

It sounds like you'd be much better off just coordinating the worlds so they could send text to each other with world.Export().

E.g.: lets say I want to change/flick the icon_state of a computer, the icon_state I want it to flick is an explosion, and called "explosion". And every player needs to destroy a computer if they want to get further in the game. And there is only one computer in the game, and lets say that 5 players are coincidentally at the same time at the computer, and see_client is 0. Of course it'd seem odd if the computer explodes 5 times by it's own - which is why icon_state changes/flicks should not only be viewable by everyone, but also only by individuals.

Again, /image is the only way to do that. It's the only reasonable way to do it, actually.

Adding such a feature internally would not only be a bad idea, but it'd be all but impossible. Imagine every object having to keep track of a list of separate internal states for every player! Clearly what you're asking is ridiculous, and you need to approach the problem another way. That means either you have to do the complex listkeeping, or you need multiple maps or multiple linked servers.

Lummox JR
Hm, good thought.

But at the exploding thing, the 'mission objectives' (I think that's what they are?) could be added as Images in the beginning of the game. Though, it'd be quite messy. But it's a just temporary method to get that covered.
In response to Lummox JR
How about beings able to flick() an icon_state on a /image?
In response to Lummox JR
Lummox JR wrote:
O-matic wrote:
I suggest adding a see_client var. Setting it to 1(default) will cause you to see other players, and 0 will make them not visible to each other. And perhaps even add a var that makes density of other players not apllying to you. So that other players' density dont bother you when you bump into invisible players.

Both of these are doable by other means now. For the former, use /image. For the latter, just use Enter() and Entered().

Ah, I didn't think about that with Enter() and Entered()- thanks. As for the see_client thing, I never knew about image. Thanks.

If you want a single-player game that multiple players can play at once while communicating to each other, then you need multiple maps. Even if you were to forgo that and use /image for everything that could move, either way you'd run the risk of hitting one of DM's object limits.

I really want this variable added, in fact - maybe much more. Because I'd like more features that make it easier to create such multiplayer but yet singleplayer games. Such as editing icon states of objs/turfs that will be only visible to the mob changing the icon_state.

It sounds like you'd be much better off just coordinating the worlds so they could send text to each other with world.Export().

I think there has been a bit of a misunderstanding - I never wanted an server for each player. I want multiple players on one server and not being able to notice each others' presence on the map. But as you said earlier, /image will do fine.

Adding such a feature internally would not only be a bad idea, but it'd be all but impossible. Imagine every object having to keep track of a list of separate internal states for every player! Clearly what you're asking is ridiculous, and you need to approach the problem another way. That means either you have to do the complex listkeeping, or you need multiple maps or multiple linked servers.

Oh, I never thought of all the work the program needs to do. There must be a way around it, but for now I'll just attempt to use /image.

Thanks.

O-matic
In response to O-matic
O-matic wrote:
It sounds like you'd be much better off just coordinating the worlds so they could send text to each other with world.Export().

I think there has been a bit of a misunderstanding - I never wanted an server for each player. I want multiple players on one server and not being able to notice each others' presence on the map. But as you said earlier, /image will do fine.

Well no, not really, because with so many objects to keep track of, eventually you're gonna hit the limit.

Multiple servers would be the only way to achieve the communication you want but the single-player gameplay you want as well. (Mind you with board games it's different.)

Lummox JR
In response to Lummox JR
Lummox JR wrote:
O-matic wrote:
I think there has been a bit of a misunderstanding - I never wanted an server for each player. I want multiple players on one server and not being able to notice each others' presence on the map. But as you said earlier, /image will do fine.

Well no, not really, because with so many objects to keep track of, eventually you're gonna hit the limit.

Multiple servers would be the only way to achieve the communication you want but the single-player gameplay you want as well. (Mind you with board games it's different.)


But then the the fact that not everyone with a router has it configured correctly(which is quite an issue) comes to the light. And if every single player would have to host one server, how many servers at a time could I end up with? I mean, mainly all players here on BYOND are used to join a game and play it, and then they'll suddenly see a game where you have to host a server if you wish to communicate with others.

But the fact remains. You are correct, multiple servers is the best solution for this. And I believe the hosting wouldn't be an too big issue, considering you don't need to be connected with other servers if you wish to play the game. I'll just make it optional.

Thanks for the help and clarification.

O-matic
In response to O-matic
O-matic wrote:
But then the the fact that not everyone with a router has it configured correctly(which is quite an issue) comes to the light.

In your game, you want each player to play in their own little world, but still be able to communicate with each other. Each player can do so without needing to change anything with their router. You'd just need to have each game ask the master server for more messages and such every minute or so.
In response to Jon88
Jon88 wrote:
O-matic wrote:
But then the the fact that not everyone with a router has it configured correctly(which is quite an issue) comes to the light.

In your game, you want each player to play in their own little world, but still be able to communicate with each other. Each player can do so without needing to change anything with their router. You'd just need to have each game ask the master server for more messages and such every minute or so.

Yes, but doesn't the server need to be hosted if they want to recieve messages? And without an properly configured router, they may be able to send messages - but not to recieve because they cannot host.

O-matic
In response to O-matic
O-matic wrote:
Yes, but doesn't the server need to be hosted if they want to recieve messages?

Nope. As long as the exchange is initiated from behind the router then information can pass freely.

Hence the polling solution: The client asks the master server every so often "Is there a new message?". The server can then reply.

What the server can't do is "push" the message out to the client. The client has to initiate the connection itself.
In response to Crispy
Crispy wrote:
O-matic wrote:
Yes, but doesn't the server need to be hosted if they want to recieve messages?

Nope. As long as the exchange is initiated from behind the router then information can pass freely.

Hence the polling solution: The client asks the master server every so often "Is there a new message?". The server can then reply.

What the server can't do is "push" the message out to the client. The client has to initiate the connection itself.

Ah, that's what they meant. But yet, it's not what I want -what I want is what you said in that last paraghraph. I don't want players to wait a minute before they recieve messages, nor do I want an master server. I want them to be able to instantly chat. Which is, as you said too, why they need to host the game if they want to.

Ah well, I can live with it. Then they should host if they wish to chat with others, and I'll just link them to http://www.PortForward.com if they have problems with their router.

O-matic
In response to Lummox JR
Why wouldn't it be the same as any normal multiplayer game? How does he have a better chance of hitting the object limit (which is like 63 thousand, how is he going to hit that?) in this type of game than any other game?

[Edit]
I misunderstood. You were saying it'd be best to use multiple maps, but duplicate maps for every player would be bad for the object limit.
In response to O-matic
It's actually not that slow. It is slower tahn communicating on a server, but it usually doesn't take that long for two people on dialup to communicate. It's less than 10 seconds, and with some tests I had a while back, it took less than 5 seconds when a person wasn't downloading or browsing the internet.

The problem I'd be worrying about is logging all these addresses of different worlds. To do it quickly, you'd need some knowledge of MySQL or something. If you have a DMCGI enabled server, you could use BYOND savefiles, but that'd be buggy. You'd have to make multiple copies. Getting data to send data would be the slower part.

In response to O-matic
Or juse alter Enter and use /image objects.
turf/Enter(atom/movable/A)
if(density || loc.density) return 0
var/skip_players = 0
if(ismob(A))
var/mob/M = A
if(M.client)
skip_players = 1
for(var/atom/movable/blocker in contents)
if(ismob(blocker) && skip_players)
var/mob/M = A
if(M.client) continue
if(blocker.density) return 0
return 1

client/New()
var/mob/M = ..()
var/image/I = image(M.icon, M, M.icon_state)
src << I
M.icon = null
return M

Something along those lines.
In response to Loduwijk
And if I use something similar to that, would it have any negative effects? Usually, with such solutions I always bump into negative effects. I hope this is an exception.

O-matic
In response to O-matic
That all depends on everything you are doing. If you're careful though, it should be fine.
In response to Loduwijk
Loduwijk wrote:
Or juse alter Enter and use /image objects.

That's already been suggested elsewhere in this thread, but that solution is untenable because of the problem with hitting the object limit.

Lummox JR
In response to Lummox JR
Lummox JR wrote:
Loduwijk wrote:
Or juse alter Enter and use /image objects.

That's already been suggested elsewhere in this thread

I realise that. I was just going back to that suggestion since he seemed to have forgotten about it already.

but that solution is untenable because of the problem with hitting the object limit.

How are you going to hit the object limit any sooner from the way I showed? The only extra objects that generates is one more /image object per client.
In response to O-matic
O-matic wrote:
nor do I want an master server.

You'll need a master server to handle communication between player servers either way.
In response to Loduwijk
Loduwijk wrote:
How are you going to hit the object limit any sooner from the way I showed? The only extra objects that generates is one more /image object per client.

Because the game would have more than just the mobs to worry about, but any objs or modifiable turfs in the world.
Page: 1 2