I finally got around to getting rid of the UI glitches cause by TX in the laser tag host. New version here. Or you can grab the code here.
Yay lazer tag!
Saturday, March 12, 2011
Friday, January 21, 2011
Lazer Tag Host Binaries part 2
Ok, I took the previous post of binaries down because I thought those binaries might have been broken but it was just me. Here is a new link. They are tested and work in ubuntu 10.10 and windows 7. I know in windows 7 I had to install gtk# as well to get it to open. If your arduino isn't programed the app may hang, if it isn't plugged in you should be fine but won't get past the setup menu.
Download gtk 2.22
More Versions
Update: You also need a recent version of GTK installed in addition to gtk#.
Update 2: It appears that the release version doesn't work for everyone. Try the debug version if you are having issues.
Download gtk 2.22
More Versions
Update: You also need a recent version of GTK installed in addition to gtk#.
Update 2: It appears that the release version doesn't work for everyone. Try the debug version if you are having issues.
Sunday, January 16, 2011
Patents?
Someone apparently located the LTTO patent (US7632187). That would have been totally useful.
Actually, reading it now it would have been super useful. It details all the bit fields. Most of mine just switch the whole byte on the game type because the LTTO only starts games with one set of settings. I guess there is quite a bit more I can do. Rapid tags? Neat!
Actually, reading it now it would have been super useful. It details all the bit fields. Most of mine just switch the whole byte on the game type because the LTTO only starts games with one set of settings. I guess there is quite a bit more I can do. Rapid tags? Neat!
Friday, January 14, 2011
This is how you build a laser tag hosting station
Saturday, November 13, 2010
Clearanced-based Hierarchical Pathfinding (HPA*)
Aigamedev.com seems to always have something interesting to read. This week it is using Annotated A* to find a path of at least minimum clearance through a graph. They also go into how you can reduce the graph to an annotated hierarchical pathfinding graph for near-optimal results at much greater speeds. The article is well explained and comes out with a very practical result.
If your not convinced maybe their talk on zombie brain AI from last month will convince you.
If your not convinced maybe their talk on zombie brain AI from last month will convince you.
Saturday, October 9, 2010
LazerTag Team Ops Packet - Part 4

I figured out the final scoring details and completed the GUI. You can host a complete game from the GUI now and get all the score readouts.
The fields worked out as follows:
COMMAND_CODE_PLAYER_REPORT_SCORE_RECORDS
0x041-0x043, //command code (last two bits are the team number)
0x00, //game id
0x10, // team_number << 4 | player_number
0xXX, //player hit mask
0xXX, //hits from player indicated by first set bit in mask
0xXX, //hits from player indicated by second set bit in mask
... (the hit bytes sum to count_ones(mask_byte)
0x100, //checksum
The secret to determine the SCORE_RECORD was noticing that COUNTDOWN varied more then I noticed in my initial testing.
COMMAND_CODE_COUNTDOWN_TO_GAME_START
0x000, //command code
0x00, //game id
0x30, //seconds left in digit hex
0x08, //players on team 1
0x08, //players on team 2
0x08, //players on team 3
0x100, //checksum
If t2p0 shoots t1p0 and "players on team 2" == 0, then t1p0's gun will ignore the shot. Hence, those shots won't show up in the score report.
The following packets still have unknown values:
COMMAND_CODE_SCORE_ANNOUNCEMENT
COMMAND_CODE_PLAYER_REPORT_SCORE
COMMAND_CODE_GAME_OVER
Hey you, decode!
As always, get the code here.
Wednesday, September 29, 2010
LazerTag Team Ops Packet - Part 3
More features working, more fields decoded. Still no score reporting. I found the 'damage' field and the 'still alive' field but not the who hit you with a candlestick in the library section. Get the Code.
COMMAND_CODE_SCORE_ANNOUNCEMENT
0x031, //command code
0x00, //game id
0x11, // team_number << 4 | player_number
0x0F, //unknown
0x100, //checksum
COMMAND_CODE_PLAYER_REPORT_SCORE
0x040, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0x00, //damage received
0x01, //still alive
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x02, //unknown
0x100, //checksum
COMMAND_CODE_PLAYER_REPORT_SCORE_RECORDS
0x041, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0xXX, //unknown
0xXX, //unknown
0xXX, //unknown, looks like hits from a certain player but unable to determine which
0x100, //checksum
I also determined that 0x41 is actually sent by the gun. I am pretty sure it contains the hit report but I have been unable to decode it. With 3 guns it is sometimes 2 bytes of unknown data and sometimes 3. Lastly the 'rank' announce that cycles through all the players.
COMMAND_CODE_GAME_OVER
0x042, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0x00, //player rank
0x01, //team rank
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x100, //checksum
COMMAND_CODE_SCORE_ANNOUNCEMENT
0x031, //command code
0x00, //game id
0x11, // team_number << 4 | player_number
0x0F, //unknown
0x100, //checksum
COMMAND_CODE_PLAYER_REPORT_SCORE
0x040, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0x00, //damage received
0x01, //still alive
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x02, //unknown
0x100, //checksum
COMMAND_CODE_PLAYER_REPORT_SCORE_RECORDS
0x041, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0xXX, //unknown
0xXX, //unknown
0xXX, //unknown, looks like hits from a certain player but unable to determine which
0x100, //checksum
I also determined that 0x41 is actually sent by the gun. I am pretty sure it contains the hit report but I have been unable to decode it. With 3 guns it is sometimes 2 bytes of unknown data and sometimes 3. Lastly the 'rank' announce that cycles through all the players.
COMMAND_CODE_GAME_OVER
0x042, //command code
0x00, //game id
0x10, // team_number << 4 | player_number
0x00, //player rank
0x01, //team rank
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x00, //unknown
0x100, //checksum
Subscribe to:
Posts (Atom)