¿Cuáles son algunos principios fundamentales de diseño y arquitectura de software cuando se construye un servidor / cliente de juegos MMO?

Muchas de sus preguntas dependen mucho de saber más sobre el diseño del juego, el género, la escala del mundo, la plataforma / audiencia objetivo, el método de monetización, etc., pero daré un giro para proporcionar algunas respuestas generales.

La estructura de datos más común transmitida son los datos de posición y casi todo lo demás, en comparación, es poco frecuente. El diseño de tu juego tendrá un gran impacto en el aspecto del tráfico.

No estoy seguro de qué quieres decir con qué tipo de datos del juego deberían / ​​no deberían enviarse, ya que eso depende del diseño de tu juego, pero vale la pena recordar que todo lo relacionado con el posicionamiento / espacial (combate, etc.) tiene mayor costo potencial para procesar / transmitir (un mensaje en resultados da como resultado 20 mensajes, o la cantidad de jugadores disponibles, y estos mensajes suelen ser de alta velocidad), mientras que los mensajes de tipo jugador a jugador son mucho menos costosos (un mensaje da como resultado un mensaje fuera) y los mensajes centrados en el jugador son menos costosos.

En la mayoría de los juegos, la latencia de la transmisión y el procesamiento remoto no será lo suficientemente oportuna. Si la física es una parte integral de su juego y no solo una característica de atracción, podría considerar una validación perezosa o un sistema de verificación de round robin.

Sus datos mundiales dependerán en gran medida del diseño de su juego, pero podría comenzar con la posición, la rotación, la plantilla del objeto, el nombre personalizado, la escala. e ir desde allí.

Dependiendo de la complejidad de su juego, un DB relacional probablemente valga la pena. Nadie se arrepintió de estructurar y organizar sus datos. Perderá la cabeza (eventualmente) si tiene todo almacenado en hojas de cálculo. Sugeriría comenzar con dos esquemas, estático y dinámico, y continuar desde allí. Si es necesario, siempre puede volver a implementar la parte dinámica en algo más liviano más adelante, mientras se ocupa del escalado de rendimiento. Particionar los datos por adelantado entre estática y dinámica es un buen lugar para estar. Al principio, necesita consistencia, confiabilidad y facilidad de cambio. Por lo general, las estructuras / enfoques de rendimiento optimizado son más difíciles de trabajar. Vea esta pregunta para comentarios sobre MMO y DBMS: ¿Todos los MMO usan tecnología DBMS?

Dependiendo del alcance del diseño de tu juego, un MMO puede ser un proyecto bastante grande.

Herencia. Por lo general, todos los NPC provienen de la misma clase básica y tienen los mismos atributos de HP, maná, etc.