Open collinalexbell opened 6 months ago
Claude's thoughts:
Milestones:
Tasks:
Networking and Communication:
Screen Sharing:
Player Movement Synchronization:
Voice Chat Integration:
Server and Party Management:
Libraries and Off-the-Shelf Code:
Networking: Boost.Asio, ENet Screen Sharing: FFmpeg, libVNC Voice Chat: Mumble, Discord API, WebRTC Serialization: Protocol Buffers, FlatBuffers Compression: zlib, LZ4 Encryption: OpenSSL, libsodium Logging: spdlog, Boost.Log Testing: Google Test, Catch2
Me: First, the networking library. I'm currently using ZMQ for other purposes. Is that too high level? What are the tradeoffs vs using the other ones you suggested?
Claude:
Ok. I'm choosing ENet. Reddit says it is battle tested.
I'm keeping a design doc of decisions on the new multiplayer branch: https://github.com/collinalexbell/HackMatrix/tree/multiplayer
I asked claude to generate Client, Server, and Gui classes:
737a34ec76e94d993774244461879e2af837f602
HackMatrix already has a preexisting Imgui class with tabs that Claude didn't know about. I had claude rewrite the Gui class so that it can plug into the engineGui class.
b55f95e608fc0eac3764285ec9cfb79ae226ff47
Barebones GUI works. Connect button still needs something to call, but that will be implemented in the Client class. I also thing the GUI needs an option to make a particular instance into a server.
7d6c19525f6ccf15c7a407631e79b9e33313db00
Got a used laptop, installed Arch. HackMatrix is the only WM installed 😆.
Test environment all set up to start hacking on multiplayer in earnest. Lfg
Client and Server compile now. Had to add enet impl to engine.cpp.
5e8d1511f013557d1d2cdc08cfefe78369bedfd2
Client and Server basis connection works.
Server starts (no connections
Add client info on another machine
Connected
Server also sees 1 connection
Position commands are getting sent.
https://github.com/collinalexbell/HackMatrix/assets/1966377/48b8938c-1499-47a6-b4a0-448c5c96081b
x11vnc + tigervnc-viewer seems to work pretty well
host
client (ignore w.e. is going on with the screenshot (dimensions may be off, idk))
As part of the Game Design book of lenses book, the first lens is Emotion.
What emotion do I want from a game built on HackMatrix? I want a feeling of Connectivity and Competence.
To generate a feeling of Connectivity, the engine must support multiplayer... players can join up to solve computer problems (programming, Linux stuff, even graphics design and asset creation).
So my current focus based on the game design book is going to be multiplayer.