Can this work for Godot 4+ games with multiplayer and open world chunks?

Test chunks link: https://github.com/WithinAmnesia/ARPG/discussions/15
I'm trying to find a way to seamless load and unload chunks for a 2D multiplayer game project to make an open world with a working server using Godot 4.2.1.NET.
How can this work for multiplayer and what is needed for this to potentially work? What options can be used for chunk loading and unloading seamlessly in Godot 4.2.1.NET? Please give feedback.

This project was made in Godot 3, so it would need to be upgraded first. It doesn't use Godot's multiplayer system, but a custom one. There is a support for loading/unloading instances (rooms), but it's rather simple and easy to replicate.
IIRC the PDF explains the inner workings: https://github.com/KoBeWi/The-Soulhunter/blob/master/Paper/The Paper Eng.pdf

Here is an update since I last posted.
https://jonathaneeckhout.itch.io/jdungeon For the goal right now it is easy to play this but imagine it has seamless chunk loading and unloading. As instead of the black world boundary a new chunk loads in seamlessly. What are your suggestions and thoughts?
Update: https://github.com/WithinAmnesia/ARPG/tree/ARPG-Infinite-Worlds Here is the 128x128 with 32x32 pixel tile chunk to test.
My initial testing seems to feel even faster combat with the 128x128 chunk. This 128x128 chunk has the same amount of entities as the 256x256 chunk. For I moved all of the entities over into the 128x128 chunk. This 128x128 chunk is a good test for using the Infinite-Worlds using the BinarySerializer for Godot 4.2+ from Theraot: https://gist.github.com/theraot/31515e28e2d8bfea33f6c6d5bcd852f6 . There needs to be some testing how to make the chunks seamlessly load and unload.

I can't run the project, nor open it in the editor. Getting some error spam about tiles.
If you want seamless loading, if you make your chunk be size of the screen, you should be loading 3x3 grid of chunks, because when going between chunks, you will see multiple of them at once. As for unloading, in my project I had a timeout (I think 1 minute?). If no player was in the room for that time, it was unloaded. Though if the player is moving fast between chunks, the timeout could adjust dynamically to unload far chunks.

This project was made in Godot 3, so it would need to be upgraded first. It doesn't use Godot's multiplayer system, but a custom one. There is a support for loading/unloading instances (rooms), but it's rather simple and easy to replicate.
IIRC the PDF explains the inner workings: https://github.com/KoBeWi/The-Soulhunter/blob/master/Paper/The Paper Eng.pdf

Oh excellent. What are your thoughts and feeling and ideas for what should be done for seamless chunk loading and unloading now with this update and promising code from Theraot? I hope you can read this code better than I can Oh 1 sec.

I can't run the project, nor open it in the editor. Getting some error spam about tiles.
If you want seamless loading, if you make your chunk be size of the screen, you should be loading 3x3 grid of chunks, because when going between chunks, you will see multiple of them at once. As for unloading, in my project I had a timeout (I think 1 minute?). If no player was in the room for that time, it was unloaded. Though if the player is moving fast between chunks, the timeout could adjust dynamically to unload far chunks.

error spam?

https://github.com/KoBeWi/The-Soulhunter/assets/2223172/d9bbec1a-3f74-4068-aa40-af276d14dd7c
This, forever. (the tile errors begin a bit later)

powershell_zF6ApB7oHo.mp4
This, forever. (the tile errors begin a bit later)

Interesting. oh! https://github.com/jonathaneeckhout/jdungeon/tree/d941345fd187e51d7d51d24027838baae3ba4b78 this is the JDungeon main branch with the in sync version that the ARPG demo is based from its like 99% the same minus its 256x256 and the test is 128x128.

Did I corrupt the 128x128 version? hmmm

What Godot version exactly?

What Godot version exactly?

Godot 4.2.1.NET

Ok I managed to run it, but only the server (the client couldn't log in for some reason).
Looks like your chunks are very big (I mean compared to the screen size). Not sure how a 3x3 grid would behave, maybe a better option is loading chunks when a player gets close to the border. There is space for that.
Also for chunked maps I'd suggest creating some specialized editor, because editing them separately is going to be a hassle if they are supposed to link seamlessly.
So what do you expect from me exactly? I already described the state of this project. I can give some general advice, but I'm not a networking expert. I didn't make any multiplayer game since I abandoned the current Soulhunter.

https://github.com/WithinAmnesia/ARPG/discussions/15
How to start: Run 3-4 instances in the debug -> run multiple instances. Then run the first instance as Gateway. The second instance should run as Server. The third instance as Client. Make an account then log in. The fourth and more instances can be for client multi-boxing testing and work the same as the third instance.

Ok I managed to run it, but only the server (the client couldn't log in for some reason).
Looks like your chunks are very big (I mean compared to the screen size). Not sure how a 3x3 grid would behave, maybe a better option is loading chunks when a player gets close to the border. There is space for that.
Also for chunked maps I'd suggest creating some specialized editor, because editing them separately is going to be a hassle if they are supposed to link seamlessly.
So what do you expect from me exactly? I already described the state of this project. I can give some general advice, but I'm not a networking expert. I didn't make any multiplayer game since I abandoned the current Soulhunter.

Ok I managed to run it, but only the server (the client couldn't log in for some reason).
Looks like your chunks are very big (I mean compared to the screen size). Not sure how a 3x3 grid would behave, maybe a better option is loading chunks when a player gets close to the border. There is space for that.
Also for chunked maps I'd suggest creating some specialized editor, because editing them separately is going to be a hassle if they are supposed to link seamlessly.
So what do you expect from me exactly? I already described the state of this project. I can give some general advice, but I'm not a networking expert. I didn't make any multiplayer game since I abandoned the current Soulhunter.

Oh well I just need some advice and like thoughts and what should be pursued? this is a complex issue and I will make a lot of errors so like if any help and or guidance can be give n that would be great.
I just need need like testing and what to do next for I'm not really goo at this but if eel with the right people we can find the solutions together. Once we find what works then everyone can benefit too. So it is important for myself be open minded and like I just need some ideas and knowledge and like any suggestions help too. Its really hard to find propel who are good at this stuff so any advice would help. Any thoughts and questions and insight and like what would make sense to do next with this big puzzle would be so helpful. I'll try to find people who can help too where maybe it need s a community to solve? Any feedback is welcome.

I didn't look at the internals, but your gateway shouldn't be a Godot app, because it creates unnecessary overhead. Also perfectly the server shouldn't be a Godot instance either, or at least it should be as light as possible. In my project I couldn't work around that, but yours seem to be simpler though, because it doesn't really require physics. That's the advice I can give after seeing the demo.
That said, I don't really have time to provide any serious help. Seems like this is an open-source project? You'll need to find many people if you want to succeed, especially when you aren't experienced yourself, so good luck with that.

I didn't look at the internals, but your gateway shouldn't be a Godot app, because it creates unnecessary overhead. Also perfectly the server shouldn't be a Godot instance either, or at least it should be as light as possible. In my project I couldn't work around that, but yours seem to be simpler though, because it doesn't really require physics. That's the advice I can give after seeing the demo.
That said, I don't really have time to provide any serious help. Seems like this is an open-source project? You'll need to find many people if you want to succeed, especially when you aren't experienced yourself, so good luck with that.

Okay I am back again sorry for the long reply time..

https://github.com/KoBeWi/The-Soulhunter how do we get the game going? It is Godot 3.XX and the server .zip is in a strange website that won't allow the download?

The link was dead, I updated it.

Do you want to make this into Godot 4+? Your game could use a Godot 4+ update to work now? Godot is using 4+ now and its not backwards compatible. Yes there is so long term 3.XX support but 99/100 new projects are using Godot+ and the dev team is focusing on Godot 4+ and eventually wants everyone to use Godot 4+. I really hope so for there are very few really talented people like yourself.

Well as I said, the project is no longer developed, so I have no interest in updating it. The source is available if someone wants to upgrade it (there isn't much code to change).

What code needs to be updated to Godot 4 and what would that look like? What are you doing now?

How do you get past the hue part logging into the game? i go to make an account i have both the server and client.exe running and when I type in like username 'test' password 'test' set hue to default red it like stops after pressing enter? What should be done to get the game to work? I let it go past the windows firewall too so its a mystery

Did you run the database? You need to run database, then server, then start game, register account and login. I just tested and it still works.

What code needs to be updated to Godot 4 and what would that look like?

Run the project and fix all errors. Lots of stuff was renamed, so the methods need to be updated to new names etc.

What are you doing now?

My current main project is Voice of Flowers. I had big plans for The Soulhunter, but making a MMORPG is too much hassle. I might revise the project in a different form one day.

Did you run the database? You need to run database, then server, then start game, register account and login. I just tested and it still works.

What code needs to be updated to Godot 4 and what would that look like?

Run the project and fix all errors. Lots of stuff was renamed, so the methods need to be updated to new names etc.

What are you doing now?

My current main project is Voice of Flowers. I had big plans for The Soulhunter, but making a MMORPG is too much hassle. I might revise the project in a different form one day.

"Run run_database.bat (requires mongodb installed)" in 'how to run'. is the other one Polish? I worked on Polish tank history before lol.

Yep, when you run the bat file you should see this:

If you don't it means mongodb is not available in your PATH.

is the other one Polish?

Yes.

How do get the "mongodb installed"? Also I made the comment bigger above.

Yep, when you run the bat file you should see this:

If you don't it means mongodb is not available in your PATH.

is the other one Polish?

Yes.

run_database.bat uh is the command prompt? there is a technical way to do this. I ran .bat files before (my memory is fuzzy).

okay I need the mongodb hmm

https://www.mongodb.com/atlas/database mate you gotta buy mongodb like why use godot then? Hmmm I'll keep searching.

MongoDB Community Server is the free and open-source version of the NoSQL database system.
MongoDB Atlas is the paid and fully managed version of MongoDB that integrates natively with major cloud providers, including Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). hmmmmmm
https://www.cloudzero.com/blog/mongodb-pricing/ Amazon cloud i see a lot too for dedicated servers.

How do get the "mongodb installed"?

Download and install: https://www.mongodb.com/try/download/community

Do you have any plans to get the MMO stuff and running?

No, as I said, too much hassle. I spent a few months and it's lagging as hell. I didn't even solve basic problems. Adding content is a nightmare when you need to consider all the networking stuff and with MMOs you want the server to be fully authoritative.

How do get the "mongodb installed"?

Download and install: https://www.mongodb.com/try/download/community

Do you have any plans to get the MMO stuff and running?

No, as I said, too much hassle. I spent a few months developing it and it's lagging as hell. I didn't even solve basic problems. Adding content is a nightmare when you need to consider all the networking stuff and with MMOs you want the server to be fully authoritative.

The test chunk of the ARPG runs smooth?

idk, I wasn't able to start the client. Although "runs smooth" does not mean it runs correctly, as it might be missing server validation and thus make it possible to cheat.

"No, as I said, too much hassle. I spent a few months developing it and it's lagging as hell. I didn't even solve basic problems. Adding content is a nightmare when you need to consider all the networking stuff and with MMOs you want the server to be fully authoritative."
"No, as I said, too much hassle. I spent a few months developing it and it's lagging as hell. I didn't even solve basic problems." The basic problems are solved like combat, inventory, stats etc. on JDungeon and like combat works fast too? The content is somewhat easy to add as well.
"Adding content is a nightmare when you need to consider all the networking stuff and with MMOs you want the server to be fully authoritative."
The content is added quite easy compared like working on WoW de stuff from my memory. "with MMOs you want the server to be fully authoritative" what do you mean by this? Like where its secure or?

idk, I wasn't able to start the client. Although "runs smooth" does not mean it runs correctly, as it might be missing server validation and thus make it possible to cheat.

Oh okay ummm. Hmm so wait, other people it going on linux and not windows too. Did you open the client and run 3-4 instances?

https://youtu.be/RkikLTK98EQ?t=123 it looks like this ~2:00 mark

idk, I wasn't able to start the client. Although "runs smooth" does not mean it runs correctly, as it might be missing server validation and thus make it possible to cheat.

Ah okay so like security features you were thinking of too that's really forward thinking too.

When making any multiplayer game, the cheating potential depends on how much is determined by the client. E.g. in shooters you might trust the client a bit when it comes to character movement, so that less physics can be calculated on the server and the movement is smoother. But that allows player to use e.g. speed hacks, by modifying the movement speed in their client game. To fight that you can use cheat detection, anti-cheats etc., but I didn't even look into that. In my project I made the server fully authoritative, which means that in addition to adding game logic, I need to add a logic for syncing between server and client. This took a lot of time to even make it work, but it's very prone to lags, because the game can easily desync for various reasons, which leads to forced synchronization and character teleporting all over the place. I do have some system to make syncing easier, but it's still lots of manual work. Maybe it would be easier now that I have more experience with Godot, idk.
I managed to start JDungeon and it runs smoother than my game. Though when you see other players, their movement is weird.

Oh WoW has some security feature that are run on the server that scan for suspicious activity and are not like hard baked into the server structure they are like 'soft' like you say the shooters have but they run like on the server. As they scan of clients that are going too fast or they have invisible triggers in the sky that detect if a person is using fly hacks and also a good mod / GM team helps this so you can have best of both where the server is less stress and the cheaters get caught. It might take a while to catch the cheaters but once they are banned they are not cheating and also the community can report people too it just need good community mod / gms to catch them.
WoW private servers have good account security but the game is 'soft' like flying and speed hacking but in the game world there are server tools that can detect cheating and also just listening to player / community helps so you can have 'soft' security but still catch 99% of cheaters. Its like instead of making the house air tight so no vermin get in you just make the path ways in easy to trap and catch all the vermin and beef that system up instead of making an an airtight system you just do the fundamentals like good account security and good server fast speeds low client latency.
Also if there are cheaters just use the various community know ways to find and catch the bad actors and warn and ban them either with automatic speed detection. Or like put up some boundaries like in wow where the devs / gms have tools to detect and then punish the cheaters. Sometimes the game bugs and its good to give temporary bans than can be appealed but you need a decent community like turtle WoW for this system to all work together smoothly.
There are botters and anti-botters and there are cheaters and anti-cheaters in the community. The community if listened to and empowered can help solve the cheating issues and it can be surprisingly effective. In OSRS and private wow server the community can be reward for detecting and help removing bots and gold farmers and other things that are 'legal' in a technical point of view but break the game in usual ways socially.
This 'soft' anti-cheat can be very strong if supported and the server can just mostly focus on making the game play experience really good with some obvious security features too but like only ~1/20 if less of players even try to cheat so if you can like 2000k people only like 100 or less (maybe even like 10-50) will even try to cheat.
Even then most of them will do so in obvious ways and people can report them. then if you have a good support community just warn them, be fair, temporary ban a few times. Then if they are really bad just ban the IP and other soft ways the community knows about too. The community can help a lot with the security patrols too it just take some trust and good game worth supporting. Just make sure the account information is safe and you should be 4/5 the way there to really good positive community server experience.
"I managed to start JDungeon and it runs smoother than my game. Though when you see other players, their movement is weird."
yeah it looks a bit janky but it works good for latency but it can be 'smoothed out' with like latency compensators / little tricks but the core foundation is solid. I've seen other iterations run smoothly of JDungeon its just the web stuff is just done getting the solid networking speed achieved and combat is fast now so it should get smoothed out over time.
It has a really solid foundation though. It can run on anything and be logged into on the web it can multiplayer and have cross platform device and they ca all log into the same server all they need is to access the internet or even run from a computer its really approachable. Just tinker around with it and like it should help put some wind in your sails to help your multiplayer game projects too.
Thank you for all your thoughts and questions. Please feel free to ask more too. Can I ask you m ore question too? I'm working on so candidates for the Godot 4+ Multiplayer Seamless Chunk System. I am looking through these ~500+ Github Godot .zip projects and seeing candidates to start to build up from. So far I have a few good candidates for Seamless Chunk System.
https://github.com/DennisSmuda/godot-chunking-system [2D Chunk Generator]
https://github.com/dllta/ChunkLoader [2D Chunk System]
https://github.com/michasng/voxel_game/tree/main [3D Voxel Generator]
https://github.com/pinkavat/GroveGenChunks [3D Seamless Chunks]
So I will soon need some more testing too lol and all feedback is welcome.

Well the advantage of "hard" security is that it's fully automatic. For soft security like you described you'd need many moderators; even if community reports cheaters, someone needs to go through the reports.

I'm working on so candidates for the Godot 4+ Multiplayer Seamless Chunk System. I am looking through these ~500+ Github Godot .zip projects and seeing candidates to start to build up from.

Eh, if I needed a chunk system, I'd write my own. Looking through hundreds of solutions to find a fitting one doesn't sound much more efficient, especially when the repos provide basically 0 information about the system and you need to look into the code.

The automatic security is useful too its juts a balance of game performance and like what what really needs to be therefor security is all; every game has its own optimal balance.
The ~500+ github repos are just to make sure I cover all my bases for some of these don;t have good descriptions and all it takes is some organizing and like going through them. once they are covered I can be certain of what is there and also I can find other expected help too. It's not directly efficient but its a limit amount of difficult and once its covered I can move on and also I can meet people along the way too. So its good in more than just finding what I need for code but also for people and like most people don't really use the forums that much so its good to scout the community and be proactive.  So like its not super efficient for this task but it also makes sure I check every lead and do a thorough search which may save me a lot of time if I find a very talented and just good project. JDungeon too over a year to make and I had to search for 1 day of work to find it and if I did not I might have missed it you know? Its called JDungeon not like rpg or and easy to find name.
So it takes time and a lot of patience and focus but it does work its just not easy for sure to search download every GitHub repo in a search then organize and make there own folders and unzip and then run and then document and process and then make a grading system and then do everyone one the you get short list and it really helps to find talented people from there but its a lot of focused work for sure lol.

I am doing a from scratch build now for the multiplayer chunk system. What should I do for the server and the data and chunk storage?
https://github.com/WithinAmnesia/ARPG/discussions/16

I used Godot C# for the server and MongoDB for data storage. Not sure about chunks, if you want them to be persistent you should implement some custom binary serialization that only stores data you actually need stored.
There's also option to use Rust, which has Godot bindings too. But you have to learn the language first; I tried it and it wasn't for me .-.

Update: I am doing a from scratch build now for the multiplayer chunk system. What should I do for the server and the data and chunk storage?
I have a few leads and some more thoughts and resources can be found here:
https://github.com/WithinAmnesia/ARPG/discussions/16 <Start fresh thread.
https://github.com/WithinAmnesia/ARPG/discussions/15 <Previous start thread.
It was suggested I build a from scratch Multiplayer seamless chunk system that eventually be put together where it can handle 2K-16K+ players on the same server. What should be done for a web deployment to also run on a browser? I was suggested to try and do a chunk storage system similar to Minecraft or Terraria where each chunk is stored individually and accessed by the server in communication with the player clients. What should be done to solve this chunk puzzle? All feedback is welcome.

I used Godot C# for the server and MongoDB for data storage. Not sure about chunks, if you want them to be persistent you should implement some custom binary serialization that only stores data you actually need stored.
There's also option to use Rust, which has Godot bindings too. But you have to learn the language first; I tried it and it wasn't for me .-.

I have been on the hunt for solutions to learn form to make a ground up solution and so far I have found some promising leads for data and chunk storage for multiplayer in Godot 4.2.1.NET "Leads and Suggestions:
https://github.com/Solicey/minecraft-made-with-godot/issues/1 (Multiplayer Minecraft clone written in C# with Godot 4.2.1.NET)
...
https://github.com/xellu/xelcraft/issues/6 (Multiplayer Planned Minecraft clone written in C# with Godot 4.2.1.NET)
...
https://github.com/hakanero/minecraft-clone/issues/1 (Minecraft clone written in C# and GDscript with Godot 4.2.1.NET)
...
https://github.com/pvini07BR/mijocraft/issues/2 (GDScript Multiplayer Minecraft in Godot 3.XX)
...
https://github.com/fanherbaty/crustycraft/issues/1 (2D Minecraft with cave levels in Godot 4.2.1.NET+)
...
https://www.youtube.com/watch?v=LEZGrHyWNmQ + https://astruggletosurvivedevblog.blogspot.com/ (C# software engineer seamless large tile / chunk map that can possibly do multiplayer and browser support game)
...
https://github.com/sirarandor/lux-terra/issues/1 (Multiplayer expanding tile / chunk game with fog of war)
...
https://github.com/danilwhale/mc2d/issues/1 (2D sidescrolling Minecraft with inventory and crafting)
...
https://www.reddit.com/r/godot/comments/y955vs/i_made_an_opensource_minecraft_classiccompatible/ (Minecraft classic running on Godot written in rust)"
Also data binary serialization lead:
" https://gist.github.com/theraot/31515e28e2d8bfea33f6c6d5bcd852f6 (BinarySerializer for Godot 4.2+ from Theraot)"
What are your thoughts and suggestions? What should I do next? All feedback is welcome.

What should be done for a web deployment to also run on a browser?

Well running stuff on a server is not much different from running it locally, just instead of localhost you use its IP to connect. Though you first need to setup your environment on the server, that means uploading your server app and starting it, and servers are usually Linux with no graphic interface (I mean, you are supposed to do it remotely, so using terminal is usually the only way).

What should be done for a web deployment to also run on a browser?

Well running stuff on a server is not much different from running it locally, just instead of localhost you use its IP to connect. Though you first need to setup your environment on the server, that means uploading your server app and starting it, and servers are usually Linux with no graphic interface (I mean, you are supposed to do it remotely, so using terminal is usually the only way).
As for hosting itself, you need a hosting service. I used Google Cloud in the past and it was fine, but of course it's not entirely free (last time I tried it had a 1-year trial version or something; though the cost depends on how many resources you need). There's also an option for self-hosting, but for that you need to setup your own server, give it an external IP address and keep it running.

"What server and data suggestion should I consider too? Amazing Web Service is what JDungeon is hosted on but there are other options. It is recommended I use a fast langue like C# for server data and also GDscript can be converted to C# relatively reasonably the community says too so they get along it seems. I am trying to future proof this as much as I can to make solutions that can grow into big games.
https://www.youtube.com/watch?v=It9D08W8Z7o These big mass produced 100+ CPU miniaturized server rooms that fit in a PC are coming to consumer market in the mid to late 2020's and will be everywhere by the early 2030's as the next big computer upgrade. So I want to build that 2030's M.M.O. infrastructure today over ~2-6 years and be ready for it and aim for up to 2K to 16K+ clients on one server to try my best shot at 10,000 player battles. What are your thoughts and suggestions? What have you considered for server options in the past and going forward? All feedback is welcome." From: https://github.com/pvini07BR/mijocraft/issues/2#issuecomment-1953268020 I asked this over here but I feel like I should ask it to you as well for you seem to really have a lot of good information and deep knowledge and understanding on what would be a really good to host servers.
"Well running stuff on a server is not much different from running it locally, just instead of localhost you use its IP to connect. Though you first need to setup your environment on the server, that means uploading your server app and starting it, and servers are usually Linux with no graphic interface (I mean, you are supposed to do it remotely, so using terminal is usually the only way)." Is this how JDungeon did this but on Amazon Web Service a.k.a. AWS for ~$5-9 USD a month: https://jonathaneeckhout.itch.io/jdungeon + https://github.com/WithinAmnesia/ARPG/discussions/15
"As for hosting itself, you need a hosting service. I used Google Cloud in the past and it was fine, but of course it's not entirely free (last time I tried it had a 1-year trial version or something; though the cost depends on how many resources you need). There's also an option for self-hosting, but for that you need to setup your own server, give it an external IP address and keep it running."
that is really good to hear that you have real world proven skill set and you used another service than Amazon as a reference. I asked in the past with JDungeon people about how hosting on your own PC would world and they said be careful for it s not 100% safe just takes extra time to get into so they recommended using a webserver you can wipe and make a clone of if it gets hacked and keeping all of your personal and dev stuff on separate computer / non-public networks to keep ot all safe. What are your thoughts and suggestions and or feelings on all of this web and server and security area? you seem to aha e lot of knowledge on this and alolt of 1st person experience and proven skillset too.

Well I don't have that much knowledge. I just tried different stuff, but never really succeeded in the networking stuff. I did try Amazon too, but with poor results. Google Cloud was just easier to use for me. Self-hosting isn't really unsafe, granted, you should do it on an external machine, not your personal computer. Like you can have a separate PC for a server, or a Raspberry PI or whatever. Servers need good CPU and RAM, but they don't need GPU, so it's a different kind of hardware.
Also I'm not sure about using C# for a server. I've seen many people complaining about garbage collector when using C# for games, I assume it's not very scalable. Something like C++ or Rust would be better for performance, but it's more difficult to write.

Well I don't have that much knowledge. I just tried different stuff, but never really succeeded in the networking stuff. I did try Amazon too, but with poor results. Google Cloud was just easier to use for me. Self-hosting isn't really unsafe, granted, you should do it on an external machine, not your personal computer. Like you can have a separate PC for a server, or a Raspberry PI or whatever. Servers need good CPU and RAM, but they don't need GPU, so it's a different kind of hardware.
Also I'm not sure about using C# for a server. I've seen many people complaining about garbage collector when using C# for games, I assume it's not very scalable. Something like C++ or Rust would be better for performance, but it's more difficult to write.

Well networking is hard but hey the community is getting more and more networking solutions and this is big one and its open source so once its solved everyone cane have it forever free. What was the issue with amazon? I winder why JDungeon used it strange? Maybe Google cloud is better too?
So self hosting you think is a pretty good option? I have access to a few computer I don't use and I have Starlink internet with 19-21 ms of latency and in theory unlimited bandwidth and I live a very unpopulated area so I;m not crowded for laser signal / I have a lot of internet capabilities where I am. So hopefully that can go well for self-hosting?
What do you mean by C# garbage collector, it rings a bell but i can't recall what one lol. Is 'C# garbage collector' a term or a slang or a specific thing is it like artifacts or strange like '2y271y782323r' files all over the place?
I wonder how scalable C# is for server hosting and multiplayer? I heard that GDscript is slow and C# is fast and I heard that C++ is good for servers and most servers run on Linux and I also heard C# for server side stuff done separately so I'm still wondering myself what best to do? I have seen rust on Godot there is a Minecraft multiplayer example that is written in Rust (in my links) but I'm not sure how compatible Rust is with GDscript and I see a lot of GDscript and C# getting along so maybbbeee C# server or C++ for C# I think gets along with C++ well and I hear that GDscript share a lot in common with C# so maybe they get along and like maybe the server is written most in C# or C++ and maybe the client has C# and some GDscript or something? I download hundreds of projects for Godot and lots had GDscript and C# and very few had like other coding languages I did see like C++ and Rust though too but it was more multiplayer and really uncommon but a lot of high performance multiplayer demos had more of the C# and C++ and Rust going on it feel like from memory so you probably have a good point there lol.
Also https://github.com/Zylann/godot_voxel/issues/602 (Main Godot Voxel Game with multiplayer options and written in various languages with GDscript and C++ and C#)
https://github.com/Zylann/voxelgame
I tested this out and the multiplayer works really good but it does not save but its really good to know this exists.
The 2D Minecraft says it has seamless multiplayer chunk storage read and write with the server and client working together that already works but the save to disk / harddrive feature is not implemented / finalized but it should work the owner says. I made a thread / issue for this in hopes to get this feature some play to start. What are your experiences with save systems? What should be done to get this to work you figure? What are your suggestions? Any feedback is welcome.
There are not a lot of other options and its probably work the time to just improve this learn for it and try to use the same style of chunk storage and data management for multiplayer moving forward. It would probably be wise to get familiarized with a working Godot engine system and for to improve the same multiplayer data chunk puzzle solving from a from scratch project and custom tailor the solutions to better fit a top down 2D multiplayer seamless chunk system. What are your thoughts on this? Anything that you feel could be done or like obvious to do? What should be done to start?

Maybe Google cloud is better too?

It's not like it's better, I just found it more intuitive to setup and use. Amazon is probably as capable, but I found the interface more obscure. Maybe it has changed.

So hopefully that can go well for self-hosting?

Note that for self-hosting at one point you'll need a cluster of computers. There is a limit for how much one machine can handle, especially a home PC that isn't made to be a server. Also it uses power, so hosting a server will increase your electricity bills.

What do you mean by C# garbage collector

When an object in C# is unused, the language runs a special mechanism to cleanup unused references. The problem is that they are not really tracked, so garbage collector has to find them, determine that they are unused and remove them. This causes periodic stalling while the app is running. Although there are ways to avoid that, maybe it's viable for the server. C++ or Rust don't have this problem, because they put the memory management on user (which in C++ can lead to memory leaks if you don't know what you are doing).

I'm not sure how compatible Rust is with GDscript

If it's GDExtension you shouldn't have problems with compatibility.

What are your experiences with save systems? What should be done to get this to work you figure? What are your suggestions?

The most difficult part of a save system is determining what to save. After you gather your data (e.g. in a Dictionary or Array), just do var_to_bytes() and save it. There is a WIP system for Godot that's supposed to help that: https://github.com/godotengine/godot/pull/79644

Okay that's good to heard about the self hosting the capabilities of the cloud services. Thank you or teaching about how the C# garbage collector works and also the advantage of C++ and Rust. I wonder if 'Tuesday server reboots' like in wow help with clearing garbage or help get the memory or other long running little details things refreshed? that's good to heard that Rust and GDscript can get along more or less.
The big one is saving the multiplayer chunk data now. I have a handful of seamless chunk systems but they dont save the multiplayer data.
So far I tested and found some multiplayer seamless chunk system example leads for Godot with:
Leads and Suggestions:
https://github.com/Zylann/godot_voxel/issues/602 (Main Godot Voxel Game with multiplayer options and written in various languages with GDscript and C++ and C#)
https://github.com/Zylann/voxelgame
...
https://github.com/pvini07BR/mijocraft/issues/2 (GDScript Multiplayer Minecraft in Godot 3.XX)
https://github.com/pvini07BR/mijocraft/issues/3
https://github.com/pvini07BR/mijocraft/issues/4
...
https://github.com/Solicey/minecraft-made-with-godot/issues/1 (Multiplayer Minecraft clone written in C# with Godot 4.2.1.NET)
...
https://www.reddit.com/r/godot/comments/y955vs/i_made_an_opensource_minecraft_classiccompatible/ (Minecraft classic running on Godot written in Rust and 3.XX)
https://gitlab.com/tpart/classy
https://gitlab.com/tpart/godotcraft-classic
https://gitlab.com/nokoe/classicl-server
...
Yet they don't save the data for multiplayer.

The Zylann is the most impressive with working multiplayer but it has no save feature.
The Pvini07BR has really promising with a buggy multiplayer and promising chunk data and logic for 2D but it as no working save feature yet but prototypes and little wips / incomplete features.
The Solicey one has multiplayer supposedly but I have not been able to test it properly and no save feature here either.
The Tpart one I have yet to even get the multiplayer server to load up I tested the menu and I got a server running with Rust from administrator command prompt but the client refuses to connect to it after hours of testing various methods.

I have yet to get your example working I get stuck in the character creation part with the hue selector. I am not sure what to do to get it working for a proper test? I would like to test it for sure its just I am not sure how to get it working?
I have some more leads I got o process like I got to get Zylann's voxel Godot 3.XX mono / .NET editor module and test a bunch of voxel / minecraft demos from github repos I could not start in 4.XX.NET. I have like ~100+ Godot voxel projects I have o look through to see if any have multiplayer and save features but like I already found the best ones with other searches so its unlikely but its an exhaustive search. I just need multiplayer seamless chunk system that can save the chunk data and work with the multiplayer server like how Minecraft does it but for Godot this time. I should learn the high like multiplayer API saving more it looks very promising. There is a little prototype demo here too: https://github.com/godotengine/godot-demo-projects/pull/935

I have yet to get your example working I get stuck in the character creation part with the hue selector. I am not sure what to do to get it working for a proper test? I would like to test it for sure its just I am not sure how to get it working?

idk if this helps
https://github.com/KoBeWi/The-Soulhunter/assets/2223172/0de6d111-af56-4247-a222-25acbba75bf3
As for saving chunks, you need to obtain the chunk data somehow (likely a PackedByteArray) and save it like I mentioned above.

I have yet to get your example working I get stuck in the character creation part with the hue selector. I am not sure what to do to get it working for a proper test? I would like to test it for sure its just I am not sure how to get it working?

idk if this helps
https://github.com/KoBeWi/The-Soulhunter/assets/2223172/0de6d111-af56-4247-a222-25acbba75bf3
As for saving chunks, you need to obtain the chunk data somehow (likely a PackedByteArray) and save it like I mentioned above.

How do we get teh database to work?
I installed MongoDB with command prompt I followed this:
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-windows-unattended/#std-label-install-mdb-community-windows-msiexec
Yet when I open administrator command prompt and try to run this from desktop to make sure the path works("C:\Users\Matt\Desktop\TheSoulhunter>run_database.bat" it gives: "C:\Users\Matt\Desktop\TheSoulhunter>mkdir .database
A subdirectory or file .database already exists.
C:\Users\Matt\Desktop\TheSoulhunter>mongod --dbpath "..database"
'mongod' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Matt\Desktop\TheSoulhunter>" what should be done?

Find mongod.exe in the installation directory and add the folder with the exe to PATH: https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/
E.g. if mongod is in C:/ProgramFiles/MongoDB/bin, add this whole path to your PATH.

Oh excellent I got it to work. I did not do the path thing and I hunkered down and got MongoDB to work properly. Thank you for helping too.

Your game has a save feature correct?

The server dies with 2 people connected? I did some multi-boxing tests and the server dies with 2 clients? Hmm.

It supports more clients, no idea why it would die.

the multiplayer save feature works. Thats a first seeing a working multiplayer save feature that in these Godot examples.

It supports more clients, no idea why it would die.

I'm not sure either for this is a crash I seen with as well https://github.com/pvini07BR/mijocraft/issues/2 (GDScript Multiplayer Minecraft in Godot 3.XX)
https://github.com/pvini07BR/mijocraft/issues/3
https://github.com/pvini07BR/mijocraft/issues/4

the multiplayer save feature works

That's thanks to database. Also the save data is very simple, the world is not persistent. Maps load anew every time you enter one, only chests are affected by save data.

1 client runs fine but as soon as the client client logs in it crashes and the 1st client cant see the 2nd client but the 2nd client can see the 1st client only briefly before the game or server crashes. The only working complex games to do working multiple clients so far are https://github.com/Zylann/godot_voxel/issues/602 (Main Godot Voxel Game with multiplayer options and written in various languages with GDscript and C++ and C#)
https://github.com/Zylann/voxelgame and JDungeon with https://jonathaneeckhout.itch.io/jdungeon +  https://github.com/WithinAmnesia/ARPG/tree/ARPG-Infinite-Worlds

the multiplayer save feature works

That's thanks to database. Also the save data is very simple, the world is not persistent. Maps load anew every time you enter one, only chests are affected by save data.

How can chunk data be saved like this?

So how can the working multiplayer save system be used these kind of leading test candidates?
https://github.com/Zylann/godot_voxel/issues/602 (Main Godot Voxel Game with multiplayer options and written in various languages with GDscript and C++ and C#)
https://github.com/Zylann/voxelgame
...
https://github.com/pvini07BR/mijocraft/issues/2 (GDScript Multiplayer Minecraft in Godot 3.XX)
https://github.com/pvini07BR/mijocraft/issues/3
https://github.com/pvini07BR/mijocraft/issues/4

How can chunk data be saved like this?

Well the same I guess, but you need to serialize it. Not sure if MongoDB supports binary data though and saving it as String would be inefficient. Also the way you serialize data depends on the system and its data, but ultimately you should get some String or byte array that represents your world.
In your case chunk data and player data are separate (my game only stores player data). Which means you need separate table to store data of each chunk and save it periodically.

"In your case chunk data and player data are separate (my game only stores player data). Which means you need separate table to store data of each chunk and save it periodically."
2D chunk array?
Hey can you look at this chunk data for:
https://github.com/Zylann/voxelgame (requires https://github.com/Zylann/godot_voxel Godot editor)
https://github.com/pvini07BR/mijocraft
What methods should be considered to save / quantify the chunk data given by these two examples? Are they similar or like what your first looks? I am not sure what to exactly look for and you have proven skills for multiplayer saving.
Or what should I do to help do this too? What should I look for and how do I recognize what to spot and think about with these 2 example for data storage so it can hook up to your multiplayer save system and hopefully use something like https://gist.github.com/theraot/31515e28e2d8bfea33f6c6d5bcd852f6 (BinarySerializer for Godot 4.2+ from Theraot) I fuzzily remember spotting another binary serializer maybe for one of those minecraft servers too in the comment section some where.

I don't know these systems enough to tell how to save their data. But

"But as I can remember by far, the chunk system works like this: the chunk is actually a Custom Resource. It stores all the block IDs in a array, you can do it in a 2D array if you prefer. It's an array of integers basically, with the number 0 representing air block.

In this case the Array would be the data you save I guess. So just do var_to_bytes(chunks.array) or something like that and then store the resulting binary blob in a file/database. If it's indeed Array, you might want to convert it to PackedInt64Array, I think it's more efficient to store.

I found a lead for saving with the voxel game: https://github.com/Zylann/voxelgame/issues/85

https://github.com/Zylann/voxelgame/issues/85#issuecomment-864661177
"This relates to VoxelStream, which is a part of the voxel engine that remains to be documented.
Currently in the blocky_game, the terrain is continuously streamed block by block (where "block" is a 16x16x16 chunk) and saved to files under a folder. Currently it uses VoxelStreamRegionFiles so the format is similar to Minecraft: a bunch of region files, where each contains a bunch of blocks. The path to this directory is set in the editor, but could be set at runtime if necessary (as long as it's done before the scene runs).
Depending on the settings, blocks get saved:
Straight after being generated, if save_generator_output is enabled on the stream
They get out of range and had changes
VoxelTerrain.save_modified_blocks() is called, typically used before quitting the game

To reset a save, deleting the contents of the folder or changing the path to another folder will make it go back from scratch."

https://github.com/Zylann/voxelgame/issues/85#issuecomment-1955145256 I made an inquiry about how to save on the big game complex Voxelgame. If this can be saved to harddrive folder and have the saved chunk data be loaded up with server with the multiplayer features working with multiplayer clients then we are have so much opportunity to learn and grow and reverse engineering an tinker. I think this can solve 2D and 2.5D and 3D massive multiplayer worlds static and dynamic. This is promising.

I don't know these systems enough to tell how to save their data. But

"But as I can remember by far, the chunk system works like this: the chunk is actually a Custom Resource. It stores all the block IDs in a array, you can do it in a 2D array if you prefer. It's an array of integers basically, with the number 0 representing air block.

In this case the Array would be the data you save I guess. So just do var_to_bytes(chunks.array) or something like that and then store the resulting binary blob in a file/database. If it's indeed Array, you might want to convert it to PackedInt64Array, I think it's more efficient to store.

https://github.com/Zylann/voxelgame/issues/100
I found a lead the multiplayer does save to disc it is just now a question of how to properly save and load and access this data for the player.

https://github.com/Zylann/voxelgame/issues/100#issuecomment-1955780686 We figured it out! Now its phase 3 with trying to convert the working multiplayer dynamic seamless chunk system to top down 2D. We are onto the next puzzle to solve now: https://github.com/Zylann/voxelgame/issues/101

Requirements: A hand made and dynamic main over world map 100 areas combined with 1,024 x 1,024 tile map for an at least tile map size of 104,857,600 tiles with 16 x 16 pixel tiles at least. Perhaps double that with subterranean and interiors included to the total amount of tiles for a multiplayer seamless chunk system. The intended client / player / population / server size is to be ~2K to ~16K+ clients on one server. How can we convert the Blockygame multiplayer seamless chunk system for this forever free open source forever free goal?
My first thoughts are to get just to the basics and start from a stripped down 2D array. Yet I have to do this properly to keep the dynamic multiplayer seamless chunk system intact and future proof for 2.5D and 3D games; when they are ready to be made in subsequent order. I must seek guidance to do this properly and make a beautiful work for the community to be empowered with too for making massive multiplayer games. I call this whole open source forever free community dynamic multiplayer seamless chunk system Infinite Worlds.

Important question: is your chunks supposed to be modifiable or will they stay mostly intact? If the players have no way to modify chunks, but only do some basic interactions (like idk, kill monsters, open doors etc.), you don't need to keep everything in database. You could even use Godot scenes and simply load them as needed.

Important question: is your chunks supposed to be modifiable or will they stay mostly intact? If the players have no way to modify chunks, but only do some basic interactions (like idk, kill monsters, open doors etc.), you don't need to keep everything in database. You could even use Godot scenes and simply load them as needed.

Dynamic. It will be dynamic but by design more stable so it has aspects of a static M.M.O.R.P.G. as World of Warcraft or Old School RuneScape but it will be able to change the chunks and save to the server chunk data even if it s like Wurm where the world is technically dynamic but it is very slow to do so in that the world stays close to creation but can be changed but hopefully not like Wurm where its creepy and more like WoW and OSRS where people play them but technically its like Minecraft with just more traditional western video game design values (so the world is not massacred like in 2B2T but looks and acts intact but these are design choices and not engine capabilities. You can take Minecraft and make all the tools weak and the blocks strong and you end up with this more or less with just some design tweaks. The engine needs to work first though as a fondation for all this though lol. Also I have a mostly handmade world with some procedural generation for helping in larger areas / get it to simulate earths natural terraforming / planet systems for more immersion / connection to real life experiences / world immersion / good for the natural human experience and it feels like another version of real life but with magic and spiritual stuff and cool stuff added so its the best of a bunch of things all put together as one.
What are your thoughts and suggestions? What should be done for this 2D Blockygame system conversion so we get this general use multiplayer dynamic open-world seamless chunk system in Godot 4.2.1.NET? All feedback is welcome.

Well I don't get one thing. You keep bringing Minecraft and voxels and stuff, but the game is supposed to be 2D. Do you have some early screenshot of how it would even look? Mockups? Maybe videos?

The data and the chunk system from the multiplayer Minecraft system are really the key. The voxels can be 2D technically its just the data storage and management for multiplayer which is the key. how they are rendered is more client side and its still important but everything relies on the chunk system working in multiplayer. I have some rough rafts yes but its more like I made a bunch of pathfinding prototypes. A lot of my work can be found here but its not the same format but a general idea. https://www.deviantart.com/withinamnesia/gallery/all + https://www.deviantart.com/withinamnesia/gallery/64014697/agabal-r-p-g-project + https://www.deviantart.com/withinamnesia/art/Mage-Afar-Province-Approximate-Rainfall-Range-896982600 + https://www.deviantart.com/withinamnesia/art/AGABAL-World-Map-The-Burning-Emerald-with-Earth-896834630

I just got the Godot_Voxel with BlockyGame to generate a flat world for testing in multiplayer: https://github.com/WithinAmnesia/ARPG/discussions/16#discussioncomment-8550111 The code for the flat world generator makes ~3 layers of grass (instead of just 1) and it might be a bit buggy but it works although I should have a simpler one like fill all with grass for example but I was not sure how to code that so i just made iterations and slowly got it to work for multiplayer). Each chunk is 16x16x16 blocks so I have to optimize that into 2D better. It works, it's just now I'm trying to figure out how to make it 2D and not 3D but its progress. I'm not sure how to start the 2D. There are some examples of minecraft in 2D with 2D arrays but I'm not sure how to get the 2D mode going and how to keep the chunk system together. It took a while to get the blocks to be flat and the code was a case of trial and error switching things on and off and adjusting values testing in multiplayer.
I am trying to not be bound to the special Godot_Voxel engine module / the special Godot Voxel engine so this solution can be used in regular Godot Engine 4.2.1.NET+ editors.
The big thing now is trying to get the 3D chunks into 2D chunks and then test in Compatibility mode. I have some examples that might help for a start but I'm not sure its super amazing at everything but they might help a bit to get a foothold of what to do next:
https://github.com/pvini07BR/mijocraft/issues/2 (2D GDScript Multiplayer Minecraft in Godot 3.XX)
https://github.com/pvini07BR/mijocraft/issues/3
https://github.com/pvini07BR/mijocraft/issues/4
...
https://github.com/sirarandor/lux-terra/issues/1 (2D Multiplayer expanding tile / chunk game with fog of war)
...
https://github.com/KoBeWi/The-Soulhunter/issues/2 (2D Godot 3.XX multiplayer chunk game)[Your game project]
...
https://github.com/fanherbaty/crustycraft/issues/1 (2D Minecraft with cave levels in Godot 4.2.1.NET+)
What should the next step go? What are your thoughts and suggestions? Should I just keep tinkering away with the 4 2D multiplayer godot game demos and keep trying new things until something works with the 2D port of the multiplayer chunk system with Godot_Voxel? All feedback is welcome.

https://github.com/Zylann/voxelgame/issues/101#issuecomment-1958792464 Big 2D/3D hybrid progress update!

https://github.com/Zylann/voxelgame/issues/103 How can entities and player storage work for this demo? Are there any examples or prototypes?
Goal: Minecraft style entity and player storage system. Bonus account system.
How can entities and storage system like chests stored in chunk data like minecraft? Bonus for account linked storage like M.M.O. player inventory and banks / minecraft player account inventory with shulker boxes.

Do you have any free time to look at the code for this RPG Inventory from scratch tutorial and see how it can be translated / implemented with the Blockygame multiplayer demonstration? What should be done? What are your thoughts and suggestions? All feedback is welcome.
https://github.com/devloglogan/MultiplayerFPSTutorial/issues/13
https://github.com/WithinAmnesia/ARPG/blob/ARPG-Infinite-Worlds/DevLogLogan RPG Inventory.zip
Here is the Blockygame demo too it needs the Godot_Voxel module to work: https://github.com/WithinAmnesia/ARPG/blob/ARPG-Infinite-Worlds/Infinite_Worlds_V.000.006.1.zip

I don't really have time to look into it, but inventory systems are not that complicated. For multiplayer it would be more or less the same, but when you do some actions on the items (rearrange, use, drop etc.), you also send this information to the server and server validates that action. When you open inventory, it needs to pull data from the server. If the action you performed is invalid, it should also force updating the inventory to server state.

Authority control for the server is that right or however it is said? I wonder if there are any working examples to learn from to see how to code this in Godot 4? What should be done and what is the proper way to do this?

Well my game has some basic inventory, but you can only pick and equip items.

 So I got a teleporting mystery thing going on with Godot 4+ multiplayer and I remember I think you solved this multiplayer travel thing I think already?
https://godotforums.org/d/40502-how-to-teleport-travel-to-another-scene-with-godot-4-multiplayer/10
So I remembered testing / tinkering with The Soulhunter MMORPG 2D Godot 3 demo and it has working scene to scene travel I think right / correct?
Are you familiar with JDungeon? https://github.com/jonathaneeckhout/jdungeon + https://godotforums.org/d/40502-how-to-teleport-travel-to-another-scene-with-godot-4-multiplayer
I am trying / working on getting a Community Godot 4+ M.M.O.R.P.G. working with documentation. The JDungeon demo is like ~9/10 close to fully working enough for a public demo made with documentation to help people learn how to make MMORPGs in Godot 4+; even if it is a smaller scale game it still helps. 2D is great to get started with for the asset creation and available CC0 2D art is ~8-10+ more easy to get / abundant than CC0 / public domain 3D assets of decent quality.
Anyway I found a big part where myself and lots of devs are stuck with not being able to get scene to scene multiplayer map travel working. That JDungeon Godot forum post has screenshots that show the JDungeon portals but they do not work for scene to scene travel. What should be done to help solve this community wide mystery for Godot 4+ multiplayer scene to scene travel? This is like the one big feature needed across many many Godot 4+ community demos and if this can be made possible and available to the community so many cool games can be made with the community.
How are you doing also? It's been a while; I hope things have been going well and you have been doing more cool stuff. I forgot how busy things can get too. I hope you are doing well.
Anything I can help with / any links / demos / tutorials too? Is there a way to get your Godot 3 MMORPG ported to Godot 4+ and also reverse engineer the travel mechanics to help JDungeon and like 20+ / a class of Godot devs all stuck on this zone to zone multiplayer travel feature? It's a big mystery for the community. Bit by bit eventually things can always get better.

I'm not familiar with Godot's built-in multiplayer feature. I think it requires all players to be in the same scene. So if you want players in different scenes, you need to load all of them and separate with viewports (that's more or less how The Soulhunter works).

I'm not familiar with Godot's built-in multiplayer feature. I think it requires all players to be in the same scene. So if you want players in different scenes, you need to load all of them and separate with viewports (that's more or less how The Soulhunter works).

I think I heard of that before. I wish I knew more about this. Is Soulhunter not complete Godot multiplayer (my memory is fuzzy) hmm I've heard of this before the view port thing.
Today with the discord of: https://www.youtube.com/watch?v=lnFN6YabFKg&list=PLZ-54sd-DMAKU8Neo5KsVmq8KtoDkfi4s This person said called SlayHorizon said:
"...In my 2D MMO prototype, where you reach certain areas (checked by server aswell) such as a door to enter in a house for example, the server will make the player unload the current scene and wont receive any more RPC call from this scene then it will ask it to load a specific scene and it will make him sync with all the entities from this instance once the scene is ready.
To be able to handle multiple instances in the same server, I use viewport to simulate different  "world physisc" as in my game there are server-side physics calculations and checks.
Or maybe if you got one big map, you might be more interested in an interest management system where you could only see part of map around you and receive only RPC calls from entities around you. Or even both, that's what I'am trying to do before open sourcing it but the code is very dirty."
Also on the Godot forum there was a 3D thing but it was different but similar.
It's not easy to keep track of this but I'm wondering how to do this in Godot.
Also I wish I knew how to properly do this from kuligs2
"Not sure about where to find the warp thing but like I mentioned it earlier, you just need to unload scene and load the next one.. Set up a area3D to sniff for when someone enters it, then connect that signal that gets emmitted when somebody enters it to a function that unloads and loads next scene. Experiment and you will find out how to do it .🙂
Check out my own conclusion here https://godotforums.org/d/40012-synchronizing-multiplayer-3d-cameras-and-items-fail/5 "
https://godotforums.org/d/40502-how-to-teleport-travel-to-another-scene-with-godot-4-multiplayer/6
"I think it requires all players to be in the same scene. So if you want players in different scenes, you need to load all of them and separate with viewports."
+
"...Just need to unload scene and load the next one.. Set up a area3D to sniff for when someone enters it, then connect that signal that gets emmitted when somebody enters it to a function that unloads and loads next scene."
+
"The server will make the player unload the current scene and wont receive any more RPC call from this scene then it will ask it to load a specific scene and it will make him sync with all the entities from this instance once the scene is ready.
To be able to handle multiple instances in the same server, I use viewport to simulate different  "world physisc" as in my game there are server-side physics calculations and checks.
Or maybe if you got one big map, you might be more interested in an interest management system where you could only see part of map around you and receive only RPC calls from entities around you. Or even both..."
I'm starting to see a common thread here with loading and unloading and viewports and RPC and server communication. I wish I could see this in action to learn and tinker with working examples.
Does The Soulhunter have a similar thing going on or as in what should be done to get these things to work for ~same scene / separate view port / load and unload scenes / chunks / tiles and sync and instances etc all described above? If one working Godot 4+ multiplayer demo can do this in MIT forever free it can free the community and great games can be made. What should I look at / how should be made to work? Its a big mystery and I think with decent work / community help it can be solved and help many people and grow the community.

The Soulhunter uses a completely custom multiplayer implementation, it doesn't use the one provided by Godot. The server has multiple Viewport nodes, where each viewport is a separate room, but on client-side the players only load the room they are in. The server tells the client which room it should load.

Hmm is Godot multiplayer kinda bad? It looks like it was easier for you to make something form scratch avoid Godot and make what you needed. I have experienced many bad / incomplete examples with Godot multiplayer. is it better to just do what you did and risk the weird not Godot systems complications or can something like what you did be made within Godot and be easy for most people to operate like JDungeon / Blocky Game's all in one built in multiplayer that runs within Godot 4+?

I implemented a custom solution, because I followed a tutorial that was possible to replicate only by manually sending packets. I'm not familiar with the Godot's multiplayer system to say whether it can be used for this task or not, but it would work differently from my game.
To reasonably implement what you want, the Godot's multiplayer has to support partial scene replication, i.e. you have a "master scene" where you can find every room of your game, but clients only receive their specific room. If this is not possible, then you need a custom solution.

I feel that it should be in Godot but I don't have any working examples. I search 377= github repos and none have this feature and yours does not use Godot multiplayer sorta so its scambled eggs trying to put this together. It's better if its all in Godot but if Godot just sucks wayy too much then It might be forced to use what you did but then its extra complicated for most people to learn 2 systems but if that works and Godot is busted then that maybe be the only real viable way forward.
So now we have like 4-6 branches:
2D:

Godot 2D Multiplayer (with no webport) and separate server / multiplayer systems
Godot 2D Multiplayer (with webport) and separate server / multiplayer systems
Godot 2D Multiplayer (with no webport) and Godot server / multiplayer systems
Godot 2D Multiplayer (with webport) and Godot server / multiplayer systems

3D:

Godot 3D Multiplayer (with no webport) and separate server / multiplayer systems

Godot 3D Multiplayer (with no webport) and Godot server / multiplayer systems

Godot 2D Multiplayer (with no webport) and separate server / multiplayer systems
vs.

Godot 2D Multiplayer (with no webport) and Godot server / multiplayer systems

Its like I gotta pick one to start and I'd like the Godot servers to keep it all together but if that's just not a reality / no working examples then there needs to be something that works.
What is needed to get Godot 2D ARPG with separate maps / areas in multiplayer to work like The Soul Hunter but top down and sorta like Zelda / Diablo? Should a new RPG be made from scratch that is built beside the Soul Hunter that learns from other Godot ARPG projects like:

The Soulhunter: https://github.com/KoBeWi/The-Soulhunter
JDungeon: https://github.com/jonathaneeckhout/jdungeon
Wyvern Shield Triggers + Box Inventory: https://github.com/don-tnowe/godot-wyvernshield-triggers + https://github.com/don-tnowe/godot-wyvernbox-inventory
Game Development Center - Dedicated Multiplayer ARPG: https://www.youtube.com/watch?v=lnFN6YabFKg&list=PLZ-54sd-DMAKU8Neo5KsVmq8KtoDkfi4s
WithinAmnesia - ARPG: https://github.com/WithinAmnesia/ARPG
Blockygame: https://github.com/Zylann/voxelgame
Flare Engine: https://github.com/flareteam/flare-engine
GemRB: https://github.com/gemrb/gemrb
Foozle - CC0 Multiplayer ARPG: https://foozlecc.itch.io/lucifer-exterior-tileset
WoW 2D (NES): https://www.youtube.com/watch?v=64oDMp0FGxA
These all need proper zone to zone travel to work in Godot 4+ in multiplayer. What would be needed to make The Soul Hunter but in a top down Godot 4+ dev tool kit for a Github MIT forever free for the community to learn from to make great games worth playing?

Well most of all it needs lots of work to do it, so you need someone (preferably a team) knowledgeable and dedicated enough to carry such project.

Well most of all it needs lots of work to do it, so you need someone (preferably a team) knowledgeable and dedicated enough to carry such project.

Would The Soulhunter made in 2D top down and in Godot 4+ work as a good starting point? I might have to make it from scratch but if I know that the BIG mystery of zone to zone travel in multiplayer can be solved day 1 starting the project that would be wayyy better than starting another 1 map no travel multiplayer tutorial. Also if the BIg mysert is solved like with The Soulhunter then other nice rpg features can be added like UI inventory mechanics etc. the Big thing is networking and zone to zone travel to get something working. Everquest classic / Project 1999 and Ultima Online and Diablo 1 and Diablo 2 and Baldur's Gate 1 and Baldur's Gate 2 have zone to to zone travel by teleporting to different maps with multiplayer. Should I refocus on remaking something like the Soulhunter engine / dev kit but top down and in Godot 4+ and use your working multiplayer server set up to get something started?

Would The Soulhunter made in 2D top down and in Godot 4+ work as a good starting point?

Eh, maybe? Soulhunter is not a great piece of software. It kinda works, but every part could use some improvement. I remember adding new content and features was a chore, so I'm not sure if it would work well if you plan to expand the game a lot. Maybe this can be fixed or maybe it's broken fundamentally.

Would The Soulhunter made in 2D top down and in Godot 4+ work as a good starting point?

Eh, maybe? Soulhunter is not a great piece of software. It kinda works, but every part could use some improvement. I remember adding new content and features was a chore, so I'm not sure if it would work well if you plan to expand the game a lot. Maybe this can be fixed or maybe it's broken fundamentally.

Well right now every other Godot multiplayer example on github / tutorials (to my knowledge) does not have working zone to zone travel. So even if the Soulhunter is a bit buggy / strange to work on it still works / gets more features working than more fancy demos with less fundamental features.
I'd rather something that has potential to grow and can be fixed than a shiny system that cannot like run properly / is stuck to one map.
I've been meaning make a from scratch build but I I should probably look into how to get The Soulhunter topdown and work from there and use CC0 asset such as: Foozle - CC0 Multiplayer ARPG: https://foozlecc.itch.io/lucifer-exterior-tileset and then get help with the UI / inventory with potentially: Wyvern Shield Triggers + Box Inventory: https://github.com/don-tnowe/godot-wyvernshield-triggers + https://github.com/don-tnowe/godot-wyvernbox-inventory . then look at any funky features with networking rpg features / odds and ends with JDungeon:  https://github.com/jonathaneeckhout/jdungeon . Then look at some of the stat / mechanic tutorials for advanced rpg system like character creation and deeper rpg mechanics like Diablo / Zelda / Baldur's Gate stuff from Flare Engine: https://github.com/flareteam/flare-engine +
GemRB: https://github.com/gemrb/gemrb + Game Development Center - Dedicated Multiplayer ARPG: https://www.youtube.com/watch?v=lnFN6YabFKg&list=PLZ-54sd-DMAKU8Neo5KsVmq8KtoDkfi4s
So I guess the struggle now would be to get The Soulhunter topdown and using CC0 2D assets as step one I think?

https://github.com/loudsmilestudios/TetraForce is a top-down multiplayer game and it's open source, you could check it out.

https://github.com/loudsmilestudios/TetraForce (How did I nor find this before hmm lol?). Do you figure this is a better start? I Should look into this hmmmmmm.


Wpl/Pds5 cohesin loading complex, small update

I made a mistake here. I should have said that this was
GO:0090695	Wpl/Pds5 cohesin loading/unloading complex
(can the term name and def be updated accordingly. current ref covers both)

Val - I changed the term name. Now I wonder about the relationship
capable_of_part_of cohesin loading
should it also have
capable_of_part_of cohesin unloading, GO:0061774?

yes I should have mentioned that too..... sorry for so many changes, this is all so new !

Added:
+relationship: capable_of_part_of GO:0061774 ! cohesin unloading


Google I/O

Want to add Google I/O to the list.

Also a question can we add CP competitions to the list? e.g, Code Jam

Yes we can add some popular events.

I do have a list having a lot of them, its just about putting in the time and mapping every one of them to the right place.

Yeah sure, you may do it. Or you can create an issue and someone else may be some beginner can do it and raise PR.

Sure, I will be making the issue then. It will be very help full for the newcomers.

Done. Check issue #7


Cannot log in: "'redirect_uri' could not be validated"

Describe the bug
When I attempt to perform an action that requires authentication, a browser window pops up, but instead of presenting me with an authentication UI, I receive a text response containing the error message "'redirect_uri' could not be validated."
To Reproduce

Ensure you are not logged in (I presume smartthings logout will accomplish this, but given that I haven't been able to log in I cannot verify)
Run a command like smartthings devices
Observe the above error message

Expected behavior
I should have been presented with a login dialog.
Actual behavior
I receive a text response containing the error message "'redirect_uri' could not be validated."
Additional context
> smartthings --version
@smartthings/cli/1.8.2 win32-x64 node-v18.5.0

I'm not able to replicate this issue.  When I am logged out and attempt to issue a command, a browser window is opened asking me to log in.
If you're working in an environment where there's no browser available, such as on a headless server, you'll need to create a PAT and use that for authentication instead.  The "Authentication" section of the readme provides more information about working with authentication tokens.

Aha. If I use the same URL in an Incognito window, I do in fact get prompted with an authentication dialog. However, once I complete the authentication process (I'm using Google as my auth provider), I then see the above error message again.
The redirect URL is a valid URL-encoded "http://localhost:/finish", and I do get a response when I browse to that address ("Failure obtaining access token."), so the CLI is listening.

Also verified that username/password via Samsung's own authentication also generates the above.

Update: this error has been resolved. After trying again this morning I was presented with a dialog requesting that I agree with updated user terms, and after agreeing I'm in! I imagine this was something in Samsung's OAuth backend that didn't properly handle that scenario.


Misc typo fixes in felix directory

Description
Signed-off-by: Abhijeet Kasurde<EMAIL_ADDRESS>Related issues/PRs

Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

None required

/sem-approve

(Ignoring known and unrelated CI flakes)


Build errors

Hi,
I tried to setup everything as it should be to build the library (miniglog and opencv and dlib from the site) and I started the build having admin privileges, but I got an error:
In file included from jni/jni_detections/jni_face_det.cpp:14:
In file included from jni/jni_detections/detector.h:14:
In file included from jni/../dlib/dlib/image_processing.h:17:
In file included from jni/../dlib/dlib/image_loader/../image_processing/setup_hashed_features.h:8:
In file included from jni/../dlib/dlib/image_loader/../array2d/../geometry/../image_processing/scan_image_boxes.h:12:
In file included from jni/../dlib/dlib/image_loader/../array2d/../geometry/../image_processing/../image_transforms.h:28:
jni/../dlib/dlib/image_loader/../image_transforms/random_cropper.h:146:67: error: no member named 'round' in namespace 'std'
const unsigned long min_object_height_absolute = std::round(min_object_heightcrop_plan.rows);
~^
In file included from jni/jni_detections/jni_pedestrian_det.cpp:14:
In file included from jni/jni_detections/detector.h:14:
In file included from jni/../dlib/dlib/image_processing.h:17:
In file included from jni/../dlib/dlib/image_loader/../image_processing/setup_hashed_features.h:8:
In file included from jni/../dlib/dlib/image_loader/../array2d/../geometry/../image_processing/scan_image_boxes.h:12:
In file included from jni/../dlib/dlib/image_loader/../array2d/../geometry/../image_processing/../image_transforms.h:28:
jni/../dlib/dlib/image_loader/../image_transforms/random_cropper.h:146:67: error: no member named 'round' in namespace 'std'
const unsigned long min_object_height_absolute = std::round(min_object_heightcrop_plan.rows);
~^
[armeabi-v7a] Compile++ thumb: dlib <= threads_kernel_shared.cpp
[armeabi-v7a] Compile++ thumb: dlib <= entropy_decoder_kernel_2.cpp
[armeabi-v7a] Compile++ thumb: dlib <= base64_kernel_1.cpp
[armeabi-v7a] Compile++ thumb: miniglog <= logging.cc
[arm64-v8a] Compile++ : android_dlib <= jni_imageutils.cpp
[arm64-v8a] Compile++ : android_dlib <= jni_pedestrian_det.cpp
[arm64-v8a] Compile++ : android_dlib <= jni_face_det.cpp
1 error generated.
1 error generated.
make: *** [obj/local/armeabi-v7a/objs/android_dlib/jni_pedestrian_det.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [obj/local/armeabi-v7a/objs/android_dlib/jni_face_det.o] Error 1
Build Error
May I provide additional details?
I noticed it's a NDK related bug. Which version would be better to use?
Regards

What is your ndk version?
I think android-ndk-r10e and android-ndk-r13b will work well.
You can download the ndk from my other website : http://tzutalin.github.io/android-ndk-downloader/


The topic is not visible in isaac sim

Hello, I am going to use scout_v2 just like you to make Issac sim work through ROS2.
But  https://leonlime.github.io/posts/isaac2/, I imported scout_v2_simulation.usd as shown in  but if I check the ros2 topic list, I don't see any topic.
Is there anything else I need to check?
I am using isacsim 2022.1.1 version and it is ros2 foxy version.

Same issue I solve it with this  solution

Sorry for the late response, today I updated to ROS2 Humble and Isaac 2022.2.1. Can you check if it is working now?


Replace current example project with a more modern SwiftUI-friendly example

High Level Goals
The example project should be as small and as simple as possible, while still providing examples for all the features of Netable listed below.
What the app actually does isn't super important, but usually some kind of Calendar/TODO/blog app makes the most sense as it's familiar to most people.
The goal is that a new user should be able to read briefly about a feature in the README, and then if they need extra guidance be able to refer to the example project for a more detailed implementation of the feature.
Examples to Include
There's a good chance I missed some stuff here, but this definitely seems like a good start. Also note not every example needs to be separate, as long as it's clear what's being demo'd each time.
Creating Netable Instances

[ ] Default, just provide a baseURL
[ ] Set some config options
[ ] Set custom log destination
[ ] Set a custom retry configuration

Requests

[ ] Super basic "go get a JSON and return it" using async/await
[ ] Basic example using Combine
[ ] SmartUnwrap (with custom unwrap key)
[ ] Custom Finalize
[ ] Request with custom JSON en/decoding strategies
[ ] Redacting/unredacting parameters
[ ] GraphQL Query
[ ] GraphQL Mutation
[ ] Cancelling tasks
[ ] Retrying a request

Handling Errors

[ ] requestFailureDelegate
[ ] requestFailurePublisher
[ ] try/catch
[ ] FallbackResource

Stretch goals:
Since netable is now an actor and immutable, we'll want to show how you do something simple like logging in without auth, then providing an auth token for all subsequent requests

@Amy it's up to you if you want to modify the existing project, or start from a clean slate for this. Either way you'll want to branch off of https://github.com/steamclock/netable/pull/99 to get started if it isn't merged into main yet.

@brendanlensink #99 is merged so am I just branching off of main now?

That's correct 🚀

This is completed and merged via #105!


add nodejs tests workflow

Created by OpenDevin langchain agent! Let's see if it runs...
Update: it did not 🙃 I will try and get it to fix the tests

I'll come back to this


Ltd 5019 consignee section playback page improvements

Aim

LTD-

closing this PR as we will revisit this work in more detail at a later date.


Rename package specs & retract all tags

The package at package path github.com/moby/docker-image-spec/specs-go was assigned the package name v1. It is supposed to have the package name specs to mirror the name of the
github.com/opencontainers/image-spec/specs-go package, but this mistake was not caught until after stable module versions were tagged. Fix the package name and retract all the existing module versions.

For reference, retract directives only need to be present in the highest numbered version of the module. Tags v1.0.1, v1.1.1 and v1.2.1 only need to be pushed with the package line fix backported; no need to touch their go.mod files.

v1.3.0 is the only tag that has code in the repo; older tags only have the specification

Well that makes things easier! I'll remove the unnecessary retractions, one sec

Not near a computer; are you able to create a tag, @corhere ?

https://github.com/moby/docker-image-spec/releases/tag/v1.3.1


Motor blister pack testing

Ideally enter a command through UART to actuate the platform.

We still need to work on improving the performance (output force).


Provide a way for repo admins to see RDF field mappings

RDF field mappings on a given Islandora repo are a bit hidden. Over at Islandora Repository Reports I recently added a... report listing all of the configured mappings:

The user can select which bundle (in this case, which node content type or media type) to show the mappings for.
If people would find this a useful addition to the core Islandora module, I'd be happy to open a PR for that. The code to generate this report is already in the getData() function in https://github.com/mjordan/islandora_repository_reports/blob/master/modules/islandora_repository_reports_rdfmappings/src/Plugin/DataSource/RdfMappings.php#L62-L109 so it shouldn't be to much work to repurpose it into a standalone report linked from admin/reports, for example.
If you'd find this useful, please vote on this with 👍 or leave a comment.

I'd like to see all of Islandora Repository Reports come into core (or at least have the module become part of our standard build'), but this particular piece of it seem like a key tool that really does belong in core.

@manez integrating the Repo Reports module into Islandora core would probably be more complicated than keeping it as a separate (but standard) module. I'd be happy to work on bringing it up to the coding and testing standards required by the LSAP process and when that's done, initiate an LSAP for it.
That said, integrating the RDF mapping report on its own, independent of the Reports module, into core would be a simple, non-disruptive PR against Islandora.

Yes please. This sounds really useful!

It might be useful to also include a list of taxonomy terms that have external URIs assigned. Moar Linked Data.

Merged, closing.

Using this to track https://github.com/Islandora/islandora/pull/827 for the sprint.

closed with https://github.com/Islandora/islandora/pull/835


Add support for building, testing C10S in container-common-scripts

This is blocked by https://github.com/sclorg/tfaga-wrapper/pull/28

Then LGTM


guard gem not found

I installed guard gem using bundle install but I can't execute it directly as it is not found. It works with bundle exec guard

https://github.com/sstephenson/rbenv/wiki/Frequently-asked-questions


Change button name to "Update Inventory" to be more concise

https://github.com/IBM/mac-ibm-migration-tool/blob/70a7854d18fa664c7b48fc843473b335cc5b9a1f/migrator/Resources/Localizable.xcstrings#L953

Thank you for the feedback. This seems to be more of a UX preference. We’ll take it into consideration for future iterations.


cmd,test: Update the default reporting-operator addresses to work with dual stack IP versions.

With the upcoming need to support dual ipv4/ipv6 stack configurations, this would proactively update the default address parameters to use the ipv6 notation as we punt these addresses to svc.ListenAndServe() which can support a dual-stack configuration.

/retitle Bug 1782504: Update the default reporting-operator addresses to work with dual-stack IP versions.


⚠ Bofrost.es has degraded performance

In bdcfa6b, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1583 ms

Resolved: Bofrost.es performance has improved in bc3d2d3 after 27 minutes.


"activity calls query_object" instead of "query_object query activity"

also qie

Current:

The hasTarget predicate basically no longer is generated, since I could apply this change at a query level


Train with smaller classes

Hi, thank you for sharing nice programs.
The following changes to utils.py will allow training with fewer classes. Rotating with 4 classes may be especially useful for training with small data.
There seems to be something wrong in visualization (function display_example), but I was able to train four classes.
def angle_difference(x, y, nb_classes = 360):
    """
    Calculate minimum difference between two angles.
    """
    assert 360 % nb_classes == 0, 'nb_classes should be a divisor of 360'
    unit_angle = 360 // nb_classes
    return 180 - abs(abs(x - y) * unit_angle - 180)

def angle_error(y_true, y_pred):
    """
    Calculate the mean diference between the true angles
    and the predicted angles. Each angle is represented
    as a binary vector.
    """
    diff = angle_difference(K.argmax(y_true), K.argmax(y_pred), nb_classes = y_pred.shape[1])
    return K.mean(K.cast(K.abs(diff), K.floatx()))

(omitted)
@class RotNetDataGenerator
def __init__(self, input, input_shape=None, color_mode='rgb', batch_size=64,
                one_hot=True, preprocess_func=None, rotate=True, crop_center=False,
                crop_largest_rect=False, shuffle=False, seed=None, nb_classes = 360): # nb_classes is added

        assert 360 % nb_classes == 0, 'nb_classes should be a divisor of 360' # inserted

        self.images = None
        self.filenames = None
        self.input_shape = input_shape
        self.color_mode = color_mode
        self.batch_size = batch_size
        self.one_hot = one_hot
        self.preprocess_func = preprocess_func
        self.rotate = rotate
        self.crop_center = crop_center
        self.crop_largest_rect = crop_largest_rect
        self.shuffle = shuffle
        self.nb_classes = nb_classes # added
        self.unit_angle = 360 // nb_classes # added
        ...

(omitted)
def _get_batches_of_transformed_samples(self, index_array):
    # create array to hold the images
    batch_x = np.zeros((len(index_array),) + self.input_shape, dtype='float32')
    # create array to hold the labels
    batch_y = np.zeros(len(index_array), dtype='float32')

    # iterate through the current batch
    for i, j in enumerate(index_array):
        if self.filenames is None:
            image = self.images[j]
        else:
            is_color = int(self.color_mode == 'rgb')
            image = cv2.imread(self.filenames[j], is_color)
            if is_color:
                image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

        if self.rotate:
            # get a random angle
            rotation_angle = self.unit_angle * np.random.randint(self.nb_classes)
        else:
            rotation_angle = 0

        # generate the rotated image
        rotated_image = generate_rotated_image(
            image,
            rotation_angle,
            size=self.input_shape[:2],
            crop_center=self.crop_center,
            crop_largest_rect=self.crop_largest_rect
        )

        # add dimension to account for the channels if the image is greyscale
        if rotated_image.ndim == 2:
            rotated_image = np.expand_dims(rotated_image, axis=2)

        # store the image and label in their corresponding batches
        batch_x[i] = rotated_image
        batch_y[i] = rotation_angle // self.unit_angle

    if self.one_hot:
        # convert the numerical labels to binary labels
        batch_y = to_categorical(batch_y, self.nb_classes) # modified
    else:
        batch_y /= self.nb_classes
    ...

(omitted)
def display_examples(model, input, num_images=5, size=None, crop_center=False,
                    crop_largest_rect=False, preprocess_func=None, save_path=None,
                    nb_classes = 360): # nb_class was added
    """
    Given a model that predicts the rotation angle of an image,
    and a NumPy array of images or a list of image paths, display
    the specified number of example images in three columns:
    Original, Rotated and Corrected.
    """
    assert 360 % nb_classes == 0, 'nb_classes should be a divisor of 360' # added
    unit_angle = 360 // nb_classes # added

    if isinstance(input, (np.ndarray)):
        images = input
        N, h, w = images.shape[:3]
        if not size:
            size = (h, w)
        indexes = np.random.choice(N, num_images)
        images = images[indexes, ...]
    else:
        images = []
        filenames = input
        N = len(filenames)
        indexes = np.random.choice(N, num_images)
        for i in indexes:
            image = cv2.imread(filenames[i])
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            images.append(image)
        images = np.asarray(images)

    x = []
    y = []
    for image in images:
        rotation_angle = np.random.randint(nb_classes) * unit_angle
        rotated_image = generate_rotated_image(
            image,
            rotation_angle,
            size=size,
            crop_center=crop_center,
            crop_largest_rect=crop_largest_rect
        )
        x.append(rotated_image)
        y.append(rotation_angle // unit_angle)

    x = np.asarray(x, dtype='float32')
    y = np.asarray(y, dtype='float32')

    if x.ndim == 3:
        x = np.expand_dims(x, axis=3)

    y = to_categorical(y, nb_classes)

    x_rot = np.copy(x)

    if preprocess_func:
        x = preprocess_func(x)

    y = np.argmax(y, axis=1)
    y_pred = np.argmax(model.predict(x), axis=1)

    plt.figure(figsize=(10.0, 2 * num_images))

    title_fontdict = {
        'fontsize': 14,
        'fontweight': 'bold'
    }

    fig_number = 0
    for rotated_image, true_angle, predicted_angle in zip(x_rot, y, y_pred):
        true_angle *= unit_angle # added
        predicted_angle *= unit_angle # added
        ...

HI @KazuhideMimura , I tried to train the model for 4 classes, its giving
ValueError: Error when checking target: expected fc360 to have shape (4,) but got array with shape (360,).
do we need to change any files other than utils.py

Hi @HAsarvesh , thank you for the repo.
Would you provide me with a detailed error log? I'd like to know where the error occurred.

Hi @KazuhideMimura , thanks for the reply.
error is fixed, I just gave the value for parameter nb_classes in  RotNetDataGenerator class as 4.
But after training the model, while testing I'm not getting the proper output i.e., the images are as it is, they are not rotating.
I'm using custom data and I'm giving the raw images, do I need to manipulate the images before training?

You don't need add special treatment to the original image. I think the possibilities are:

Training did not go well
nb_classes is not designated

For example, if you run a function display example...
display_examples(
    model,
    test_filenames,
    num_images=num_images,
    size=(224, 224),
    crop_center=True,
    crop_largest_rect=True,
    preprocess_func=preprocess_input,
    nb_class=4, # designate nb_class
)

Please note that nb_class will be set at 360 unless designated. This is because I didn't want to disturb the original concept.

Thanks for the clarification, I'll train it again and check.

Here?
https://github.com/d4nst/RotNet/blob/a56ea59818bbdd76d4dd8d83b8bbbaae6a802310/correct_rotation.py#L32
    predictions = model.predict_generator(
        RotNetDataGenerator(
            image_paths,
            input_shape=(224, 224, 3),
            batch_size=64,
            one_hot=True,
            preprocess_func=preprocess_input,
            rotate=False,
            crop_largest_rect=True,
            crop_center=True,
            nb_classes = model.layers[-1].units, # added. Not sure it works.
        ),
        val_samples=len(image_paths)
    )

Thanks @KazuhideMimura, I'll try this.


Add Integration test

Description
Add the following integration test to the framework
1 binary classification problem
1 multi-class classification problem
1 regression problem
We should check the model performance (F1 score for example) as well as the runtime performance.
Although we could simply treat such integration test as unit test if they run quickly, unit test should not include long running test cases. Therefore, please investigate how to host such integration test as a separate step in CI/CD pipeline.

I implemented changing that setting via an environmental variable. The documentation will be updated to reflect that. We might want to change the datasets in use as I think that decision should be made between all of us, it is an easy switch though. Right now I have toy datasets and a threshold that it will stop passing tests after it falls past 10% performance (another easy to change threshold if we need).

Another consideration is if we ever want to use the full pipeline for the integration test. The pros are that it is more reflective of our full system which was designed to be used by auto-estimators and hyperparameter tuners but the cons are that it could take significant times to run these tests (on the order of ~12 hours per test to get a significant result)

Hi @robocoder99 , How did we implement the integration test? As unit test or as part of the pipeline?

The integration test is a test in pytest that is marked by a decorator as being a "slow" test. Slow tests are run by default but can be bypassed by setting an environmental variable. That way developers can set that variable and run tests quickly. The test trains the framework using its default settings on a test dataset and compares the value to a previously obtained value.


Setting Locale and Time Zone with System Interface

Hello.
I'm not using avs sdk, but I use avs on an android app through http calls. Since the Avs forum space has been deprecated, I don't have any other way to submit issue and someone at Alexa Developer Support Team told me to submit my issues in this forum.
I'm using System 2.1 interface in my android app to manage changes in Locale and Time Zone settings made from the Alexa app or the https://amazon.alexa site. I'm facing this issue:
If I change the Locale or the time zone or the metrics in my device (phone) settings through Alexa app or the portal, the changes are reflected in my app and I receive the SetTimeZone, SetLocales and ReportState directives, but if send a TimeZoneChanged or a LocalesChanged event to change the locale and/or the time zone, even if the event result is ok no change are taken. So, for example, if the settings for Temperature metrics are Fahrenheit and for distance are miles, I'm expecting that if I set timeZone to"Europe/Rome" and Locale to "it-IT" the metrics should change to celsius and kilometers.
A similar issue is related to the Alexa language. Sometimes, when I register for the first time the app through Login With Amazon, the base language is set to English even if I set "Italian" as my language in the login procedure. So I try to set the Locale setting sending the LocalesChanged event but it doesn't work! I have to unregister and register again the device (phone).
Can you help me?
Thank you.

Hi @Carmelo1966 , thanks for posting! Unfortunately since you're not using the AVS Device SDK, we actually can't help you on this forum. It sounds like there was a misunderstanding in your original ticket.
Do you know the case ID when you were communicating with the Alexa Developer Support Team? If so, please provide it here. Then I can refer your case ID to their team again and they will reach out to you for further support.

Closing due to inactivity.


Please Add support for Auto Play video  or is it already there?

Hi @VikasJilla , you can use
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
mediaPlaybackRequiresUserGesture:false
)}
this option. XD

I'll check that thank you


COLORS!

Context:
The colors have arrived! yeah, you now don't have to search through some other thing to get the code for the color you want to use, you have all the CSS color names to choose, and some others of course.
This is available for themes, or with the Color::from_name method or simply Color::from(&str).

Nothing to complain. Thank you.


Bundle analyzer pauses build of server

I'm submitting a ...

[X] bug report
[ ] feature request

Bug Report:
Bundle analyzer pauses build of server.
Using
base.plugins.push(new BundleAnalyzerPlugin({analyzerMode: 'static'})) instead.

Hi @TheDolo , thanks for your report, fixed in https://github.com/Metnew/react-semantic.ui-starter/commit/f8df4774aa30083505fe7038aae4108df860410a


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-yml-archive-non-versioning-archive/pull/416 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-yml-archive-non-versioning-archive.git

Docs Build status updates of commit 54ad38f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

docs/TOC.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-3.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-3.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel