[GUIA] GoldSrc: gamedll, hlsdk, etc
#1
En esta guia me dedicare a dividir el juego con ciertas definiciones que son conocidas por modders y developers alrededor de la internet para hacer referencia a ciertas secciones del juego, el cual se interpreta de 1 sola forma, pero dividido en varias por dentro. Seré lo bastante primitivo como para que todos entiendan bien.

Empecemos desde lo más basico, que es al arrancar un servidor.

> hlds.exe / hlds_run

Lo primero que hacemos es arrancar un servidor con su ejecutable respectivo por OS. Aquí es donde el ejecutable, utilizará una librería especifica de uso. En linux, esta libreria se especifica con el parametro -binary (de no especificarse una, esta utilizará una por defecto). En windows es siempre la misma.

En versiones antiguas, diferian las librerías segun el OS

> linux (antiguo)
engine_amd.so
engine_i486.so
engine_i686.so

> linux (nuevo)
engine_i486.so

> windows
swds.dll

Esta librería, es la tan famosa y conocida librería engine (no confundir con el modulo amxx). Este vendría siendo la referencia a lo que es el motor GoldSrc. Dentro de esta librería se encuentra el motor de todos los juegos de GoldSrc, los cuales son iguales para todos los juegos.

> engine

El engine luego de ser leido se encarga de inicializarse. La rutina mas importante del engine, es la lectura del gamedll que arrancará (si, otra librería especifica). El gamedll es lo que conocemos tambien como el juego en si, la modificacion, el subjuego de Half-Life, como quieran llamarle.

El gamedll se indica en el archivo liblist.gam que el engine se encarga de parsear. Luego que se obtiene el gamedll del archivo especifico, el engine lo arrancará [y le cederá la lista de engfuncs y dllfuncs (conocidos asi por fakemeta)]

Ya con el gamedll arrancando, el engine se encargara de parsear las conexiones, generar la fisica, generar los frames, y demaces. El gamedll a partir de las herramientas que le cede el engine, creara la estetica y el ambiente.

► Ahora, ¿que es lo importante de esto?

> metamod

Existe claramente un puente entre la conexion del engine y el gamedll, y es el archivo liblist.gam. Dentro de este archivo uno define la libreria a llamar para arrancar el juego, y es ahí donde metamod aparece. De una manera muy limpia, sin necesidad de truquear las librerias, uno edita el archivo liblist.gam para que llame al metamod en vez del gamedll original.

En palabras especificas, lo que el engine hace es llamar la funcion GiveFnptrsToDll (Give function pointers to dynamic link library) de la libreria gamedll. metamod teniendo estas funciones es un punto blanco para el engine.

Cuando se llaman estas originalmente, metamod llamará al gamedll original, pero ya con metamod llamado, este dará paso a crear una interfaz de subplugins, entre los cuales encontramos a amxmodx con el paso del tiempo.

> hlsdk

Vendría siendo el codigo original del gamedll del Half-Life. Su uso original es el estudio del codigo, una útil herramienta para poder hacer librerias externas teniendo en cuenta como esta hecho el gamedll original. Se supone que el hlsdk es una herramienta para developers, por lo que no es compilable, *supuestamente*.

> engfuncs

Son funciones escritas en el engine las cuales cede al gamedll para poder realizar enésimos algoritmos. Estas son enviadas al gamedll mediante la funcion GiveFnptrsToDll.

> globals

Es una estructura escrita en el engine, una serie de variables con informacion util que son cedidas al gamedll. Estas son enviadas al gamedll mediante la funcion GiveFnptrsToDll.

> dllfuncs

A diferencia de los engfuncs, estas funciones estan escritas en el gamedll, pero con una estructura especifica cedida por el engine. El engine en ciertas ocasiones notificará eventos al gamedll (ej. Touch, KeyValue), o como tambien buscará restricciones (ej. AddToFullPack, SetupVisibility, ClientConnect) mediante los dllfuncs.



Pregunten cualquier cosa.
Responder
#2
Exelente guía Proud
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#3
Rainbow Interesante me la estoy leyendo toda RainbowRainbow

Buena guia Excitedeyes
* Ing. Informático * Mapper * Venezolano
Responder
#4
esta buena la info, tenia conocimiento de poca parte de ella
asi las personas saben como y que es lo que hace su puto servidor al arrancar y los juegos tambien son asi


(02/07/2015, 09:35 PM)meTaLiCroSS escribió: Ya con el gamedll arrancando, el engine se encargara de parsear las conexiones, generar la fisica, generar los frames, y demaces. El gamedll a partir de las herramientas que le cede el engine, creara la estetica y el ambiente.
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#5
Gracias atleta pacman

no se pero ando al pedo leyendo tutos y me los ando aprendiendo facil no se que me pasa hoy pero a aprovechar ;u
~Digito ergo sum~
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)