Changes

Orbital

6,979 bytes added, 21:47, 3 April 2023
Adding link to YouTube video
The code for the game server is hosted on GitHub : https://github.com/Pecamo/orbital
 
= Gameplay =
 
== Game mode ==
 
You play Orbital against other players, each using their smartphone. To start a game, at least two players are needed. Once the game starts, each player is assigned a color, a LED lights up to that color. A player controls their LED using three buttons on their phone :
 
* Left : Moves the player's LED to the left
* Right : Moves the player's LED to the right
* Shoot : Fires a projectile in the last moved direction. The distance it travels is proportional to the time elapsed since the last shot.
 
The goal is then to "kill" other players by firing a projectile at them all while staying alive. Two projectiles that meet cancel each other.
 
There's not real maximum amount of players, however in practice having 8 players at the same time already starts to be confusing.
 
== Strategy ==
 
With the default settings, players usually evade a projectile by staying at a long enough range or by firing at the incoming one. The battle royale mode forces the remaining players to get close to each other rapidly. Once only two players remain and are at close range, the strategy game that emerges is similar to a basic version of [https://sonichurricane.com/?page_id=1702 footsies] in classic fighting games.
 
== Settings ==
 
Some mechanics elements can be altered to diversify gameplay between games. For example :
 
* Activate "Battle Royale" mode to make a growing part of the field become deadly, forcing the remaining players to get closer to each other.
* "Missile collision" controls whether two projectiles cancel each other, or even if only the weakest one gets destroyed.
* "Shot cooldown" controls the minimum amount of time a player must wait to shoot again.
 
== Lamp mode ==
 
There's also a "Lamp mode", which is not a game : it uses the LED strip to play atmospheric animations. The animations are pre-programmed patterns that have varying customizable parts (such as speed, color, brightness, etc.).
= Instances =
=== Orbital FIXME ===
Orbital FIXME is the name of the Orbital instance that runs in the local. You can play it on [https://orbital.fixme.chorbital.fixme.ch]
This is the original version and first running instance of the game.
<div style="clear: both;"></div>
 
 
= Build Your Own =
 
There is many possible ways to build your own Orbital structure. Beside electronics, the most important thing you'll need is a way to have a circle of addressable LEDs.
 
== Orbital FIXME ==
 
For our hackerspace version, we've build this circle using flat aluminum extrusions (3 pieces of 1.70m, bolted together) and zip-tying some flexible LED strip to these extrusions. This gives you a sturdier circle but is still quite flexible so you'll have to attach it in multiple points.
 
<gallery widths=500px heights=300px mode=packed-overlay>
File:Orbital-structure-screw.jpg|Screws holding aluminum extrusions together
File:Orbital-structure-zipties.jpg|Zip ties holding the LED strip to the aluminum structure
File:Orbital-stucture-installed.jpg|The structure is then suspended from the ceiling using ropes
File:Orbital-stucture-installed-on.jpg|And we have light!
</gallery>
 
== Orbital Portable ==
 
For Orbital Portable, we thought carrying a 1.60m diameter circle was annoying, so we created a Japanese fan-like wooden structure to form an 8-arms star. We then placed the LED strip inside a nice silicon diffuser to give it some rigidity and hold it in 8 points using aluminum brackets.
 
The wooden frame can be folded or unfolded by untying the wing screw that hold every pieces together. We also used teethed washed to increase the friction. A rope is attached to each wooden piece to keep an angle of 45° between them. It's not mandatory but still very useful to deploy it.
 
The diffuser make the game a little more blurry. It's still very playable but true hardcore gamers will prefer the pure square LED pixels.
 
Another great aspect of the diffuser is the added protection of the LED strip again elements while carrying Orbital Portable. It's waterproof, absorb shocks, increase the bend radius, you can (gently) pull on it, etc.
 
<gallery widths=500px heights=300px mode=packed-overlay>
File:Orbital-Portable-Diffuser.jpg|The diffuser used in Orbital Portable with the LED strip in it
File:Orbital-Portable-Wooden-Star.jpg|Here is the wooden Japanese fan-like wooden frame
File:Orbital-Portable-folded-frame.jpg|Folded, with a bolt in the middle and a wing screw
File:Orbital-Portable-Frame-Rope.jpg|The rope keeping every element apart with an angle of 45°
File:Orbital-Portable-Marking.jpg|The LED strip can be placed on top of it to mark where the aluminum brackets will be attached
File:Orbital-Portable-Brackets.jpg|Aluminum brackets are screwed in place. The rest of the wood can then be cut to length
File:Orbital-Portable-Paint.jpg|Painting the Orbital Portable frame
File:Orbital-Portable-Rpi-Bracket.jpg|We made a custom bracket for the Raspi Zero
File:Orbital-Portable-Done.jpg|Up and running!
File:Orbital-Portable-tripod.jpg|A third leg has been added to the frame to support it on its own.
</gallery>
 
== Material ==
 
Common Base for Orbital and Orbital Portable:
* LED strip: SK6812, 5m, 60 led/m, RGBWW https://www.aliexpress.com/item/32763384538.html
* Raspberry Pi 3+ or Similar
* Power Supply: 5V, at least 5A, 8A-10A to be comfortable https://www.aliexpress.com/item/32670505021.html
 
Orbital Portable:
* LED strip Silicon Diffuser: T1023, 10mm wide, 5m long https://www.aliexpress.com/item/4000077271746.html
* Aluminum Brackets, 10mm https://www.aliexpress.com/item/1709430101.html
 
Orbital Mini:
* LED Pixel Ring: 45 LEDs https://www.aliexpress.com/item/1005002289201149.html
* ESP32: running WLED https://www.aliexpress.com/item/32959541446.html
 
== Tips ==
 
* We used a 5m LED strip with 60 LED/m to have a nice an big circle. Thus said, it can totally work with any length and LED density.
* Prefer short data cable from the Raspberry Pi to the LED strip. Long unshielded cables can lead to weird behavior.
* The Raspberry Pi Zero W has a very nice form factor but is also very slow. We'd like to test with the Raspberry Pi Zero 2 W and we'll probably recommend it.
 
= Chronology =
 
* 21.08.2019 - 25.08.2019 : Ideation and start of development during [[CCCamp2019]].
* 09.2019 : First working version of Orbital FIXME finished
* 09.2020 : Ideation of Orbital-Portable
* 05.2021 - 07.2021 : Building hardware of Orbital-Portable
* 08.2021 : First release of Lamp mode
* 05.2022 : Lamp Animations "framework"
* 08.2022 : Frontend entirely re-written in Vue 3
* 02.2023 : WLED Integration
 
= Orbital-Portable =
 
Here are the different events during which Orbital-Portable has been used :
 
* 16.07.2021 : At a friend's house (~10 people)
* 13.11.2021 : Party in a cave (battery-powered) (~30 people)
* 24.04.2022 : A friend's birthday party (~30 people)
* 07.05.2022 : An other friend's birthday party (~30 people)
* 27.08.2022 : Weekend in a Swiss chalet (battery-powered) (~5 people)
* 27 + 28.10.2022 : [https://vifff.ch VIFFF]'s evening parties (2* 100 people)
 
= External links =
 
* [https://github.com/Pecamo/orbital Source code on GitHub]
* [https://orbital.run Portal for Orbital-Portable]
* [https://youtu.be/HKIx03cR7d4 Video presentation (in French)]
= Participants =
40
edits