# 2022-09-18 Weekly Meeting
###### tags: `weekly-meeting`
Link to [last weekly](https://hackmd.io/FNRihio3SfC7juntkgWNLQ)
## Topics:
### Merged since last week:
- Airshipper update
- Server browser
- Language updates
- Dependency update
### Ongoing work
- Angel: n weeks of blog post
- Christof: Econsim
- Progress is still on its way
- Isse has been blocked waiting on a nightly feature
- Working on a fix for CI Clippy
- ShaderC to Naga
- shaderc requires cmake
- Naga require DX11 Backend
- We should make the bounty for DX11 happen
### Followup from last week
- Memory leak update?
- Talk about spreading out Angel's work
### Server browser
- Worked on by: @XVar, @acrimon, @Sharp
- Can we host a second official server
- What does transferring characters look like?
- Methods
- All official servers share a database
- xmac: no sync please, lets have a ssperate character server that owns them
- You can "send" a character from one official server to another as a unit of work (FFXIV)
- Aweinstock
- 1) running a CLI tool on both servers
- 2) players being able to download and upload (signed) characters
- 3) servers automatically using the same database instance
- xmac: Character server
- Character Server:
1. server crate completly drops all persistent storage for players. It keeps a id of each player to link them to the world where needed.
2. The character related part lives on a new character-server it knows everything about the character and owns it. the world and relationship between character <> world is out of context
3. The character-server and servers can authenticate themselves and trust eachother
4. the character-serverhas a rest-api which allows to lock/release a character. When a player logs in, the gameserver will lock the charater from the character-server.
5. once a lock is acquired the gameserver can request a load from the character-server. it will get the character data.
6. The gameserver will constantly store the character data on the characterserver (e.g. every 5 mins)
7. The lock has a max valid time and needs to be refreshed within that time, if we time out, the characterserver does not allow any changes by the gameserver, as a consequence, the gameserver will have to kick theplayer.
8. The whole characterserver can be implemented in server-cli as a single binary to not make the singleplayer/default deployment more complicated.
9. This all can be achieved with the character-server not knowing the internals of thae dataformat, the gameserver can load the player, see awww, incompatible format, drops the player again with "incompatible player data" and releases their lock again
- The method chosen should not only work for official servers, but also third-party fleets of global servers
- Other thoughts
- How do we make sure there is stability in a character download, allowing it to be used in future versions
- Or do we make it clear that this is not the way
- Avi: yeah, if we make character downloads available, players might have the implicit expectation that we're committing to loading those in all future versions unless we explicitly disclaim that, so we need to make sure we're exporting a stable subset of characters.
- the database migration code probably can help with upgrading character data
- Serialize characters as sqlite dumps
- import characters into a temporary database, run migrations to update them to a current version
- requires copying the subset of a database associated with a specific character (and their pets, items, etc) to a temporary database, both for export and import
- Second server
- Try to get AMD Epyc or ARM Ampere chip to see what the server on different chips looks like
- Questions we have
- How do these chips sustain 300+ players?
- Are either chips showing large issues in a particular area?
- Second server in NA
- Current server is 122 Euro a month, Epyc is 142, Ampere is 201 (only in Finland)
- This server would have to be in EU, and we would find another server provider in the US for a 5950X
- Tracking issue: https://gitlab.com/veloren/veloren/-/issues/1546
### Code reading club
Can we move the burden away from Angel?
Any volunteers to do lead the interview and do the cutting and uploading of the video?
- What is Angel worried about
- Adding more process will add more cognative load to getting something out
- Adding more people adds more reliances on getting stuff done in time
- What can be done
- Angel documents the process of each
- We see where the process can be done by others
- Code Reading Club
- Finding the person to do the talk
- Finding a time to host it
- Writing a description + title of the talk
- Creating a Discord event
- Coming up with a list of quesitons about the topic
- Recording it
- Downloading it
- Removing the timer at the beginning
- Uploading, adding the description + title + posting
- Blog
- Announce that we're looking for content :arrow_backward:
- Get all of this week's contributors from Git (this can be done by someone else, or even labbot) :arrow_backward:
- Move this content into a new page on the site repo :arrow_backward:
- Push a new branch :arrow_backward:
- Go over and reword, correct, and clean sections (best for editors)
- Improve formatting and structure by adding images (best for editors)
- Find images to use :arrow_backward:
- Merge the MR
- Make posts on Reddit/Twitter/(ideally opencollective, mastadon, and others) (can a bot do this?) :arrow_backward:
### Showcase
***TBD***
### Updates
## Issues
-
#### Beginner issues?
-
## MRs
Any MRs stuck in limbo? We should take a look because discord will archive inactive threads after one week, rendering them basically invisible.
## Praise 🏆
I would like to thank all moderators for their prolific work!
## Next week leads
Lead: xMAC94x
Call for Review!:
Issues (limit 7):
Minutes: Angel
### Todo agenda: