Thread: Re: [Opentnl-general] Opentnl-general Digest, Vol 5, Issue 1
Brought to you by:
mark_frohnmayer,
s_alanet
From: Ben G. <be...@ga...> - 2008-03-11 23:05:05
|
Hey Jochen, I tried to recreate your scenario but was unable to experience any abnormal behavior under the TNLTest app. Specifically, I performed these steps: Update the GhostConstants enum in tnlGhostConnection.h to read: enum GhostConstants { GhostIdBitSize = 15, ///< Size, in bits, of the integer used to transmit ghost IDs GhostLookupTableSizeShift = 15, ///< The size of the hash table used to lookup source NetObjects by remote ghost ID is 1 << GhostLookupTableSizeShift. MaxGhostCount = (1 << GhostIdBitSize), ///< Maximum number of ghosts that can be active at any one time. GhostCountBitSize = GhostIdBitSize + 1, ///< Size of the field needed to transmit the total number of ghosts. GhostLookupTableSize = (1 << GhostLookupTableSizeShift), ///< Size of the hash table used to lookup source NetObjects by remote ghost ID. GhostLookupTableMask = (GhostLookupTableSize - 1), ///< Hashing mask for table lookups. }; Note that only the GhostIdBitSize and GhostLookupTablesizeShift were changed. And in testGame.cpp line 578 changed the number of AI players to be 1500, just as you showed in your mail. When I run two instance of TNLTest, they behave as expected (although there is lag). No disconnections occur. Is it possible that having so many ghosted objects is making your system max out, so that the server can't keep up with incoming requests and the client is disconnected? TNL is pretty efficient but the test app is not optimized for large quantities of AI. Are you using TNL 1.5.0 or another version? I used the zip file available for download at OpenTNL.org, and compiled with the latest Visual C++ 2008 Express (downloaded today). Regards, Ben Garney GarageGames.Com On 3/10/08, ope...@li... < ope...@li...> wrote: > > Send Opentnl-general mailing list submissions to > ope...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/opentnl-general > or, via email, send a message with subject or body 'help' to > ope...@li... > > You can reach the person managing the list at > ope...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Opentnl-general digest..." > > > Today's Topics: > > 1. BUG? TNLTest Connection reset (Jochen St?ber) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 10 Mar 2008 14:56:54 +0100 > From: Jochen St?ber <joc...@ke...> > Subject: [Opentnl-general] BUG? TNLTest Connection reset > To: <ope...@li...> > Message-ID: <002701c882b6$992cadc0$cb860940$@st...@ke...> > Content-Type: text/plain; charset="iso-8859-1" > > Hi, > > I wrote a networked app which recently hit the 1024 ghost boundary for a > single connection. The TNL doc states that the max number of ghost can > easily be raised by manipulating the GhostConstants enum in > tnlGhostConnection: > > > My tnlGhostConnection.h now looks like this: > > enum GhostConstants { > GhostIdBitSize = 16 , ///< Size, in bits, of the integer used to transmit > ghost IDs > GhostLookupTableSizeShift = 16, ///< The size of the hash table used to > lookup source NetObjects by remote ghost ID is 1 << > GhostLookupTableSizeShift. > > MaxGhostCount = (1 << GhostIdBitSize), ///< Maximum number of ghosts that > can be active at any one time. > GhostCountBitSize = GhostIdBitSize + 1, ///< Size of the field needed to > transmit the total number of ghosts. > > GhostLookupTableSize = (1 << GhostLookupTableSizeShift), ///< Size of the > hash table used to lookup source NetObjects by remote ghost ID. > GhostLookupTableMask = (GhostLookupTableSize - 1), ///< Hashing mask for > table lookups. > > }; > > But whenever the ghost count exceeds 1024 the client terminates its > connection to server, just to immediately reconnect, drop the line again > and > forth. > > I suspect that this might be abug in the TNL because TNLTest.exe which > comes > with the TNL lets me reproduces the error if I increase the number of > players in the game from 15 to over 1024 in the TestGame constructor, i.e. > in line 578: > > for(TNL::S32 i = 0; i < 1500; i ++) > { > Player *aiPlayer = new Player(Player::PlayerTypeAI); > aiPlayer->addToGame(this); > } > > > Did anyone encounter the same problem? > > Cheers, > > Jochen > > > > > ------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > ------------------------------ > > _______________________________________________ > Opentnl-general mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/opentnl-general > > > End of Opentnl-general Digest, Vol 5, Issue 1 > ********************************************* > -- Ben Garney GarageGames.com |
From: Marc R. <mar...@ud...> - 2008-03-26 23:14:16
Attachments:
smime.p7s
|
Hi again! Is there a way to specify the various timeouts? Like how long it takes until a connectiona ttempt is reported as a failure if it can't connect? Or how long it takes until a dropped connection gets noticed? Best regards Marc |
From: Mark F. <mar...@gm...> - 2008-03-26 23:25:38
|
Try doing a global search on the TNL directory for "timeout". You'll find everything you need :) Cheers, Mark On Wed, Mar 26, 2008 at 4:14 PM, Marc Rochel <mar...@ud...> wrote: > Hi again! > > Is there a way to specify the various timeouts? Like how long it takes > until a connectiona ttempt is reported as a failure if it can't connect? Or > how long it takes until a dropped connection gets noticed? > > Best regards > Marc > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > Opentnl-general mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/opentnl-general > > |
From: Marc R. <mar...@ud...> - 2008-03-25 21:10:13
Attachments:
smime.p7s
|
Hi ! I see that NetConnection has some onXXX methods that I can overwrite. But how do I tell my server NetInterface to use my subclassed NetConnection instead of the normal one? In TNLTest, NetInterface is subclassed as well as GhostConnection, but TestNetInterface doesn't use TestGhostConnection anywhere. So how does this work? How does TestNetInterface know that upon a connection attempt, it has to create a TestGhostConnection instead of a normal GhostConnection or EventConnection? It has to be specified somewhere but I can't find it. Best regards Marc |
From: Marc R. <mar...@ud...> - 2008-03-26 22:17:40
Attachments:
smime.p7s
|
Hi ! How do I abort a connection attempt correctly? When I do a connect and try a disconnect before onConnectionEstablished() was called, the vs memory debugger reports a memory leak at the end of the program. Like the NetConnection wasn't freed correctly. What do I have to call instead? I don't seen any abortConnectionAttempt() etc. Best regards Marc |
From: Mark F. <mar...@gm...> - 2008-03-27 00:05:44
|
I think disconnect() will do it -- do you have info on which allocation is not being deallocated correctly? On Wed, Mar 26, 2008 at 3:17 PM, Marc Rochel <mar...@ud...> wrote: > Hi ! > > How do I abort a connection attempt correctly? When I do a connect and try > a disconnect before > > onConnectionEstablished() was called, the vs memory debugger reports a > memory leak at the end of the program. Like the NetConnection wasn't freed > correctly. What do I have to call instead? I don't seen any > abortConnectionAttempt() etc. > > Best regards > > Marc > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > Opentnl-general mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/opentnl-general > > |
From: Marc R. <mar...@ud...> - 2008-03-27 00:11:52
Attachments:
smime.p7s
|
Hi ! What I do is creating the MyNetInterface, then a MyNetConnection and call Connect on the later one, giving the NetInterface as a parameter. MyNetConnection is 512 bytes in size and that's the size of the block that doesn't get freed - so I guess that's the trouble maker. Do I have to call delete on that manually at some point? I create it with new but I never delete it myself. Maybe in that case I have to? If the connection establishes successfully and I do a disconnect, nothing leaks - while I'm still not deleting the MyNetConnection I created before. Best regards Marc _____ Von: ope...@li... [mailto:ope...@li...] Im Auftrag von Mark Frohnmayer Gesendet: Donnerstag, 27. März 2008 01:06 An: ope...@li... Betreff: Re: [Opentnl-general] Aborting Connection Attempt I think disconnect() will do it -- do you have info on which allocation is not being deallocated correctly? On Wed, Mar 26, 2008 at 3:17 PM, Marc Rochel <mar...@ud...> wrote: Hi ! How do I abort a connection attempt correctly? When I do a connect and try a disconnect before onConnectionEstablished() was called, the vs memory debugger reports a memory leak at the end of the program. Like the NetConnection wasn't freed correctly. What do I have to call instead? I don't seen any abortConnectionAttempt() etc. Best regards Marc ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Opentnl-general mailing list Ope...@li... https://lists.sourceforge.net/lists/listinfo/opentnl-general |
From: Marc R. <mar...@ud...> - 2008-03-27 00:14:14
Attachments:
smime.p7s
|
By the way, it also doesn't leak if the server isn't there. So it only leaks if it could successfully connect but during this attempt, I try to abort it with a disconnect() call _____ Von: ope...@li... [mailto:ope...@li...] Im Auftrag von Mark Frohnmayer Gesendet: Donnerstag, 27. März 2008 01:06 An: ope...@li... Betreff: Re: [Opentnl-general] Aborting Connection Attempt I think disconnect() will do it -- do you have info on which allocation is not being deallocated correctly? On Wed, Mar 26, 2008 at 3:17 PM, Marc Rochel <mar...@ud...> wrote: Hi ! How do I abort a connection attempt correctly? When I do a connect and try a disconnect before onConnectionEstablished() was called, the vs memory debugger reports a memory leak at the end of the program. Like the NetConnection wasn't freed correctly. What do I have to call instead? I don't seen any abortConnectionAttempt() etc. Best regards Marc ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Opentnl-general mailing list Ope...@li... https://lists.sourceforge.net/lists/listinfo/opentnl-general |
From: Mark F. <mar...@gm...> - 2008-03-27 00:09:03
|
You can use the TNL_IMPLEMENT_NETCONNECTION macro -- lets you specify which net class groups will be active for the connection, as well as whether the NetInterface should allow remote connections of that type. On Tue, Mar 25, 2008 at 2:10 PM, Marc Rochel <mar...@ud...> wrote: > Hi ! > > I see that NetConnection has some onXXX methods that I can overwrite. But > how do I tell my server NetInterface to use my subclassed NetConnection > instead of the normal one? In TNLTest, NetInterface is subclassed as well as > GhostConnection, but TestNetInterface doesn't use TestGhostConnection > anywhere. So how does this work? How does TestNetInterface know that upon a > connection attempt, it has to create a TestGhostConnection instead of a > normal GhostConnection or EventConnection? It has to be specified somewhere > but I can't find it. > > Best regards > Marc > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > Opentnl-general mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/opentnl-general > > |