-
Posts
682 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by godarklight
-
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@doug4664: As far as DMPServer is concerned, that message is *pretty* normal, Apparently my code closes the socket even if it's already closed. I'll fix / silence that error in 0.1.6. As for the going back into the game thing when pressing 'disconnect', (/me pokes finger) squad did it. There's methods for starting games, but I haven't quite figured out what code that red exit to main menu button is hooked up to. I originally run into that all the time when I was trying to port to 0.24, then it went away, but only most of the time :-/. I might have to poke that kraken a little more - it's safer to use the red "Exit to main menu" button on the space center screen for now, that does seem to work correctly. @PaidLeber: I haven't ran the other warp modes since before DMP v0.1.0.0, they've been a bit neglected since then. The warp system will get a little bit of love for 0.1.6.0, I'll nail that bug then, along with the vote system port to LockSystem, Ignoring MCW votes for inactive players, and removing the "Kicked for creating existing subspace" bug. @dsonbill: Simplifing a little here, but DMP's "packets" in the TCP stream roughy looks like this (In little endian though, because of my lameness ): | integer (4 byte) type header | integer (4 byte payload length) | payload. Obviously in the tcp stream you'll have |packet|packet|packet all right next to each other, the payload length specifies how much longer to read before you know you have the full message (TCP Length Prefixing). My very first commit to KMP that took me a week to figure out actually fixed that very exact receive bug, I've come a long way since that very first commit . EDIT: Sorry, that was because we were playing with sockets. Similar-ish problem though. payload is a byte array that uses my MessageWriter thing, it basically bit-packs the type converted to byte[], unless it's a string, in which case it adds another length prefix for the UTF8 encoded string, and if it's an array of any of the standard types it also adds *another* length prefix for the number of elements. Plugins will be able to interact with the network over my mod-support branch, I've only got the basics down and given it a quick little test with an example plugin, It will likely be fleshed out more and improved for 0.1.6 (for example, I don't have OnConnect or OnDisconnect events in the plugin handler client side. Also you might want to move command registration to the constructor, OnServerStart is called during a restart as well (but registered commands are ignored, so it's probably fine). base.OnServerStart is empty as well, you can remove that line And just a heads up, There's no function calls to remove kerbals from a game - KSP will have kittens even if you did manage it, as KerbalRescue contracts completely bug out the game if the kerbal is missing (I promise to fix this properly in 0.1.6). -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Soundwave__007: KSP64 appears to be incredibly unstable on windows, can I get you to try it on 32bit with Active Texture Manager?. What's odd is that it crashed straight after: AddonLoader: Instantiating addon 'PersistentEmitterManager' from assembly 'SmokeScreen' - I guess that's part of B9. @inigma: It wasn't actually a KillVessel bug I think, it was a paradoxical bug that I never thought about. When a part breaks off a ship, it actually creates a new vessel. The client will then sync the debris back to the server, even if it didn't break off for the other player. I fixed it by deleting new crafts that break off other vessels if they are controlled by other players. @uncle natzer: To date, everyone that has gotten hamachi working has never actually told me how. I can't (or maybe won't) run hamachi on linux. Generally, you shouldn't need to bind DMPServer to your network address, 0.0.0.0 means "Listen on everything". Perhaps drop into IRC one day, I'd like to see a few screenshots if you figure it out. Also I should mention to try port forwarding unless it's simply not possible (either you don't have access to your modem or your ISP is *insert expletives here* bad at being an ISP, and doesn't give you a public IP address in the first place, which is often the case with mobile internet and wireless broadband). @tetryds: I need to find a link to explain how TCP/IP works with pretty pictures, it might explain the need to port forward and what address to type when @Kerbin, We have a problem: Back in the good old days (~0.1.0.0 to maybe 0.1.2.0) I did actually run a DMPServer, the bad news is Australia has metered internet, and because DMPServer is a message relay, the bandwidth usage is nearly exponential with players, so I had to take it down to avoid getting shaped every month . @Miner459: That problem should be fixed in the development version - Vessels that fail to save don't get loaded into the game and PM's the server about bad vessels, I'll figure out the actual cause sooner or later when I start gathering bad vessels of the server admins (DMPServer doesn't call home or anything, there's just quite a few server admins in #DMP, it's a place for players too though!). @dsonbill: MessageWriter is a thin wrapper around MemoryStream - so hopefully it's not too expensive or hurts GC too much, but I haven't done any profiling on it. DMPServer uses MessageWriter/Reader and seems perfectly fine running on potato hardware . The reason MessageWriter exists is because I *hate* BinaryFormatter with a passion, and it abstracts this away, so I'm not as likely to create bugs in the bitstream. The equivalent in DMP is this. The only thing I don't like about it is you can't switch on type in C#, but if it annoys me enough I might replace it with a Dictionary<Type, Delegate>. That's not very likely though - as MessageWriter doesn't correct for edianness either. Perhaps I'll take care of that in 0.2.0.0 (It's not too big a problem as KSP can only run on little endian and I'm unsure about big endian machines that can run mono for DMPServer). The lag is likely real unless you're spectating updates from the future. The vessel "kick" is caused by incorrect angular velocity or rotation, but I can't fix those until I break the network protocol and go for 0.1.6. The vessel replacement to update the parts is expensive though, as it kills the vessel and replaces it with a new copy every 30 seconds. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Kerbin, We have a problem: https://github.com/godarklight/DarkMultiPlayer/blob/master/README.md#mods-1 Most mods will Just Work , but remember scenario data is per-player, so for example, different players would see different kethane maps. Things that modify the time will generally conflict with DMP, also mods that are time dependent also act weird (like TAC-LS) -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@StarDrive85: About the server list, I'll have to check over it, I knew proper XHTML would bite me when I decided to use it, but I haven't heard any reports suggesting it was broken for a while :-/ @Rabidsimon/Terry: I've bumped the window ID's, hopefully this gets it out of the range where it would react with KSP or other mods. Try installing dev to see if it's fixed (I haven't run into the problem personally, but I've heard many reports of it breaking that way) @Treki26: Now that you have mono installed, you should be able to open the terminal and type: "mono DMPServer.exe" after changing to that directory. You'll likely need a tutorial on the mac terminal, but as I don't have mac I'm likely not the person to help with that. I would have thought you guys had the equivalent of "Open with", if that's the case, open DMPServer.exe with "mono". @Spacepigu: There's a good reason 127.0.0.1 is the default in the "Add Server" menu. 127.0.0.1 means the computer you are on already, commonly called "localhost". Your other option is to connect to your network address (usually in the form of 192.168.0.x). People connecting from outside your network will need to connect to your public IP address, and you'll have to port forward. You can find out your public IP and test portforwarding with www.canyouseeme.org, port 6702. @Everyone: Reverting has now been disabled in dev due to the massive problems it causes - It will be gone in dev until I either: a) Trick KSP into not doing the revert when pressing the revert button; or Keep all the vessel update messages around, causing a slow memory leak. a Is likely impossible, b is relatively easy to do, but I'd still like to throw away updates from before the revert universe save time. I'll release one more version on the 0.1.5.x series and then move on to 0.1.6.0, The 0.1.6.0 branch will be the last branch until KSP 0.25 comes out, and will also mark feature completion, so it's going to take a while (1-2 months) After that, I'll pull off some refactoring, squash whatever bugs I can and drop this silly alpha tag with 0.2.0.0 - I don't feel like counting to 7 -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Andrew Hansen: "what do I do if someone crashes into the base and ruins all the progress?" - Same thing as single player, the station would be destroyed and there would be lots of debris (although the debris would get eaten by autoDekessler unless you turn it off). "How do quicksaves work in DMP?" - They work by killing the current active vessel, and then reloading the vessel from when you saved it. It quicksave only affects that single vessel. You're better off backing up the DMPServer/Universe/Vessels folder if possible, just copy + paste it. Vessel permissions will be implemented in 0.1.6, so this won't be a problem then, but that could take ~1 month depending on how much work I have ahead of me. @Rikkei: I'm so glad I asked for a youtube video. There is no words I have to describe that bug you just experienced, it also came with a huge "WHAT ON EARTH!?" when I watched it . Active texture manager whacked out during the scene change: NullReferenceException: Object reference not set to an instance of an object at ActiveTextureManagement.ActiveTextureManagement.Awake () [0x00000] in <filename unknown>:0 UnityEngine.GameObject:Internal_AddComponentWithType(Type) UnityEngine.GameObject:AddComponent(Type) AddonLoader:StartAddon(LoadedAssembly, Type, KSPAddon, Startup) AddonLoader:StartAddons(Startup) AddonLoader:OnLevelWasLoaded(Int32) Clouds whacked out during a scene change - It also throws a bit of a flood, so this might be a bit of a problem with FPS or other random problems. NullReferenceException: Object reference not set to an instance of an object at Clouds.Clouds.Update () [0x00000] in <filename unknown>:0 Bingo, Hotrockets perhaps? - This is likely the mod causing the problem. NullReferenceException: Object reference not set to an instance of an object at ModelMultiParticlePersistFX.OnSave (.ConfigNode node) [0x00000] in <filename unknown>:0 at EffectList.OnSave (.ConfigNode node) [0x00000] in <filename unknown>:0 at Part.SaveEffects (.ConfigNode node) [0x00000] in <filename unknown>:0 at ProtoPartSnapshot.Load (.Vessel vesselRef, Boolean loadAsRootPart) [0x00000] in <filename unknown>:0 at ProtoVessel.LoadObjects () [0x00000] in <filename unknown>:0 at Vessel.Load () [0x00000] in <filename unknown>:0 at Vessel.MakeActive () [0x00000] in <filename unknown>:0 at FlightGlobals.setActiveVessel (.Vessel v, Boolean force) [0x00000] in <filename unknown>:0 at FlightGlobals.SetActiveVessel (.Vessel v) [0x00000] in <filename unknown>:0 at FlightDriver.Start () [0x00000] in <filename unknown>:0 Or maybe it's tweakscale? - It throws a NRE (NullReferenceException) flood here, which generally kills the framerate. NullReferenceException: Object reference not set to an instance of an object at Part.ModulesOnStart () [0x00000] in <filename unknown>:0 at Part+.MoveNext () [0x00000] in <filename unknown>:0 (Filename: Line: -1) ArgumentNullException: Argument cannot be null. Parameter name: source at System.Linq.Check.Source (System.Object source) [0x00000] in <filename unknown>:0 at System.Linq.Enumerable.OfType[IUpdateable] (IEnumerable source) [0x00000] in <filename unknown>:0 at TweakScale.TweakScale.Update () [0x00000] in <filename unknown>:0 (Filename: Line: -1) NullReferenceException: Object reference not set to an instance of an object at Part.ModulesOnStart () [0x00000] in <filename unknown>:0 at Part+.MoveNext () [0x00000] in <filename unknown>:0 (Filename: Line: -1) [262.3315] DarkMultiPlayer: Skipping StepClock (standalone map viewer workaround) The tweakscale guys are trying to do something to the vessel before the vessel has been fully initialised, I might forward this to them if I can get a hold of them. Btw, I didn't actually think you'd upload a youtube video and the log - It lets me know exactly what the problem is, and exactly what's causing it. I should ask for youtube video bug reports more often, thanks! -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Montaxx: I am definitely looking for a replacement to my server list, there's been a few candidates in the past but nobody has followed them up. I do have an aversion to the 'premium' side of things though, I can understand if you were a DMP server host, but that doesn't appear to be the case here. You might want to elaborate more on that side of things before the free software community comes after you with pitchforks @Treki26: Because it's a .NET assembly - That exe runs on linux and mac with mono, and runs on the .NET 4 framework on windows. It does *not* run under wine . .NET is basically microsoft java, and even though I'm a linux user (and develop DMP on linux exclusively), I think they've done very well with the language. @StarDrive85: Mastereryx's DMPServer GUI thread. I haven't checked into the source and you'll need to replace DMPServer under it, but it's the only frontend I know for DMP. @Rikkei: If possible, I'll need KSP_Folder/KSP_Data/output_log.txt and possibly a youtube video to understand the problem. Failing that, catch me on IRC and I'll join the server to check it out -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@tetryds: I kind of forgot about that - Packed updates are applied slightly differently, I'll have to double check them. @StarDrive: DMPServer is only a command line application, but masteryx wrote a GUI for it. I've included it in the original post, although I haven't checked the source / how it works. EDIT: Ok, you do mean the server list - Make sure the HTTP port of the server is accessible by something like www.canyouseeme.org. I didn't find an entry in the database though, Servers that fail for a week are deleted from the server list check. @dsonbill: Good to hear, most people run in screen anyway @worldofstuff: DMPServer doesn't really work that way - It has nearly no idea what "KSP" or vessels and things even are, it's mostly a message relay that deals with text files . Plugins are for server side mods which practically don't exist yet, But in order to use mods on a server, you'll need to set up DMPModControl.txt. A file can be generated from your GameData folder by opening KSP and hitting Options -> Generate DMPModControl.txt, and then moving that file from the KSP folder to your DMPServer folder. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@tetryds: Apparently right now 0.1.5.5 only fixes a rare-ish race condition that was crashing DMPServer - The rotational / position fix can't be done without a protocol break, so that's going to have to wait for 0.1.6. EDIT: Realised I missed a question - I think I know what you mean by precision positioning although DMP lacks KMP's "docking/relative positioning mode". There's 2 types of positioning systems in use with DMP, under 10km, it uses lat/long/altitude and a surface velocity vector. Above 10km, it uses the orbital parameters instead. Orbital mode gets rewound and fast-forwarded as needed, making it accurate for all eternity. Lat/Long/Alt is time sensitive, which is why planes currently jump around a lot in flight. There is a slight fix to this: I could shift the vessel position by the velocity vector * the time delta which would remove most of the jumpiness / lag, but that requires a protocol break as I'd also like to do the same thing to velocity with acceleration. Also, Surface updates played from the past show in their correct lat/long/alt positions, rather than getting the orbit fast-forwarded into the ground. @dsonbill: You can sidestep this problem if you use 'screen' - but that does form a dependency on screen. I haven't looked too much into running DMPServer without an attached terminal or pseudo-terminal, screen makes things easy to run headless servers. @Everyone: As mentioned before, 0.1.5.5 is available. I'll be pushing for 0.1.6.0 now which means a few protocol breaks will be coming, so dev will no longer be compatible with the release 0.1.5.x versions. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@dsonbill: There's certainly no *good* reason, so that's certainly a bug @crunch: I haven't decided whether to go for 0.1.5.5 to fix the surface position / rotation / angular velocity bug - along with any bugs that come up in HOCGaming/ChickenKeeper/EnterElysium DMP videos, or if I should go straight for 0.1.6 (which would mean a release could take a month), but if I do go for 0.1.6 now I can do groups (server backend mostly completed), vessel permissions (haven't started but should be relatively trivial), provide an interface for hooking into the DMP network (already done but I haven't decided if the current way is correct enough), and have some type of deterministic way of doing docking. I might do another youtube announcement video announcing DMP's plans - I believe the duping is mostly fixed since 0.1.5.3, it wasn't KillVessel's fault . I know I'm not all that great at youtube videos (That installation tutorial was supposed to help someone else do the video, but now it has 20k views). Youtube videos are fun to do though -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Treki26: The DMP server files are mono/.NET assemblies, which means they are cross platform (I develop DMP exclusively on linux). You'll need to install mono for mac, then you should be able to run DMPServer. And I definitely need to write a better readme -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@StarDrive85: If you want people outside of your network to join, then yes, you'll need to port forward TCP port 6702. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@tetryds: I definitely need to write a quick start readme. @StarDrive85: Yeap, DMPServer doesn't load the mods, it only passes the things around that are in persistent.sfs -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@no2ironman1100: It's probably had between 10,000-20,000 downloads (I'm unsure as I don't track build server downloads), but the bugs probably keep people away :-/ @StarDrive85: DMPServer doesn't exactly know what KSP even is - It's mainly a message relay that you can sync a persistent.sfs (basically text files) file from. Mods aren't used on the server, they are simply controlled in DMPModControl.txt. There was a very good reason I took this approach from KMP In the client, Options -> Generate DMPModControl.txt will create a DMPModControl file that's setup for your client, just move it into the server folder. EDIT: 0.1.5.4 is available, if fixes 2 sync bugs and an undocking problem. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Methlon: User accounts themselves are protected by a player token, and whitelisting the server will only allow certain players to connect, but there isn't an option for server passwords yet. Pacemaker: All good, I'll have to visit the server sometime In 0.1.6 I'll add vessel permissions so you won't have to worry about greifing. I'll check on subassemblies, but DMP doesn't touch things in that area (outside of craft sharing) so it shouldn't be breaking things :-/ @joker169: All good, I should write a more clear readme or quick start guide.... @Everyone: When I get some time off work I'll start making more appearences on the public servers. I need to actually *play* DMP for once. Feel free to drop into the IRC channel too, it is for everyone, perhaps you can get me on a server EDIT: Possibly tomorrow!. If that's the case, I'll be streaming at 2200 UTC, People are also invited to join my mumble server so we (I?) don't bore any twitch viewers to death -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Rabidsimon: The thing is I've never seen the bug, nor have I heard about it before yesterday - So I wouldn't know where to start fixing it. I'll need a few things to track this down, the most important thing is to upload the KSP_Folder/KSP_Data/output_log.txt file to a site like pastebin (or if it's too big, drop into the IRC channel and I'll give you ftp details). A few screenshots will also help, along with any reproduction steps - Try to be as specific as possible -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@joker169: DMPServer should run on any potato with a decent internet connection, bandwidth is nearly exponential as it's a message relay. Mods are controlled with DMPModControl.txt. z0n's server run on a raspberry pi too. @longbyte1: Which is exactly what the plugins folder is for, but I think the only plugin uses it is RockyTV's IRC connector In 0.1.6 plugins will have the ability to hook into DMP's network, which makes many more things possible. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@no2ironman1100: You've got the right idea, but Options -> Generate DMPModControl.txt should automatically find all the parts for you. It generates the file in the KSP folder - Move it to the DMP server folder. -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@Methlon: Servers on the server list are guaranteed to be online as they are checked every minute, so there's no real waiting peroid other than that. Make sure you enter in the HTTP port and not the game port, you'll need to enable it in DMPServerSettings with the httpPort setting @Everyone: DarkMultiPlayer 0.1.5.3 is now available! It's a bug fix release and compatible with the other 0.1.5.x series. EDIT: Pay no attention to the version listed in the README. I knew I forgot something. As always, git-version.txt is the correct way to tell which version you're running. -
I guess we are a little spoiled when it comes to packages. Writing a bash script for updating DMPServer wouldn't be a complete waste of time for me (Although from your edit you sound like you've already done this). I never bothered writing a bash script for updating before because if you're intending to host a DMP server, you have mono installed, and if mono is installed, DMPUpdater will work The only reason K/DMPUpdater exists is because I needed a simple version of rsync for windows, and the only reason why it has a http backend is because I had an existing apache server install and I try to maximise lazyness .
-
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@sphinx15: If you're installing it for the first time, Start / stop the server to generate a DMPServerSettings.txt. After that, change DMPServerSettings.txt gamemode,0 to gamemode,1 (science) or gamemode,2 (career) and then restart the server. -
As I pointed out before, so long as you keep 'rm -rf DMPServer' in that update script, you're running the risk of completely wiping out someones server. Easy fix: Extract DMPServer into /tmp/DMPServer-randomnumbers and rsync from that, or extract the zip directly over the server folder. Harder but cleaner fix: Compare the server folder against DMPUpdater's server index file and replace the files as needed. The hashes are sha256sum's, and the individual files are saved with their hashsum in the objects folder. If you like, I'll write a portable version of DMPUpdater in bash. EDIT: Forgot to mention, if you want to actually package DMPServer (as in I'll run a script that fires on a release build) I can host it on my build server, but I'll need help with the file structure for centos, I exclusively run debian/unstable. If you'd like to host your own repo intsead, I can provide a http-hook to let you know when a new release build is available.
-
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@The Destroyer: goldenpsp is correct here - "DNS error" is a C# error that occurs when you can't resolve a hostname (godarklight.info.tm) to an IP address (202.173.175.123). @dsonbill: If you're serious about making things easier for linux users, we could always write up a packaging script for your distro and I can host it on my build server. I only use debian now and would be willing to package DMPServer up as a .dpkg if there is enough interest, I have used arch in the past but I didn't get along with pacman. EDIT: Replied in the linked thread. -
Dark Multiplayer GUI Updated for 0.24 by Sins gaming
godarklight replied to mastereryx's topic in KSP1 Mod Releases
@mastereryx: If people are having problems with DMPServer itself, point them my way if you like . -
DarkMultiPlayer 0.3.8.0 [KSP 1.12.0]
godarklight replied to godarklight's topic in KSP1 Mod Releases
@paulcdb: (In my defence, I never released this - it was mainly to learn a bit about how unity works. I already felt bad enough for making it haha).@Archoncommando: Currently DMP has seperate scenario data per player at the moment. JoshBlake has proven it possible (he had a branch working for 0.23.5 - even shared kethane), but I'm going to build it on top of groups rather than server-wide (when I get around to finishing off groups...). EDIT: lag-killer is in dev, it's only partially implemented - I need a protocol break in order to skip old protovessel updates, so I'll finish that off for 0.1.6. Next step is the debris remover for controlled/updated by other players craft. 0.1.5.3 is getting closer -
Ello! DMP currently doesn't handle weapons mods well - as the firing is not synced, and I don't allow players to update other players crafts (except during a docking), the only thing weapon mods will currently do is create debris duplicates. This problem won't be so bad in 0.1.5.3 when I auto-remove parts that snap off controlled vessels and only let the controlling player sync the debris to the server. Perhaps in the future (0.1.6?) I could enable some type of "battle mode" where players *can* update other players crafts, but I haven't really thought about it too much as I'm generally a co-op player I'd expect RCS/SRB missiles to mostly work though...