Una nueva versión inficial de código abierto de Warcraft II: Tides of Darkness
Este proyecto de código abierto no está afiliado, asociado, respaldado o de ninguna manera oficialmente conectado con Blizzard Entertainment, Inc., ni ninguna de sus subsidiarias o sus afiliadas. El sitio web oficial de Blizzard Entertainment se puede encontrar en http://www.blizzard.com.
Este proyecto es una empresa completamente independiente y no comercial. No está destinado a ventas o ganancias, y ninguna ganancia monetaria se deriva de su operación. Este proyecto está destinado solo a fines educativos e informativos .
Es importante tener en cuenta que para usar este proyecto de código abierto, se requiere una versión original de Warcraft 2 . Este proyecto/repositorio no proporciona ningún activo de juego de Warcraft 2.
Warcraft II: Tides of Darkness se lanzó en Europa en 1996. Como un niño pequeño, inmediatamente me enamoré de este juego. Pasé cientos de los nuestros jugando, tuve interminables batallas de red con mi familia y amigos. Dado que Warcraft II tuvo una gran influencia en mí y todavía estoy enamorado de este juego, decidí crear War2.5, que es una nueva versión inficial de código abierto de Warcraft II. Tiene los siguientes objetivos:
Comencé a trabajar en esto en 2021 como desarrollador único durante mi tiempo libre. Ahora, en enero de 2024, me di cuenta de que se requiere soporte adicional y el siguiente paso lógico es lanzar el público estatal de desarrollo actual en GitHub.
Consulte la sección Cómo construir
Ver sección Cómo ejecutar
Juega tu mapa favorito en cualquier temporada. Presione W, S, A, D para cambiar la temporada de la mosca sin recargar/reiniciar. Se puede ver Minimap en la parte superior derecha.




C ++ es el lenguaje de programación con el que comencé a aprender programación. Quería crear un proyecto de código abierto que utilice la programación orientada a objetos (OOP) en C ++ moderno. Por lo tanto, se utilizan clases, herencia, polimorfismo y conceptos adicionales. Mi objetivo era escribir un código que sea mantenible y flexible mientras usa C ++ moderna como las características C ++ 17 y C ++ 20. ¿Conoces Warcraft II y, como programador, espera objetos de tipo "mago"? Luego, solo mire en Mage.h y Mage.cpp. ¿Interesado en cómo los campesinos mina el oro? Simplemente abra CompositEstateMining.h y eche un vistazo.
El juego actual está diseñado utilizando el enfoque RTS Lockstep. Esto significa que todas las acciones relevantes, como la producción o movimientos de la unidad, dan como resultado eventos que se ejecutan al comienzo de un nuevo juego de juego (= tick). Esto es especialmente importante cuando se considera hasta ahora el código multijugador que falta. El código actual está lejos de ser perfecto, pero creo que le permite contribuir. ¡Su contribución es muy bienvenida!
Consulte la sección Cómo construir
Según lo escrito, trabajé durante tres años en mi rara freeTime, completamente solo en este proyecto. No obstante, este proyecto tiene un estado de desarrollo bastante avanzado. ¡War2.5 es al menos un poco jugable! Muchas mecánicas de juego ya se han implementado. Sin embargo, todavía faltan varios componentes principales, como la animación adecuada y la gestión del tiempo/marco, la red, la IA ... solo algunas de las cosas que funcionan:
Ver sección Cómo ejecutar
Este trabajo definitivamente no hubiera sido posible sin
Oh, bueno, faltan muchas cosas, con errores o podrían optimizarse. Hay cosas pequeñas con las que podría comenzar, por ejemplo, cuando se deben seleccionar hacer doble clic en una unidad todas las unidades visibles del mismo tipo. Y hay grandes cosas que podrías contribuir, por ejemplo, optimizando la ruta. Algunos ejemplos más:
Como puede ver, hay muchos lugares para empezar. ¡Su contribución es muy bienvenida!
El modo de depuración permite, por ejemplo, inspeccionar fichas:

La exploración funciona parcialmente:

Los edificios tienen colas de producción :

Seleccione y coman tantas unidades como desee:

PathFinding usando ASTAR :


Reproduce la música de juego original (o agregue propios archivos de sonido):

Use el navegador PUD para cargar cualquier mapa que desee:


La construcción de Linux se ha realizado en Ubuntu. Nota: War2.5 se puede construir y ejecutar en Ubuntu también dentro de Virtualbox.
sudo apt install libsdl2-image-2.0-0 libsdl2-image-dev libsdl2-mixer-2.0-0 libsdl2-mixer-dev libsdl2-ttf-2.0-0 libsdl2-ttf-dev git cmake git clone https://github.com/war2/war2tools.git
cd war2tools
mkdir build
cd build
cmake ..
make
sudo make installgit clone https://github.com/glfw/glfw.git
cd glfw
mkdir build
cd build
cmake ..
make
sudo make installgit clone https://github.com/hsbgit/war25.git
cd war25/src/build
cmake ..
make -j4HECHO
Desafortunadamente, no podemos simplemente hacer sudo apt-get instalar todas las libs requeridas cuando use Windows. Por lo tanto, tenemos que obtener las siguientes bibliotecas de terceros por nuestra cuenta. Sin embargo, no los construimos; Simplemente usamos los lanzamientos proporcionados.
Para hacer las cosas aún más simples, un conjunto de libs completamente funcional ya está incluido en 3rdParty/Win. Esto significa que no se requieren los siguientes pasos a menos que desee cambiar a otra versión lib.
War2Tools no tiene un lanzamiento precompilado. Por lo tanto, tenemos que compilar esta libación por nuestra cuenta:
Cambie las rutas de Windows SRC/3rdParty/Win/a las rutas correspondientes con los números de versión LIB correctos.
Hecho , la compilación y la vinculación deberían funcionar.
Copiar DLL de sus respectivas carpetas LIB a la carpeta de compilación
Este repositorio no contiene ningún activo de Warcraft 2. Por lo tanto, para ejecutar War2.5, se requiere una edición Warcraft 2 Battle.net para la extracción de datos. Su carpeta de CD debería verse así:

Como primer paso, tenemos que extraer los activos (sonidos, gráficos, etc.) del CD. Este trabajo definitivamente no sería posible sin el importador de Wargus y los scripts para Warcraft II que se utilizan inicialmente para extraer activos de su copia original de Warcraft 2.
wartool.exe your_warcraft2_cd_folder extracted_data
¡Eso es todo, comienza War2.5!