== BraidsTag
An implementation of the milestag protocol and some game mechanics intended to run on an arduino and a raspberry pi.
The arduino interacts with some bespoke electronics and defers to the pi for any gameplay logic. The pi allows us to have a client-server connection over a wi-fi mesh network which should allow for some very interesting mechanincs more often associated with computer games such as voice communication, team power ups etc.
== Electronics The electronics have become significantly more complex than I first imagined but there is very little which I think could be removed without loosing a lot of functionality,
The circuit and board layout for the elctronics is included in "fritzing" files.
== Gun software This is written in C and runs on the arduino. Currently, it has to be compiled and uploaded using the arduino IDE and the reset button has to be physically pressed manually. Once connected to the Game software via a serial link, all this does is handle the hardware, letting the game software handle the higher order logic.
== Game software This is written in pythin nd runs on the pi. It is responsible for communicating with the arduino, deciding what the incoming events mean and how to respond. It also communicates with the server.
This is deployed using resin. A good quickstart is https://docs.resin.io/raspberrypi/nodejs/getting-started/ when it comes time to deploy the code, use the clone of this repo, instead of the simple-server-node sample project
Currently, I have only done this by pushing to their servers and having them do the building. However, it should be possible to build locally by enabling the cross-build-start and end lines in Dockerfile.template and using:
{{{ resin build --deviceType raspberry-pi -a BraidsTag -v }}}
it is also possible to synchronise all of the local files with a container running on your network using:
{{{
resin sync
== Server software Written in python, this keeps tracks of all of the guns and allows administration of the game. It can be deployed in a docker container and exposes a rich client via vnc on port 5900.
it can be build and executed using:
{{{ docker build . -f Dockerfile.server -t braidstag-server docker run -it --rm -e SERVER=0.0.0.0 -p7079:7079 -p5900:5900 braidstag-server }}}
Bumps node-fetch from 2.6.0 to 3.1.1.
Sourced from node-fetch's releases.
v3.1.1
Security patch release
Recommended to upgrade, to not leak sensitive cookie and authentication header information to 3th party host while a redirect occurred
What's Changed
- core: update fetch-blob by
@jimmywarting
in node-fetch/node-fetch#1371- docs: Fix typo around sending a file by
@jimmywarting
in node-fetch/node-fetch#1381- core: (http.request): Cast URL to string before sending it to NodeJS core by
@jimmywarting
in node-fetch/node-fetch#1378- core: handle errors from the request body stream by
@mdmitry01
in node-fetch/node-fetch#1392- core: Better handle wrong redirect header in a response by
@tasinet
in node-fetch/node-fetch#1387- core: Don't use buffer to make a blob by
@jimmywarting
in node-fetch/node-fetch#1402- docs: update readme for TS
@types/node-fetch
by@adamellsworth
in node-fetch/node-fetch#1405- core: Fix logical operator priority to disallow GET/HEAD with non-empty body by
@maxshirshin
in node-fetch/node-fetch#1369- core: Don't use global buffer by
@jimmywarting
in node-fetch/node-fetch#1422- ci: fix main branch by
@dnalborczyk
in node-fetch/node-fetch#1429- core: use more node: protocol imports by
@dnalborczyk
in node-fetch/node-fetch#1428- core: Warn when using data by
@jimmywarting
in node-fetch/node-fetch#1421- docs: Create SECURITY.md by
@JamieSlome
in node-fetch/node-fetch#1445- core: don't forward secure headers to 3th party by
@jimmywarting
in node-fetch/node-fetch#1449New Contributors
@mdmitry01
made their first contribution in node-fetch/node-fetch#1392@tasinet
made their first contribution in node-fetch/node-fetch#1387@adamellsworth
made their first contribution in node-fetch/node-fetch#1405@maxshirshin
made their first contribution in node-fetch/node-fetch#1369@JamieSlome
made their first contribution in node-fetch/node-fetch#1445Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.1
v3.1.0
What's Changed
- fix(Body): Discourage form-data and buffer() by
@jimmywarting
in node-fetch/node-fetch#1212- fix: Pass url string to http.request by
@serverwentdown
in node-fetch/node-fetch#1268- Fix octocat image link by
@lakuapik
in node-fetch/node-fetch#1281- fix(Body.body): Normalize
Body.body
into anode:stream
by@jimmywarting
in node-fetch/node-fetch#924- docs(Headers): Add default Host request header to README.md file by
@robertoaceves
in node-fetch/node-fetch#1316- Update CHANGELOG.md by
@jimmywarting
in node-fetch/node-fetch#1292- Add highWaterMark to cloned properties by
@davesidious
in node-fetch/node-fetch#1162- Update README.md to fix HTTPResponseError by
@thedanfernandez
in node-fetch/node-fetch#1135- docs: switch
url
toURL
by@dhritzkiv
in node-fetch/node-fetch#1318- fix(types): declare buffer() deprecated by
@dnalborczyk
in node-fetch/node-fetch#1345- chore: fix lint by
@dnalborczyk
in node-fetch/node-fetch#1348- refactor: use node: prefix for imports by
@dnalborczyk
in node-fetch/node-fetch#1346- Bump data-uri-to-buffer from 3.0.1 to 4.0.0 by
@dependabot
in node-fetch/node-fetch#1319- Bump mocha from 8.4.0 to 9.1.3 by
@dependabot
in node-fetch/node-fetch#1339- Referrer and Referrer Policy by
@tekwiz
in node-fetch/node-fetch#1057- Add typing for Response.redirect(url, status) by
@c-w
in node-fetch/node-fetch#1169- chore: Correct stuff in README.md by
@Jiralite
in node-fetch/node-fetch#1361- docs: Improve clarity of "Loading and configuring" by
@serverwentdown
in node-fetch/node-fetch#1323- feat(Body): Added support for
BodyMixin.formData()
and constructing bodies with FormData by@jimmywarting
in node-fetch/node-fetch#1314
... (truncated)
Sourced from node-fetch's changelog.
Changelog
All notable changes will be recorded here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
What's Changed
- core: update fetch-blob by
@jimmywarting
in node-fetch/node-fetch#1371- docs: Fix typo around sending a file by
@jimmywarting
in node-fetch/node-fetch#1381- core: (http.request): Cast URL to string before sending it to NodeJS core by
@jimmywarting
in node-fetch/node-fetch#1378- core: handle errors from the request body stream by
@mdmitry01
in node-fetch/node-fetch#1392- core: Better handle wrong redirect header in a response by
@tasinet
in node-fetch/node-fetch#1387- core: Don't use buffer to make a blob by
@jimmywarting
in node-fetch/node-fetch#1402- docs: update readme for TS
@types/node-fetch
by@adamellsworth
in node-fetch/node-fetch#1405- core: Fix logical operator priority to disallow GET/HEAD with non-empty body by
@maxshirshin
in node-fetch/node-fetch#1369- core: Don't use global buffer by
@jimmywarting
in node-fetch/node-fetch#1422- ci: fix main branch by
@dnalborczyk
in node-fetch/node-fetch#1429- core: use more node: protocol imports by
@dnalborczyk
in node-fetch/node-fetch#1428- core: Warn when using data by
@jimmywarting
in node-fetch/node-fetch#1421- docs: Create SECURITY.md by
@JamieSlome
in node-fetch/node-fetch#1445- core: don't forward secure headers to 3th party by
@jimmywarting
in node-fetch/node-fetch#1449New Contributors
@mdmitry01
made their first contribution in node-fetch/node-fetch#1392@tasinet
made their first contribution in node-fetch/node-fetch#1387@adamellsworth
made their first contribution in node-fetch/node-fetch#1405@maxshirshin
made their first contribution in node-fetch/node-fetch#1369@JamieSlome
made their first contribution in node-fetch/node-fetch#1445Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.2
3.1.0
What's Changed
- fix(Body): Discourage form-data and buffer() by
@jimmywarting
in node-fetch/node-fetch#1212- fix: Pass url string to http.request by
@serverwentdown
in node-fetch/node-fetch#1268- Fix octocat image link by
@lakuapik
in node-fetch/node-fetch#1281- fix(Body.body): Normalize
Body.body
into anode:stream
by@jimmywarting
in node-fetch/node-fetch#924- docs(Headers): Add default Host request header to README.md file by
@robertoaceves
in node-fetch/node-fetch#1316- Update CHANGELOG.md by
@jimmywarting
in node-fetch/node-fetch#1292- Add highWaterMark to cloned properties by
@davesidious
in node-fetch/node-fetch#1162- Update README.md to fix HTTPResponseError by
@thedanfernandez
in node-fetch/node-fetch#1135- docs: switch
url
toURL
by@dhritzkiv
in node-fetch/node-fetch#1318- fix(types): declare buffer() deprecated by
@dnalborczyk
in node-fetch/node-fetch#1345- chore: fix lint by
@dnalborczyk
in node-fetch/node-fetch#1348- refactor: use node: prefix for imports by
@dnalborczyk
in node-fetch/node-fetch#1346- Bump data-uri-to-buffer from 3.0.1 to 4.0.0 by
@dependabot
in node-fetch/node-fetch#1319- Bump mocha from 8.4.0 to 9.1.3 by
@dependabot
in node-fetch/node-fetch#1339- Referrer and Referrer Policy by
@tekwiz
in node-fetch/node-fetch#1057- Add typing for Response.redirect(url, status) by
@c-w
in node-fetch/node-fetch#1169
... (truncated)
36e47e8
3.1.1 release (#1451)5304f3f
Don't change relative location header on manual redirect (#1105)f5d3cf5
fix(Headers): don't forward secure headers to 3th party (#1449)f2c3d56
Create SECURITY.md (#1445)4ae3538
core: Warn when using data (#1421)41f53b9
fix: use more node: protocol imports (#1428)f674875
ci: fix main branch (#1429)1493d04
core: Don't use global buffer (#1422)eb33090
Chore: Fix logical operator priority (regression) to disallow GET/HEAD with n...7ba5bc9
update readme for TS @type/node-fetch
(#1405)This version was pushed to npm by endless, a new releaser for node-fetch since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Should we have status LEDs that are always or periodically visible to indicate team ID or other effects such as invulnerability, quaddamage, dead, etc?
These would have an impact on power consumption, immersion, stealth etc so would probably need to be optional.
Potentially opens up possibilities of "reveal enemy" mechanics (see stompyrobots "radar hack")
Related to #38
We should support switching GameType and changing a bunch of the behavior of the game in one switch. Examples of game types are:
We should have a common system for setting parameters in an Admin UI or console.
Parameters might include: * Player * health * maxHealth * ammo * maxAmmo * Gun * damage * rateOfFire * brightness of torch / flash * Game * gameTime
These should have base values which are the same for everyone and should be able to be overridden by 1 or more effects. Effects might come from admins or from gameplay bonuses.
Effects could be: * Set to a value (e.g. =100) * Add/Subtract a Value (e.g. +50) * Multiply by a value (e.g. *1.50) (50% boost)
Each effect would be able to be removed once it no longer applies.
Effects can apply to the whole game, a single team or a single player (although it doesn't make sense to set the gametime for just 1 player)
TODO: Once we have a concept of a gun, we should be able to apply an effect to only a gun (for everyone, a team or a player)
The server should keep data for players between sessions. If this could be stored frequently enough, it would be good if we could make the server able to survive a crash or even make it HA.
There will need to be GDPR considerations if we are storing data cross-sessions.
When you are shot there should be a time when you cannot shoot back (to prevent tit-for-tat) and when you cannot be shot again. The 2 times should be independent and preferably changeable by admin/console