![]() |
|
#31
|
|||
|
|||
|
I am using about 10-20 timeout statements in onTickGame to send messages. Does it slow down server processor if server has to count 10-20 timers at the same time or not?
Maybe it should be optimized to have only one timer? |
|
#32
|
|||
|
|||
|
Made little additions to the code, to avoid exeptions.
latest version: http://forum.1cpublishing.eu/showpos...8&postcount=41 Last edited by FG28_Kodiak; 10-12-2011 at 12:31 PM. |
|
#33
|
|||
|
|||
|
Thank you! Testing on R2 now.
|
|
#34
|
|||
|
|||
|
I get this OnPlaceEnter if enable my "NET message"
Code:
[13:01:51] Server: 3GIAP_Atas enters the battle. [13:01:53] Server: 3GIAP_Atas will fly for the Red forces. [13:01:58] Loading mission ... [13:01:58] Server to [Server]: A new group of 1 Red aircraft was reported. [13:01:58] Mission loaded. time = 0.329 [13:01:58] Server to [3GIAP_Atas]: Удачного вылета! [13:01:58] Server to [3GIAP_Atas]: Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги. [13:01:58] [13:01:58] ================================================= [13:01:58] System.IO.IOException: I/O error occurred. [13:01:58] [13:01:58] Server stack trace: [13:01:58] at pFdAnwvFuaY9YxSo5Rb.MTbs2Wva9ZwBOQUYQch.XV70nxU5mb(String ) [13:01:58] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.pAevmyIzcXSHogPw31FA(Object , Object ) [13:01:58] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.vdHekiRiXUo(String , Object[] ) [13:01:58] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.5ExekdenPIb(Player[] , String , Object[] ) [13:01:58] at LrAZHYDb5HXlxAcGxGQ.O8MywKDql50K0Y6Ucrm.LogServer(Player[] , String , Object[] ) [13:01:58] at maddox.game.GameDef.gpLogServer(Player[] to, String format, Object[] args) [13:01:58] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [13:01:58] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [13:01:58] [13:01:58] Exception rethrown at [0]: [13:01:58] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [13:01:58] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [13:01:58] at maddox.game.IGamePlay.gpLogServer(Player[] to, String format, Object[] args) [13:01:58] at Mission.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex) [13:01:58] at maddox.game.ABattle.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex) [13:01:58] at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:01:58] at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:01:58] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [13:01:58] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [13:01:58] [13:01:58] Exception rethrown at [1]: [13:01:58] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [13:01:58] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [13:01:58] at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:01:58] at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:01:58] at dp8K7ffZC2JmTFxNtum.gkydOifm2sRXchrPjNC.eventGame(GameEventId , Object , Object , Int32 ) [13:01:58] at tpZkklAJjTISdGT144j.fBZFTNAMvsuuP0ewCS3.AY6A72gxK6R(GameEventId , Object , Object , Int32 ) [13:01:58] ================================================= [13:02:04] Chat: Server: !!! VULCHING IS NOT ALLOWED ON THIS SERVER !!! [13:02:47] Loading mission ... [13:02:47] Server to [Server]: A new group of 1 Red aircraft was reported. [13:02:47] Mission loaded. time = 0.009 [13:02:47] Server to [3GIAP_Atas]: Удачного вылета! [13:02:47] Server to [3GIAP_Atas]: Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги. [13:02:47] [13:02:47] ================================================= [13:02:47] System.IO.IOException: I/O error occurred. [13:02:47] [13:02:47] Server stack trace: [13:02:47] at pFdAnwvFuaY9YxSo5Rb.MTbs2Wva9ZwBOQUYQch.XV70nxU5mb(String ) [13:02:47] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.pAevmyIzcXSHogPw31FA(Object , Object ) [13:02:47] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.vdHekiRiXUo(String , Object[] ) [13:02:47] at Gs6THTU8KBgeGhkm4tn.1yUfFwUh503FN6STRyP.5ExekdenPIb(Player[] , String , Object[] ) [13:02:47] at LrAZHYDb5HXlxAcGxGQ.O8MywKDql50K0Y6Ucrm.LogServer(Player[] , String , Object[] ) [13:02:47] at maddox.game.GameDef.gpLogServer(Player[] to, String format, Object[] args) [13:02:47] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [13:02:47] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [13:02:47] [13:02:47] Exception rethrown at [0]: [13:02:47] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [13:02:47] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [13:02:47] at maddox.game.IGamePlay.gpLogServer(Player[] to, String format, Object[] args) [13:02:47] at Mission.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex) [13:02:47] at maddox.game.ABattle.OnPlaceEnter(Player player, AiActor actor, Int32 placeIndex) [13:02:47] at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:02:47] at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:02:47] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [13:02:47] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [13:02:47] [13:02:47] Exception rethrown at [1]: [13:02:47] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [13:02:47] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [13:02:47] at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:02:47] at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [13:02:47] at dp8K7ffZC2JmTFxNtum.gkydOifm2sRXchrPjNC.eventGame(GameEventId , Object , Object , Int32 ) [13:02:47] at tpZkklAJjTISdGT144j.fBZFTNAMvsuuP0ewCS3.AY6A72gxK6R(GameEventId , Object , Object , Int32 ) [13:02:47] ================================================= [13:02:54] Loading mission ... [13:02:54] Server to [Server]: A group of Red 1 just appeared. [13:02:54] Mission loaded. t Code:
public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceEnter(player, actor, placeIndex);
// Intro messages here
#region Welcome msgs
// these 2 work fine
sendChatMessageTo(player, new string[] { "ru" }, "Good luck and have fun!", null);
sendChatMessageTo(player, "ru", "Удачного вылета!", null);
// NET settings msg - do not work on dedicated server, works on hosted server for host at least
// prevents several lines of code from execution, e.g. current109s++ does not work
sendScreenMessageTo(player, new string[] { "ru" }, "Please set your NET speed to ISDN in game network settings. This is needed for server testing purposes.", null);
sendScreenMessageTo(player, "ru", "Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера.", null);
Timeout(7, () => // 2nd part
{
sendScreenMessageTo(player, new string[] { "ru" }, "Please report on 1C Clifs of Dover forums if this helps reducing lag.", null);
sendScreenMessageTo(player, "ru", "Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.", null);
});
sendChatMessageTo(player, new string[] { "ru" }, "Please set your NET speed to ISDN in game network settings. This is needed for server testing purposes. Please report on 1C forums if this helps reducing lag.", null);
sendChatMessageTo(player, "ru", "Пожалуйста, поставьте в настройках игры скорость сети 'ISDN'. Это нужно для тестирования сервера. Пожалуйста, сообщите на форуме sukhoi.ru уменьшает ли это лаги.", null);
Timeout(20, () => // works fine
{
msgCurrentObjectives(player); // current objectives
});
|
|
#35
|
|||
|
|||
|
Could you change the message for testing please, seems it's a problem with the string, may be to long or the 'ISDN'
|
|
#36
|
|||
|
|||
|
Quote:
2nd issue still remains. I see all messages from OnTickGame ONLY in server log but not on screen because they are sent only to server, not to remote players. Code:
[13:17:48] Server to [Server]: Please leave your feedback at forum.1cpublishing.eu in CloD section. We highly appreciate it! |
|
#37
|
|||
|
|||
|
Could it be that GamePlay.gpPlayer is the server on dedicated?
Could you please test it with: Code:
using System;
using System.Collections;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;
public class Mission : AMission
{
#region MessageSystem
private void sendScreenMessageTo(int army, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if (GamePlay.gpPlayer().Army() == army || army == -1)
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if (p.Army() == army || army == -1)
Players.Add(p);
}
}
if (Players != null && Players.Count > 0)
GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
}
private void sendChatMessageTo(int army, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if (GamePlay.gpPlayer().Army() == army || army == -1)
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if (p.Army() == army || army == -1)
Players.Add(p);
}
}
if (Players != null && Players.Count > 0)
GamePlay.gpLogServer(Players.ToArray(), msg, parms);
}
private void sendScreenMessageTo(int army, string playerlanguage, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if ((GamePlay.gpPlayer().Army() == army || army == -1) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if ((p.Army() == army || army == -1) && p.LanguageName().Equals(playerlanguage))
Players.Add(p);
}
}
if (Players != null && Players.Count > 0)
GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
}
private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if ((GamePlay.gpPlayer().Army() == army || army == -1) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if ((p.Army() == army || army == -1) && p.LanguageName().Equals(playerlanguage))
Players.Add(p);
}
}
if (Players != null && Players.Count > 0)
GamePlay.gpLogServer(Players.ToArray(), msg, parms);
}
private void sendChatMessageTo(int army, string[] exepttoplayerlanguages, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if (GamePlay.gpPlayer().Army() == army || army == -1)
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if (p.Army() == army || army == -1)
Players.Add(p);
}
}
foreach (string st in exepttoplayerlanguages)
{
Players.RemoveAll(item => item.LanguageName().Equals(st));
}
if (Players != null && Players.Count > 0)
GamePlay.gpLogServer(Players.ToArray(), msg, parms);
}
private void sendScreenMessageTo(int army, string[] exepttoplayerlanguages, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
foreach (string st in exepttoplayerlanguages)
{
//Singleplayer or Dedi Server
if (GamePlay.gpPlayer() != null)
{
if (GamePlay.gpPlayer().Army() == army || army == -1)
Players.Add(GamePlay.gpPlayer());
} // Multiplayer
if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
{
foreach (Player p in GamePlay.gpRemotePlayers())
{
if (p.Army() == army || army == -1)
Players.Add(p);
}
}
}
foreach (string st in exepttoplayerlanguages)
{
Players.RemoveAll(item => item.LanguageName().Equals(st));
}
if (Players != null && Players.Count > 0)
GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
}
private void sendChatMessageTo(Player player, string msg, object[] parms)
{
if (player != null)
GamePlay.gpLogServer(new Player[] { player }, msg, parms);
}
private void sendScreenMessageTo(Player player, string msg, object[] parms)
{
if (player != null)
GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
}
private void sendChatMessageTo(Player player, string playerlanguage, string msg, object[] parms)
{
if (player != null)
if (player.LanguageName().Equals(playerlanguage))
GamePlay.gpLogServer(new Player[] { player }, msg, parms);
}
private void sendScreenMessageTo(Player player, string playerlanguage, string msg, object[] parms)
{
if (player != null)
if (player.LanguageName().Equals(playerlanguage))
GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
}
private void sendChatMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
if (player != null)
Players.Add(player);
foreach (string st in exepttoplayerlanguages)
{
if(Players != null)
Players.RemoveAll(item => item.LanguageName().Equals(st));
}
if (Players != null && Players.Count > 0)
GamePlay.gpLogServer(Players.ToArray(), msg, parms);
}
private void sendScreenMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
{
List<Player> Players = new List<Player>();
if (player != null)
Players.Add(player);
foreach (string st in exepttoplayerlanguages)
{
if (Players != null)
Players.RemoveAll(item => item.LanguageName().Equals(st));
}
if (Players != null && Players.Count > 0)
GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
}
#endregion
}
Last edited by FG28_Kodiak; 10-12-2011 at 12:33 PM. |
|
#38
|
|||
|
|||
|
The 1st problem with errors is solved! The chat message was too long.
Thank you! Quote:
Thanks, will test soon. EDIT. Ah, 10 people are playing can not restart now ((. Last edited by Ataros; 10-12-2011 at 11:58 AM. |
|
#39
|
|||
|
|||
|
Ok i found out how to run a dedicated Server on my own Computer, so i can test it by my self
|
|
#40
|
|||
|
|||
|
Quote:
BTW you can join your own dedicated server from the same PC with your client if you run the dedi via a shortcut (creating a windows shortcut for a dedi with -server in properties). |
![]() |
|
|