The SlakPak is back, and it's the mac, jack"

Introduction

Custom maps for halflife games have always sucked to install.

If you want to install 40 maps, then you have to fight and deal with 40 different ways of installing, 1/2 of which are no help in telling to where and a small percentage that actually get it wrong.

What a mess. What a nightmare. Lets automate it.

Yay for Lecutus, one of our cool regulars built a tool that allowed for a simple map installer which pulled the custom maps off a server and did all the installing in one go. Beautiful! But maintaining the server's list of maps tended to fall behind the installed custom maps on the server. I got dobbed into updating it and I figured that if I made it easy for other people I wouldnt have to do it. :)

Thinking about easy custom map packing...

Lets break the custom map process into a number of 'people':

Packer

Packers are the poor suckers who actually have to deal with all the different map installers. We cant avoid some need for humans, but packers can save everyone else headaches but doing some grunt work.

This is the process behind the packer's script:

Note that the script can potentially delete any incorrectly installed files to help the packer deal with annoying installers etc. (Although it wont help if dod maps are installed in the cs directory as only the dod directory will have been scanned).

Status

Mostly written (syncing not yet done, waiting on server design and availablility of rsync).

packer: file layout

    ....slakpak/pak.py                                   # script file
               /lib/...                                  # script code & config
generates
               /map/gametype/mapname/...   # holds files
               

Server

From the previous packer's step, packers sync their ...slakpak/map/ directory to individual directory on the server (using rsync or maybe some file submitting cgi). Using rsync+ssh+authorized keys would allow packers to submit to their personal directories without needing actual accounts (just different keys and restricted authorized_keys commands).

Given the files are synced, the server then:

Status

Not yet done, but should be pretty easy.

server: file layout

packers each sync to create
    ....slakpak/packers/packername/gametype/mapname/...
generates
    ....slakpak/offical/gametype/mapname/...      # files
    ....slakpak/offical/gametype/mapname.info     # config
    ....slakpak/offical/gametype.info                    # metaconfig

Installer

The installer talks to the server:

Status

Not yet done. Dont know if I should hack up a proof of concept python one (final one would need to be easier, maybe look at py2exe?) or if I should chat with Lecutus about hacking his installer.

installer: file layout

    ....slakpak/program.???                                # installer program
generates
    ....slakpak/maps/gametype/mapname.info   # config for each installed map