From: Hedayat V. <hed...@ai...> - 2007-06-18 15:15:41
|
Hi Joschka, This problem is not restricted to the BeamEffector I think. The same think may happen when ClearPlayers functions are used (right?!). If so, number 1 is not an option at all. The ClearPlayers functions may either try generating random positions until a safe position is found, or find a safe position directly. But for the BeamEffector, I'm agree with 2 (or even 1) since it is used only in before kickoff mode and beaming into the same position is unlikely. (Also, the agent might be confused if it is placed somewhere other than the requested position.) And I think I have at least enough time to implement 2. But I'm mostly considered about ClearPlayer functions, the game shouldn't stop after kickoff. What do you think? Good luck, Hedayat /*Joschka Boedecker <jbo...@un...>*/ wrote on 06/18/2007 12:55:47 PM: > Hi Hedayat, > > On Mon, 2007-06-18 at 02:12 +0330, Hedayat Vatankhah wrote: > > >> There is a problem when MoveAgent(AndRotate) functions are used: there >> might be another object in the destination! This happens for example >> when two agents beam into the same place which will slow down the >> simulation significantly. It seems that these functions should place >> the agent into the nearest empty position to the destination point. Or >> maybe the empty position is found before calling these functions. >> > > Yes, you're right. There are several possibilities: > > 1) We could say it is the teams' responsibility to avoid these kinds of > situations. This is risky, however, and might lead to lots of games > having to be restarted if the server is not responsive anymore. It also > creates problems how to deal with these situations in the rules (should > the team that caused this be punished in some way, etc). > > 2) We could check the position in the BeamEffector and only execute the > command if no BoundingBoxes intersect. If there is an intersection, the > command is simply ignored (we might think about a message to the agent > in this case). > > 3) The BeamEffector does the check and also figures out a safe position > for the agent. This might be a non-trivial task, however, depending on > the configuration of agents. > > Since we don't have much time, I'd favor 2). What do you think? And > also, do you think you'd have time to work on this? > > Cheers, > Joschka > > |