Virtual Party Space Devlog #13: Server-side architecture
Today I start looking into server-side architecture to support a large number of simultaneous users, and also put in pathfinding for other players' avatars.
Log
- More research into scalable architecture, looks like 150 participants is stretching the capabilities of Jitsi
- https://community.jitsi.org/t/maximum-number-of-participants-on-a-meeting-on-meet-jit-si-server/22273/31
- https://community.jitsi.org/t/whats-the-number-of-the-maximum-users-in-the-same-video-conference/82998/16
- https://community.jitsi.org/t/multi-shard-auto-scalable-kubernetes-setup/64685
- https://community.jitsi.org/t/support-for-large-100-user-conferences-timeline-and-contribution/32247/13
- https://aws.amazon.com/blogs/opensource/getting-started-with-jitsi-an-open-source-web-conferencing-solution/
- load testing tutorial
Architecture conclusions
- to be in same conference, all users need to hit same jicofo instance (can only scale vertically)
- prosody is single-threaded and may also be a blocker https://community.jitsi.org/t/site-slowing-down-on-concurrent-connections/80822/17
- jvb can be separate, and can load-balance multiple servers for same conference using Octo
- limitation is bandwidth/client bandwidth
- last-n is probably required if most people sending video
- need to come up with distance-based-n solution
Interface
- started putting pathfinding in to allow for other-player movement and also mouse-based movement
- pulled in easystar
- started changing gridphysics/player code to work with additional sprites
- looked into improving isometric math, but it might actually be as good as it gets?
- removed some extra Vector object creations from methods that get called every draw cycle
- don’t know that this actually makes a difference but creating 60 objects/second must add up?
About this series
Back in mid-December I started an ambitious project to create a custom platform for a virtual birthday party in February. I kept notes on my progress, both for personal reference and to turn into a series of blog posts. It quickly became apparent that I did not have time to both do the project and blog about the project. I have retroactively decided to post my raw notes as a dev log.