I must say that recently, playing similar games always resulted in disappointment and frustration due to bugs. From Astroneer, No Man's Sky, Elite Dangerous, Conan ... they all start nice, but as the player choices branch out, and the save state swells, after a while it turns into an unplayable bug fest, each and every time. In last few years, the only games I could really enjoy thoroughly turned out to be single-player. It's almost as creating persistent, open-world, multiplayer creative games bug-free seems like an impossible task. What's your approach to this problem?
Being a solo dev could possibly give me an advantage here because I've been able to design the game with engineering feasibility in mind - compared to larger studios which can have a disconnect between product and engineering. In addition, a big source of bugs can be having a larger engineering team where each team member has a fragmented knowledge of the entire codebase - making a change to one part of the code and causing a bug in a different part.
I designed the game to hopefully be within my abilities to comprehensively test and ship - there are few players on 1 single-threaded server for a world, there's a limited way that they can interact with the world, and the planets are handmade with specific bounds. Nothing is infinite and I can easily test the limits of the game. I'm also not going to launch multiplayer until I'm certain that it's stable and I've hopefully solved every known bug.
With many of the bigger games, it's almost impossible to test all the different ways you can hit their limits, and they have tighter timelines where they launch with many known bugs. They may also apply a business mindset to it e.g. if it's a bug that only affects 0.1% of players, it won't affect revenue much regardless of how gamebreaking the bug is, and they may be willing to just let it be.
For soft shadows, I tried several different techniques but ended up settling on PCF because it has less visual artifacts than other methods. This site has it too: https://www.ogldev.org/www/tutorial42/tutorial42.html
TCP for everything for now with Nagle's algorithm disabled. Since the online aspect of this game is player-hosted servers for co-op with your friends (e.g. no PVP), it should be fine. I've heard even some MMOs like WoW used just TCP. In the future if I run into any problems, I can also easily replace it with a TCP-like UDP layer!
One of the advantages of making your own engine is making it specific to the game rather than general purpose - makes development easier and performance better. So it's not really sellable in its current state - that would require a ton of extra work, but another advantage is I can continue to reuse all the code and tools I've made for future games!
I must say that recently, playing similar games always resulted in disappointment and frustration due to bugs. From Astroneer, No Man's Sky, Elite Dangerous, Conan ... they all start nice, but as the player choices branch out, and the save state swells, after a while it turns into an unplayable bug fest, each and every time. In last few years, the only games I could really enjoy thoroughly turned out to be single-player. It's almost as creating persistent, open-world, multiplayer creative games bug-free seems like an impossible task. What's your approach to this problem?
Being a solo dev could possibly give me an advantage here because I've been able to design the game with engineering feasibility in mind - compared to larger studios which can have a disconnect between product and engineering. In addition, a big source of bugs can be having a larger engineering team where each team member has a fragmented knowledge of the entire codebase - making a change to one part of the code and causing a bug in a different part.
I designed the game to hopefully be within my abilities to comprehensively test and ship - there are few players on 1 single-threaded server for a world, there's a limited way that they can interact with the world, and the planets are handmade with specific bounds. Nothing is infinite and I can easily test the limits of the game. I'm also not going to launch multiplayer until I'm certain that it's stable and I've hopefully solved every known bug.
With many of the bigger games, it's almost impossible to test all the different ways you can hit their limits, and they have tighter timelines where they launch with many known bugs. They may also apply a business mindset to it e.g. if it's a bug that only affects 0.1% of players, it won't affect revenue much regardless of how gamebreaking the bug is, and they may be willing to just let it be.
What resources did you use to do the cascaded shadow mapping and soft shadows?
Cascaded shadow mapping: https://www.ogldev.org/www/tutorial49/tutorial49.html
For soft shadows, I tried several different techniques but ended up settling on PCF because it has less visual artifacts than other methods. This site has it too: https://www.ogldev.org/www/tutorial42/tutorial42.html
Do you use TCP for everything, and if so why not UDP?
TCP for everything for now with Nagle's algorithm disabled. Since the online aspect of this game is player-hosted servers for co-op with your friends (e.g. no PVP), it should be fine. I've heard even some MMOs like WoW used just TCP. In the future if I run into any problems, I can also easily replace it with a TCP-like UDP layer!
Now that you have made your own game engines-esque framework, do you plan on trying to deploy/sell that as well?
One of the advantages of making your own engine is making it specific to the game rather than general purpose - makes development easier and performance better. So it's not really sellable in its current state - that would require a ton of extra work, but another advantage is I can continue to reuse all the code and tools I've made for future games!