Jump to content

Caves implementation ideas


Recommended Posts

I think caves should be implemented through a voting system, since both the overworld and caves can't run at once. Instead of sinkholes, there would be some sort of machine object. Players could interact with this machine to vote on whether or not to go to the caves world. When all or most players have agreed to go to caves, everyone would be teleported there. And to go back up, all or most players would have to interact with an underground machine. How do you think caves should be added?

Link to comment
Share on other sites

@ThaumicParrot,

You mean like this:

http://forums.kleientertainment.com/topic/27650-code-a-thread-on-lambdas-and-other-epsilons/page-17

It would be the DS single player approach, you discard one place, you go to the other.

 

I think Klei wants to have people on the overworld AND the caves too, but that may prove difficult, when one world and some players already bump the CPU usage to 100%. Also, worlds can't be just huge, a cave world and a world all in the same layer is just too much. There's also Diabu who I recall last time was making a mod for interconnected servers, so as to have multiple worlds in multiple servers.

 

Personally, the best would be to be able to have people in both the overworld and the cave. Maybe is there a way to run parallel don't starve together server executables that distribute themselves among threads? I'm not really sure what can be done, it's a matter of balancing design philosophy and technical implementation.

 

@IntensuwweSoois,

the lighting is no issue, in the caves it's like the world but during night.

Link to comment
Share on other sites

A voting system is bad (IMO) considering the fact that there could be new players in the server.

 

For example, 2 guys are at 60 days survived on a server and 3 guys are at 5 days but those 3 want to go in the cave while the 2 "elders" don't want. The vote will be kind of unfair.

Link to comment
Share on other sites

Multiple worlds on multiple threads sounds good to me...

It really should run simultaneously.

 

(If Minecraft made in Java can handle it, I'm sure this game can too :-)

It can't. And don't compare DS to MC. MC is much more different. You see, how DS does it is that the game unloads the current world you're in and goes to the next generated world. In Minecraft, it unloads your chunk to generate a new one similar with worlds. DS is also made with Lua, similar to Java. But in DST, worlds are generally larger to compensate for more players to inhabit, and that means more for the host to load, so depending on the host's computer, it has to send the world information to the other people. With more than one world, DS would be keeping them all loaded for each player so that if other players are on the surface, they can stay on the surface, rather than go to the caves. This, however, is a problem, as the game and host can't exactly keep both worlds (or all 3, if you include the Ruins). My guess (since I don't have the skills to code with Lua yet,) is that the game would either crash the host's game, causing all the other players to be disconnected, or run the game with sever issues (as I said, don't know what issues since I am no programmer).

Link to comment
Share on other sites

Well, minecraft asks for 2.6 GHz as minimum, while DS asks for 1.7. And minecraft is Java and not C++/Lua.

I have no clue what happens inside the DS.exe.

 

I can say that I can have more monsters on screen on minecraft than on DS.

But I will also say that lag now in RoG is way better than before.

Link to comment
Share on other sites

actually it shouldn't matter if your server serves 2 worlds (surface, caves) 3 worlds or just 1. the server can for sure calculate several world area's, where player are walking on - even when they are from different "worlds". all worlds are just 1 world and jumping into a sinkhole should function like jumping into a wormhole. but instead you will find yourself in a cave and not in the same world by got spit out from another wormhole. and if you look into the map. you will not able to see the surface-map, but the cave-map.

 

this means, that the caves should be reprogrammed and integrated into the "surface"-world.

 

about the performance: well, dst is such a * great game, of course it needs some performance. i strongly believe in the klei developers, who made this game multiplayer ready - even when i lost hope for this, because developers of many other great games didn't wanted or couldn't implement their software network-friendly. but klei did. YEAH :-)

 

so voting or something like this should'nt be necessary.

Link to comment
Share on other sites

maybe load 2 worlds or even 3 with ruins could be hard to handle, especially online. but, if the cave entrance works like a portal? all players should to be in agree to go to caves and the entrance will work like the portal, all new players could spawn next to the rope and a warning could be show in the server specifications?. Or maybe the caves could work like another world? but the host couldn't leave unless the gang has a dedicated server?. i don't know, it still complicated, i like the caves and i would love explore it with friends but maybe these are not necessary, after all the meteor shower supplies the rocks but all the caves and ruins items would turn into trash files

Link to comment
Share on other sites

maybe load 2 worlds or even 3 with ruins could be hard to handle, especially online. but, if the cave entrance works like a portal? all players should to be in agree to go to caves and the entrance will work like the portal, all new players could spawn next to the rope and a warning could be show in the server specifications?.
 

Basically this.

Yeah, it should warn new players to the server that the current players are in the caves or runs (or inn U & A is installed, up there) and that they'll spawn there.

Link to comment
Share on other sites

the voting should be only optional implemented with your friends: "hey guys, do we want to go to caves?" "yeah, except wendy" "ok, then lets go". else you will get trouble from griefers and many other stuff, like not everyone can ve the timing being ready and so on. will not make fun.

 

generating worlds does not mean to keep them in memory. caves have just different objects and hooks, but these can be handled then from different threads or thread-types. so the cave-threads, who are caring about the environment of each player in the caves will know only addresses, objects, hooks and soo on, which are relevant in the caves and objects etc. from the surface-world will be not kept in memory, (cache) or threads-view. you can see the threads as specialised worker then. this would increase the performance if neccessary. the same with the graphic-processor and -memory. divide & conquer

 

anway the developers are on already on the process developing the caves for DST. our speculations will not bring anything except self-education :-) or do you want to implement your own caves, after Klei did it? Just wait and then we can see how it was solved.

 

 

Link to comment
Share on other sites

Why dont make the cave and above-ground as a one world but it completely isolated and connect to each other by hole like a worm hole (but you can design it like a sink hole in singleplayer)

DS (and DST's) engine can worth with only one floor, technically speaking. More than one floor could confuse players, and possibly screw up the engine.

But then again, I remember I had a few cases where the game's zoom glitches out and zoomed in beyond the ground.

Link to comment
Share on other sites

Call me a Debbie downer here but I do not want any sort of implementation of caves that involve everyone having to go in at the same time. No system will change this for me. I understand the technical challenges behind why any other system might be difficult, I do some game design as a side hobby, but I would much rather we create a set of rules or limitations on a server host unable to host caves because of their hardware, than to force everyone to go in or come out.

Part of the appeal for me in DST is that often times my friends and I have our own tasks and meet up at one or two home bases. This would be very difficult or impossible with any sort of implementation of caves that relied on an all or nothing attendance policy.

Link to comment
Share on other sites

all worlds are just 1 world and jumping into a sinkhole should function like jumping into a wormhole.

Yes... Maybe all worlds can fit into one? Perhaps worlds could be generated as three huge islands: overworld, caves, and ruins. When you find a sinkhole it goes to the caves and vice versa. The three islands would also have to be far apart so you couldn't see them from each other. The darkness, however, could be problematic. If the caves could be their own biome, the developers could maybe make it so that only caves and ruins biomes are eternally dark. 

Link to comment
Share on other sites

Definitely needs to have the ability for separate people to enter the caves. If minecraft can do it with the nether AND the end where you can have people running around in all 3 worlds, DST can do it. 

There is no "perfect storm" of all the content running how it should and only needing low specs. 

Running a server isn't meant for old everyday PCs. Yeah, it's a relatively common thing with these types of games now but realistically, there is a spec barrier. 

Link to comment
Share on other sites

If worst comes to worst here is how I can envision it happening (not practical by any means, but doable).  Have caves run on a completely separate server( can be virtually different, not physically different).  This would require a separate implementation of code that can act as the transport or "portal" to link the two servers.  The cave server must be the same number of slots or less than the normal server and have the same mods.(If less slots the cave server can just have a flag that if on, a player will not be able to jump into sink hole).   The cave server is only joinable through a sink hole in the normal server, and not visible on the server list.  The "portal" will move a player and inventory between servers.  This way the two servers can be running simultaneously and people can go in and out of caves as they wish.  Of course this portal must be able to fully integrate commands from host between the two servers, as well as keep tabs on player info for player screen between two servers.  This way when the caves and above ground world are entered and exited, the current state of the entering world just needs to be loaded on the client, just like you are joining the any other server, and the "portal" will handle of the transferring of inventory and health, hunger, sanity meters, and etc.

 

Like I said, not the most intuitive or optimal way of achieving the goal of having caves.  But at least it is possible.

Link to comment
Share on other sites

Yes... Maybe all worlds can fit into one? Perhaps worlds could be generated as three huge islands: overworld, caves, and ruins. When you find a sinkhole it goes to the caves and vice versa. The three islands would also have to be far apart so you couldn't see them from each other. The darkness, however, could be problematic. If the caves could be their own biome, the developers could maybe make it so that only caves and ruins biomes are eternally dark. 

 

This idea is better...

Link to comment
Share on other sites

  • Developer
If worst comes to worst here is how I can envision it happening (not practical by any means, but doable).  Have caves run on a completely separate server( can be virtually different, not physically different).  This would require a separate implementation of code that can act as the transport or "portal" to link the two servers.  The cave server must be the same number of slots or less than the normal server and have the same mods.(If less slots the cave server can just have a flag that if on, a player will not be able to jump into sink hole).   The cave server is only joinable through a sink hole in the normal server, and not visible on the server list.  The "portal" will move a player and inventory between servers.  This way the two servers can be running simultaneously and people can go in and out of caves as they wish.  Of course this portal must be able to fully integrate commands from host between the two servers, as well as keep tabs on player info for player screen between two servers.  This way when the caves and above ground world are entered and exited, the current state of the entering world just needs to be loaded on the client, just like you are joining the any other server, and the "portal" will handle of the transferring of inventory and health, hunger, sanity meters, and etc.

 

This is basically what I achieved to do. The main issue being that it needs both a mod on the client (for connecting to the cave server, and fix some caves related crashes) and on the serverS (to let them talk with each other).

Anyway, caves in DST are still missing some features. (earthquake, for instance)

One last problem I had was this:

What if the player disconnected in a cave, and reconnect when the cave server is offline ?

PS: This is only my own point of view. Not Klei's one.

Link to comment
Share on other sites

What if the player disconnected in a cave, and reconnect when the cave server is offline ?

 

Ideally, the overworld and the caves servers should be both running at the same time.

The caves servers should have pause_when_empty by default.

 

Also, your last post said that you were able to travel between your servers, and you have a red name, so...

how's it going?

Link to comment
Share on other sites

Silly Silly question from a coding noob (doesn't know how to DO anything, but knows enough to have bad ideas)

 

I understand that there's a threading issue and the possibility of a work around with multiple servers, but is it possible to say... 'phase' objects and terrain?

 

Like lets say this; on the server and in normal DS, everything spawns in consideration of a set, generated, bedrock layout, where all the tiles and stuff pop up onto and the biomes are distributed. (this is probably very simplified)

 

So taking that same landmass of bedrock, could it be possible to spawn different objects, conditions, and effects that are just not visible/interactable/collidable/sensible to a client unless a certain qualification or value(such as going through a hole) is met?

 

I know this wouldn't be an the exact thing as caves, BUT it could work more or less, and it would all still be on one server world. The ruins would look right, the caves wouldn't though :/

 

I wish I knew how to code decently in lua, i'd want to try it in DS or DST then...

 

 

 

 

Link to comment
Share on other sites

  • Developer

Ideally, the overworld and the caves servers should be both running at the same time.

The caves servers should have pause_when_empty by default.

 

Also, your last post said that you were able to travel between your servers, and you have a red name, so...

how's it going?

First of all, to be clear. All what I've done concerning caves and travelling between servers was made as a Player/modder, some months ago. So it was before I was a Klei developer. All post I have written before were only from a player/modder point of view.

 

Concerning the ability to travel between servers, some players could have tested it when I was hosting my own dedicated server. If you want to know more about it, just send me a private message. :-)

I agree with the fact that "ideally" both the surface and the caves servers should be running at the same time. But as you said it's "ideally". We should think about cases where something could go wrong too ;)

I guess we'll let you know when we will officially start to work on caves and the related features :-)

Edit: Steam messages are OK, yes :)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...