Reia icon indicating copy to clipboard operation
Reia copied to clipboard

Rework the project for an Alpha release.

Open Makosai opened this issue 1 year ago • 2 comments

The focus of this PR is to rework everything. It's not really to rethink every design and do it over purely from scratch. Instead, it's aimed at taking the old code bit-by-bit and slotting it back it to fix any mistakes that were introduced from past migrations or just skill-issues we've outgrown. This includes approaches to designing and developing UI. The rework aims to make it much more simpler and easier to maintain. Especially with the addition of ThemeGen.

Towards the very end, gdext and godot-zig will be the next focus. Where Zig will squeeze out the most perforrmance, Rust is in the middle but close second, and GDScript is where everything will start before being migrated out for optimization. Most of the netcode will live in Rust and be exposed to GDScript. Zig will also make it extremely easy to interface external libraries.

Makosai avatar Apr 04 '25 07:04 Makosai

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Apr 04 '25 07:04 CLAassistant

gdext is functional and Quaint-Studios/Sustenet is working as well. It starts the master, cluster, and client all at once in the same game. This is beneficial when someone wants to host a game for their friends or family either locally or remotely. And because it works like this, it can also work standalone. Which means creating a server is as simple as calling a function to start the server and it'll load the Config.toml file.

The next step is to create UI for all of this.

  • [ ] 1. Play button takes you to an online / offline screen.
  • [ ] 2. Clicking offline loads game naturally.
  • [ ] 3. Clicking online opens a new screen that asks if they want to create or join a server. Then it asks for the name of the master (hub)/cluster(server), max players (or a checkbox for unlimited), the master (hub)/cluster(server) ports (default: 6256 and 6257). This will require changing the config a bit. But the only additional variable needed would be a name for the master server. To make the rest work, the config would just need some variable moved around and the code would need some minor changes.
  • [ ] 4. When the server is started, load the world and open the chat box.
  • [ ] 5. The second client would click join server and would enter the IP and port for the master(hub).
  • [ ] 6. Once connected, the client will send a request for a list of all cluster servers. Then it'll connect to the first one in the list. In a more refined environment, this would allow the player to choose their server. But that'll come a bit later.
  • [ ] 7. This client is now connected to the cluster. Now we'll send a message command to the cluster and it'll relay it to another user at a specific index in the list of clients.

After this, the next step is sending / receiving movement updates. If we can send / receive movements, we can do the same for rotations and actions like attack animations.

Makosai avatar Apr 21 '25 06:04 Makosai

I'm going to go ahead and merge these changes into master and continue working on it as a project under https://github.com/orgs/Quaint-Studios/projects/2.

Makosai avatar Jul 21 '25 02:07 Makosai