https://github.com/eeoooue/networked-cube
Networking exercise with a puzzle cube.
https://github.com/eeoooue/networked-cube
asp-net cubing rest-api sockets wpf
Last synced: about 1 month ago
JSON representation
Networking exercise with a puzzle cube.
- Host: GitHub
- URL: https://github.com/eeoooue/networked-cube
- Owner: eeoooue
- Created: 2025-02-12T22:13:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-22T08:40:43.000Z (about 1 year ago)
- Last Synced: 2025-05-22T08:45:23.974Z (about 1 year ago)
- Topics: asp-net, cubing, rest-api, sockets, wpf
- Language: C#
- Homepage:
- Size: 3.04 MB
- Stars: 5
- Watchers: 1
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# networked-cube
A light-hearted networking exercise with a puzzle cube theme.
The end goal is a suite of networked applications that can be self-hosted on a single machine to present a cube that can be scrambled and solved.
The puzzle is presented as a cube map in the same manner as in [Old Pochman](https://www.speedcubereview.com/blind-solving-algorithms.html).
## Screenshot

## Design

## Usage
### Setup
1. Open ```Solution/Solution.sln``` in Visual Studio
2. Run **CubeService** to make the cube available via the API.
3. Run **CubeProxy** to make the CubeService API available to other components.
4. Run **CubeStatePublisher** to make the cube state available to frontends over SignalR.
5. Run front end application(s) of your choosing to view the cube and interact with it:
- Try **CubeVisualizer** to view the cube in 3D
- Try **FaceViewer** instances to view individual faces of the cube
- Try **FaceViewerCLI** to view the cube within the command line and input moves
- Try **CubeManipulator** to submit moves without any cube visuals
### Moves
You can use standard cube notation to input moves. These are:
- **U** will rotate the top row right.
- **D** will rotate the bottom row right.
- **R** will rotate the right column upwards.
- **L** will rotate the left column downwards.
- **F** will rotate the front face clockwise.
- **B** will rotate the back face counter-clockwise.
- **M** will rotate the middle column downwards.
You can use the **{move}'** notation to do a move in reverse. An example would be **U'** to rotate the top row left.
You can use the **{move}2** notation to do a move twice. An example would be **U2** to rotate the top row left two times.
*Each move uses the **front** face as reference*
## Contributing
If you know me personally, you are welcome to contribute to this project.
Anticipated additions to the project are listed as [issues](https://github.com/eeoooue/netcube/issues). Let me know if you spot anything that interests you, or if you have any other ideas for the project.