Hello everyone! Thank you as always for your support. Let's take a look at this week's progress!
---
This week, I mainly focused on the system for connecting the server and client. Since Bahell employs existing room selection menus and waiting rooms after room entry, I had to learn the room and lobby systems. The overall connection flow is supported by Quantum, so it was possible to customize it by adding the necessary processes at the callback timing.
On the other hand, I had a lot of trouble obtaining data during the main game execution. Photon Quantum separates the main game processing from Unity to eliminate synchronization delays. As a result, the method of obtaining character information is completely different from Unity. This probably won’t be a difficult point once I deepen my understanding of Quantum, but at the moment, that’s not the case for me. I struggled to first obtain the player’s current information and then pass it to the Unity side, which manages the UI. This issue was resolved by passing the frame information together when making a callback event from Quantum to Unity. In Quantum, you need to specify which frame’s information you’re retrieving.

I also tried to incorporate entities generated by ECS into the UI but failed. This was because Unity's UI control component, RectTransform, didn’t display the entity. When I asked about this in the official Discord, I was told that incorporating entities into the UI is a typical anti-pattern. Therefore, the information obtained from the simulation is limited to what is used in the UI, and the generation and deletion of icons to be actually displayed must be done in Unity as needed. Managing the entity information also gave me a hard time. Since global variables that can be used commonly by all clients cannot hold list-type variables, the only option was to manage the information in each script using callbacks. However, since the timing and number of signal and event emissions often differed from what was expected, a problem occurred where the number of lists between clients did not match. In the end, I was able to learn from the official Discord that the type of entity obtained with the `frame.GetComponent<T>();` code can be narrowed down, reducing the management burden on the Unity side.
There were many twists and turns, but I managed to complete the implementation overall. However, despite my efforts, I couldn’t implement the exit process this week.
For now, it’s somewhat playable, so I will release it on itch.io as a limited release.
Password: ss8BhLNBVBWk5nF
Please note the following bugs:
- If you exit the waiting room or the game midway, the game ends for all clients.
- If you try to play again after the game ends, it will result in an error, so please reload the page and restart the game.
- The AI for CPU in offline mode is not currently implemented.
I plan to release it to the public once all the above issues are resolved.
My goal was to achieve this within the year, but considering the current situation, it may be difficult. The reason is that the public release of the demo is synonymous with the start of crowdfunding. The phases expected before the start of crowdfunding are as follows:
1. I need to finish the demo to a sufficient level of completeness to get permission for crowdfunding from the original creator, Vanripper.
2. After the presentation, there may be a long negotiation period depending on the situation.
3. At the time of the start of crowdfunding, I want to complete the technical verification of the online function and ensure its implementation.
There didn't seem to be a problem with just 1 and 2, but considering 3, which is currently in progress, time is not sufficient. This is because I also want to check the operation of GGPO after verifying Quantum. However, it has been several years since the project started,
so I would like to hear your opinions in this poll.
- Manga production
- Public release of Bahell ground
---
That's all for this week. Thanks to everyone's support, we can continue development! Much appreciation.
Have a great weekend!