Es/Source SDK 2013

Puntos clave 
Para empezar, necesitarás coger el código de fuente desde aquí GitHub. ¡Después, podrás ser capaz de compilar la compilación y programar nuevos mods!
=Obteniendo el código=
GitHub te proporciona numerosas maneras para obtener el código y actualizarlo. Aquí tienes unas instrucciones para obtener el código de manera principal, pero Ayuda de GitHub es una buena fuente para aprender a cómo utilizar Git, y las novedades añadidas de GitHub.
==Vía directa==
La manera más fácil de mantenerse actualizado y tener siempre la última versión del código actualizado, es usar Git para obtener el repositorio. Git en sí, es una "CLI" para todas las plataformas, pero GitHub también te proporciona instaladores que instalan la versión CLI y una interfaz para ayudarte a mantener tus repositorios.
===GitHub (Windows & Mac)===
# Obtén GitHub.
#* Windows
#* Mac OS X
# Instala GitHub .
# Visita Source SDK 2013 en tu navegador, y pincha en "Clone in Desktop".
#* Esto abrirá el programa GitHub. Sigue las instrucciones para clonar el repositorio en tu ordenador.
Cuando quieras descargarte una versión moderna del código, lo puedes hacer haciendo clic en "Sync" (sincronizar) o "Sync Branch" (sincronizar ramas).
===Git CLI (Para todas las plataformas)===
Instrucciones detalladas para cómo montar Git en cualquier plataforma, incluyendo la actualización del repositorio. .
Con el CLI instalado, puedes obtener el código usando una línea parecida a esta:
 > git clone git@github.com:ValveSoftware/source-sdk-2013.git
==Descarga directa==
También puedes descargarte el ZIP. Esto te dará la última versión, pero tendrás que manualmente descargarla para actualizar el código. Si planeas contribuir en el repositorio con tus aportaciones al código, necesitarás seguir las instrucciones de arriba para Git, con una instancia separada de tus archivos locales.
Descarga la última versión de Source SDK 2013
=Instrucciones de compilación para plataformas específicas=
== Creando el proyecto y los archivos==
El SDK de 2013 usa el para generar los archivos específicos para el proyecto. Estos archivos son específicos para las plataformas y son requeridos para montar el SDK. Una vez que completes este paso no necesitarás volver a llevarlo acabo si una actualización requiere nuevos archivos de proyecto.
Ve a estos directorios y ejecuta los archivos .bat para empezar a montar.
===Windows===
 # Proyecto de un jugador (Singleplayer)
 > <Directorio del SDK>/sp/src/creategameprojects.bat
 > <Directorio del SDK>/sp/src/createallprojects.bat
 
 # Proyecto multijugador (Multiplayer)
 > <Directorio del SDK>/mp/src/creategameprojects.bat
 > <Directorio del SDK>/mp/src/createallprojects.bat
Este paso creará los archivos del Visual Studio (.vcxproj) y los de la solución (.sln) en el directorio SRC.
Nota: ¡Si no tienes Visual Studio, recibirás errores en el proceso de arriba! 
===Mac OS X & Linux===
Nota: Mac OS X Mavericks necesita hacer cambios en algunos archivos para compilar el proyecto: Elimina el -fpredictive-commoning desde OTHER_CFLAGS en el archivo src/devtools/release.xcconfig. Cambia SDKROOT a macosx10.8 en src/devtools/base.xcconfig. 
 # Proyecto de un jugador (Singleplayer)
 > <Directorio del SDK>/sp/src/creategameprojects
 > <Directorio del SDK>/sp/src/createallprojects
 
 # Proyecto multijugador (Multiplayer)
 > <Directorio del SDK>/mp/src/creategameprojects
 > <Directorio del SDK>/mp/src/createallprojects
En Mac OS X, esto creará los archivos "src/games.xcodeproj" y "src/everything.xcodeproj".
En Linux, "src/games.mak" y "src/everything.mak"
=== Información sobre el VPC ===
Para obtener información sobre cómo usar el , observa los scripts o ejecuta el siguiente comando:
 > <Carpeta del SDK>/<gameType>/src/devtools/bin/vpc /help
=== Nota sobre el repositorio Git y los archivos ignorados ===
Los archivos de proyecto generados por VPC son listados en el .gitignore, de seta manera no son publicados en el repositorio. Los que quieran publicar sus cambios deben hacerlo haciendo una petición informando de lo que se está subiendo.
=== Añadiendo archivos a tu proyecto con VPC ===
VPC genera archivos de proyecto para todas las plataformas que el SDK soporta, así que si quieres añadir archivos a tu proyecto de una manera que te pueda permitir montar fácilmente en otras plataformas, considera usar VPC. Por ejemplo, para montar un mod multijugador, puedes añadir la línea a src/game/client/client_hl2mp.vpc
==Windows==
=== Prerequisitos ===
Para montar el Source SDK 2013 en Windows necesitarás Microsoft Visual Studio 2010 con Service Pack 1. También es posible usar el Visual Studio 2012 con el compilador de Visual Studio 2010 mediante "no actualizar" las configuraciones del proyecto para el nuevo compilador.
Si también quieres montar el proyecto phonemeextractor tendrás que descargar el SAPI 5.1 desde Microsoft. No se puede incluir el SDK Speech con el Source SDK por que son de empresas distintas. Simplemente descarga "SpeechSDK51.exe", elige el destino de extracción, y extrae. Ve al directorio donde extraíste los archivos y ejecuta el instalador MSI. Localiza "C:/Archivos de programa (x86)/Microsoft Speech SDK 5.1" , copia su contenido a "src/utils/". Renombra la carpeta "Microsoft Speech SDK 5.1" a "sapi51" y el phonemeextractor funcionará.
=== Montando===
¡Recuerda primero haber leído el apartado de la creación de archivos!
# Abre la solución "everything" para el tipo de proyecto que desees crear (singleplayer o multiplayer)
#* everything.sln
# Monta la solución de arriba.
# Abre la solución de arriba para el juego que estás montando.
#* games.sln
# Monta la solución de arriba.
En este punto deberías tener el client.dll y el server.dll para cargar el Source Engine en el que estás basando el mod. 
=== Montando los "shaders" (efectos) ===
Si estás planeando añadir nuevos efectos gráficos en tu mod necesitarás montar los archivos runtime shader en Windows.
Los shaders son efectos gráficos, como los reflejos del agua, espejos, el fuego, la iluminación, las sombras, el humo y las partículas en general.
# Ve a Inicio, y ejecuta "cmd" y haz el comando CD en uno de los siguientes :
#* sp/src/materialsystem/stdshaders (para mods de un solo jugador)
#* mp/src/materialsystem/stdshaders (para mods multijugadores)
# Duplica el archivo build<gamename>shaders.bat y renómbralo a montarmisshaders.bat
 COPY /B build<gamename>shaders.bat montarmisshaders.bat
Abre el archivo que renombraste montarmisshaders.bat en un editor de texto.
Cambia la variable SDKBINDIR a la localización de lainformación del cliente desde Steam. Esta carpeta puede cambiar según dónde hayas instalado el juego.
 set SDKBINDIR=<steaminstallpath>\SteamApps\common\Source SDK Base 2013 Singleplayer\bin
Ejecuta el montarmisshaders.bat
Para más información sobre autorizando shaders en el Source SDK, consultar .
===Compilando Source SDK 2013 con Visual Studio 2012===
Valve recomienda a los creadores de mods que deberían usar Visual Studio 2010 con el Service Pack 1 para crear un mod. Sin embargo esta sección va a describir cómo compilar un mod usando la versión 2012 de Visual Studio. Sigue la guía en esta página hasta la sección "Windows - Prerequisitos ". Se recomienda al creador de ese mod no actualizar los proyectos de Visual Studio y da por hecho de que el creador tendrá que obtener el sapi.lib de Microsoft Speech SDK. Esta sección describirá los pasos hasta el primero, obtener y configurar la librería de Speech SDK y segundo, configurar las librerías protobuf necesarías y por último, configurar y compilar el SDK 2013 con el Visual Studio 2012.
==== Montando Microsoft Speech SDK (SAPI) ====
Source SDK requiere el software de Microsoft Speech SDK, pero no viene con éste, por razones de licencia. Descarga el Speech SDK 5.1 desde aquí. Esto debería descargar el archivo SpeechSDK51.exe. Ejecútalo y debería descomprimir cosas en la carpeta seleccionada. Uno de los contenidos que descomprime lo que has descargado, es el Microsoft SDK 5.1.msi. Ejecutándolo, con la configuración normal, debería crear un directorio (carpeta) en 
C:\Program Files (x86) en Microsoft Speech SDK 5.1.
O en la versión castellana
C:\Archivos de programa (x86) en Microsoft Speech SDK 5.1. 
Copia la carpeta Microsoft Speech SDK 5.1 en la carpeta de tu mod, src/utils directory y renómbrala a sapi51.
Supongo que si compilas ahora aparecerán un número de errores en el archivo sphelper.h. Aquí tienes un enlace para corregir estos errores . Aunque los puedes corregir manualmente.
Cambia estas líneas T con el código de abajo.
En la línea número º769 
 const size_t ulLenVendorPreferred = wcslen(pszVendorPreferred); // no size_t
En la línea número º1418
 static long CoMemCopyWFEX(const WAVEFORMATEX * pSrc, WAVEFORMATEX ** ppCoMemWFEX) // missing long
En la línea número º2368
 const WCHAR * PropertyStringValue() const
 {
 // Search for the first NULL and return pointer to the char past it.
 SPDBG_ASSERT(eEventId == SPEI_PROPERTY_STRING_CHANGE);
 const WCHAR * psz = (const WCHAR *)lParam; // moved this from for init
 for (; *psz; psz++) {}
 return psz + 1;
 }
En la línea número º2560
 SPPHONEID* pphoneId = (SPPHONEID*)((WCHAR *)dsPhoneId); // improper casting
Finalmente, en la línea número º2634
 pphoneId += wcslen((const wchar_t *)pphoneId) + 1; // improper casting
==== Montando el protobuff ====
Como se ha mencionado ya, el Source SDK 2013 requiere una librería protobuff versión 2.3.0. A continuación te detallo instrucciones para obtener y compilar la librería protobuf aquí en la Wiki Allied Modders.
Una vez compilado, copia el archivo "libprotobuf.lib " desde "protobuf-2.3.0\vsprojects\Debug " o "protobuf-2.3.0\vsprojects\Release ", dependiendo de la configuración que hayas puesto (release o debug), y pégala en el directorio o carpeta "src\lib\public ".
==== Montando los proyectos de Visual Studio ====
Abre everything.sln desde source-sdk-2013\sp\src o source-sdk-2013\mp\src, dependiendo de si es un sólo jugador o multijugador. Un aviso debería aparecer preguntándote si quieres actualizar el compilador VC++ y las librerías de cada proyecto en la solución. Puedes encontrar lo que significa aquí. Por ahora haz clic en Update o Actualizar, para actualizar los proyectos y la solución. Si no te aparece esta opción o elegiste no actualizar, los proyectos con la solución puedes actualizarlos al nuevo Visual Studio en cualquier momento haciendo clic derecho en la solución y haciendo clic en Update VC++ Projects o Actualizar proyectos VC++.
Selecciona la configuración de proyecto para montar, Debug o Release. Esto puede hacerse haciendo clic derecho en la solución everything en el explorador de soluciones, selecionando "Propiedades" o properties, después, navegando hasta Configuration Properties/Configuration Manager/Active Solution Configuration o Propiedades de configuración/Administrador de configuración/Configuración activada de la solución, seleccionando Debug o Release (yo lo dejaría en Debug), clic en Cerrar y después "Ok".
Ahora monta la solución haciendo clic derecho en "everything" y "Montar todo" o "Build All" en inglés. Ahora cierra la solución, abre la solución del juego y actualiza los proyectos como hiciste con la solución "everything". Continúa en la sección Montando los "shaders" (efectos) .
==Mac OS X==
===Entorno y herramientas de configuración===
Los usuarios Mac OS X, necesitarán tener instalado Xcode 4.2. También necesitarán tener instalado "Command Line Tools". Puedes encontrar eso en:
XCode Preferences -> "Downloads" -> "Components"
O en castellano:
Xcode Preferencias -> "Descargas" -> "Componentes"
===Montando las herramientas===
¡Recuerda haber montado los archivos de proyecto primero!
Para montar las herramientas en tu Mac, ejecuta el siguiente comando en el Terminal:
 > make -f games.mak
Cuando se haya montado sin problemas, deberías tener los archivos client.dylib y server.dylib para cargar el Source SDK Base 2013 que vayas a usar (singleplayer o multiplayer)
==Linux==
=== Cliente Runtime de Steam ===
Para montar el Source SDK Base 2013 en Linux necesitarás el cliente runtime de Steam.
# Descárgalo aquí.
# Y ejecuta estos comandos para extraer el runtime:
 > tar xvf steam-runtime-sdk_latest.tar.xz
 > cd steam-runtime-sdk_<version>
Reemplaza<version> con la versión que has desempaquetado.
 > ./setup.sh
Elige tu arquitectura y preferencias debug/release. Después contesta a todas las preguntas con "Y" (yes, en inglés).
 > ./shell.sh --arch=i386
=== Compilación de SDK ===
¡Recuerda haber montado los archivos de proyecto primero!
Con los requisitos anteriores, ejecuta esto:
 > make -f games.mak
A partir de este punto deberías tener el client.so y server.so para cargar la base que elijas de Source SDK Base 2013. Para más instrucciones sober el runtime de Steam, lee el README.txt en la carpeta de instalación de runtime.
=Organización del código=
== Nomenclatura ==
El Source SDK está dividido en dos directorios en la raíz, para <gameType>, seguido por la fuente, <gameName>. Si estás montando un juego de un sólo jugador, usa el directorio/carpeta "sp". Si estás montando uno multijugador, la base debería estar en el directorio "mp"
* <gameType>
** sp (singleplayer o un sólo jugador)
** mp (multiplayer o multijugador)
* <gameName>
** hl2 (Half-Life 2)
** episodic (Half-Life 2 y sus expansiones Episodio 1 y Episodio 2)
** hl2mp (Half-Life 2: Deathmatch)
Cada directorio tiene una base appID (la que usa Steam para identificar juegos), para obtener los archivos del juego base, como texturas, modelos, sonidos y etcétera.
Quiero decir, el appID sirve para decir qué juegos necesita tu mod para que funcione. Para los mods, es mejor descargarse y poner el identificador de Source SDK Base 2013 y luego un sólo jugador o multijugador.
* [steam://install/243730 Source SDK Base 2013 Singleplayer o un sólo jugador]
** Cliente AppID: 243730
* [steam://install/243750 Source SDK Base 2013 Multiplayer o multijugador]
** Cliente AppID: 243750
** Servidor AppID: 244310 (revisa para obtener instrucciones para instalar este)
Estas apps base son muy similar, difiriendo mucho en el horario de actualización. La base singleplayer (o un sólo jugador), sólo se actualizará con Half-Life 2 y los Episodios, algo que no es muy frecuente. La base multijugador se actualizará
múltiples veces al año para incorporar cambios importantes, ya que hay juegos que usan esta base, como Team Fortress 2 y Counter-Strike Source. Ninguna actualización debería romper la compatibilidad de tu mod.
==Estructura del directorio==
Las carpetas tienen una función y significado, similar a la estructura de un directorio
* game - El contenido de tu mod va aquí. 
* src - Contiene todo el código de fuente para ese tipo de mod. La raíz del directorio src contiene archivos .sln o .mak para montar el código.
** common - Un par de archivos usados por las librerías server.dll y client.dll
** devtools - Scripts y utilidades que se usan para montar el código. Se suelen llamar a estos archivos por los proyectos, y no es necesario usar esta carpeta para algo concretamente.
** game - Todo el código fuente para tus DLL. 
*** client - Código usado por el client.dll (o client.dylib o client.so). Aquí hay carpetas específicas del juego.
*** server - Código usado por el server.dll. Igual que arriba, contiene archivos base del juego.
*** shared - Código usado por client.dll y server.dll.
** gcsdk - Un par de herramientas para montar las librerías.
** lib - Versiones binarias de las librerías que el código de fuente depende de. Esta carpeta es el directorio objetivo para vgui_controls (controles de interfaz), tier1, y mathlib (matemáticas).
** mathlib - Matemáticas y cálculos usados por el juego. 
** public - Archivos de cabecera para todos los DLL y librerías usados para el juego. Incluye unos cuantos archivos de código de fuente.
** thirdparty - Librerías de terceros para montar el código. Por el momento sólo contiene la librería protobuf de Google. Google Protocol Buffers (protobuf).
** tier1 - Clases de utilidad muy prácticas. Se compila en el archivo tier1.lib
** utils - Varias herramientas de desarrolladores.
** vgui2 - Código de fuente para vgui_controls, el cual es usado en client.dll.
Recomendamos que sigas las descripciones para añadir archivos para tu propio mod.
=Errores comunes=
A veces se pueden encontrar errores comunes en el SDK 2013. Por favor utiliza la antes de publicar otras soluciones.
==vgui_controls no compila.==
En el 14 de Febrero de 2014, el usuario Mangr0v3 identificó este error como un fallo de la compilación en el directorio cuya dirección contiene espacios: vpc.exe creará archivos .vcxproj con espacios sin comillas, en las direcciones, que provocarán conflictos. Leer https://github.com/ValveSoftware/source-sdk-2013/issues/225
Este error se solventó anteriormente obteniendo una copia nueva del SDK. Si usas el repositorio, simplemente sincroniza el SDK. O puedes descargar el zip de nuevo.
== Errores RegKey a la hora de generar los archivos de proyecto==
 "ERROR: Unable to find RegKey for .vcproj files in solutions."
Este fallo se produce usualmente, y es causado por que no hay una extensión asociada al programa.
===Visual Studio 2010===
* Abre el editor de registro (Regedit)
*# Tecla Windows + R
*# Escribe 'regedit' sin las comillas y Intro.
* Navega a una de estos registros, según el sistema operativo que uses:
 # para sistemas operativos de 32-bits (x86) :
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}
 
 # para sistemas operativos de (x64) bits:
 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Projects\{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}
* En la clave, tienes que crear un nuevo valor de texto. 
*# Clic derecho: Nuevo> Valor de cadena
*# Rellena el hueco con esto:
*#* Nombre: DefaultProjectExtension
*#* Valor: vcproj
*# Click "OK" para guardar el cambio.
===Visual Studio 2012===
Hay un parche creado por un miembro de la comunidad para solucionar este tipo de error en el Visual Studio 2012. Úsalo bajo tu riesgo.
Descarga el código desde GitHub (AutoIt v3 es necesario).
=Publicando tu mod en Steam=
Si tienes un juego basado en Source Engine, ya preparado para publicar en Steam, por favor lee la documentación para más detalles.