Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Proyecto RPG 2D utilizando c#

Iniciado por XÑA, 15 de Febrero de 2010, 10:40:58 AM

« anterior - próximo »

XÑA

Buenas a todos. Hace un motón que no hago absolutamente nada y lo cierto es que tengo muchas ganas de volver a darle al coding. Por desgracia para mi tiempo, aunque no para mi persona :) , tengo un niño de 10 años y una niña de 3, que me han absorbido un montonazo de tiempo hasta ahora. Pero el otro día le dije al niño a ver si le apetecía hacer un juego de pokemon donde él colocara los monigotes e hiciera lo que él quería, ¡y le hizo un montón de ilusión! Así que me emocioné y busqué software para hacer RPG. Encontré uno muy muy bueno, el Indie Game Maker, que tiene una cosa que está muy muy bien: ¡ compila para XNA y para Flash!

Entonces, me puse a urgar en el editor, y bueno, conseguí hacer algo, pero me pareció demasiado complicado para enseñárselo al niño, además de que la mayoría de cosas las iba descubriendo porque no tiene ayuda.

Así que decidí empezar a hacer un RPG, que no es muy complicado de hacer. Pero como estas cosas se empiezan pero no suelen acabarse, decidí que al menos intentaría aprender algo del proyecto, así si lo dejaba, al menos habría aprendido cosas nuevas.

Finalizada la introducción, espero que no os haya aburrido, aquí está lo que he decidido:

Desarrollo y Diseño de la aplicación:
Utilizar VStudio 2008 C# Framework 3.5 HASTA QUE salga 2010 con framework 4.0
Intentar explotar al máximo .Net 4.0
Utilizar DevExpress para los controles ( puedes usar el trial, que es lo que yo hago)
Utilizar las recomendaciones de programación en C#

Y en cuanto al editor:

Que pueda usarlo mi hijo ( fácil de usar, sustituyendo 'posibilidades' por 'facilidad')
Compilable para XNA (sé bastante XNA ) y SWF ( ni idea).

Bien, a partir de aquí, si la idea gusta y tengo cierto seguimiento, intentaré llevar un blog de cómo voy haciendo el proyecto y porqué tomo ciertas decisiones.

Y me gustaría de vosotros que me dierais todas las aportaciones que pusierais sobre la forma de programar correctamente ( Vicente este es tu punto fuerte!!).

¿Qué documentación tenéis sobre C# Best practices?

Gracias a todos.


XÑA

Bueno, os muestro un pequeño avance del tema. Lo cierto es que DevXPress es bastante lógico y sencillo, da gusto trabajar con estos controles.

Podeis ver que en la pantalla del mapa hay en realidad 2 splits, así que puedes hacer más grande el trozo que necesites, para que puedas ir ajustando lo que necesites.

También estoy experimentando con el Ribbon, aunque es complicado cambiar el chip de la barra de control. En fin, veremos a ver cómo puedo avanzar en ese aspecto.

Finalmente abajo veis que aparecen los paneles. Estos son flotantes, y soportan docking. Ahí irán los clips, y podrás organizarlos en grupos y tener los que necesites, ocultarlos, en fin... Ahora mismo sale en el formulario de los clips, pero no debería estar ahí




Vicente

Hola!

está bien verte de nuevo programando :) Algunos comentarios:

- Utiliza VS2010. La RC ya está disponible para todo el mundo y funciona muy bien. No solo tienes acceso a las nuevas características del lenguaje (dynamic), si no que además tienes acceso a un montón de librerías nuevas: TPL (Task Parallel Library), MEF (Management Extensibility Framework), Rx (Reactive),...

- Utiliza WPF en vez de Winforms. Este es un poco más peliagudo, pero si lo que quieres es ponerte al día con .NET, es muy importante aprender WPF. Aprender WPF te "obligará" a aprender varias "best practices" de desarrollo en C# y a pensar de forma "declarativa", que es hacia donde el lenguaje se está moviendo poco a poco. Hacer la aplicación en WPF será una buena prueba para poner en práctica todo ese conocimiento "teórico".

- Es muy fácil pintar en una superficie de Direct3D e incrustrarla dentro de una aplicación WPF si estás interesado en pintar usando D3D. Aún sin usar D3D, pintar en WPF te da mucha más flexibilidad que pintar con Winforms (utilizas más la gráfica, puedes hacer tus propios shaders si quieres,...).

Sobre best practices en general, hay una herramienta llamada "StyleCop" que chequea el "estilo" de tu código y es extra-quisquillosa. Al principio es totalmente horrible intentar escribir código con 0 warnings de StyleCop, pero poco a poco le coges el truco y en general queda bastante bien.

http://code.msdn.microsoft.com/sourceanalysis

Además, tienes las archifamosas "Design Guidelines for Class Library Developers", pero no recomiendo leérselas de un tirón, si no de forma: voy a usar un evento, voy a ver que recomiendan sobre los eventos,...

http://code.msdn.microsoft.com/sourceanalysis

Si vas a usar WPF, necesitas leer sobre MVVM (Model-View-ViewModel), el patrón de diseño que se usa para este tipo de aplicaciones, te dejo una introducción pensada para gente que conoce Winforms:

http://reedcopsey.com/2010/01/07/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm/

El código fuente de los artículos está aquí:

http://code.msdn.microsoft.com/WinFormToWPFMVVM

Y poco más se me ocurre ahora mismo, cualquier cosa pregunta :) Un saludo!

Vicente

XÑA

Gracias por la información Vicente y encantado de volver a charlar contigo!!

Bueno, no puedo usar WPF porque los controles devxpress para WPF no tienen todavía la gran variedad que tienen los controles para Winforms. Para mi aprender DevXPress es importante, porque son unos controles muy extendidos en el mundo empresarial.

Sobre la RC de VStudio 2010, sí, voy a usar 2010, pero esperaré a Marzo a que salga la definitiva. Tampoco puedo dedicarle mucho tiempo al editor, así que principalmente ahora lo que hago es ir creando 'prototipos' de cómo se tiene que trabajar, para ver cual es el diseño final que le doy a todas las herramientas. Pero por ejemplo he usado las Extensiones de C# 3.5 para extender la clase Point, y creía que ya podía utilizar los constructores con parámetros por defecto, pero he visto que tengo que esperar a 4.0. Pero en cuanto tenga 2010, me tiro a por 4.0, aunque me asalta un poco la duda de si en XNA voy a poder utilizar las características 4.0. ¿Sabes si será así?

Gracias por el programa de estilo, voy a utilizarlo. Creo que hay que programar siguiendo un patrón que todos nos sintamos cómodos trabajando con él. Voy a ver que tal.

Bueno, a ver si puedo seguir avanzando un poco y este fin de semana ya puedo subir algo para que lo veais.


Vicente

Mmm, los controles de WPF no tienen la variedad de los de Winforms porque en general no hace falta. Es decir, poner un Combobox con una imagen es insufrible en Winforms (y por eso las suites de controles tienen Combobox mejorados), mientras que poner una imagen en un Combobox en WPF es trivial :) Sigo pensando que aprender WPF es más útil, pero si no le quieres dedicar mucho tiempo al editor no te va a merecer la pena.

Respecto a XNA y 4.0, no puedes usarlos juntos :( XNA 3.1 está ligado a VS2008. Y respecto al programa de estilo, no te vas a sentir nada cómodo al principio, prueba con una clase tonta de 30 líneas y fácil te saca 50 errores :p Una vez te acostumbres, es muy fácil, pero cuesta un poco al principio.

Un saludo!

Vicente

XÑA

Bueno, tengo ahora una cuestión de nomenclatura.

¿Cómo nombrais los controles?

Por ejemplo, tenemos el menuBarItemButton1, ¿esto lo poneis como mBINuevo , por ejemplo?

Lo cierto es que no tengo una norma y me doy cuenta de que cada vez lo modifico todo. Había pensado llamarlo ctrl + nombre, pero claro, colisiona a veces porque puede haber más de un control que haga lo mismo, en mi caso, el trackBar y el TextEdit, sirven para cambiar el tamaño del grid.

¿Qué hacéis vosotros?

Vicente

Los botones es una de las cosas en las que no hay una norma clara :( Yo normalmente los prefijo con el tipo de control y luego el nombre. Y en inglés por cierto :p

XÑA

Bueno, sigue el Work In Progress...

Aquí podemos ver la carga de Tiles, y cómo se crean los 'ClipGroups'. Puedes seleccionar y ordenarlos para tener, por ejemplo, unos con árboles, otro con tierra, otro con edificios...



Aquí vemos el mapa, con los panales abajo, que nos permitirán seleccionar fácilmente los clips



Y fijaos, la gran ventaja de los panales, es que puedo colocarlos donde quiera, lo que me permite organizarme de la mejor forma posible.




kraj0t

Muerte y destrucción a tú
¿A yo?
¡A tú!


flipper83

está muy wapo yo le meteria capitas q siempre viene bien para poner una casa encima de tierra o cesped ^_^
un cobarde forero en el tanatorio al mes sería un placentero trofeo digno de merecer

XÑA

#11
Bueno, aquì podéis ver los avances con el tema de caminos e intersecciones.

Utilizo Drag & Drop para coger el clip y posicionarlo en el sitio que corresponde. De esta forma el macanismo para ir haciendo caminos se hará de forma automática.




XÑA

#12
Y aquí tenemos la formación del camino en el mapa. He optado por que el usuario dibuje líneas y después el editor creará los caminos. Eso nos permite modificar el camino muy fácilmente y es bastante rápido. Se permite cambiar el ancho del camino, así que fácilmente los construyes del tamaño que quieras, aunque no hay diagonales, pero creo que no es necesario.  :-\

¡Madre mía que locura ha sido lo del camino y no está del todo resuelto!


Hechelion


Cita de: XÑA¡Madre mía que locura ha sido lo del camino y no está del todo resuelto!

Ni que lo digas, yo estoy tratando de hacer algo parecido pero son "Autotileset", o sea, pintas un área y el sistema calcula sólo los tile de los bordes y tal como dices es una locura llevarlo a buen termino.

Mis felicitaciones y ánimos para que sigas adelante con el proyecto.

XÑA

Gracias, lo cierto es que va bastante bien. :D






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.