<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Netrek-dev,<div class=""><br class=""></div><div class="">I am pleased to announce that I’ve partially implemented a new Netrek server in the Swift programming language!<div class=""><br class=""></div><div class="">My new server is at:  <a href="http://netrek.networkmom.net" class="">netrek.networkmom.net</a> tcp port 2592.<div class="">Open source at <a href="https://github.com/darrellroot/netrek-server-swift" class="">https://github.com/darrellroot/netrek-server-swift</a> under the MIT license.</div><div class=""><div class="">I’ll fork a copy over to the Netrek organization once it is more stable.</div><div class=""></div></div><div class=""><br class=""></div><div class=""><b class="">My Swift code runs on both MacOS and Linux</b>.  I did my development on MacOS and my server is a Linux VM.  This Swift netrek server does not use any Apple-specific frameworks.</div><div class=""><br class=""></div><div class=""><div class=""><b class="">Killer feature: IPv6 support!</b></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">13:43:00.437863 IP6 2601:647:4802:1620:403b:6b8a:3c56:83c7.62183 > 2604:a880:4:1d0::47:6000.netrek: Flags [.], ack 158093, win 2041, options [nop,nop,TS val 276688522 ecr 2709993860], length 0</span></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">13:43:00.437869 IP6 2601:647:4802:1620:403b:6b8a:3c56:83c7.62183 > 2604:a880:4:1d0::47:6000.netrek: Flags [.], ack 158105, win 2047, options [nop,nop,TS val 276688522 ecr 2709993860], length 0</span></div></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class=""><b class="">My existing MacOS and iOS clients also support IPv6</b>.  If a DNS entry for a Netrek server has both A and AAAA DNS records, my Swift clients automatically try the IPv6 connection first and fail back to IPv4 quickly (this is a standard feature of the modern “Network” API in MacOS / iOS).</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""> % host <a href="http://netrek.networkmom.net" class="">netrek.networkmom.net</a></span></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><a href="http://netrek.networkmom.net" class="">netrek.networkmom.net</a> has address 161.35.226.186</span></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><a href="http://netrek.networkmom.net" class="">netrek.networkmom.net</a> has IPv6 address 2604:a880:4:1d0::47:6000</span></div></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class="">I’ve been playing Netrek over IPv6 all week!</div></div><div class=""><br class=""></div><div class="">Major known issue:</div><div class=""><br class=""></div><div class="">* With BRMH and Windows clients, all planets show as invisible.  I’m assuming I’m messing up the SEEN flag and will figure out what the logic is supposed to be after a short break (my Mac/iOS clients are probably showing too much and may need an update).</div><div class=""><br class=""></div><div class=""><b class="">How you can help:</b></div><div class=""><br class=""></div><div class="">Try connecting to the server with your favorite client, and report to me (<a href="mailto:darrellroot@mac.com" class="">darrellroot@mac.com</a>) whether your client works (at least to the point of dogfighting and basic planet captures).  If it doesn’t, let me know the symptoms and the exact time you attempted to play so I can check the logs.</div><div class=""><br class=""></div><div class="">If I can get this server stable enough, I’d love for next Thursday’s 6PM game to be on <a href="http://netrek.networkmom.net" class="">netrek.networkmom.net</a> (with <a href="http://pickled.netrek.org" class="">pickled.netrek.org</a> as backup).</div><div class=""><br class=""></div><div class="">Darrell Root</div><div class=""><a href="mailto:darrellroot@mac.com" class="">darrellroot@mac.com</a></div><div class=""><br class=""></div><div class="">Here’s the current feature / not-yet-implemented lists:</div></div><div class=""><h3 style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";" class="">Not currently implemented: (in rough order of imprtance)</h3><ul style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px;" class=""><li style="box-sizing: border-box;" class="">Logic around t-mode, genocide, coup.</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Authenticating logins</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Remembering statistics between server restarts</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Rank logic</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Metaserver compatiblity / observers</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">No robots (not even iggy)</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Plasma</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Special starbase operations (docking, transwarp, rank requirements, spawn limitations, orbit limitations)</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Refitting ships at homeworld</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">advanced cloaking visibility (1 per second, hiding far away ships)</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">hiding far away ships (PFSEEN flag?)</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">UDP sockets</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Short packets</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">War logic (you are always at war with other teams)</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">coup</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">reset stats</li></ul><h3 style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";" class=""><a id="user-content-supported-but-everything-needs-more-testing" class="anchor" aria-hidden="true" href="https://github.com/darrellroot/netrek-server-swift#supported-but-everything-needs-more-testing" style="box-sizing: border-box; color: rgb(3, 102, 214); text-decoration: none; float: left; padding-right: 4px; margin-left: -20px; line-height: 1;"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Supported, but everything needs more testing:</h3><ul style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; margin-bottom: 0px !important;" class=""><li style="box-sizing: border-box;" class="">IPv6 (and IPv4) TCP Sockets!</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Messages</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Speed / direction</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Laser</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Torpedos</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">shields</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">repair</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">orbit</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">planet lock</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">player lock</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">bombing</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">beaming up/down</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">basic cloaking</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Detting friendly and enemy torps</li><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Tractor/pressor beam</li></ul><div class=""><br class=""></div></div></div></body></html>