Pregunta

Hace

Más de 5 años que estaba jugando con DirectSound y Direct3D y me pareció muy emocionante aunque tomó mucho tiempo para conseguir buenos resultados con C ++. Yo era un estudiante universitario a continuación. Ahora tengo la experiencia de desarrollo de la empresa en su mayoría en C # y PHP, y lo hago para vivir. Realmente no hay oportunidad de ganar dinero con el desarrollo del juego serio en nuestro país. Cada día más y más me parece que he perdido algo. Así que decidí pasar una hora o así cada día para hacer la programación para la diversión.

Así que mi idea es construir una simulación del mundo. Me gustaría empezar con algo sencillo - algunas criaturas de apariencia humana que viven su vida - como Sims 3, pero mucho más sencillo, basta con necesidades básicas, animaciones básicas, recursos gráficos mínimos - supongo que no será una ciudad, pero sólo una casa grande para un comienzo. La idea es tener algún tipo de una aplicación de servidor que almacena los datos del mundo en la base de datos MySQL, y algunas aplicaciones cliente - bots de cuerpo AI menos que simulan el movimiento y algunas interacciones con el mundo y con los demás. Pero no sería divertido sin 3D. Por lo que también son clientes 3D - puedo entrar en ese mundo virtual y ver los robots de AI vivos. Cuando el bot entra en el área visible, se convierte en material de - carga una malla y animaciones, por lo que puede verlo. Cuando salgo, los robots pierden sus cuerpos de malla 3D de nuevo, pero su vida virtual todavía continúa.

Con el tiempo espero que sea como algunos scripts caja de arena ampliable a experimentar con diferentes algoritmos de inteligencia artificial y así sucesivamente. Pero no me la intención de crear un MMORPG en toda regla: D

He buscado muchas cosas posibles que necesitaría (libres y de código abierto) y ahora tengo que tomar una decisión:

  • Ogre3D + ENET (o RakNet). Vieja buena C ++. Pero no me retrasar tanto que no voy a divertirse más?

  • CrystalSpace. Formalmente no es un motor de juego, pero muy cerca de eso. C ++ de nuevo.

  • Mogre (Ogre3D envoltura para .NET) + Lidgren (biblioteca de red que ya se utiliza en algunos proyectos de juego). Bueno - me gusta C #, que es bueno para una programación rápida y también puede ser utilizado para scripting.

  • XNA parece sólo un marco, no un motor, así que realmente tienen dudas, debería siquiera mirar a XNA Game Studio: (

  • Panda3D - motor de juego completo con retroalimentación positiva. Me gusta mucho la idea de tener todas las herramientas en un solo paquete, que tiene buenas críticas como un motor amigable para los principiantes ... si sabe Python. Por el lado de la C ++, Panda3D tiene documentación casi inexistente. Tengo 0 experiencia con Python, pero he oído que es fácil de aprender. Y si va a ser divertido y desafiante entonces supongo que me beneficiaría de la experiencia en un lenguaje de programación más.

¿Cuál de los sugieres, no a causa de las características avanzadas o bien soporte de la plataforma, pero sobre todo para la diversión, fácil flujo de trabajo y la capacidad de expansión, y por lo que puede crear e integrar todos los componentes que necesito - el servidor con la base de datos, robots de AI y una aplicación de cliente 3D?

¿Fue útil?

Solución

Si te gusta Python, hay enlaces para Ogre. Echa un vistazo a pitón-ogro . Lo he usado un poco y parecía lo suficientemente estable como para ser utilizado. Sin embargo se encuentra con el fallo ocasional como la base de usuarios no es tan grande.

Tengo más experiencia con la llanura C ++ ogro, que me gusta utilizar mucho. No creo que le hará perder mucho. Parece que su proyecto podría escalar a un nivel bastante grande, y se necesita una gran cantidad de actuación para hacer eso. En este caso C ++ no es una mala opción.

De todos modos, una vez que el motor está hecho, es prácticamente todo acerca de secuencias de comandos. Y se podría hacer eso en un lenguaje de alto nivel si quería.

Otros consejos

Sólo he utilizado XNA, por lo que no puedo darle una buena comparación a los otros. Me gustaría decir que mientras XNA es sólo un marco, TorqueX 3D es un motor. Usted consigue el acceso a los archivos binarios del motor TorqueX 2D y 3D cuando se suscribe a desarrollar para XNA ($ 100 / año).

No he trabajado con el motor 3D, pero he utilizado el motor 2D. Me gustaría decir que la documentación sobre el API puede ser un poco escaso, pero tienen algunos muy buenos tutoriales de introducción y un foro bastante útil y activa de las preguntas que no son contestadas por los tutoriales.

Su experiencia con C #, obviamente, ser muy útil. Usted tiene que pegarse con el desarrollo de Windows sin embargo, porque usted no tendrá acceso a la pila de red (o base de datos) en la Xbox 360.

Una vez que trabajé a través de los tutoriales y me acostumbré al estilo de torque, me pareció que estaba bastante divertido trabajar con él. Es muy fácil añadir objetos / comportamientos. El soporte de sonido ha sido mejorado y es muy simple, con algunos de los últimos lanzamientos de XNA Framework. Tiene un buen editor para 2D, y creo que el editor de 3D es también decente (en realidad no lo he probado) para ayudar a empezar a crear niveles. Creo que es carente de la red / departamento de la base de datos, sin embargo, habría que utilizar el material estándar .NET o traer otras bibliotecas para trabajar con ellos.

Creo que valdría la pena su tiempo para echar un vistazo a él de todos modos y compararlo con los otros. Creo que se puede descargar una versión de prueba (30 días), incluso sin registrarse en XNA si quiere jugar con ella. Buena suerte!

Panda3D que parece ser prometedora, ya que tiene una forma de modificar las mallas en tiempo de ejecución (esta característica es deficiente, con errores o de otro modo difícil de usar en muchos motores 3D), que sería lo que necesita para el cambio de la malla del lado del cliente interactivas registrados por un servidor común. En su base de datos, asegúrese de incluir una marca de tiempo en las modificaciones para que pueda ejecutar consultas apropiadas para generar parches para los clientes para obtener información de actualización de malla, ya que se altera.

utilizando InnoDB se podía hacer algo así como mesas de mi SQL es probablemente fuera pero esto da la idea:

create table `vertex` (
  `id` bigint(15) not null auto_increment,
  `when` timestamp default now() not null,
  `x` number not null,
  `y` number not null,
  `z` number not null,
  `cR` number default 0.0 not null,
  `cG` number default 0.0 not null,
  `cB` number default 0.0 not null,
  `cA` number default 1.0 not null,
  `u` number default 0.5 not null,
  `v` number default 0.5 not null
) primary key (id) ENGINE=InnoDB;

create table triangles (
  `p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `when` timestamp default now() not null
) primary key (p1,p2,p3) ENGINE=InnoDB;

ID es ID de vértice cuando se marca de tiempo que le permite hacer los parches de actualización x, y, z es el punto de vértice 3d cR, CG, CB, CA es de color RGBA vértice u, v es la coordenada del vértice de la textura p1, p2, p3 se refiere a los vértices en la tabla de vértices para formar triángulos según lo indicado por las referencias de clave externa ... InnoDB permite a prevenir vértice definido (es decir: de consistencia) asuntos relativos modo pueden así utilizarla. Si es aceptable para eliminar todos los triángulos con un vértice borrado en su cambio de situación 'restringir' a 'en cascada' (restringir hace que sea un error al eliminar un vértice con triángulos que lo utilizan)

En cuanto al algoritmo de malla bot, básicamente está implemententing una matanza selectiva de LOD para los robots no a la vista. Muchos motores ya son capaces de hacer esto para usted ya. Por ejemplo todas las mallas desollado / animación del bot se pueden hacer a los niños a objeto externo del bot en Panda3D y el si el objeto exterior de la bot se vaciados fuera del ámbito visible entonces ninguno de los niños están referenciados en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top