2010-06-06 19 views
8

Inmediatamente coloco esto como una wiki comunitaria. Todavía no quiero pedir ayuda para programar o tengo una pregunta específica sobre programación, sino el proceso y los recursos necesarios para crear ese juego.¿Si quisiera hacer un juego de Pac-Man?

En pocas palabras: mi amigo de la universidad y yo decidimos darnos un gran desafío para mejorar nuestras habilidades en programación. En seis meses, queremos mostrarnos un juego Pac-Man. Pac-Man estará controlado por IA como los Fantasmas y cualquier Pac-Man que viva más tiempo después de que gane un par de intentos.

Esto no es como todo lo que hemos hecho hasta ahora. El objetivo aquí, para mí, no es crear un juego perfecto, pero para tratar de completarlo, aprende un montón en el proceso. Incluso si no termino en el tiempo, lo cual es una buena posibilidad, me gustaría haber intentado esto al menos.

Así que mi pregunta es esta: ¿cómo debo empezar a prepararme? Ya he empezado matemáticas vectoriales, matrices, todas esas cosas divertidas. Mi plataforma deseada sería DirectX 9.0c; es eso aconsejable? Tenga en cuenta que esto no es una preferencia solo para este proyecto, pero deseo tener algún tipo de futuro en el desarrollo de gráficos, así que quiero elegir una plataforma que sea segura para el futuro.

En cuanto al desarrollo del juego en general, ¿qué debería tener en cuenta? Nunca antes había hecho un juego real, por lo que cualquier consejo para el desarrollo de proyectos de mediana escala (si este fuera un proyecto de mediana escala) es muy apreciado.

Mi principal preocupación son las caídas y los desmotivadores.

Lo siento si la pregunta es tan vaga. Si no pertenece aquí, lo eliminaré. De lo contrario, todos y cada uno de los consejos sobre la realización de proyectos más grandes es muy apreciada.

+7

Eche un vistazo a 'http: // www-cs-students.stanford.edu/~ amitp/gameprog.html' que puede ayudar con algunos temas. – tur1ng

+0

¡Qué página tan genial! ¡Muchas gracias por el enlace! – IAE

+0

El equivalente de DirectX de "¡Hola, mundo!" es dibujar un triángulo en la pantalla, usando el sistema de renderizado. Intenta buscar "DirectX draw one triangle". ;) –

Respuesta

2

En lo personal, esto es lo I haría:

  • juegos de código abierto estudio para ver lo que hacen
  • comprar un libro sobre programación de juegos (en realidad, no tengo a book about game programming ya, pero es probable que desee algo más reciente que)
  • recoger un conjunto de herramientas de desarrollo de la biblioteca/juego (Sourceforge, Google Code)
  • trabajo a través de los tutoriales que vienen con esa biblioteca , Posiblemente cambiar a una biblioteca diferente si el API es demasiado extraño
  • llegar a un documento de requisitos
  • elaborar un diseño de primera pasada ("plan para lanzar una distancia"), try to have somebody review it
  • decidir sobre un plan de pruebas
  • write up a schedule, no porque quiera permanecer en la fecha prevista, sino porque quiero romper las cosas en tareas definidas de fácil
  • escribo el juego completo más pequeño que pude (por ejemplo., un sprite Pac Man que puedo controlar el interior de una ventana: no hay laberinto, fantasmas, puntuación, vidas, capacidad de morir, etc.)
  • agregar funciones a ese juego hasta que lo haya implementado todo
+0

Esas son algunas ideas bastante sólidas. Solo una pregunta, ¿qué definirías como una API "extraña"? – IAE

+7

Antes de hacer cualquiera de las anteriores, instalaría un sistema de control de versiones y me familiarizaría con su uso. –

+0

Ponlo en mi lista, gracias! ¿Hay alguno en particular que puedas recomendar, o más bien un "experimento y ver por ti mismo" algo así? – IAE

1

¡Parece una buena idea para un proyecto de aprendizaje!Las 2 cosas generales que recomiendo para su enfoque son

  1. trabajo en iteraciones
  2. leer un montón sobre C++ y DirectX en el camino

inicio pequeña - escribir un código que no hace más que dibuje Pac-Man en la pantalla. Luego desarrolle eso implementando movimiento en la pantalla. Luego construya los límites del mapa y la incapacidad de viajar a través de ellos. Y continúe de esta manera, priorizando la siguiente tarea que necesita completar y luego haciendo lo que sea necesario para completarla. Intenta no hacer las tareas demasiado grandes.

Para averiguar cómo completar las tareas, tendrá que leer. Los libros, los sitios web y el código existente son muy útiles para descubrir cómo hacer lo que desea. Vale la pena mirar varias formas diferentes de completar la misma tarea, porque algunas formas son mejores que otras, o podrían ajustarse mejor a su proyecto.

9

Dado que no ha probado este tipo de cosas antes, aquí hay algunas cosas que recomendaría.

Comience con algo distinto de DirectX (y, presumiblemente, C++)

DirectX y C++ quedar expuesto a una gran cantidad de material de bajo nivel se puede aprender más adelante. Mantenga las cosas simples y tal vez intente con XNA y C# que estén lo suficientemente cerca como para poder portarlo más tarde, pero le permitirá omitir muchas cosas como administración de memoria y punteros por el momento.

de inicio con 2D en 3D en lugar de

El Pacman original es en 2D por lo que no será necesario matemáticas del vector por ahora.

Entonces, ¿dónde te deja eso?

Bueno, algunas cosas en las que pensar son en el bucle del juego, manteniendo las cosas sincronizadas, actualizando la pantalla y respondiendo a la entrada del usuario.

Estos son excelentes principios y le permitirán obtener algo mucho más rápido. No subestime lo importante que es seguir viendo el progreso; esto es difícil si establece la barra técnica demasiado alta inicialmente.

me gustaría ir por este camino (la orden de mantener las cosas divertidas e interesantes)

  1. Obtener mostrando una pantalla - esto es muy visual
  2. conseguido Un Pacman en respuesta a la entrada del usuario
  3. Obtener Pacman limitado a dentro de las paredes
  4. Obtener un fantasma en respuesta a la entrada del usuario secundaria - se puede perseguirse
  5. Figura algunos de detección de colisiones
  6. Obtener los puntos y las píldoras de poder de representación para que pueda anotar y comer fantasma
  7. hacer que algunas más fantasmas y averiguar AI
  8. Calcular el código para encontrar cuando el nivel se ha completado
  9. hacer el cambio mapa y Estado restablecer cuando en un nuevo nivel

Una vez que tenga este funcionamiento y funcionamiento, podrá decidir si desea jugar con mejor AI, matemática 3D o cambiar a C++.

+0

¡Hola! Gracias por el comentario, pero para aclarar: no soy un principiante en la programación de juegos. Ya hice una defensa de torre en ActionScript y ya hice la programación con XNA C#, así que estoy al tanto del bucle del juego y * algunos * procesos, aunque no demasiados. La razón por la que quiero hacerlo con C++ es que se trata de un lenguaje de programación real utilizado para la mayoría de los juegos y como el idioma principal que enseñan los cursos universitarios. Aunque agradezco el comentario, y tomaré sus comentarios en serio ^^ Especialmente sobre 2D- doh! Deberían haberse dado cuenta de que los vectores podrían no entrar en juego allí. – IAE

+0

¡Eso es genial! Todavía me quedaré con una secuencia similar a la descrita anteriormente si no quieres perder el corazón. Tratar de escribir cosas como la IA antes de que puedas verla en acción es un proceso doloroso;) – DamienG

+1

Sí, por eso modelé mis algoritmos de búsqueda de ruta en Excel, puedes ver exactamente qué está sucediendo (y obtienes la reputación de estar tan loco excel guy dentro de la compañía) –

3

Reproducir pacman! ¡Esta es la primera tarea para tu proyecto!

+0

Debido a eventos recientes: http://www.google.com/pacman/ – tur1ng

4

Tuve que escribir un juego pacman en Java para una clase OO. Descubrí que es muy sencillo, posiblemente con la excepción de descubrir la mejor manera de mapear paredes. Después de un poco de investigación, me encontré con esto: http://javaboutique.internet.com/PacMan/source.html que utiliza el cambio de bit para determinar las paredes. Parece excesivo en complejidad, pero me pareció bastante elegante después de jugar un poco con las matemáticas. Aparte de eso, pacman es un concepto muy amigable con la matriz, así que utiliza una matriz para la pizarra, algunos sprites básicos, juega con la velocidad y la actualización, realiza un seguimiento de los datos del juego y agrégalo en un bucle. En cuanto a la IA con los fantasmas, hay artículos escritos sobre ellos. Cada fantasma tiene una "estrategia" específica. O bien, puede hacer su propio rollo ... podría programarlos para que sean tan fáciles como siempre dirigiéndose hacia pacman (o su ubicación general/cuadrante), o tan complejo (camino más corto) como desee.

1

¡Buenas cosas! Me alegra que Pacman te motive e inspire.

Cosas para empezar.

1) Decidir sobre el entorno de desarrollo.

a) Are you building a standalone game or a networked game. 

b) Which language are you targetting at to improve? 

2) ¿Qué tan bien versado con la IA?

3) ¿Qué tan versado con las técnicas de algoritmos de programación, como búsqueda de ruta A * (estrella), algoritmo de Dijkstra, detección de colisión, prueba de impacto o incluso programación recursiva?

4) ¿Alguno de ustedes tiene talento para el diseño gráfico?

Buena suerte.

P/S FYI, si tuviera que escribir un juego de Pacman, lo haría en C# y Silverlight 4.0 (puedo escribir C++ cómodamente pero mi prioridad es subirme al carro de Silverlight).

Cuestiones relacionadas