Molti di voi ricorderanno la macchina virtuale con FreeBSD 7 e i file server 2011 (o 2007 per i più anziani). Molti dei concetti o guide utilizzate all'epoca sono applicabili ancora oggi, e grazie al rilascio dei source abbiamo la possibile di capire nel profondo come funzionassero quei file.
Sommario:
- Cosa sono i source?
- Cosa sono i file server?
- File game, file db?
- E le diff? Vorrei cambiare il max status
- 2k, 34k, 40k, cosa rappresentano questi numeri?
- Core? Cosa sono questi core?
- Perché dovrei aggiornare ai sorgenti? Non vanno bene i file 2011?
- Si parla spesso di basi o revisioni personalizzate, cosa significa?
- Quali linguaggi di programmazione e cosa dovrei imparare per aprire un server?
- Devo imparare tutto questo?
- Devo comprare una base?
- Hai detto che in molti casi le vecchie guide sono usabili, come mai?
- Mi conviene scaricare VDI pronte per compilare o startare / Va bene FreeBSD 9?
- Va bene Visual Studio 2013 / Va bene FreeBSD 9 / È vero che metin non supporta l'ultima versione di FreeBSD o Visual Studio?
- File per hamachi, per dedicati, cambia qualcosa?
- Link utili
Cosa sono i source?
In modo breve, si tratta di file di testo comprensibili a noi umani che definiscono tutte le azioni di un programma (nel caso del server può essere il calcolo del danno) attraverso un linguaggio di programmazione, diciamo una sorta di comandi che verranno tradotti in comandi reggibili dal nostro computer. Il processo di traduzione avviene in due fasi, la compilazione e il collegamento. Se siete interessati all'argomento visitate queste pagine Wikipedia a riguardo https://it.wikipedia.org/wiki/Compilatore, https://it.wikipedia.org/wiki/LinkingAbbiamo a disposizione i sorgenti di tutto il sistema di sviluppo di Metin2, nonché: il client, il server, i vari strumenti come il World Editor, un packer degli EterPack e anche il quest compiler (qc) è presente.
Cosa sono i file server?
I file server non sono altro che i file di configurazione del server. Essi contengono le informazioni sulle porte da utilizzare, dei mob da spawnare in una mappa o le quest. Senza di essi sarebbe impossibile utilizzare il server, e sarà proprio in questa cartella che avvieremo il nostro server compilato dai source.File game, file db?
I più anziani sicuramente ricordano questi nomi, essi non sono altro che i due programmi che consentono al server di funzionare. Su FreeBSD generalmente non hanno estensione, su Windows sono tranquillamente dei .exe.Distinguiamo rispettivamente il file game, che contiene nel lato pratico il server, e il file db (ufficialmente chiamato DBCache) che agisce come un veloce contenitore per diverse informazioni che verranno condivise tra uno o più file game (un esempio che mi viene in mente è i dati del giocatore), da non confondere con il database (MySQL o MariaDB) che contiene tutte le informazioni relative agli account, personaggi e così via.
E le diff? Vorrei cambiare il max status
Ogni programma compilato (e collegato) non può tornare al suo stato originale di codice sorgente, dunque era necessario un processo di reverse engineering per capire il funzionamento del server. Eventuali modifiche applicabili grazie all'analisi del programma venivano salvate nei file diff. Quei file contenevano delle informazioni su come modificare il server senza l'utilizzo dei sorgenti. Questi, file che si potevano applicare anche con un banalissimo Hex Editor. Oggi, avendo a disposizione i sorgenti, questa tecnica di modificare il server è inutile. I sorgenti offrono più libertà con meno sforzo.2k, 34k, 40k, cosa rappresentano questi numeri?
Questi numeri rappresentano il numero di revisioni apportate ai file, ipoteticamente dalla prima revisione creata al server di Metin2, che potrebbe essere benissimo il primo server utilizzato nella beta del 2003 o il primo server copiato dai sorgenti di Metin1. I sorgenti sono una versione più aggiornata dei vecchi file 40k precedentemente utilizzati nei server privati. Con tutte le possibili modifiche che è possibile apportare al Server e al Client, il termine perde completamente di significato.Core? Cosa sono questi core?
Su Metin2, un core è un a cartella di configurazione del server o di un piccolo pezzo del server (come una mappa). Prendiamo in esempio i file server 2007: le cartelle come game1_1, game1_2, game1_3, game2 e così via rappresentava un core, in quanto possedevano un link al file game ed un file di configurazione (CONFIG). Ogni core viene avviato come programma indipendente nonostante utilizzassero tutti lo stesso file game, ciò che varia è la configurazione; game1_1, game1_2 e game1_3 rappresentavano i villi 1 dei tre regni, la RunUp aveva diviso le mappe con più affluenza in processi separati per evitare rallentamenti o saturazione di memoria.Si può riconoscere un core facilmente dalla presenza di un file game (generalmente con il nome d core) e dalla presenza del file CONFIG. Tenete conto che anche il server di autenticazione (Auth) è un core, mentre il file db (generalmente situato nella cartella db) NON È da considerarsi un core (codice diverso e funzionalità diversa).
Perché dovrei aggiornare ai sorgenti? Non vanno bene i file 2011?
Nella teoria si, i file 2011 continueranno a funzionare, ma è quasi obbligatorio il passaggio ai sorgenti. I sorgenti presentano i seguenti vantaggi:- Possibilità di personalizzazione senza limiti. Si può aggiungere tranquillamente stole, offline shop, o addirittura delle armi da fuoco su Metin2, con i sorgenti si può modificare TUTTO.
- Possibilità di risoluzione di ogni possibile bug o exploit. Chiaramente il gioco potrà generare nuovi bug in futuro, ma hai la possibilità di diagnosticare bug e risolverli, sia quelli vecchi che nuovi, lo stesso discorso è applicabile per gli exploit.
- Più funzionalità: i sorgenti sono più aggiornati dei classici 40k o qualsiasi revisione in giro, implementazioni come costume system, energy e dragon soul sono già integrate, e si possono facilmente disabilitare (e quasi senza sforzo aggiungerei) in caso di necessità.
- Più sicurezza (e performance in caso).
Si parla spesso di basi o revisioni personalizzate, cosa significa?
Ognuno con i sorgenti è libero di creare la propria versione, sia programmando che copiando. Per revisioni personalizzate si intende sorgenti modificati da terzi (non dagli autori ufficiali). Il termine base è un sinonimo del termine precedente (il termine deriva dal fatto che tu utilizzi dei file base per costruire il tuo server che sarà una modifica di quella base).Quali linguaggi di programmazione e cosa dovrei imparare per aprire un server?
Metin2 è scritto principalmente in C++ (alcune porzioni scritte in C). I sorgenti client definiscono una specie di motore di gioco di Metin2, ma non è in grado di esistere senza la parte Python. La parte Python definisce interfacce ed azioni che esse eseguono, oltre a dare per configurare la parte C++ in maniera dinamica (esempio gli effetti). Le quest invece sono scritte in Lua, e possono definire le azioni di NPC o di un oggetto utilizzabile con il click destro.Metin2 non utilizza il C++ moderno, è fermo a C++99. La parte Python è compatibile con moduli e sintassi di Python 2.7 (2.7.3 nell'ufficiale), mentre la versione di Lua è 5.0.
Uno sviluppatore può specializzarsi in diversi ambiti, esempio Quest, e dovrà imparare quella determinata zona. Un sistemista, ad esempio, dovrà essere pronto per configurare al meglio FreeBSD e così via. Raccomando per tutti i ruoli almeno una conoscenza del Client e Server di metin di base (esempio aggiungere un item, una mappa e così via) e i comandi di base per compilare e avviare (inclusa shell di base UNIX).
Devo imparare tutto questo?
Se sei un finanziatore ti consiglio almeno di dare un occhiata a ciò per renderti conto del prodotto che andrai a spendere soldi, ma non è richiesta competenza alcuna se hai membri dellostaff già preparati.
Se il tuo obbiettivo è essere uno sviluppatore questo non sarà che l'inizio di esplorare Metin2, un sistemista deve conoscere l'applicazione che dovrà configurare e proteggere (quindi si potrebbe escludere i sorgenti), un grafico potrebbe compilare ed avviare per provare le sue ultime armi, per questo raccomando a tutti di conoscere un minimo l'ambiente.
Devo comprare una base?
Il mio consiglio è di comprare una base solo quando si valuta di iniziare un server vero, generalmente, le basi vendute da gente seria ed affidabile contengono moltissime fix per semplificare il lavoro e migliorare la stabilità del server. Sbuggare i file originali è un lavorone che raccomando solo a chi ha competenze per farlo, mentre i file su internet sono ottimi per iniziare a fare i primi esperimenti, anche implementare system da internet (generalmente buggati) fa esperienza.Hai detto che in molti casi le vecchie guide sono usabili, come mai?
Metin2 è retrocompatibile con le quest sviluppate per file 2007, salvo eccezione di questlib strani. Stesso discorso applicabile alla parte in Python. Le cartelle locale sono generalmente compatibili da file 2010 o superiori, in quanto apportano molte modifiche ai txt della locale. La cartella data è completamente retrocompatibile. I file del client, escludendo root locale ed uiscript, sono al 100% retrocompatibili con qualunque Client di Metin2 (incluso il file Index). Le cartelle e i file CONFIG sono compatibili con ogni server di metin2 (io stesso startai su Windows usando le cartelle dei file 2007 cambiando la locale).Mi conviene scaricare VDI pronte per compilare o startare / Va bene FreeBSD 9?
La versione del server dove si avviano i file server e quella della macchina di compilazione è consigliabile mantenerla a pari passo. Utilizzare l'ultima versione di FreeBSD, permette di avere compilatori migliori, un esempio importante è C++11. Sconsiglio di utilizzare una macchina virtuale già pronta a meno che non si è disposti ad aggiornarla ad una versione supportata di FreeBSD.Va bene Visual Studio 2013 / Va bene FreeBSD 9 / È vero che metin non supporta l'ultima versione di FreeBSD o Visual Studio?
No, è raro che aggiornare la propria versione di Visual Studio/FreeBSD/compilatore porti a problematiche, è necessario ricostruire la Extern per farlo (processo raccomandato in ogni caso). Consiglio sempre di rimanere ed utilizzare almeno le versioni supportate dei prodotti come MySQL e FreeBSD. Confermo che è possibile compilare e startare su FreeBSD 12.1 64bit con MariaDB 10.1 e collegarsi al server con un Client compilato con Visual Studio 2019 e utilizzando Python 2.7.15.File per hamachi, per dedicati, cambia qualcosa?
No, ai tempi dei file 2009 o 2011 si parlava di launcher per hamachi e dedicati (Se non erro il launcher cinese iniettava una libreria dinamica che aveva il compito di semplificare o disabilitare dei controlli nella funzione di invio dei dati di Metin2).
Con l'avvento dei sorgenti tutto questo non è più necessario, non solo perchè eventuali controlli possono essere disabilitati (nei Link utili trovate una guida che tratta di startare su No-Ip ad esempio), ma le pratiche di difesa che utilizzava la Ymir nei suoi file (ad esempio la verifica della licenza o il time bomb) non sono più in uso da tempo. (Almeno nei file pubblici)
Ad oggi non c'è più differenza tra startare con uno Hamachi o un dedicato, classica apertura delle porte come si faceva tempo fa ed un piccolo launcher modificato, nulla che non si possa mettere apposto con un minimo di competenza e sforzo.
Concludo questo wall of text con delle guide per iniziare con Metin2:
- Checklist start progetto: https://www.inforge.net/forum/threads/checklist-start-progetto-metin2.452746/
- Ottima guida che spiega come startare (in maniera generale): https://www.inforge.net/forum/resources/installazione-e-start-server-metin2.14753/
(Piccola nota sulle librerie: Potete benissimo scaricarle e copiarle singolarmente da /usr/local/lib su una macchina FreeBSD 32-bit installando i vari pacchetti che vi servono) - Manuale sulla sicurezza: https://www.inforge.net/forum/threads/sicurezza-cosa-significa-e-come-garantirla.467444/
- Configurare l'host per gli accessi esterni: https://www.inforge.net/forum/threa...ioni-esterne-al-proprio-server-metin2.556262/
- Ottima raccolta per iniziare: https://www.inforge.net/forum/resources/raccolta-come-creare-un-progetto-di-metin2.14750/
- Ottima guida per avviare con NO-IP: https://www.inforge.net/forum/threa...ioni-esterne-al-proprio-server-metin2.556262/