Domanda Cosa studiare per sviluppare metin2?

Stato
Discussione chiusa ad ulteriori risposte.

Horren

Utente Premium
22 Gennaio 2010
1,543
106
661
894
Ultima modifica:
Credo che siano qualcosa come 8 anni che non apro una discussione

Inizio subito dicendo che non ho assolutamente basi realistiche in nessun campo informatico (lato software se non qualche piccolezza), mi diletto per lo più in riparazioni hardware quando mi capita e monto pc da quando avevo 4 anni.

Ho recentemente studiato più o meno approfonditamente HTML e CSS, perché mi andava di farlo (lo so, non centra una fava).

Premetto che quando rain leakò i server qualcosa come 10 anni o più anni fa, ero uno di quelli che si fomentava, ma poi effettivamente, non ho mai imparto nulla a livello di programmazione.

Volessi imparare a studiare più o meno development per metin2, dove dovrei partire? Negli anni ne ho sentite tanti, alcuni dissero anche qualcosa del tipo "le skills necessarie per sviluppare metin2, ti potrebbe tranquillamente permettere in un lavoro in silicon valley" non ricordo esattamente chi lo scrisse. Comunque, in ogni caso. Sarei contento se qualcuno rispondesse a riguardo.

Premesse:

Codice:
• Aprire un server
    Non cerco una seconda entrata, lavoro 8 ore al giorno, per me sarebbe solo ed esclusivamente un passion project.
        Anche su VPS, spendo di più in caffé in un mese che per un mese di VPS.
       
• Effettivamente giocare
    Non mi affaccio su metin2 da almeno 6-7 anni, e tutti i server (+15) che provato in questa settimana sono tutti molto a spingerti a shoppare.


Se mi cercate su discord potete aggiungermi: horren
 
  • Mi piace
Reazioni: Murai
Ultima modifica:
In breve è essenziale acquisire competenze nei tre linguaggi fondamentali utilizzati in Metin2, C++, Python e Lua. Dopo aver acquisito familiarità con questi linguaggi puoi dedicarti con determinazione all'approfondimento delle funzioni nel codice sorgente del gioco e comprendere in modo approfondito la struttura complessiva della sorgente stessa (molto importante per capire in futuro dove mettere le mani se vuoi scrivere system o risolvere problemi di qualsiasi tipo).

Ti consiglio vivamente di approfondire anche le funzioni Lua di Metin (scritte in c++ da richiamare in lua) che puoi trovare sempre all'interno del codice sorgente del gioco precisamente nei fogli questlua_.cpp. Questo ti permetterà di acquisire una migliore comprensione su come scrivere future quest (missioni) per il tuo server, questo potrà facilitarti ulteriormente: https://martysama0134.github.io/m2-docs/group___lua_func_list.html

Buona fortuna :)
 
In breve è essenziale acquisire competenze nei tre linguaggi fondamentali utilizzati in Metin2, C++, Python e Lua. Dopo aver acquisito familiarità con questi linguaggi puoi dedicarti con determinazione all'approfondimento delle funzioni nel codice sorgente del gioco e comprendere in modo approfondito la struttura complessiva della sorgente stessa (molto importante per capire in futuro dove mettere le mani se vuoi scrivere system o risolvere problemi di qualsiasi tipo).

Ti consiglio vivamente di approfondire anche le funzioni Lua di Metin che puoi trovare sempre all'interno del codice sorgente del gioco precisamente nel foglio questlua_pc.cpp. Questo ti permetterà di acquisire una migliore comprensione su come scrivere future quest (missioni) per il tuo server.

Buona fortuna :)
Ciao, una funzione, utilizzata in una quest può essere pc, npc, item, party o di moltissimi altri tipi.

La tua parte di risposta inerente a questlua_pc.cpp è equivalente al dire "Per imparare a cucinare la prima cosa che devi sapere è il tempo di cottura dei cactus"
 
Ciao, una funzione, utilizzata in una quest può essere pc, npc, item, party o di moltissimi altri tipi.

La tua parte di risposta inerente a questlua_pc.cpp è equivalente al dire "Per imparare a cucinare la prima cosa che devi sapere è il tempo di cottura dei cactus"
Sì ovviamente, tutti i fogli questlua_ ho appena corretto :) grazie per la tua tempestiva risposta @Mirro - AbyssusTeam
 
In breve è essenziale acquisire competenze nei tre linguaggi fondamentali utilizzati in Metin2, C++, Python e Lua. Dopo aver acquisito familiarità con questi linguaggi puoi dedicarti con determinazione all'approfondimento delle funzioni nel codice sorgente del gioco e comprendere in modo approfondito la struttura complessiva della sorgente stessa (molto importante per capire in futuro dove mettere le mani se vuoi scrivere system o risolvere problemi di qualsiasi tipo).

Ti consiglio vivamente di approfondire anche le funzioni Lua di Metin (scritte in c++ da richiamare in lua) che puoi trovare sempre all'interno del codice sorgente del gioco precisamente nei fogli questlua_.cpp. Questo ti permetterà di acquisire una migliore comprensione su come scrivere future quest (missioni) per il tuo server, questo potrà facilitarti ulteriormente: https://martysama0134.github.io/m2-docs/group___lua_func_list.html

Buona fortuna :)

Ciao, una funzione, utilizzata in una quest può essere pc, npc, item, party o di moltissimi altri tipi.

La tua parte di risposta inerente a questlua_pc.cpp è equivalente al dire "Per imparare a cucinare la prima cosa che devi sapere è il tempo di cottura dei cactus"


Ad esempio, freecodecamp, potrebbe essere una buona idea? Li ci sono dei corsi ma non sono sicuro che spingano verso la direzione giusta
 
Ad esempio, freecodecamp, potrebbe essere una buona idea? Li ci sono dei corsi ma non sono sicuro che spingano verso la direzione giusta

No, stiamo parlando di un gioco che esiste da oltre 15 anni, la cosa migliore da fare è rimanere comunque in questo ambiente per imparare questo ambiente
Se vuoi imparare a lavorare a metin2, oltre ad avere una base nei linguaggi utilizzati dal gioco, devi anche rimanere nel settore 'metin2' per capire comunque quello di cui stiamo parlando
Scrivendo "come posso fare .. metin2" in inglese troverai moltissime risposte, o quanto meno dei suggerimenti che ti portano verso la giusta direzione

Un pò di tempo fa @Arves100 aveva iniziato il progetto di una wiki per imparare a lavorare a metin2 (credo non completato)
Qua trovi comunque delle piccole bozze che aveva scritto che ti aiutano a capire dove mettere mani per iniziare

 
Sapere mettere mano a Metin2 non ti garantisce un lavoro nella silicon valley e non stiamo parlando di un software esoterico a cui è impossibile mettere mano.

Detto ciò è un punto di partenza molto ambizioso (ma proprio per questo vale la pena tentare) data la complessità architetturale, la moltitudine di linguaggi utilizzati ed embeddati e sopratuto data la sua età.

La parte più ostica di Metin è infatti che è stto realizzato più di 20 anni fa. Il codice e le soluzioni adottate sono veramente, veramente di basso livello e pertanto più complesse di un'applicativo realizzato l'anno scorso utilizzando tutto il ben di dio che l'informatica ha creato negli ultimi decadi.
I file di configurazione stessi sono implementazioni proprietarie di un meta-linguaggio che oggi sarebbe rimpiazzato da standard come yaml o JSON, e che quindi aggiungono ulteriore confusione e complessità ad un Client e Server di un MMO che di per sè non è facile da realizzare e mantenere.

Compreso l'ambiente in cui vuoi addentrarti, vorrei dare i miei due centesimi sul viaggio che stai per intraprendere:
Metin2 è un ottimo parco giochi per provare, imparare e sperimentare. É un prodotto fatto e finito il che permette di entrarci con qualunque grado di conoscenza. Attraverso Metin2 puoi imparare molteplici discipline dell'informatica e per tanto sono convinto che la tua scelta non sia affatto sbagliata.
Di contro può essere molto frustrante e la curva di apprendimento è molto bassa.

Ad ogni modo, per tornare in-topic.

Da dove partire e come muoverti dipende molto da quello che ti interessa fare nel breve periodo.
- Vuoi cambiare la grafica?
- Vuoi cambiare il gameplay?
- Vuoi aggiungere assets come armature o mappe?
- Vuoi creare nuove missioni?
- Vuoi creare dungeon?
- Vuoi provare a mettere mano al sorgente per modifiche più importanti ed impattanti sulle meccaniche di base?

Penso che per prima cosa dovresti farti la domanda e chiedertelo, perchè in base al tuo interesse cambia il percorso e gli strumenti.

A prescindere da tutto però, dovrai prendere dimestichezza con il tuo server di metin. Il che vuol dire che sicuramente dovrai scaricare client+server e prendere domestichezza con l'ambiente di sviluppo:
- Comprare e setuppare il server
- Far runnare game e db
- Compilare il launcher
- ...

Una volta capito e preso familiarità con quello che ti troverai volente o nolente ad utilizzare, ti consiglio di partire in quarta con l'implementazione di una tua idea piuttosto che con lo studio sistematico di un linguaggio.

É molto più importante mettere le mani, sperimentare, sbagliare, passare ore a debuggare e comprendere come funziona Metin2 che fare un corso avanzato di 300 ore su c++ 20, te lo posso assicurare.

Partire piccolo con modifiche piccole "voglio cambiare luccichio", "voglio aggiungere una missione che faccia A, B, C", "voglio cambiare come appare l'interfaccia del personaggio", "voglio modificare come funziona la pesca e far pescare 2 pesci invece che 1" per poi passare a nuove features sempre più complesse che coprono sempre più aspetti del gioco.

In tutto questo percorso ti consiglio di usare quanto più possibile quello che ci viene regalato dal monto IT, in particolare ChatGPT o qualsiasi altro equivalente che a mio avviso rendono molto più semplice la didattica e la comprensione di sistemi complessi.
 
L'ultima cosa da fare è identificare il percorso che affronti su metin2 come "Studio" o "Formazione professionale", vi sono usi e costumi completamenti diversi da quelli che potrebbero esserci in un ambiente recente e meglio organizzato (che sarà molto più aziendale e molto meno nicchia di filantropi)

La verità è che un ambiente che ha letteralmente la mia età, non potrà che essere principalmente popolato da rimasti

Non esiste ad oggi infatti, una reale divisione dei ruoli (o almeno sfuma col tempo). Ognuno punta a "masterare" tutto per competizione malata.
(e questo va contro una delle prime regole fondamentali in ambito lavorativo per un dev, il buon vecchio: EssErE PrEdIsPosTo A lAvOrArE iN tEaM).

Mi è capitato negli ultimi anni di fare molte esperienze, conoscendo sviluppatori di altre realtà (anche con chi lo fa come lavoro) e posso dire che noi qua ce la viviamo molto ma molto peggio.

Con time-line penose, standard sempre più alti da raggiungere, non durabilità spesso già decisa del prodotto che andremo a creare, sacrifici che andremo a fare e merd* che dovremmo comunque prenderci, rispetto a qualsiasi altro ambiente siamo decisamente dei vietnamiti sopravvissuti alla guerra.

Se vuoi imparare a programmare, fai qualsiasi altra cosa. Ti richiederà meno tempo e butterai meno sangue.

Su Metin2 non devi diventare solo un dev, bensì un senior di questa "grande azienda", c'è tanto di quel tempo richiesto per assimilare concetti di programmazione e al contempo imparare com'è fatto metin che non consiglierei a nessuno di imparare così.

Era una scusa che mi ripetevo spesso cercando di giustificare il mio tempo, purtroppo no.

Io o chiunque altro abbia imparato su m2, sa che buona parte di ciò che sa l'avrebbe potuta imparare con un quarto del tempo investito ed il sorriso spiccicato in faccia seguendo reali corsi di programmazione e facendo cose realmente stimolanti, altro che boh modificare un file scriptato da un coreano brufoloso 10 anni fa, magari anche col culo perché non vedeva l'ora di andare in pausa pranzo a spararsi un kinder bueno. (Ti vogliamo bene Bang2ni)

Se vuoi fare un server, chiediti se hai un'idea. Se hai un'idea va già bene, se sei venuto qui per riportare in auge il buon vecchio metin2, prenderai solo merd*
 
Stato
Discussione chiusa ad ulteriori risposte.