Estamos haciendo nuestro proyecto escolar con Unity3d, ya que estaban usando Shiva el año anterior (lo cual me parece horrible), y quería saber su punto de vista para esta herramienta.
Pros:
- multiplataforma, incluso escuché que Google lo implementará en Chrome
- Todo lo que necesitas está aquí
- los lenguajes de script lo convierten en una buena opción para las personas que no están programando gurús
Contras:
- multijugador?
- propietario, usted es totalmente dependiente de la unidad y su límite y no puede extenderlo
- es menos "hacer un juego desde cero"
- C ++ hubiera sido algo genial
Realmente creo que este tipo de herramienta es interesante, pero ¿vale la pena usarlo en la escuela para un proyecto que involucra a más de 3 personas de programación? ¿Qué aprendemos realmente en términos de programación al usar este tipo de herramienta (estoy de acuerdo con python y js, pero odio C #)? Podríamos haber usado Ogre en su lugar, incluso si estuviéramos aprendiendo x directo a partir de enero ...
Respuestas:
El principal "profesional" de Uinty3D es que es una locura rápida. No estoy hablando de rendimiento aquí, sino de velocidad de desarrollo. Tienes:
Además, Unity3d es realmente bueno en múltiples plataformas. Por supuesto, no puede crear, digamos, un juego .exe de Windows y luego, mágicamente, "simplemente funciona" en el iPhone; pero Unity se acerca bastante a eso. Lo que se requiere es "ajustar" más que "portar".
Por supuesto, en algunos casos, Unity3D no es ideal. El modo multijugador de red integrado en Unity está bien para algunos juegos LAN peer-to-peer, pero cualquier cosa que requiera un servidor central requiere que escriba todo el código de red desde cero. El sistema GUI de Unity es bastante peculiar y lento, por lo que crear GUI complejas en el juego es una molestia. Sin embargo, todos los demás sistemas GUI de juegos que he visto también son dolorosos, por lo que el de Unity no es tan malo en general.
Y, por supuesto, Unity3D es un poco menos flexible que los "motores de juegos" como OGRE, que ofrecen solo una biblioteca / código fuente. Su rendimiento no es exactamente de primera categoría, y dado que solo tiene un entorno limitado de secuencias de comandos, no puede usar algunos hacks inteligentes de bajo nivel para mejorarlo. Por ejemplo, si el renderizador de árbol incorporado de Unity no lo satisface por alguna razón, no puede escribir el suyo propio (bueno, podría hacerlo, pero estaría funcionando a través de scripts y probablemente sea demasiado lento y demasiado complicado ) Aún así, es posible hacer casi cualquier cosa con Unity siempre que no te importe perder un poco de rendimiento.
Sin embargo, la "estafa" más grande de Unity3D es el control de fuente. Como ya se mencionó, el propio servidor de activos de Unity cuesta un centavo. Y apesta, muy, muy duro. Ni siquiera tiene ramificaciones. Mientras que Unity3D teóricamente admite sistemas SCM de terceros, usarlos también está en peligro. He visto que la configuración de importación cambia "mágicamente" después de la confirmación SVN, o los parámetros de todos los objetos desaparecen después de usar Perforce. Todo esto se puede solucionar, pero de todos modos, Unity3D + Control de fuente = dolor.
Entonces, para responder realmente a tu pregunta. Creo que Unity3D es uno de los mejores, si no el mejor, motor de juego para un "pequeño" juego. Especialmente en etapa de prototipo.
Dicho esto, si estamos hablando de un proyecto educativo, recomiendo no hacerlo. Para aprender cómo funcionan los juegos, es mejor escribir uno en el nivel más bajo posible. Los motores de juego son una gran herramienta; pero para usarlo para obtener las máximas ganancias, es necesario comprender cómo funcionan y por qué funcionan de esa manera. Y la mejor manera de aprender esto es escribir su propio motor de juego, incluso si al final resulta horrible.
fuente
Comenzaré comentando tu lista:
Las secuencias de comandos no son solo un beneficio para los no programadores. Ser un (buen) programador es más que solo saber un idioma, es saber cómo deconstruir problemas y pensar de una manera particular. Los lenguajes de secuencias de comandos pueden permitir que un programador aproveche esas habilidades de pensamiento crítico de orden superior para producir resultados más potentes e interesantes en menos tiempo del que podría necesitar para producir resultados equivalentes mientras se preocupa por los detalles de nivel inferior que algunos lenguajes (C ++ viene a la mente) fuerza en la imagen.
El soporte multijugador (o la falta del mismo) es solo un problema de una forma u otra si su proyecto lo necesita.
No veo cómo "propietario" es una estafa. Si se trata de un proyecto escolar, es probable que no quiera pasar tiempo pirateando la fuente del marco que usa, o cualquier otra cosa. Además, DirectX también es propietario.
No hay absolutamente nada de malo en usar marcos o herramientas de nivel superior como Unity. "Hacer un juego desde cero" no es un logro: ¿qué consideras exactamente "desde cero?" Seguirás utilizando la API de gráficos de otra persona. El tiempo de ejecución de otra persona (incluso C requiere una biblioteca de tiempo de ejecución). "Hacer un juego" es lo que gana respeto, no "hacer un juego sin usar herramientas útiles".
C ++ siendo una cosa "genial" es un poco subjetivo. El lenguaje es utilizado muy a menudo por profesionales de la industria, pero probablemente no por las razones que usted pensaría. Como idioma, está comenzando a mostrar su edad y puede ser extremadamente engorroso en comparación con las opciones más modernas. En cualquier caso, los idiomas son solo herramientas y un buen programador debería poder aprender otros nuevos con relativa facilidad.
La gran ventaja de usar Unity para su proyecto escolar es que es un marco de alto nivel con una gran cantidad de trabajo de infraestructura ya implementado, esto le permitirá concentrarse en su juego y no en construir una base. Presumiblemente, tiene una ventana relativamente limitada para producir este juego, de modo que cuanto más aproveche las herramientas existentes, más tiempo tendrá para producir lógica o activos que son específicos de su juego y harán que su juego se vea y se sienta más completo: hay una curva de aprendizaje para Unity, pero terminas con mucho más a tu disposición mucho más rápido.
Una desventaja es que potencialmente está dedicando tiempo a aprender una herramienta específica que involucra conocimiento que podría no ser transferible, especialmente si decide que el flujo de trabajo y el entorno de Unity simplemente no son para usted y no desea volver a usarlo. . Además, Unity no tiene el flujo de trabajo 2D más obvio : está muy centrado en los juegos 3D, lo que implica toda la sobrecarga en activos artísticos. Pero creo que, para un proyecto escolar como el que estás describiendo, Unity es una muy buena opción.
fuente
Un problema importante con Unity es el control de fuente. Si no está trabajando en un equipo, esto no va a importar tanto (posiblemente), pero es probable que ese no sea el caso.
Puede usar Unity Asset Server, pero eso requiere 1) Unity Pro ($ 1500) y 2) una Licencia de servidor de activos por puesto ($ 500). Supongo que puede obtener algún tipo de descuento educativo, pero no es gratis.
Alternativamente, puede usar algo como SVN con Unity. Para soportarlo correctamente, todavía necesita Unity Pro.
Realmente no puede simplemente verificar una versión no profesional de Unity en SVN y esperar que funcione sin problemas. Su mecanismo para vincular GUID a activos, etc., no es exactamente seguro para SCM.
La funcionalidad multijugador es bastante decente, aunque para ser honesto, no he enviado un juego con él. En teoría, solo debe adjuntar vistas de red a las cosas y decirle lo que desea serializar para configurar la replicación correctamente. A partir de ahí, es necesario trabajar en la interfaz de usuario para conectarse a otros pares y configurar. Sin embargo, es principalmente de igual a igual. Es posible que pueda hacer la programación cliente / servidor ejecutando la unidad en modo sin cabeza, pero no me he metido con eso. Pero hacer que la persona A corra por la pantalla de la persona B es bastante fácil y rápido de hacer.
También C # es positivo en lo que a mí respecta. LINQ es súper expresivo. Tiene un manejo adecuado de excepciones y recolección de basura. Tiene paradigmas mucho más modernos como delegados, lambdas, interfaces y mejor soporte genérico que C ++. ( Editar : esto es obviamente controvertido. Mi punto es que C # no es un mal lenguaje. No quiero entrar en un largo debate sobre los pros y los contras del lenguaje vs. C ++).
Sin embargo, lo más positivo del uso de Unity es probablemente la línea de arte. Puede tomar un archivo PSD o Max (suponiendo que tenga instalado 3ds max) en la carpeta y se importa.
fuente
for ( auto x : xs )
.Actualización: Unity ahora ofrece todas estas características incluso en la versión gratuita, por lo tanto, ignore la respuesta a continuación.
Algo que vale la pena señalar: si está utilizando la versión gratuita de Unity3D, no podrá utilizar varios efectos, incluidos los sombreadores de procesamiento posterior (como la floración) y, mucho más importante, las sombras dinámicas. Obviamente, estos no tendrán un gran efecto en el flujo de trabajo del proyecto, pero sí imponen restricciones sobre lo que se puede lograr de forma gratuita con el motor.
fuente
La respuesta de Nevermind cubre las cosas bastante a fondo, pero solo para contribuir al lado del control de la fuente de las cosas, en realidad no es tan terrible una vez que aprendes a buscar un puñado de trucos:
En caso de que quiera más detalles sobre estos puntos, publiqué hace un tiempo sobre el uso de git con Unity basado en mi experiencia en algunos proyectos de Unity bastante grandes: http://goo.gl/ivJVR
fuente
Realmente. Multijugador es compatible. Es simplemente una cuestión de elegir un servidor que desea ejecutar su juego.
El más popular en el mercado ahora es "SmartFox Server", que ofrecen algunos paquetes diferentes, todos los cuales son gratuitos (hasta cierto punto). Solo es gratis si planeas tener una cierta cantidad de jugadores, ya que cada paquete permite una cierta cantidad de jugadores "gratis".
Si elige actualizar, el precio es bastante elevado para un desarrollador independiente. Entonces ... A la larga, si tienes muchos jugadores en tu servidor, entonces tendrás que cobrar por tu juego en lugar de cargarlo en sitios como Download.com como un juego completo gratuito. Esto puede no ser un problema para algunos, pero la mayoría de nosotros no puede pagar $ 2,500 de su bolsillo por un servidor.
Por ejemplo: SmartFox pro permite 20 jugadores gratis. Si desea actualizar, le costará 500 euros, que es un poco más en EE. UU., Alrededor de 600-700, y que permite 100 conexiones.
La próxima actualización es para la cantidad máxima de jugadores de 500, y es de 1000 euros, pero ... No tienes que pagar los 1000, pagas la diferencia.
Por lo tanto, tendrá que pagar solo 500 euros más, en lugar de los 1000 totales. Las últimas actualizaciones admiten una cantidad ilimitada de conexiones, por 2.000 euros. Que es casi $ 3,000 US.
Entonces, si actualiza desde las 500 conexiones, paga 1000 euros, si actualiza desde 100 conexiones, paga 1,5000 euros y, por supuesto, 2,000 euros para actualizar de forma gratuita.
Además, este servidor es muy fácil de configurar con Unity y hay numerosos videos tutoriales sobre cómo hacerlo exactamente en Youtube.
fuente