Releases: Dees-Troy/SimpleCoil
QR Code Connect
One of the problems that I perceive with Recoil is getting each phone paired to the correct blaster. If you have a big group and try to pair multiple phones at a time, different phones may pair with each blaster. I use a QR code taped to the blaster to help ensure that the right phone is paired to the blaster. The QR code just contains the MAC address for the blaster.
I generated the QR code at https://www.the-qrcode-generator.com/ and saved it to SVG. I opened it in GIMP using 100 pixels per inch and specified a 1 inch sized image. I printed the result, cut it out, and used some clear packing tape to get the QR code onto the side of the blaster.
On a side note, I know there are bugs, and there are things that I'd love to be able to improve in this app, but I just don't have the time right now to commit to it. Maybe someday. This is just a small update that took me all of 20 minutes to do. I did it because I thought it was a cool idea and it was simple to implement.
Grenade!
Grenades can now be paired but pairing is only useful in network games with dedicated servers. You will get credit for enemy eliminations when using a paired grenade. Please note that there is no such thing as a friendly grenade! You and your teammates will still take damage from paired grenades too.
Grenades issue a random ID from a set of only 15 possible IDs. It is best to pair your grenade shortly before using it in case another player ends up with the same random ID. You should also try not to pair grenades while standing close to other players so they don't steal your pairing data and get credit for your kills.
Also fixed a bug that prevented players on certain teams from being damaged by grenades.
Fixed a bug related to sending player ID commands that was not visible to end users.
Found and added code for weapon profiles though it's not used at this time.
Team & player ID display for servers and fix recoil rate on rifle 3 shot burst
On a dedicated server game, the dedicated server and scoreboards will display player IDs in team ID - player ID format for team games. Previously all players were listed 1 to 16. Now you will see 1-2 or 4-3 which better matches the team and player ID displayed on each player's screen.
Tweaked recoil strength for 3 shot burst mode for the rifle only. The rifle will now recoil exactly 3 times in 3 shot burst mode instead of 3.5-ish recoils (part of a fourth recoil could be felt).
More reliable and better for large group play
After hosting a laser tag party for my son, we have made a number of improvements aimed at making the game more reliable and easier for dedicated server games.
-Made player settings dialog scrollable so you can get to all of the options on all devices
-Allow server to specify what shot modes are available for clients to select (auto, burst, single)
-Improve hit filtering by using the shot ID data field discovered by Ted Milker
-Add team score totals to the scoreboard in team games
-Allow reconnecting the same weapon if weapon disconnects in the middle of an active game
-Allow a dedicated server to change settings for all players when no players are connected (bugfix)
-Add an option to allow players to join or rejoin a game that is already in progress
-Add a start game button to the dedicated server so that the server can start the game
-Allow dedicated server to set and change firing mode for clients (indoor, outdoor with and without cone)
-Add an option to the dedicated server to disable most client settings making the UI simpler for clients and preventing unwanted client changes
-Allow clients to change their network player name while in the game lobby
-Once a client pairs with a blaster, you will then have a "Reconnect Same Weapon Only" button that will attempt to reconnect to the same blaster as before and ignore any other blasters. This option should make it easier to re-pair blasters without having to pair only one blaster at a time.
Layout and bug fixes
Improve layout for display on lower dpi screens:
-Squish things closer together vertically
-Move Game Mode setting under network popup menu
-Move team number display to the TEAM label at the top
Fix crash when trying to join a server by IP
Add automatic reload on empty (for slow rate of fire)
Automatic reload on empty with no reload sound for instagib or
sniper rifle style of play. This also serves as a proof of concept
for ways to limit the max rate of fire.
Bugfixes:
-Game ends properly in non-network games when the player runs out
of lives
-Game limits button reappears after a game ends properly
Dedicated server, GPS, and player settings
Player Settings to allow you to set:
-Health
-Shots per reload
-Reload time
-Respawn time
-Damage per hit to other players (network game only)
-Lives on a per player basis for network games
Dedicated server option using a device dedicated to serving the
game you get:
-More reliable connection between clients
-Eliminations will be queued if a client is disconnected and resent
when the client reconnects
-GPS options to show teammates and enemies
-Scoreboard
TCP network stack and more saved preferences
Use a TCP based server for lobbly only for now to handle initial
game set up including sending player names and IP addresses and
game limits via JSON.
Reduce the amount of UDP network spam by only sending shots fired
and hit messages once per animation time frame instead of on every
shot or hit.
Make shot mode, recoil, game mode, game limits, and player / team
a preference that saves and persists across app restarts to make
it easier to get into the same game you were playing last time.
UI rework, add indoor/outdoor modes, detect rifle/pistol
Get rid of separate network buttons and use popup menus to clean up the UI a bit.
Found configuration for and implemented a button to select indoor and outdoor modes. Outdoor mode can be selected with and without the close range broad area IR cone support. This item is a saved preference that will reload its previous state each time the app is opened.
Implemented a method that should hopefully detect if the user has connected a rifle or a pistol and adjust the battery gauge for the appropriate blaster.
Game limits and player names
Game limits - you may now set limits that will end the game. You can set one or more limits at the same time. You may limit games by time, by lives / respawns, and by score (network games only). In a network game, the game will end for everyone once on person or team reaches the score limit. Players that run out of lives will leave the game, but the rest of the players will continue. For team games, lives are on an individual basis.
If you don't use a time limit, a game timer is displayed instead -- might be useful to catch cheaters who restart midway through the game.
Player names - you will be asked to enter a player name when you enable network support. Player names will be displayed for people that you hit or are hitting you. You will be notified who eliminated you. You will also see the name of players that you have eliminated.
Added a sound that plays when you score a point in a network game.