Battlefield2DedicatedServer
Da OZiOSi.
Qualche Dritta su come creare un server dedicato per Battlefield2 (su Linux)
Bene, innanazi tutto dobbiamo procurarci l'applicativo, cerchiamo in rete il file "bf2-linuxded-1.1.2963-795-installer.sh.gz", questa è l'ultima versione , quella compatibile con il patchset 1.41. Il file è circa 310MB , ho notato che ilo mirror ufficiale di EA è un po ' lento, via p2p si impiega molto meno tempo per questo download. Bene, essendo un file .gz , provvediamo a decomprmerlo con il comando gunzip:
$ gunzip bf2-linuxed-1.1.2963-795-installer.sh.gz
Fatto?
Ok, adesso daremo i permessi di esecuzione al file (.sh ci dice che è uno shell script):
$ chmod +x bf2-linuxed-1.1.2963-795-installer.sh
e lo eseguiamo:
$ ./bf2-linuxed-1.1.2963-795-installer.sh
A questo punto ci verrà chiesto di accettare la licenza, e di specificare una cartella per l'installazione (fondamentalmente va bene qualsiasi cosa, ma /usr/local/games/ è un ottimo posto).
Ok, ci spostiamo nella directory dove è stato installato il server, /usr/local/games/, il server si avvia tramite lo script start.sh; tale script controlla se il sistema ha un processore a 32 o 64 bit, e conseguentemente lancia il binario adatto, nel mio caso ho dovuto modificare lo script affinchè prendesse sempre il binario a 32bit nonostante questa macchina abbia un dual Intel Xeon (che è a 64bit) ma la Slackware che ci è installata non ha le librerie a 64bit.
Lanciamo lo script con l'opzione +help per vedere tutti le opzioni che possiamo dare:
$ ./start.sh +help
non sto ad elencarle tutte, quelle piu interessanti sono:
+modPath - Imposta il mod da avviare ( di default è mods/bf2 ) +dedicated - Avvia il server il modalità dedicata +multi - Permette di avviare più istanze di bf2 +config - Imposta il persorso al file di configurazione ( di default viene preso quello relativo al mod ) +mapList - Imposta il percorso alla file che elenca le mappe da giocare .
Due parole su come funziona il server di Battlefield2 (e anche il client), all'avvio il server (ma anche il client) carica un mod, quello di default si trova in mods/bf2 (relativamente al percorso di installazione), nella versione del server che avete scaricato trovate anche il mod xpack , che è l'estensione Special Forces, e che potremo caricare specificando il path del mod:
$ ./start.sh +modPath mods/xpack
Ora viene il bello, la possibilità di avere piu mods è una cosa molto fica, tanto che se entriamo nella cartella del mod che ci interessa troviamo un file object_server.zip, se apriamo il file troviamo dentro vari file e directory che definiscono il comportamento del gioco, dai kits dei soldati , alle varie caratteristiche dei mezzi e delle armi...
mumble mumble ... 1 + 1 = 2 ...
Afferrato?
Ok, procediamo, i file sono in una specie di linguaggio object-oriented, per niente complicato da comprendere, l'unica cosa non comprensibile sono alcune regole, che non si sa bene dove stiano scritte e che solo l'esperienza e le lunghe prove permettono di comprendere, facciamo un esempio:
nel file object_server.zip troviamo la directory kits, dentro troviamo altre directory, tipo US,CH,MEC, questi non sono altro che i settaggi dei soldati raggruppati secondo la loro fazione, infatti se entriamo in una di queste cartelle troviamo file con nome US_Sniper.con, US_Engineer.con, chiaro no?
Non mi inoltrero oltre in questa faccenda visto che è una cosa un po' lunga, forse in una prossima pagina del wiki approfondirò :) , c'è, pero', una cosa importante da ricordare: è possibile sbloccare le armi, spostare le armi da un kit all'altro, da una fazione ad un'altra, ma non si possono avere due armi che vanno nella stessa posizione, altrimenti il gioco si pianta al momento del caricamento (circa al 15% del caricamento, visto che object_server.zip è il primo file caricato). Poichè non ho trovato dove viene definita la posizione di un'arma (o meglio l'ho trovato ma non mi andava di imputtanare tutto e mi sono accontentato :P),ho elaborato una semplice strategia:
prendete il kit che ha l'arma che volete, usate i numeri della tastiera (non il tastierino numerico) per trovare su che numero sta l'arma che desiderate, ora,prendete il kit sul quale volete avere tale arma e vedere il numero di prima a quale arma corrisponde, adesso basta aprire object_server.zip andare su kits, entrare nella dir della fazione interessata e poi aprire il file del soldato e sostituire l'arma di cui abbiamo trovato il numero con quella che ci interessa. Per "riconoscere" le armi e saperne i nomi, in mods/bf2 c'è la directory Objects , entrate e seguite il percors Weapons/Handheld/, vi trovate davanti parecchie directory, dentro ognuna di queste c'è l'immagine dell'arma e il nome della cartella è il nome dell'arma, ma vi consiglio di controllare anche i nomi all'interno dei file dei soldati, perché ho notato che spesso sono differenti e quelli delle directory non sono sempre corretti.
Allo stesso modo è possibile modificare le armi, tipo numero di caricatori, numero di colpi, tempo di ricarica, distanza di tiro, danni fatti etc etc, sono molte altre le cose che si possono modificare quindi ravanate negli archivi zip e buon divertimento.
Consigli del piccolo modder:
- fate la copia di mods/bf2, e usate il nuovo mod per fare le prove. (./start,sh +mods/nuovo_mod );
- salvate una copia dei file che modificate per avere la possibilità di ripristinarlo qualora il gioco non partisse;
- inutile dire che dopo che avete modificato un file , se esso è in un archivio zip dovrete salvarlo di nuovo dentro l'archivio, operazione noiosa se lo zip in questione è particolarmente grande.
Ok, fine della confusa sezione mod, torniamo al nostro server.
Abbiamo detto che di default viene caricato mods/bf2, spostiamoci in questa cartella, e poi entriamo nella cartella settings, troviamo due file serversettings.con e maplist.con.
Dentro serversettings.con decidiamo le impostazioni del nostro server, vediamo alcune voci interessanti (le altre sono di facile comprensione):
- sv.serverName: Il nome per il server
- sv.password: la password per accedere al server
- sv.internet questa voce dice al server se vogliamo abilitare il gioco su internet, in pratica permette l'accesso al server da ip esterni alla nostra LAN;
- sv.NumPlayerNeededToStart: il numero minimo di giocatori per far partire il gioco;
- sv.spawnTime: il tempo di rientro
- sv.manDownTime: il tempo durante il quale si puo essere rianimati (viente conteggiato insieme allo spawnTime)
- sv.roundsPerMap: controlla il numero di partite da fare nella stessa mappa
- sv.autoBalanceTeam: bilanciamento automatico delle squadre
- sv.coopBotCount: il numero dei bot
- sv.coopBotRatio: questa linea cambia il rapporto dei bot: in pratica considera la fazione 1 quella a sinistra e la fazione 2 quella a destra, dal punto di vista del server, e se la percentuale è sotto al 50% i bot verranno mandati nella fazione 1 con quella percentuale, se è sopra al 50% i bot verranno mandati nella fazione 2, se è al 50% preciso i bot vengono equamente divisi tra le due squadre. Esempio: due giocatori umani nella fazione 1, ipotizziamo di voler giocare 6 contro 6, mancano esattamente 10 bot, di cui 4 nella fazione 1 e 6 nella fazione 2. Impostiamo sv.coopBotCount a 10 e sv.coopBotRatio a 60, in questo modo il 60% dei bot andra nella fazione 2 (perche siamo sopra al 50%) e il 40% andra nella fazione 1.
- sv.coopBotDifficulty 50 questo controlla il livello dei bot, il massimo è 100.
Riferitevi al file per capire se la riga prende una stringa , un numero o viene semplicemente attivata da un 1 o da uno 0;
Nel file serversettings.con ci sono molte altre voci, che controllano i piu disparati aspetti del gioco, dalla rete ai loghi, ai messaggi di benvenuto alla password per il server; non mi stupirei se ce ne fossero altre, ma queste ci bastano per avere un server di Battlefield up & running.
Passiamo al file maplist.con, in questo file troviamo le mappe per il gioco, quelle che saranno caricate (è possibile aggiungerne dalla console, ma questo lo vedremo poi, molto poi):
il formato del file è questo: mapList.append dalian_plant gpm_coop 16
mapList.append è ovviamente la direttiva che dice al gioco di inserire la mappa di nome daliant_plant nella lista, gpm_coop dice di caricarla in modalità cooperativa, cioè abbiamo la possibilità di aggiungere bot, l'alternativa è gpm_cq, cioè la modalità conquest dove non ci sono bot, ma solo giocatori umani, il numero finale indica il numero di giocatori massimo nella mappa, le alternative sono 16, 32 o 64 (ovviamente se la mappa lo supporta), niente ci vieta di giocare in 2 in una mappa da 64, ma c'è da camminare parecchio ;) .
Altra postilla sulle mappe, all'interno della directory mods/bf2 c'è levels, dentro troviamo le varie mappe, con le descrizioni (modificabili), e un file server.zip, modificando i file al suo interno modificheremo la mappa, o meglio gli oggetti della mappa, come i veicoli, le fazioni che giocano o l'ai (intelligenza artificiale) dei bot (dovete provare l'emozione di stare su una grù a cecchinare e schivare missili anticarro... Meeeediic!).
Ok, questo è quanto, avviamo 'sto server: $ ./start.sh apparira una simpatica schermata testuale che ci da un po di info e ci permette di dare comandi vari, uno su tutti quit per chiudere il server. Se usiamo una connessione remota e non vogliamo mandare in background il server dando l'opzione +dedicated possiamo lanciare il server da dentro il comando 'screen' (man screen), questo ci permette di scollegarci dal server mantenendo aperta l'interfaccia testuale e di riprenderla poi.
Ok adesso abbiamo il server up&running, in teoria, mi fermo qua per ora, lascio a voi l'esplorazione, aggiungerò poi una sezione sui comandi che il server prende e che ci permettono di fare altre cose senza dover riavviare il server per esempio.
Piccole postille:
nel file troverete delle righe che iniziano con la sequenza 'rem', bene sono righe commentate, cioè "saltate" dal server al momento dell'esecuzione. Per i client: i mods si possono caricare dal menu "Comunità/PartitePersonalizzate", selezionando il mod e attivandolo, ma questo comporta il riavvio del gioco, quindi fate una copia del collegamento dal quale lanciate bf2 e aggiungete l'opzione "+modPath mods/quel_mod", così verrà caricato direttamente all'avvio.
Ho come l'impressione di dimenticare qualcosa... boh mi verrà in mente,
per ora ciao e occhio alle spalle ;) .
-- Nate

