Any chance of an iOS client for iPhones? I would love to help in testing! Zach On Thu, Apr 4, 2019 at 2:28 PM Chris Lukassen <chris.lukassen at gmail.com> wrote: > Awesome, MacTrek pulled about 70,000 downloads after being in the > predecessor of the AppStore. I bet you can top that this very year, it may > bring a huge amount of newbies to the game due to the exposure. Well done! > > Chris > > ---- > Sent from my iPhone please excuse brevity and typos > > > On 4 Apr 2019, at 19:21, netrek-dev-request at us.netrek.org wrote: > > > > Send netrek-dev mailing list submissions to > > netrek-dev at us.netrek.org > > > > To subscribe or unsubscribe via the World Wide Web, visit > > http://mailman.us.netrek.org/mailman/listinfo/netrek-dev > > or, via email, send a message with subject or body 'help' to > > netrek-dev-request at us.netrek.org > > > > You can reach the person managing the list at > > netrek-dev-owner at us.netrek.org > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of netrek-dev digest..." > > > > > > Today's Topics: > > > > 1. Netrek now on MacOS App Store, source code now public on > > GitHub (Darrell Root) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Thu, 4 Apr 2019 10:21:03 -0700 > > From: Darrell Root <darrellroot at mac.com> > > To: Netrek Development Mailing List <netrek-dev at us.netrek.org> > > Subject: [netrek-dev] Netrek now on MacOS App Store, source code now > > public on GitHub > > Message-ID: <13315098-4E7B-4AE7-AEC5-0CB2DB7581C1 at mac.com> > > Content-Type: text/plain; charset="utf-8" > > > > netrek-dev, > > > > Success! > > > > Netrek passed app review and is now on the MacOS App Store (screenshot > at bottom). This is a free app. > > If you ran an alpha release, I suggest deleting it before downloading > from the App store. Otherwise the app store will install the 1.0 release > in your alpha release location, as opposed to /Applications. > > > > App store version 1.0 adds full controls in the strategic map window, > hints on the welcome screen, a medium-sized help/documentation/credits > book, convenient “mayday” and “escort me” buttons, and a tip jar. > > > > I’d appreciate people downloading it and (if you like it) positive > reviews in the app store. I’m hoping that will attract new players. > > > > As promised, I’ve made the source code publicly available at > https://github.com/darrellroot/SwiftNetrek > > I chose the MIT license, which is functionally similar to “copyright.h” > and “copyright2.h”, but is a “standard license”. I welcome pull requests > (but will review them of course). > > > > I’m still having issues with the “preferred team”. I thank Stas for his > data and debugging suggestions but team selection is not working as > expected. After a “Netrek development break” in April I will come back and > figure that out. I’ll also work on “position extrapolation” to increase > frame rate after my break. > > > > Netrek requires MacOS 10.14 Mojave. Sven asked: > >> What's the reason for the Mojave OS requirement? > > > > Rather than the classic BSD sockets API > (socket/connect/bind/listen/accept), my Netrek client uses the new Network > framework API from Apple. Source code at > https://github.com/darrellroot/SwiftNetrek/blob/master/Netrek/Communication/TcpReader.swift > The only problem with this API is it requires Mojave. > > > > It’s a real cool API, and helps prevent programmer mistakes from people > like me. Excerpts below. I believe it gives me “free” IPv6 support if the > hostname returns an AAAA address (I haven’t checked to see if the netrek > vanilla server supports IPv6—I don’t see any netrek servers with AAAA DNS > records). FYI it looks like IPv4 is supposed to be deprecated on 2/1/2030. > #ipv4flagday > > > > // TcpReader partial excerpts only see > https://github.com/darrellroot/SwiftNetrek/blob/master/Netrek/Communication/TcpReader.swift > > class TcpReader { > > init?(hostname: String, port: Int, delegate: NetworkDelegate) { > > let serverEndpoint = NWEndpoint.Host(hostname) > > guard let portEndpoint = NWEndpoint.Port(rawValue: port) else { > return nil } > > connection = NWConnection(host: serverEndpoint, port: > portEndpoint, using: .tcp) > > connection.stateUpdateHandler = { [weak self] (newState) in > > switch newState { > > case .ready: > > debugPrint("TcpReader.ready to send") > > self?.appDelegate.newGameState(.serverConnected) > > self?.receive() > > case .failed(let error): > > debugPrint("TcpReader.client failed with error \(error)") > > self?.appDelegate.newGameState(.noServerSelected) > > case .setup: > > debugPrint("TcpReader.setup") > > case .waiting(_): > > debugPrint("TcpReader.waiting") > > case .preparing: > > debugPrint("TcpReader.preparing") > > case .cancelled: > > debugPrint("TcpReader.cancelled") > > self?.appDelegate.newGameState(.noServerSelected) > > } > > } > > connection.start(queue: queue) > > } > > // the receive function waits asynchronously for new data and then uses > the swift “closure” to process the data on a separate thread whenever it > arrives. No select()! No testing for available data. > > func receive() { > > connection.receive(minimumIncompleteLength: 1, maximumLength: > 16384) { (content, context, isComplete, error) in > > if let content = content { > > //debugPrint("content startIndex \(content.startIndex) > endIndex \(content.endIndex)" ) > > self.delegate.gotData(data: content, from: self.hostname, > port: self.port) > > } > > } > > func send(content: Data) { > > connection.send(content: content, completion: .contentProcessed({ > (error) in > > if let error = error { > > print("send error: \(error)") > > } > > })) > > } > > And in the packet analyzer code after processing gotData: > > > > appDelegate.reader?.receive() > > Darrell > > > > > > -------------- next part -------------- > > An HTML attachment was scrubbed... > > URL: < > http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190404/fe764068/attachment.html > > > > -------------- next part -------------- > > A non-text attachment was scrubbed... > > Name: Screen Shot 2019-04-04 at 9.43.13 AM.png > > Type: image/png > > Size: 377589 bytes > > Desc: not available > > URL: < > http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190404/fe764068/attachment.png > > > > > > ------------------------------ > > > > Subject: Digest Footer > > > > _______________________________________________ > > netrek-dev mailing list > > netrek-dev at us.netrek.org > > http://mailman.us.netrek.org/mailman/listinfo/netrek-dev > > > > > > ------------------------------ > > > > End of netrek-dev Digest, Vol 97, Issue 2 > > ***************************************** > _______________________________________________ > netrek-dev mailing list > netrek-dev at us.netrek.org > http://mailman.us.netrek.org/mailman/listinfo/netrek-dev > -- http://www.fidei.org -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190404/4e79d07e/attachment-0001.html>