Weekly devlog #1 - new client & android progress


I decided I would start experimenting with a new format of the devlogs. Previously I posted screenshots with explanation of new features in our discord. But now I will give updates on what I have been up to in the past week. Let me know if you like this new format or how I should change it. This weeks might be a little bit longer though because of some important changes.

New client
I have been mostly working on rewriting the actual game in rust. The server has always been written in rust, but the client was written in Kotlin. Though the client works great, there are a few issues that are hard to solve with Kotlin. The biggest one has to due with security reasons, and the second one is performance. Because I want to release the game on android some day, the game should ideally also run smoothly on bad mobile devices. Luckily most of the code is on the server side, so rewriting the client isn't as big a task as it might sound like.


I knew for a while that I would have to rewrite the game because of these reasons, but I had a hard time choosing what language and framework I should use. One option was c/c++ with sdl, the benefit of this choice was that I could even release the game to consoles. And I also had some experience with making games in c++ with sdl. But I ended up choosing for rust with bevy. The biggest reason is that the server also uses rust and some parts of bevy. It generally is a good idea to have both the server and client written in the same programming language and framework.

Android version
I already got most of the important stuff working this week. You can log in, download the assets, see the world list, join worlds and even walk around in worlds. But most importantly, I added android support for the new client. The android version will be officially released whenever the alpha releases. But if you are interested in being a tester for this new android version, you can fill out this form.


Faster block rendering

Another change this new client is faster rendering. This is due to two reasons.

  1. In the previous version all blocks that you could see were updated every frame. But now they are only updated when a block next to it has been changed.
  2. In the previous version all the game logic was done first, and then everything was rendered. This was all done on a single thread. But in the new client all the logic is done on a few threads, while the previous frame is being rendered on other threads. This is a builtin feature of bevy, so that is another reason why I made that choice.

Future plans
I am planning to release the first build of this android version before the next pre-alpha release. But there are still a few important features missing. The goal is to make it playable in the first build, without the sandbox features. So you are not able to place blocks, break blocks, craft things or edit blocks. But you are able to chat, see other players and walk around in worlds.

Files

CrystalRealms-pre-alpha-1.7.1-windows.exe 67 MB
51 days ago
CrystalRealms-pre-alpha-1.7.1-linux.zip 68 MB
51 days ago

Get Crystal Realms

Leave a comment

Log in with itch.io to leave a comment.