Juego de Java en un día o dos [cerrado]

9

Somos tres personas que vamos a hacer un juego simple en Java como proyecto escolar (Universidad, primer año). El juego tiene que estar orientado a objetos. No tenemos mucho tiempo, 10-20 horas como máximo. Ninguno de nosotros tiene experiencia en el desarrollo de juegos, pero todos tenemos habilidades justas en Java.

Podemos elegir exactamente qué tipo de juego, y ahí es donde radica el problema. ¿Qué tan alto debemos apuntar? Hay una competencia involucrada, por lo que queremos hacer el mejor juego en el tiempo que tenemos. ¿Es un juego en 3D poco realista? ¿Deberíamos usar algún motor de juego / biblioteca? ¿Qué tipo de funcionalidad debemos evitar?

Øyvind
fuente
44
3D apunta demasiado alto independientemente del tiempo, teniendo en cuenta que no tienes experiencia en gamedev. ; P
El pato comunista
tristemente, me di cuenta de que: P
Øyvind
¡APESTAR! paletas, pelota hay objetos propios, agregue una puntuación. la pelota golpea una paleta, multiplica por -1 la dirección. si la pelota pasa el punto de paleta del otro equipo, haga que la pelota le sirva al otro jugador. o eso es demasiado fácil?>
Spooks
Creo que tal vez deberíamos aspirar a un concepto mejor y más creativo, aunque fácil de desarrollar ...
Øyvind
1
¿Qué tal compartir tu juego con nosotros? :)
cenizas999

Respuestas:

23

Evite 3D , ya que necesitaría saber cómo hacer modelos 3D o encontrar buenos modelos, necesitaría saber cómo cargar dichos modelos (a menudo una tarea épica en sí misma, lamentablemente), y cómo dibujarlos en la pantalla (p. Ej. OpenGL o DirectX requieren mucho trabajo para ganar poco, e incluso un motor como jMonkeyEngine requiere conocimientos sobre cómo utilizar el motor, junto con conocimientos básicos de 3D). Brillar imágenes 2D en la pantalla y moverlas es mucho más simple que tratar con vértices, materiales, ver matrices, transformaciones, etc. etc. Creo que entiendes el punto.

Quédese con las bibliotecas y clases de Java incorporadas: Graphics2D, ImageIO, oyentes de mouse y teclado AWT, Canvas, API de Java Sound, etc. Los beneficios de seguir con estos en lugar de encontrar otra biblioteca incluyen: ya los conoce (hasta cierto punto), sabe que están bien probados y son estables y generalmente tienen sentido, la documentación y los recursos en línea son abundantes y son portátiles, por lo que no tiene que preocuparse por instalar bibliotecas adicionales con bibliotecas nativas y todo eso.

Construya una pequeña biblioteca de fragmentos de código con anticipación. Esto incluiría cosas como cargar una imagen, dibujar la imagen en una posición en la pantalla, escalar la imagen y otros efectos, reproducir un sonido, reproducir música de fondo, detección de colisión de cuadro delimitador, dibujar texto. También tenga una aplicación esqueleto que abra un Marco (o Applet), le agregue un Lienzo, y los métodos de pintura y repintado del lienzo deben anularse, y un hilo debe estar en bucle con el método de repintado del lienzo (o un temporizador que lo llama). Puedes aprender estas cosas si buscas Java 2D game programming. Suponiendo que tenga acceso a la biblioteca de su universidad, debe tener una serie de buenos libros de juegos Java a su disposición; échales un vistazo y hojea los fragmentos antes mencionados, y otros que eché de menos.

Practique el control de origen y la división del trabajo con su equipo antes de tiempo.¿Vas a usar Subversion, Git, Mercurial o algo más? ¿Están las computadoras de todos configuradas con la misma versión actualizada de Java? Cree su repositorio, confirme / inserte algunos archivos, asegúrese de que todos tengan el repositorio desprotegido y listo para su sistema. Tal vez cometa una aplicación 'hello world' y asegúrese de que todos puedan extraerla, modificarla y comprometerla; y asegúrese de saber cómo manejar la fusión (ya sea que la evite por completo con una buena comunicación o programación de pares, o si sabe cómo usar una herramienta de fusión). O, si no está familiarizado con el control de código fuente, asegúrese de encontrar una solución que funcione; ya sea que se trate de programación en pareja mientras la tercera persona hace arte o sonidos, o algo más, solo asegúrese de organizarse desde el principio o perderá toneladas de tiempo.

Marcar enlaces a sitios web que ofrecen medios gratuitos. Ha habido bastantes sitios de este tipo en otras preguntas aquí; sitios como freesoundson perfectos para encontrar rápidamente medios útiles para usar en su juego cuando no tiene tiempo para hacerlo desde cero. Marque este sitio, por supuesto, para que pueda hacer una pregunta si se queda atrapado en algo. Marque foros como los foros de gamedev.net para que pueda buscar respuestas. Si opta por utilizar una biblioteca de terceros, marque su sitio web. Organice estos marcadores en carpetas y tome tantos como sea posible, y asegúrese de compartirlos para que los tres tengan la misma biblioteca útil de marcadores. No toma mucho tiempo recorrer y recopilar estos marcadores y organizarlos por tipo / tema, pero le ahorra mucho tiempo cuando no tiene que recordar todos esos sitios web en el medio de su proyecto.

Para obtener más sugerencias, consulte las respuestas a mi pregunta "¿Cómo prepararse para una competencia de desarrollo de juegos?" .


Para abordar el resto de su pregunta ... El consejo general es: no apunte alto . Sin embargo, puede variar ampliamente dependiendo de qué tan preparado esté (es decir, mis sugerencias anteriores) y sus habilidades en Java. Esto es en gran medida un juicio personal basado en su historial, pero dado que ninguno de ustedes tiene historial de hacer juegos (y, por lo tanto, no puede juzgar el tiempo necesario), apunte realmente muy bajo . Proponga una idea realmente básica que se pueda implementar fácilmente en 2D sin ningún concepto avanzado (por ejemplo, evite colisiones por píxeles, cálculos físicos locos, efectos de partículas, etc.). Pero luego crea una lista priorizadade las características del juego, con el mayor detalle posible (por ejemplo, divida cada característica en tantas tareas separadas como sea posible). De esta manera, simplemente avanza en la lista lo más lejos posible, y si no llega a algunas tareas de baja prioridad, no debería ser un gran problema. Esto debe hacerse con cuidado (aún necesita un juego funcional al final del tiempo, por lo que hay un conjunto mínimo de tareas que deben hacerse y algunas tareas dependen de otras tareas), pero en general creo que este es el mejor enfoque cuando no sabes cuánto tiempo tomarán las cosas.

Ricket
fuente
Ese es un excelente consejo.
Alexander Gessler
1
Buenos puntos. Aunque creo que el control de fuente también puede hacer las cosas más complicadas para los principiantes (imagina que alguien arruina el repositorio). Cuando el tiempo es crítico, uno no debería comenzar a usar nuevas herramientas. Pero si ya está familiarizado con un VCS, entonces ciertamente debería usarse.
bummzack
44
Los consejos de Ricket para apuntar bajo y usar una lista priorizada son excelentes: tratan de minimizar el riesgo y aumentar la iteración. Desea evitar situaciones en las que tiene que trabajar durante 8 horas antes de poner en marcha algo. Si no funciona o si lleva más tiempo, puede terminar sin nada. En su lugar, trate de ejecutar un juego en menos de 1 hora y luego pase el resto de sus 10 horas agregando cosas, jugando, refinando. A medida que juegues, encontrarás más cosas para agregar.
amitp
@bummzack De acuerdo! REALMENTE puede interferir, por lo que practicar y estar seguro de ello es clave, pero también puede ser súper impresionante y útil si se usa correctamente.
Ricket
Lo mejor para hacer que las cosas funcionen rápido es hacerlo en forma de programación extrema (mejor que svns), lo que significa que equipos completos se sientan juntos frente a una computadora. Funciona muy bien en equipos pequeños (2-3 máx.). Se apoyan mutuamente y los problemas se resuelven más rápidamente, no se frustran.
Notabene
2

No apuntes demasiado alto. Elija algo que le interese y cree algo simple alrededor de eso. Ejemplo: tal vez estés realmente interesado en aprender sobre un motor físico. ¿Por qué no construir un rompecabezas de física como totem-destructor o similar? Intente girar en torno a un elemento central y no incluya otras cosas complicadas como IA, renderizado / gráficos / sombreadores sofisticados, etc.

Concéntrese en un aspecto e intente encontrar una mecánica de juego que se adapte a eso. Si estás interesado en 3D, tu juego podría ser tan simple como tres en raya, pero concéntrate en obtener buenos gráficos en 3D en la pantalla.

No intentes aprender demasiadas cosas nuevas a la vez. Utilice los marcos / herramientas existentes tanto como sea posible.

Para resumir esto, aquí hay algunas ideas para un juego de "inicio": ¿Cuáles son los buenos juegos para "ganar tus alas"?

Actualización: dado que tiene muy poco tiempo, reduciría las "cosas nuevas para aprender" a un mínimo absoluto. Un motor de física ya podría ser excesivo si nunca ha usado uno antes. También elija una mecánica de juego que ya conozca, preferiblemente con un conjunto de reglas bien definido y pequeño y una cantidad limitada de estados de juego.

bummzack
fuente
2

Si no tienes experiencia previa en escribir juegos en 3D, abandonaría la idea en 3D de inmediato. En cambio, concéntrese en un concepto simple de juego e intente implementarlo usando gráficos 2D simples. Asegúrate de implementar primero la mecánica del juego : si has terminado antes, aún puedes agregar efectos visuales sofisticados.

Pero un juego sin jugabilidad no es un juego, mientras que un juego sin gráficos impresionantes puede ser divertido.

20-30 horas de trabajo es muy poco tiempo para un buen juego, por lo que realmente necesita planificar y priorizar sus tareas con cuidado o nunca obtendrá un resultado adecuado.

Alexander Gessler
fuente
Un buen punto de hecho :)
Øyvind