Official Map Repository

Planning an official map repo system for 1.2
 Mission: Create one central repository for all maps, and make it the default http download for 1.2 

Automatic server-side checking of the pk3 for basic security.

 * Map must have ents
 * both team_human_spawn, team_alien_spawn
 * at least one of the following: info_player_intermission, info_player_start, or info_player_deathmatch
 * More?? Need some mapper input
 * Map must have correct magic number and version (IBSP and 46).
 * All the stuff in the "basic rules" section below.
 * No files that can cause problems.
 * benmachine: This would be better as an extension whitelist, followed by a specific-file blacklist.
 * .so
 * .qvm
 * .dylib
 * .dll
 * .exe
 * .zip
 * Why? If testing for zip should test for every archive format ever.  This should probably be left to the humans.
 * server.cfg
 * autogen.cfg
 * autoexec.cfg
 * default.cfg
 * maprotation.cfg
 * admin.dat
 * Check if all textures etc are there?
 * Kia66: Perhaps allow them to use textures from default maps/data.pk3. (I do it a little to try reduce pk3 size)
 * Check conflicts?
 * Require a levelshot (.jpg/.tga)?
 * Require a valid .arena file?
 * Kia66: I would say no. As it only applies if people are hosting locally. If it becomes a must then make sure it doesnt start with colour code as it screws up order in list :(
 * No vast amounts of surplus crap in the pk3.
 * Virus scan (clamav?)
 * Repeat over the entire archive every day, if a pk3 has something new we may not get it when it's uploaded.

Moderation system - maps are not published to the repo until fully vetted by trusted humans

 * Who?
 * benmachine: No, Who is not a trusted human.
 * Should the maps be accessible prior to validation? (if you know the URL)
 * Wire: my opinion is that there should be a way to download maps that have passed the automatic pk3 validation, but are not yet part of the main repository, this would be nice to cut down on the number of megaupload etc type links.
 * Need strict guidelines for them, to prevent loads of complaints etc.
 * How much needs doing / how long will it take to check a map?
 * Wire: it will take at most a couple of seconds for the automatic validation thing to run.

Create and maintain some new basic rules regarding maps

 * All maps should be named map-name-version.pk3
 * One mapper owns the namespace to their map, on a first-come-first-serve basis
 * Levelshot is required
 * Possibly create some community standard as to what is alpha, beta, final
 * Kia66: Alpha - Blocked out (Structural brushes, very little detailling), Gameplay Testing. Beta - Gameplay, Sound FX, Texturing and Detailing near finalized, Final - Everything works and is complete
 * Basic entities (e.g spawns) are required
 * Kia66: Proper lighting? (Not full bright) A check for light entities/light shaders
 * Location names (1.2 HUD will be displaying these so might as well)
 * No pornography (good reason to have a human look at the map prior to including it)
 * No "Acid" maps (Insanely bright textures that have animmaps intended to cause seizures)
 * No Variable/Cvar changing? (Eg. cg_humanbuildpoints 999, g_gravity 0)


 * Kia66: Will maps intended for mods/nonstandard gameplay be allowed? If so will they be separated from the main Repo?
 * Paradox: What about the cvars designed for mappers, such as g_disabledClasses or whatever it was

Ease of use

 * Easy for server owners
 * Default
 * Easy instructions to set it up if they change the settings.
 * Easy ways to sync their maps (rsync?)
 * Easy for mappers
 * Nice UI etc.
 * Email them when it gets validated etc.
 * Forum accounts for auth?
 * Mapper pages (a Portfolio of sorts)?
 * End-users shouldn't need to know it exists.
 * If they do it should be easy for them to use too.
 * rss feeds, both for everything and per-map.
 * search (pk3 name, bsp name, name in .arena file, and "map namespace" thing.
 * Chuck out md5 checksums, and all the others too.
 * Paradox:Possible in-game browsing interface?

Meta-info

 * Mappers should be able to upload screen shots, a description, licence details, and maybe even a second zip file for the source etc.
 * Kia66: Panoramic view, Video preview?
 * Some nice stats such as, total times played, downloads, player rating(?) etc.
 * Kia66: Awards system? Map of the week/year, Developers pick/choice?
 * Any and all other info we can either ask for, or auto-extract somehow.
 * Graphs!
 * Number of APIs for this
 * Google chart api: Flexible, hosted, no load on server, but not interactive
 * Open Flash Chart: Interactive, but flash based
 * jpGraph: Well established, used by Tremstats, flexible, not interactive
 * NOT downloads, as it's easy to game, and a bitch to count with the mirrors.
 * Kia66; Views of its infomation page?
 * benmachine: I'm okay with people gaming it. Don't sort by number of downloads and it won't matter.
 * Full page for each map, detailing information about it, as well as a list view

Mods

 * Do we allow them?
 * How / who?

Mirror network

 * Ask the user / auto pick or just random round-robin?
 * GeoIP?
 * Who and how?
 * Do we trust them
 * What evil can they do?
 * How many do we even need?
 * Will also need two URLs, one for the mirror network for downloading, and one straight to the master for the nice UI and management.

Download Methods

 * HTTP
 * Main access method for it all
 * Maps must be available from all mod directorys
 * /*/map-whatever.pk3 redirects to /maps/map-whatever.pk3 if it doesn't exist in the mod.
 * Need nice file listings with info etc for people in browsers.
 * All cached.
 * Each file also needs a perminant(ish) url for links etc.
 * rsync
 * one module for maps, and one for each mod
 * no fancy file duplicating stuffs
 * Don't want duped files
 * .htaccess
 * dl.mg.net has a good template for this
 * Mirrors
 * Only do http, no rsync. Use authed rsync (push) to mirror the entire tree (with .htaccess and the php scripts and cached data etc)
 * No need for database copying, all cached.
 * Push support
 * People can register to get emails on new maps.
 * Also HTTP pings (we hit a URL).
 * Will need human intervention to check it's a legit request.
 * Can send details of the new maps as query params.

Development
We are using mg.net's git repository for development.

you can checkout the project by doing:

If you wish to help out please contact wireddd, davidsev or khalsa on freenode.

wire's test copy of the project is located here