public static int Main(String[] args) { Trace.Listeners.Add(new DebugListener()); _sTimer = new Stopwatch(); NetWrapper.RegisterMessageHandler("WorldInfo", msg => { _sSkySeed = msg.ReadInt32(); _sRadius = msg.ReadFloat(); _sDensity = msg.ReadFloat(); _sTimerOffset = msg.ReadDouble() + NetWrapper.AverageRoundTripTime * 0.5; _sMyID = msg.ReadUInt16(); _sTimer.Restart(); }); NetWrapper.RegisterMessageHandler("PlayerInfo", msg => { var count = msg.ReadUInt16(); var players = new ushort[count]; for (int i = 0; i < count; ++i) { var id = players[i] = msg.ReadUInt16(); if (id != _sMyID && !_sPlayers.ContainsKey(id)) { _sPlayers.Add(id, new PlayerInfo(id)); } } var removed = _sPlayers.Keys.Where(x => x == _sMyID || !players.Contains(x)).ToArray(); foreach (var id in removed) { _sPlayers.Remove(id); } }); NetWrapper.RegisterMessageHandler("PlayerPos", msg => { var id = msg.ReadUInt16(); if (_sPlayers.ContainsKey(id)) { var player = _sPlayers[id]; player.Position = new Vector3(msg.ReadFloat(), msg.ReadFloat(), msg.ReadFloat()); } }); _sSkySeed = 0; _sMyID = 0xffff; _sPlayers = new Dictionary <ushort, PlayerInfo>(); var qualities = new[] { "Basic", "FxAA", "FxAA + Bloom" }; Console.WriteLine("Select a display quality:"); for (int i = 0; i < qualities.Length; ++i) { Console.WriteLine("{0}. {1}", i + 1, qualities[i]); } while (!int.TryParse(Console.ReadKey(true).KeyChar.ToString(), out _sQuality) || _sQuality < 1 || _sQuality > qualities.Length) { ; } _sQuality -= 1; Console.WriteLine("Selected {0}", qualities[_sQuality]); Console.WriteLine(); Console.Write("Server hostname [default localhost]: "); var hostname = Console.ReadLine(); NetWrapper.Connect(hostname.Length > 0 ? hostname : "localhost", 14242); NetWrapper.SendMessage("WorldInfo", NetDeliveryMethod.ReliableOrdered, 0); while (_sSkySeed == 0) { if (!NetWrapper.CheckForMessages()) { Thread.Sleep(16); } } using (Toolkit.Init(new ToolkitOptions { Backend = PlatformBackend.PreferNative })) { using (var app = new Program()) { app.Run(); } } NetWrapper.Disconnect(); return(0); }