No quiero extenderme en el tema, pero de diré los principales motivos por los cuales se generan errores en el core y la DB.
*Parte Técnica*.
- Basarse única y exclusivamente en los archivos dbc. ( Los archivos dbc son aquellos que se utilizan para reducir la latencia del cliente del juego. )
Estos archivos suponen una copia de la DB original, que si bien es una aclaración "correcta", en parte es una gran contradicción...
El cliente funciona con una carpeta llamada "DBFilesClient" la cual almacena este tipo de archivos y hace que nuestro querido wow no tenga que hacer un envío masivo de paquetes que puedan aumentar considerablemente la latencia (MS) al jugarlo, sólo para descargar la información necesaria con la que nuestro juego funcione correctamente; en vez de eso, busca esa información directamente en los .MPQ.
Aunque hay un pero...
Estos mismos archivos NO suponen toda la información verídica de nuestro wow, o sea, que no todo el tipo de daño, descripción, marcadores, tipo, etcétera, tengan por qué ser correctos.
El propio Blizzard hace cambios desde su Base de Datos, por lo cual pueden haber pequeñas alteraciones que sólo se vean en nuestro juego cuando descargamos esa información en nuestro cache, que aunque sea una simple palabra, número flotante o lo cualquier otra columna, claramente hace un enorme hueco y por lo tanto un gran problema a futuro.
Este problema se vuelve aún más critico al saber que NO puedes modificar siquiera estos mismos archivos por los cuales funciona el emulador, ya que haciéndolo tendrías que crear parches para los clientes de los jugadores puedan ver los cambios también.
La única manera de remediarlo es scripteándolo directamente en el core y la DB, lo cual llevaría tiempo y una amplia cantidad de conocimiento.
-Mal codding o mala programación. ( olvidarse de eventos, hechizos, npc, textos, corchetes, puntos y comas entre otros dentro del código, o sencillamente no darle un mantenimiento adecuado al mismo ).
Como sabemos, aquellos que entienden un poco de C++ u otro lenguaje de programación que se use en la emulación de WoW y desee ayudar colaborando con algún arreglo o implemento, hace un cambio o una adición dentro del núcleo/DB; pero no siempre este código escrito originalmente predomina, ya que se le suelen hacer constantes cambios en base a su efectividad.
Algunos crean bloques completos de funciones inútiles, otros utilizan métodos que si bien funcionan por un tiempo, pero que si se dejan de lado y no rigen un mantenimiento específico, junto con la modificación de un Header o alguna variable, este código escrito de una función o de un archivo completo se dañará y tardará mucho tiempo hasta que alguien lo note y lo arregle.
-Usar fuentes poco fiables para modificar algún valor de la Base de Datos o el core. ( Rumores/Comentarios/Opiniones e información poco concreta que no ayude en la búsqueda de una solución o implemento )
*Parte Humana*:
-No actualizar el emulador. ( Omitir cambios claves que puedan mejorar tu servidor )
-Hacer modificaciones sin saber qué valor puede afectar a otros valores. ( Cosa que casi no pasa, pero antiguamente era frecuente gracias a la poca accesibilidad a una fuente de conocimiento ).
-Tener algún archivo corrupto en el emulador, ya sea un dbc de un parche anterior o un archivo faltante de Vmaps/maps/mmaps.
PD: Las comunidades encargadas del desarrollo de emuladores Open Source del WoW tratan lo mejor posible de simular el mundo original del juego, pero no siempre se logra al 100%, ya que este proceso puede llevar tiempo y no siempre logra finalizarse por completo.
PD: Esto lo hago desde un punto de vista conspirativo, cualquiera que tenga mejores argumentos por favor corríjanme.