Map Release Schedule #5

Open
opened 2024-12-14 11:00:51 +00:00 by Quaternions · 10 comments
Owner

The "Algorithm" for the release schedule is located here. All it does it release the map 1 week from now to the second.

My favourite idea so far is to use a cron job which runs once a month at the beginning of every month, and releases all "pending release" maps starting at the beginning of the month after. So when the job runs on April 1st, the maps it adds to the release schedule appear starting March 1st and ending March 31st. This means that as long as maps keep being made, there is always maps for at least one month, and the longest you have to wait for maps to release in the worst case is 2 months (for the last map to release, right after the job runs). Alternatively, this may be better to do seasonally, i.e. 3 months at a time with up to a 6 month wait.

Here is a striking diagram explaining the process, with the black ticks representing the release periods:

The "Algorithm" for the release schedule is located [here](https://git.itzana.me/StrafesNET/maps-service/src/commit/d4303612ac4735885281779fbd75955b18a20d74/validation/src/publish_new.rs#L63). All it does it release the map 1 week from now to the second. My favourite idea so far is to use a cron job which runs once a month at the beginning of every month, and releases all "pending release" maps starting at the beginning of the month after. So when the job runs on April 1st, the maps it adds to the release schedule appear starting March 1st and ending March 31st. This means that as long as maps keep being made, there is always maps for at least one month, and the longest you have to wait for maps to release in the worst case is 2 months (for the last map to release, right after the job runs). Alternatively, this may be better to do seasonally, i.e. 3 months at a time with up to a 6 month wait. Here is a striking diagram explaining the process, with the black ticks representing the release periods:
Member

I am not a programmer who does programming things so I will write about the non-program-y bits

The energy for new maps is still there and very present during AoRs, but I think the current model of dripfeeding maps to the playerbase is not ideal. When you have a map releasing every 1-2 days, there is some activity on the map for that day, but there is little community hype, and most maps are seldom forgotten after release. A map update just means new (sometimes old) maps being added to the daily dripfeed. So I think a weekly, biweekly, or even a monthly release schedule is inherently better, and maps would be released in large enough batches to get people excited. Another thing I would change is revivifying the old idea of making a lot of maps immediately available to the playerbase. In an ideal world around 1/3 or 1/2 of the new maps are instantly released, while the remaining maps are occasionally dripfed to the playerbase in batches.

I am not a programmer who does programming things so I will write about the non-program-y bits The energy for new maps is still there and very present during AoRs, but I think the current model of dripfeeding maps to the playerbase is not ideal. When you have a map releasing every 1-2 days, there is some activity on the map for that day, but there is little community hype, and most maps are seldom forgotten after release. A map update just means new (sometimes old) maps being added to the daily dripfeed. So I think a weekly, biweekly, or even a monthly release schedule is inherently better, and maps would be released in large enough batches to get people excited. Another thing I would change is revivifying the old idea of making a lot of maps immediately available to the playerbase. In an ideal world around 1/3 or 1/2 of the new maps are instantly released, while the remaining maps are occasionally dripfed to the playerbase in batches.
Author
Owner

I like the idea of releasing a percent right away. Thinking about 3 month release grouping, I find release labels such as "Surf Fall 2025 Maps" "Bhop Summer 2025 Maps" intensely appealing, makes things really simple and provides a good work period and then deadline for map making. Can even have a dedicated web page to view release history / upcoming releases.

I like the idea of releasing a percent right away. Thinking about 3 month release grouping, I find release labels such as "Surf Fall 2025 Maps" "Bhop Summer 2025 Maps" intensely appealing, makes things really simple and provides a good work period and then deadline for map making. Can even have a dedicated web page to view release history / upcoming releases.
Member

i like releasing a good amount of the maps right away but the problem will be in deciding which get released, and having to explain to the mappers why their map wasnt released with the rest of them. or just make it random i guess.
i think most people do want maps to release faster though, almost every new map dies in a couple days once everyone has played it once or twice and it just becomes a normal map again. I would rather have each map release faster and then there be no backlog by the time the next aor happens. faster releases means people playing more new maps sooner and more map makers happy that they dont have to wait ages, and running out of new maps to constantly play leaves a gap and makes people want to play the new maps more after aor

i like releasing a good amount of the maps right away but the problem will be in deciding which get released, and having to explain to the mappers why their map wasnt released with the rest of them. or just make it random i guess. i think most people do want maps to release faster though, almost every new map dies in a couple days once everyone has played it once or twice and it just becomes a normal map again. I would rather have each map release faster and then there be no backlog by the time the next aor happens. faster releases means people playing more new maps sooner and more map makers happy that they dont have to wait ages, and running out of new maps to constantly play leaves a gap and makes people want to play the new maps more after aor
Author
Owner

Another proposal has come from discussion on discord. Map releaser gets a frontend interface usable by the map admin. Pick # of maps to release instantly (slider), release interval for remaining maps (every 3 days, 7 days etc.), create specialized release dates for select holiday maps. Click big release button, releaser runs.

Another proposal has come from [discussion on discord](https://discord.com/channels/167423382697148416/1273039807693455372/1317470556894920774). Map releaser gets a frontend interface usable by the map admin. Pick # of maps to release instantly (slider), release interval for remaining maps (every 3 days, 7 days etc.), create specialized release dates for select holiday maps. Click big release button, releaser runs.
Quaternions changed title from Validation: Release Schedule to Map Release Schedule 2024-12-14 13:21:02 +00:00
Author
Owner

I've implemented a fully manual releaser api at /release-submissions. It will be entirely up to the release scheduler webpage that the map admin uses to populate the release dates. See my previous comment for an outline of the required features on the web page.

I've implemented a fully manual releaser api at `/release-submissions`. It will be entirely up to the release scheduler webpage that the map admin uses to populate the release dates. See my previous comment for an outline of the required features on the web page.
Quaternions added the frontend label 2025-03-19 01:29:39 +00:00
Quaternions added this to the 1.2 Vote milestone 2025-04-05 23:36:13 +00:00
Author
Owner

Here's an idea for the release scheduling webpage:
Maps ready to be released (Status=Uploaded) are represented by map thumbnails on the left. They are drag-and-dropped into a calendar on the right, and then a button is clicked to confirm the bulk release operation.

Here's an idea for the release scheduling webpage: Maps ready to be released (`Status=Uploaded`) are represented by map thumbnails on the left. They are drag-and-dropped into a calendar on the right, and then a button is clicked to confirm the bulk release operation.
Member

this seems really clunky to use when every aor has 20 or so maps. even worse would be if hj doesnt remember a map by its thumbnail and thinks a bhop map is surf or vice versa which would misalign and/or clash release dates. i think even if its not as flashy it would be simply to have a option of starting date (calender could be here!), time between releases, as well as any exceptions that you would like to remove from this schedule list

this seems really clunky to use when every aor has 20 or so maps. even worse would be if hj doesnt remember a map by its thumbnail and thinks a bhop map is surf or vice versa which would misalign and/or clash release dates. i think even if its not as flashy it would be simply to have a option of starting date (calender could be here!), time between releases, as well as any exceptions that you would like to remove from this schedule list
Author
Owner

this seems really clunky to use when every aor has 20 or so maps.

There could be a button to "auto schedule" that fills in the maps into a default pattern, like fully shuffled and one map a week.

even worse would be if hj doesnt remember a map by its thumbnail and thinks a bhop map is surf or vice versa which would misalign and/or clash release dates.

bhop and surf would be scheduled separately. The thumbnails can be labeled with the map name.

i think even if its not as flashy it would be simply to have a option of starting date (calender could be here!), time between releases, as well as any exceptions that you would like to remove from this schedule list

The api itself is simply submitting a list of maps and times, so the releaser webpage implementation can be very flexible.

> this seems really clunky to use when every aor has 20 or so maps. There could be a button to "auto schedule" that fills in the maps into a default pattern, like fully shuffled and one map a week. > even worse would be if hj doesnt remember a map by its thumbnail and thinks a bhop map is surf or vice versa which would misalign and/or clash release dates. bhop and surf would be scheduled separately. The thumbnails can be labeled with the map name. > i think even if its not as flashy it would be simply to have a option of starting date (calender could be here!), time between releases, as well as any exceptions that you would like to remove from this schedule list The api itself is simply submitting a list of maps and times, so the releaser webpage implementation can be very flexible.
Author
Owner

I've implemented an "auto-scheduler" on the script review cli tool which uses the releaser api here: StrafesNET/remote-script-review#1

If @Hjman so desired, he could run it to perform the releases too with some effort.

I've implemented an "auto-scheduler" on the script review cli tool which uses the releaser api here: https://git.itzana.me/StrafesNET/remote-script-review/pulls/1 If @Hjman so desired, he could run it to perform the releases too with some effort.
Author
Owner

Release scheduler web page features:

  • "Auto schedule" button shuffles maps randomly and schedules 1 map per week per game on Fridays at 10AM PST (peak hours)
  • User can edit the filled in release schedule as they see fit, removing items from release or changing release times
  • Navigate to /operation/{ID} page on schedule submit

Reference code:

for (game,start_date,mut pending) in it{
// shuffle maps
pending.shuffle(&mut rng);
// schedule one per week
let schedule:&Vec<_>=&pending.into_iter().enumerate().map(|(i,submission)|{
let release_date=(std::time::UNIX_EPOCH+std::time::Duration::from_secs((
start_date+i as i64*ONE_WEEK
) as u64)).into();
println!("Schedule {:?} {} at {}",submission.ID,submission.DisplayName,release_date);
submissions_api::types::ReleaseInfo{
Date:release_date,
SubmissionID:submission.ID,
}
}).collect();
// ask to confirm schedule
print!("Accept this release schedule for {game:?}? [y/N]: ");
match ask_user_yes_no().map_err(ReleaseError::Io)?{
UserChoice::Yes=>{},
UserChoice::No=>return Ok(()),
}
// send it
let operation=api.release_submissions(submissions_api::types::ReleaseRequest{
schedule,
}).await.map_err(ReleaseError::Release)?;
println!("{operation:?}");
}

There is also a bunch of preceding code that determines when the schedule starts, i.e. are there already maps on the schedule, and if so schedule the new maps after the existing schedule.

Release scheduler web page features: - "Auto schedule" button shuffles maps randomly and schedules 1 map per week per game on Fridays at 10AM PST (peak hours) - User can edit the filled in release schedule as they see fit, removing items from release or changing release times - Navigate to /operation/{ID} page on schedule submit Reference code: https://git.itzana.me/StrafesNET/remote-script-review/src/commit/ca5203068acf2bec25e5f0575064bce27bf38d7f/src/main.rs#L918-L947 There is also a bunch of preceding code that determines when the schedule starts, i.e. are there already maps on the schedule, and if so schedule the new maps after the existing schedule.
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: StrafesNET/maps-service#5