2009-07-21 18 views
15

He decidido comenzar a trabajar en la programación de un viejo favorito mío. Nunca antes había hecho un juego y tampoco he hecho un gran proyecto en Python.Creación de un simulador de juegos de mesa (Python?) (Pygame?)

El juego es el antiguo juego de la colina de Avalon Russian Campaign

He estado jugando con PyGame un poco y se preguntaba si había razones para no tratar de hacer esto con PyGame y va a buscar algún otro motor/idioma .

¿Cuáles serían las desventajas de usar Pygame para construir esto?

No me preocupa la IA, principalmente me encantaría tener una versión mínima de dos jugadores del juego en funcionamiento. Las bonificaciones serían la capacidad de guardar el estado del juego y también jugar en una red.

Lo que se debe y lo que no se debe hacer para comenzar este proyecto sería muy apreciado.

Respuesta

25

Separar el motor de "back-end" (que realiza un seguimiento del estado de la placa, recibe órdenes de movimiento de los front-ends, genera números aleatorios para resolver batallas, envía actualizaciones a los front-ends, se ocupa de guardar y restaurar juegos específicos, ...) desde los "frontales", que básicamente proporcionan interfaces de usuario para todo esto.

PyGame es una tecnología adecuada para un front-end del lado del cliente, pero podría implementar múltiples front-ends (tal vez un PyGame, basado en navegador, basado en texto para depuración, etc.) . El back-end por supuesto podría preocuparse menos por PyGame u otras tecnologías UI. Python está bien para la mayoría de los front-ends (excepto los que necesitan estar en Javascript, Actionscript, etc., si escribes front-ends para navegadores, Flash, etc ;-) y definitivamente está bien para el back-end.

Ejecute back-end y front-ends como procesos separados y comuníquese de la manera más simple posible - para un juego por turnos (como creo que es), XML-RPC o alguna variante aún más simple (JSON las cargas que van y vienen a través de HTTP POST y las respuestas a ellas, por ejemplo) parecerían mejores.

Comenzaría con el back-end (probablemente usando JSON para cargas útiles, como mencioné), como un servidor WSGI sucio (tal vez con un toque de werkzeug o similar para ayudar con mdidleware), y un cliente de línea de comandos de depuración simple como la suciedad. En cada paso, estaría enriqueciendo el lado del servidor (back-end) o el lado del cliente (front-end) evitando cuidadosamente hacerlo demasiado grande O cualquier "paso" simultáneo. No utilizaría tecnologías "pesadas" ni grandes frameworks haciendo cosas mágicas a mis espaldas (sin ORMs, Django, SOAP, ...).

Asegúrate de utilizar un buen repositorio de código fuente (por ejemplo, hg, o svn si sabes que lo harás solo, o bazar o git si ya lo conoces).

+0

Gracias, me has dado mucho para seguir adelante ... – Evan

+0

@Evan, de nada! –

2

No creo que usted debe preocuparse por la compatibilidad con múltiples plateforms, la separación de front-end y back-end, varios procesos con la comunicación por medio de XML-RPC y JSON, servidor, etc.

Caída de sus bonos y concéntrate en tu idea principal: un juego de dos jugadores por turnos. Es tu primer juego, así que tendrás mucho que aprender y cuidar de todo esto a la vez puede ser abrumador.

+4

El punto de separar las cosas es simplificar la tarea de realizar realmente los trabajos. Luego, cuando llega el momento de aprender Pygame, el autor solo tiene que aprender Pygame, como una interfaz. De lo contrario, los sprites terminan almacenando el estado del juego. Pygame es difícil de depurar, una interfaz de texto no lo es. –