Jump to content

DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]


godarklight

Recommended Posts

Looking at this again along with KiToban for the first time in ages. We've got it working fine but I had some questions before we pile on the mods and record some larks...  
 
I initially loaded the server in Sandbox to test some stuff, then when I switched it to Career all the craft in game from the Sandbox session were still in space. Easily deleted of course but when it comes to the Career is there a way to restart it? or do you just set-up a new copy of the server?  
 
We also want to try piloted co-op launches with Pegasus-style plane and rocket, or spacex style powered Stage Recovery. Any tips? Given that the mod of that name uses saved reverts I'm assuming that would be asking for trouble? Most of the time there would only be one recoverable stage/plane that the other player can immediately grab but if one were using multicore rockets like falcon heavy it would need a revert... or more players to ensure all the stuff was piloted back. We're piloting everything so auto-recovery is unwanted.
 

 

 
Link to comment
Share on other sites

Hey guys, for the past couple of months I have been running a career server, for me everything works as required but unfortunately everyone else who joins loses all there progress every relog

looking in the /dmp/players/keys bit I see that they have logged in and had another file created for their name.. but they say nothing has been done to change the key on their end

I have tried removing the key files to see if they can get their progress that way, unfortunately this is not the case..

just in case it helps here is my setting file
 

# Lines starting with hashtags are ignored by the reader
# Setting file format: (key)=(value)
#
# Invalid values will be reset to default
#

# address - The address the server listens on.
# # WARNING: You do not need to change this unless you are running 2 servers on the same port.
# # Changing this setting from 0.0.0.0 will only give you trouble if you aren't running multiple servers.
# # Change this setting to :: to listen on IPv4 and IPv6.
address=::

# port - The port the server listens on.
port=6702

# warpMode - Specify the warp type.
#
# Valid values are:
#   MCW_FORCE
#   MCW_VOTE
#   MCW_LOWEST
#   SUBSPACE_SIMPLE
#   SUBSPACE
#   NONE
warpMode=SUBSPACE

# gameMode - Specify the game type.
#
# Valid values are:
#   SANDBOX
#   SCIENCE
#   CAREER
gameMode=CAREER

# gameDifficulty - Specify the gameplay difficulty of the server.
#
# Valid values are:
#   EASY
#   NORMAL
#   MODERATE
#   HARD
#   CUSTOM
gameDifficulty=NORMAL

# whitelisted - Enable white-listing.
whitelisted=False

# modControl - Enable mod control.
# # WARNING: Only consider turning off mod control for private servers.
# # The game will constantly complain about missing parts if there are missing mods.
#
# Valid values are:
#   DISABLED
#   ENABLED_STOP_INVALID_PART_SYNC
#   ENABLED_STOP_INVALID_PART_LAUNCH
modControl=ENABLED_STOP_INVALID_PART_SYNC

# keepTickingWhileOffline - Specify if the the server universe 'ticks' while nobody is connected or the server is shut down.
keepTickingWhileOffline=False

# sendPlayerToLatestSubspace - If true, sends the player to the latest subspace upon connecting. If false, sends the player to the previous subspace they were in.
# # NOTE: This may cause time-paradoxes, and will not work across server restarts.
sendPlayerToLatestSubspace=True

# useUTCTimeInLog - Use UTC instead of system time in the log.
useUTCTimeInLog=False

# logLevel - Minimum log level.
#
# Valid values are:
#   DEBUG
#   INFO
#   CHAT
#   ERROR
#   FATAL
logLevel=DEBUG

# screenshotsPerPlayer - Specify maximum number of screenshots to save per player. -1 = None, 0 = Unlimited
screenshotsPerPlayer=20

# screenshotHeight - Specify vertical resolution of screenshots.
screenshotHeight=720

# cheats - Enable use of cheats in-game.
cheats=True

# httpPort - HTTP port for server status. 0 = Disabled
httpPort=0

# serverName - Name of the server.
serverName=DMP Server

# maxPlayers - Maximum amount of players that can join the server.
maxPlayers=20

# screenshotDirectory - Specify a custom screenshot directory.
# #This directory must exist in order to be used. Leave blank to store it in Universe.
screenshotDirectory=

# autoNuke - Specify in minutes how often /nukeksc automatically runs. 0 = Disabled
autoNuke=0

# autoDekessler - Specify in minutes how often /dekessler automatically runs. 0 = Disabled
autoDekessler=30

# numberOfAsteroids - How many untracked asteroids to spawn into the universe. 0 = Disabled
numberOfAsteroids=30

# consoleIdentifier - Specify the name that will appear when you send a message using the server's console.
consoleIdentifier=Server

# serverMotd - Specify the server's MOTD (message of the day).
serverMotd=Welcome, %name%!

# expireScreenshots - Specify the amount of days a screenshot should be considered as expired and deleted. 0 = Disabled
expireScreenshots=0

# compressionEnabled - Specify whether to enable compression. Decreases bandwidth usage but increases CPU usage. 0 = Disabled
compressionEnabled=True

# expireLogs - Specify the amount of days a log file should be considered as expired and deleted. 0 = Disabled
expireLogs=0

# safetyBubbleDistance - Specify the minimum distance in which vessels can interact with eachother at the launch pad and runway
safetyBubbleDistance=100


Thanks for any help you guys can provide, I have been tearing my hair out over this one

Twitchi

Link to comment
Share on other sites

   Don't want to sound dumb our like I haven't done any searches, because I have. But are there any videos out there on simply how to use DMP?

   The installation went fine, but I can't figure out how to get 2 computers on the same network to link together, much less just see each other through DMP.

Thank you,

Robert.

 

 

Link to comment
Share on other sites

  • 2 weeks later...
3 hours ago, Senior Slaphead said:

If one of my players loses their installation (and therefore their server token) is there a way of reinstating this? or does the loss of clientside files mean they have lost their progress?

Yes, if you copy a new client side public key into the file “*Their Player Name*.txt” in the universe/players it should allow them to join with the new key.

 

8 hours ago, Ivan Petrov said:

I apologize in advance for my English, I'm from Russia. Create a server connected, then "contains forbidden part, it will not be saved Your Rocket" I began to blink, we're playing with mods, we both have a problem, all we've done with the modes is not saved!

If you are running a private server, then in the config folder in where you put your server, open the “settings.txt” and find the point in it where it says this

# modControl - Enable mod control.

# # WARNING: Only consider turning off mod control for private servers.

# # The game will constantly complain about missing parts if there are missing mods.

#

# Valid values are:

#   DISABLED

#   ENABLED_STOP_INVALID_PART_SYNC

#   ENABLED_STOP_INVALID_PART_LAUNCH

modControl=ENABLED_STOP_INVALID_PART_SYNC

and set modControl=ENABLED_STOP_INVALID_PART_SYNC to modControl= DISABLED then you should not have this problem anymore.

 

On 8/29/2016 at 3:52 PM, robgoudy said:

   Don't want to sound dumb our like I haven't done any searches, because I have. But are there any videos out there on simply how to use DMP?

   The installation went fine, but I can't figure out how to get 2 computers on the same network to link together, much less just see each other through DMP.

Thank you,

Robert.

 

 

Try connecting through your internal IP address, that might help.

Link to comment
Share on other sites

@Twitchi Have you installed any new firewalls or auto-sandbox programs (like Comodo firewall) since you installed DarkMultiPlayer?

Because this sounds like something is virtualizing your DMP server. Which essentially means DMP is quarantined, thus stopping it from functioning correctly.

Link to comment
Share on other sites

I'm new to KSP, to DarkMultiPlayer, and I haven't even put anything useful to orbit around Kerbin.

What I have, is put up my own DMP server. I have successfully set it up on a remote host and have been playing on it for the last couple days.

I'm having some trouble with the reporting plugin though. I can get my server on the list, with description and everything, but ever since I've moved it to the remote host, the server list will only show the US flag, and not my country's, beside the server name. It seems either reporting plugin or the server are ignoring the <location> tag in ReportingSettings.xml, and guessing the server location wrong.

<settings>
  <gameAddress>ksp-cla.ddns.net</gameAddress>
  <banner></banner>
  <homepage></homepage>
  <admin>Kerblas</admin>
  <team></team>
  <location>BR</location>
  <fixedIP>true</fixedIP>
  <reporting>server.game.api.d-mp.org:9001</reporting>
  <reporting>godarklight.info.tm:9001</reporting>
</settings>

I've tried basically every combination of setting/not setting the fields above in the xml file, using different IP addresses instead of a name, generating a new reporting token, and starting everything from scratch.

Any clues? I think there's nothing wrong in my setup, but I may have missed something.

Thanks!

Link to comment
Share on other sites

17 hours ago, Heisenberg said:

How can I reset my server to begin with a fresh save? How can I use the commands?

Well you can delete the "Universe" folder in the server, that will reset it to a fresh save. And the commands can be used by first typing / in to the server and the the command. A list of commands can be found by typing /help into the server. PS. I believe you can do the same on the client side, but I have never tried that before.

 

Ok, down to business, @godarklight and/or @RockyTV I just put a pull request up on Github for merging a update to DMP. It's to update DMP to KSP 1.2. As far as I can tell the update works 100%, but I have not gotten a chance to test it completely. PS. I made this update because my mod Syncrio is meant to be played with DMP and I just updated it to KSP 1.2, so now I just need DMP to work with KSP 1.2 as well.

Link to comment
Share on other sites

13 hours ago, Heisenberg said:

Everyone on my server including me has the same problem: we all accumulate negative reputation... Anyway to fix this?

Unfortunately, reputation loss is a bug in DMP. Bug #358

Link to comment
Share on other sites

Is it normal that crafts of other players are lagging or can i do something about it?

I tried to set up a Server in my local Network and everyone is jumping around (testet it with 2 and 3 players all on local network).

I never used DMP before so i don´t know if this is normal or if some settings have to be changed.

Link to comment
Share on other sites

Hi Guys, I started to make a fork of DMP in April after asking godarklight for permission and right now I have something "workable".

The new features are the following:

A new network library based on UDP (it's called lidgren and it's used by many games). No more heartbeats, ping messages, split messages, disconnection messages and faster sync time and vessel possition updates as TCP is not a very game-friendly protocol (causes a lot of lag).

New client settings system based on XML serialization (I still have to implement the same for the server settings)

New compression algorithm (QuickLz)

New message system based on fastmembers so the serialization is easier to implement and expand as they are just properties and you don't handle streams anymore

Whole code-refactoring of the client and server. (Client side is based on systems and windows so UI layer is separated from BL layer)

---

The problem with it is that I don't understand how the vessel system and atmoloader works, so maybe if someone can give me some tips on how should I spawn a vessel and how should I update the vessel possition hopefully I can finish it during this month and start testing it in public. Of course every developer is welcome to collaborate and fork it :)

The url is:

https://github.com/DaggerES/DarkMultiPlayer

Note that it's only for 1.13 at the moment. The fork still doesn't have a name so suggestions are welcome

 

Edited by Dagger
Link to comment
Share on other sites

Yes, same licence (if I remember correctly is MIT).

Anyway it's still a very early WIP so once I get help on the vessel spawning/updating and it's released I will update the name, create the proper post and so on

Edited by Dagger
Link to comment
Share on other sites

@Dagger great work, I've looked at some of your code and wow, when this is done DMP (or what ever you call it) is going to be much more stable and a lot more fun to play. Now I just need to figure out how to get an upgrade like this in Syncrio :)

Link to comment
Share on other sites

40 minutes ago, Caylis1397 said:

@Dagger great work, I've looked at some of your code and wow, when this is done DMP (or what ever you call it) is going to be much more stable and a lot more fun to play. Now I just need to figure out how to get an upgrade like this in Syncrio :)

It really depends in how your mod is designed. If you need reliable messages and you don't  send messages very often then you can stay on TCP . Otherwise, if you need fast message handling and it doesn't matter if some of them are lost (like 90% of the games) then switch to UDP.

Here is a good article about it: http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/

Link to comment
Share on other sites

If DMP is just updating positions, than that would explain the lag i mentioned.

Best way of achieving a smooth multiplayer experience is not only updating position, but also speed vectors (and in case of KSP acceleration vectors) and letting the client interpolate until the next update from server arrives.

This way a single package is bigger, but the game feels smooth between packets.

UDP is much faster because there is not so much handshaking going on, the down side is packets can get lost. This would be no problem for vessel locations, but for login and other data that has to be reliable TCP is the Protocol of choice. That´s the reason some games use both in combination.

 

Link to comment
Share on other sites

2 hours ago, X52 said:

If DMP is just updating positions, than that would explain the lag i mentioned.

Best way of achieving a smooth multiplayer experience is not only updating position, but also speed vectors (and in case of KSP acceleration vectors) and letting the client interpolate until the next update from server arrives.

This way a single package is bigger, but the game feels smooth between packets.

UDP is much faster because there is not so much handshaking going on, the down side is packets can get lost. This would be no problem for vessel locations, but for login and other data that has to be reliable TCP is the Protocol of choice. That´s the reason some games use both in combination.

 

Well the interpolation is what I want to achieve as it what modern FPS implement although my maths are a bit rusty after so many years :) Anyway, I will look into it once I understand how to spawn and update a vessel as I don't know much of the KSP API. Right now vessels that are closer than 20km are updated at 30FPS, the ones that are farther away at 5FPS and the ones that are really far (other planets) at 1FPS

Regarding UDP, with the modern network hardware is quite reliable and even if you work with old hardware, lidgren is what's called a "reliable UDP" library. Some packets cant be sent in reliable mode (like chat messages etc) and some others in unreliable mode (like vessel position updates, sync time requests,...) all of this is taken into account in my fork. Using both TCP and UDP at the same time is a bad choice as some packets will affect each other (like this paper describes: https://www.isoc.org/INET97/proceedings/F3/F3_1.HTM)

Edited by Dagger
Link to comment
Share on other sites

3 hours ago, Dagger said:

It really depends in how your mod is designed. If you need reliable messages and you don't  send messages very often then you can stay on TCP . Otherwise, if you need fast message handling and it doesn't matter if some of them are lost (like 90% of the games) then switch to UDP.

Here is a good article about it: http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/

You're right, it really does depend on what my mod is meant to do. So since it needs reliable messages and it does not need to send messages very often, I will stay with TCP.:)

By the way, thank you for the link to the article it is very helpful.

Link to comment
Share on other sites

On 19. september 2016 at 3:24 PM, Dagger said:

Hi Guys, I started to make a fork of DMP in April after asking godarklight for permission and right now I have something "workable".

The new features are the following:

A new network library based on UDP (it's called lidgren and it's used by many games). No more heartbeats, ping messages, split messages, disconnection messages and faster sync time and vessel possition updates as TCP is not a very game-friendly protocol (causes a lot of lag).

New client settings system based on XML serialization (I still have to implement the same for the server settings)

New compression algorithm (QuickLz)

New message system based on fastmembers so the serialization is easier to implement and expand as they are just properties and you don't handle streams anymore

Whole code-refactoring of the client and server. (Client side is based on systems and windows so UI layer is separated from BL layer)

---

The problem with it is that I don't understand how the vessel system and atmoloader works, so maybe if someone can give me some tips on how should I spawn a vessel and how should I update the vessel possition hopefully I can finish it during this month and start testing it in public. Of course every developer is welcome to collaborate and fork it :)

The url is:

https://github.com/DaggerES/DarkMultiPlayer

Note that it's only for 1.13 at the moment. The fork still doesn't have a name so suggestions are welcome

 

Can't wait to tryout your work! :-P

Link to comment
Share on other sites

Honestly it still has a lot of stuttering and I'm having problems with the interpolation stuff.

I understand the theory behind it (http://www.gabrielgambetta.com/fpm3.html and https://www.youtube.com/watch?v=6EwaW2iz4iA) but I don't know how to adapt it to KSP and make vessels interpolate their position between packets.

As it is right now, the vessels stutter as their position is not updated between packets

Edited by Dagger
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...