Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Aspectos técnicos sobre un JCC online multijugador

Iniciado por Moondraco, 30 de Mayo de 2013, 04:12:37 PM

« anterior - próximo »

Moondraco

Buenas a todos :)
Soy nuevo en el foro y algo más que nuevo en el mundo de desarrollo de videojuegos. Me llamo Mario y soy estudiante de Comunicación Audiovisual en Madrid, 21 años. Pongo estos datos porque ubicar a la persona con la que se habla siempre viene bien.

Mi proyecto, el que me trae por este foro, es un JCC (Juego de Cartas Coleccionables) online multijugador.
Como ejemplos, por si alguien no se ubica, os dejo Urban Rivals (urban-rivals.com), Eredan (itcg.eredan.com) o Kings and Legends (kingsandlegends.com).
Se trata de un proyecto a largo plazo. Actualmente termino 2º del Grado, me planteo meterme en su desarrollo en 2 años más, cuando termine las obligaciones universitarias... y quiero aprovechar este tiempo para formarme y aprender, de forma que al salir pueda enfocarlo ya de manera seria.

Dejo algo de información sobre mis estudios y experiencias previas, para que vuestros consejos puedan tenerlas en cuenta:
En este momento estudio Flash (AS2 y AS3), ya que lo considero una buena herramienta de cara al diseño de esta clase de juegos. Si no lo es, agradecería que alguien me sacara de mi ignorancia antes de seguir por ese camino.
Además, tengo un pequeño bagaje a mis espaldas: desde los editores de mapas de tZar o Imperivm III hasta un par de años de manejo de RPG Maker XP. Todo inicios de programación orientada a objetos en sus versiones más básicas. Nunca he utilizado sistemas 3D porque en principio no me interesan, ya que los videojuegos que visualizo en mi futuro son JCCs online o puzzles para móviles..
Tengo también experiencia en el diseño de juegos de mesa, con varios prototipos satisfactoriamente terminados. Con esto quiero decir que el tema de balance de cartas/habilidades, diseño de niveles/bosses y demás no lo llevo mal del todo, estoy acostumbrado a ello.

Sin embargo, mis conocimientos técnicos son prácticamente nulos. De ahí mi interés por registrarme en este foro, buscando ampliar mis conocimientos a través de testimonios profesionales.
Hay muchas cuestiones técnicas que se me vienen a la cabeza: aquí plantearé algunas, pero sois libres para proponerme cualquier otro tema relacionado con esto que no se me haya ocurrido.

- ¿Qué tipo de programación requiere un juego de este tipo?
Por lo que yo sé, el juego en sí puede programarse en AS3 perfectamente... ¿es cierto?

- ¿Cómo se introduce la IA en el juego?
Para que los jugadores enfrenten sus cartas a misiones o similares, ¿cómo y dónde se programa la IA?

- ¿Qué tipo de arquitectura web es necesaria?
Entiendo que obviamente hay que tener bases de datos para almacenar las colecciones, niveles y demás de cada jugador... ¿cómo se crean estas bases y se ligan al juego y/o a la web?
¿Cómo se desarrolla una web con login necesario, y se liga esto con la colección y datos de cada usuario?

- ¿Qué tipo y potencia de servidor necesita un juego de esta clase?
¿En cuánto puede incrementar el presupuesto de partida el alquiler/adquisición de un servidor que soporte el juego? ¿Qué tipo de servidor sería?


Como podéis ver, soy un auténtico newbie en casi todo lo técnico.
Por supuesto, pretendo buscar socios para la programación y demás (el aspecto gráfico lo tengo más cubierto), pero eso no me exime de aprender todo lo posible sobre el funcionamiento del juego en todas sus vertientes.
Mi idea es hacer durante el próximo año un máster en 3D y Videojuegos, compaginado con el Grado, ya que me puede resultar útil para muchas de mis posibles salidas laborales. Así podría, por ejemplo, hacer cinemáticas promocionales para el juego, ya que no descarto recurrir al crowdfunding en caso de no disponer de fondos para lanzar el proyecto en dos años.

En cualquier caso, agradezco todo consejo y/o respuesta.
A ser posible, pensad que apenas tengo conocimientos de esta clase, por lo que cuanto más sencillas sean las respuestas, mucho mejor. De todas formas, a partir de lo que obtenga aquí ya buscaré yo por Internet, por lo que esto no es condicionante para que os cortéis en vuestras respuestas.
Cuanta más información, mejor. Tengo por delante mucho tiempo para prepararme y quiero emplearlo lo mejor posible.

¡Muchas gracias a todos! :)

Hechelion

#1
Bienvenido.

Hay hartas cosas que comentar, lo primero, es advertirte que todo mención a MMO suele ser mal vista, ya que suelen ser proyectos grandes y si no tienes experiencia con cosas pequeñas se te va a hacer más complicado, es similar a que tu primer trabajo sea un edificio en vez de partir haciendo casas.
Creo que el principal consejo que te darán muchos, es que comiences a hacer cosas más pequeñas, como por ejemplo, una parte de tu juego pero solo en local y luego ir escalando en la medida que ganas conocimientos y experiencia.

Normalmente (más del 90%) de la gente que llega con proyectos MMO como su primer proyecto jamas los terminan, ten eso en consideración y comprenderás el por qué de las aprensiones a esta palabra, aunque en tu caso, un juego de cartas es menos ambicioso que un RPGMMO 3D.

Luego del preámbulo te daré mi opinión respecto a las preguntas.
¿Qué tipo de programación requiere un juego de este tipo?
Respecto al lenguaje, por lo que yo sé, si es posible hacerlo con AS3. Sin embargo, todos los comentarios que escucho hablan de que Flash va en declive, creo que lo mejor sería que si estás partiendo, lo hicieras con un lenguaje multiplataforma que tenga más futuro, en vez de partir con un lenguaje que posiblemente muera en los próximos años.

Sobre que escoger, creo que depende de cual sea tu objetivo, por el tipo de juego que comentas, creo que no tendrías problema con ningún lenguaje, así que deberías pensar en cuales serán tus objetivos, si quieres algo que corra en móviles, solo en PC (windows, MAC , linux) y según eso escoger, creo que sería bueno que buscaras información sobre cocos2d, yo no lo he usado, pero según he leído te permitiría exportar el juego a varias plataformas, lo otro sería que lo hicieras directo en HTML5.
A ver que opinan los que tienen más experiencia en este campo.


¿Cómo se introduce la IA en el juego?
La IA viene a ser un arte, no existe EL algoritmo, ni La técnica, depende mucho de que necesites, en un juego de cartas, podrías hacer un min/max, pero acá tienes un buen camino por delante si quieres algo bien depurado.


¿Qué tipo de arquitectura web es necesaria?
Vuelvo a reiterar, creo que lo mejor es que avances de un paso a la vez, pero si estás pensando en un juego web, creo que deberías mirar bases de datos SQL,  una MySQL creo que te vendría de perlas y sobre el sistema de login, podrías darle una mirada a Ruby OnRiles que ya encuentras módulos hechos para esto, pero nuevamente, acá hay un montón de opciones y conocimiento por aprender en el camino.

¿Qué tipo y potencia de servidor necesita un juego de esta clase?
Así, a vuelo de pájaro, diría que poca, ya que los juegos de cartas se juegan por turnos humanos, o sea, que cada turno estará espaciado en varios segundos, tampoco necesitas mantener un PW en la memoria. Así que tu consumo por jugador debería ser bajo, salvo en los KB de descarga, ya que deberán cargar las imágenes de las cartas y el HUD cada vez que conecten o estén jugando, creo que ese sería tu cuello de botella.
Si quieres hacer algo para comenzar, que vendría ser algo modesto, creo que un MV de esas de 300 dolares al año te debería ir bien para un par de cientos de jugadores (hablo de lo que debería permitirte la máquina), claro que es algo que tendrás que evaluar en su momento, cuando tengas más claridad sobre los costos de procesar las AI, o cuantos KB de transmisión promedio significa una partida.

Una aclaración importante, estoy hablando de un enfoque a un juego acotado a unos pocos usuarios (unos cientos tal vez), y donde la meta es terminar algo por el simple hecho de aprender. Si tienes en mente algo realmente masivo (cientos de miles de jugadores) lo único que puedo decirte es que la tienes negra si no tienes los conocimientos previos ya que tener las estructuras optimizadas y para un mercado, requiere mucho más trabajo que simplemente tener algo que funcione.




Moondraco

#2
¡Muchas gracias, Hechelion! :D

No temas, que ya he leído unos cuántos hilos de MMORPGs en 3D... espero no caer en ese error porque parto de la base de hacerlo en un tiempo extenso, sin demasiada prisa y con un equipo de respaldo.
Te voy respondiendo por partes, que efectivamente son muchas cosas.


Lo primero es sobre el enfoque que quiero darle al proyecto: mi meta ideal es tener un juego perfectamente funcional con todos los jugadores que pueda conseguir.
Para lograr esta meta, tendré lógicamente que pasar por muchas etapas. Tener el juego corriendo a nivel de unos cientos de jugadores es una parte del proceso, si bien espero que no sea el final del mismo. Está claro que necesitaré un entorno controlado para lanzar una beta, y tenerlo en el estado que mencionas sería ideal.

El proceso que tenía en mente sería el siguiente (en la medida en que la vida me permita desarrollarlo):
1. Creación del juego físico y testeo en mesa. Corrección del prototipo hasta tener un proyecto jugable.
2. Desarrollo de una app básica del sistema de juego, sin tener en cuenta logins, cuentas de usuario y demás. Que permita tan solo elegir un set de cartas y jugar con ellas, probando así lo que serían las partidas en sí ya en entorno digital, para testeo beta.
3. Corrección de errores y pulido de animaciones, etc. hasta tener las batallas optimizadas.
4. Liberación de la app, para obtener feedback en la medida de lo posible y dar a conocer el sistema.

Si el feedback es positivo y consideramos que merece la pena seguir adelante a otro nivel:
5. Creación de la estructura web en la que alojar el juego "definitivo", implementación de este y testeo en fase alpha.
6. Corrección de errores y testeo en beta cerrada, en entorno controlado.
7. Apertura y promoción controlada del juego para la beta abierta, con las correcciones oportunas.
8. Apertura total del juego y mantenimiento del mismo.

IMPORTANTE: ¿Creéis que lo anterior es un esquema lógico?


Mi calendario de proyecto se centra en comenzar el paso 2 en 2 años, algo antes si se me presenta la ocasión. Tras esto, me gustaría estar en el paso 4 en otros 2 años aproximadamente, teniendo en cuenta que el equipo sería reducido al tratarse aquí de un proyecto prácticamente no remunerado.
Si todo sale bien, a partir de ahí adelante hasta donde se pueda llegar.

Sobre tus aportes técnicos, la mayoría me confirman lo que intuía. Tengo que mirar las posibilidades de HTML5 para este tipo de juegos, ya que sería interesante trabajar sobre este formato directamente. De todas formas, no tengo claro el estado de Flash ahora mismo... oigo tanto que está en declive como que vive su mejor época con los smartphones y demás. Será cuestión de indagar y ver estadísticas y funcionalidades.


Por último, aclarar que no pretendo encargarme del desarrollo técnico del juego.
Con estas preguntas quiero adquirir unos conocimientos básicos de dónde me meteré y cómo funcionan los aspectos claves, pero me resultaría imposible programar algo así, tanto por falta de tiempo como de experiencia.
Cuento con un par de programadores con cierta experiencia para abordar estos temas, mientras yo me dedico a equilibrar las diferentes cartas, opciones tácticas, creación de quests y demás aspectos de desarrollo de jugabilidad. Creo que abordar un proyecto como este sin un equipo con una división clara de roles es una locura.
Sin embargo, eso no impide que pueda apoyar a un equipo de programadores sabiendo qué se les puede pedir desde la utopía que es el diseño del juego y cómo tienen que trabajar.


PD: He estado mirando Cocos2D. Parece útil para desarrollar apps para móvil, aunque todos los juegos que he visto son algo más simples de lo que requeriría llevar mi idea a un smartphone. Miraré sus características más en profundidad, porque puede ser un buen punto de partida para testeos en formato digital cuando tengamos ya listo y probado el prototipo físico.

Gallo

Bueno bueno bueno, me encanta este post, soy muy aficionado a diseñar juegos de cartas de este estilo, muy simples por que no soy game designer, variaciones del UNO con toques de efectos de Magic y tal, tengo un puñado de documentos en google drive que probablemente nunca verán la luz jeje XD.

Te voy a responder las dudas técnicas que es lo mio ;).

- ¿Qué tipo de programación requiere un juego de este tipo?
Programación cliente/servidor desde luego y programación gráfica, en realidad programas dos aplicaciones:

Un servidor donde se ejecuta realmente el juego, transcurren las partidas, se recibe el input de los jugadores, se validan y ejecutan las jugadas y finalmente se envía el estado de la partida.

Un cliente que recoge las acciones del jugador (teclado y mouse), las envia al servidor y a la vez, recibe el estado de la partida del servidor y la renderiza.

Es recomendable que el máximo posible de lógica del juego esté en el servidor, sobretodo para evitar trampas. Que el cliente envié input directo o acciones muy concretas, que no permitan hacer cosas que no se pueden hacer, por ejemplo no está mal enviar al servidor "click en la coordenada 45 , 53" pero para facilitarle la faena al servidor y al programador tampoco está mal enviar "click en la carta con id = 4234", siendo este id una referencia conocida por el cliente y el servidor, el servidor decide que significa ese click.

Estaría muy mal que un cliente enviara algo como "el jugador gana 5 vidas", esto afecta directamente a la lógica del juego y al ser enviado por el cliente ese 5 lo puede cambiar por un 50 con la herramienta adecuada.

- ¿Cómo se introduce la IA en el juego?  ¿Cómo y dónde se programa la IA?
Es complicado, ser capaz de evaluar la mejor jugada en un juego de estas características seria todo un arte. Sin duda se programa en el servidor y seria como un jugador ficticio una entidad controlada por la propia logica del servidor en lugar del input de un cliente.

Si te refieres a las reglas de cada carta, pues lo usual es que cada carta tenga asignado un script de comportamiento que encaja con una serie de reglas que se comprueban por la lógica del juego en cada "acción", "step" o como lo quieras llamar, de tus mecánicas de juego. Aquí necesitas a alguien con experiencia en el desarrollo de gameplay.

- ¿Qué tipo de arquitectura web es necesaria?
A mi este proyecto me pide a gritos un servidor de node.js, te recomiendo que busques alguien que domine node.js y bases de datos que se conecten con el. Para el lado cliente te recomiendo HTML5 usando Canvas y WebSockets, yo por ejemplo he desarrollado un framework que te valdria, aunque incorpora comunicación cliente/servidor para un juego en tiempo real con node.js, si fichas a alguien que sepa de node se puede adaptar a un juego por turnos.

http://ss2d.wordpress.com/

Si quieres tirar por el desarrollo en nativo para los dispositivos móviles algo como cocos2d o similares es correcto.

- ¿Cómo se crean estas bases y se ligan al juego y/o a la web? ¿Cómo se desarrolla una web con login necesario, y se liga esto con la colección y datos de cada usuario?
Esto realmente son aspectos muy básicos de la programación web, si no lo tienes dominado te recomiendo de nuevo fichar a ese experto en tecnologías Web.

- ¿Qué tipo y potencia de servidor necesita un juego de esta clase? ¿En cuánto puede incrementar el presupuesto de partida el alquiler/adquisición de un servidor que soporte el juego? ¿Qué tipo de servidor sería?
Puedes empezar por un VPS (Virtual Private Server), cuestan unos 200$ al año y ver como tira para las pruebas y tal. Si vas a usar node.js asegurate que es compatible, aquí menciono de nuevo al fichaje técnico.


Contestando al segundo post (está bien postear de nuevo, creo que no hay problema):
¿Creéis que lo anterior es un esquema lógico?
El primer punto no mucho, el testeo en formato físico tiene sentido? si he visto una diferencia importante entre juegos fisicos y de ordenador es que los de odenador hacen cosas que en los físicos son imposibles o casi imposibles de gestionar, si pretendes testear tu juego como juego fisico estas limitando las mecánicas de tu juego a cosas que solo se pueden hacer con cartas de verdad, si estas conforme con eso vale, pero ya que es de ordenado aprovecha y haz virguerias, por ejemplo un efecto que sea: "tienes un 50% de robar un maná en tu próximo turno", está mecánica no es posible realizarla en el mundo real, un efecto no puede manipular "tu suerte" el próximo turno, pero el servidor si que puede hacer esta manipulación transparente para el jugador.

Por lo demás bien pero necesitarás el equipo adecuado desde luego.

Espero que mi opinión te sirva de ayuda.

Saludos.

Moondraco

#4
Citarel testeo en formato físico tiene sentido? si he visto una diferencia importante entre juegos fisicos y de ordenador es que los de odenador hacen cosas que en los físicos son imposibles o casi imposibles de gestionar, si pretendes testear tu juego como juego fisico estas limitando las mecánicas de tu juego a cosas que solo se pueden hacer con cartas de verdad, si estas conforme con eso vale, pero ya que es de ordenado aprovecha y haz virguerias, por ejemplo un efecto que sea: "tienes un 50% de robar un maná en tu próximo turno"

Mañana contesto más en profundidad, que estas horas son malas.

Pero ese efecto es tan sencillo como lanzar moneda al aire ;) En varios de mis prototipos se contemplan acciones limitadas por el azar, representado tanto por monedas (50%) como por dados de diferentes clases... y el lanzamiento puede hacerse ocultando el resultado al jugador afectado si es necesario, con una simple pantalla o similar.
En realidad, el juego puede testearse en formato físico, si bien es bastante más incómodo que el digital y requiere una buena dosis de preparación para montar las partidas. Pero lo creo necesario, ya que programar un juego del que no tienes ni idea sobre su rendimiento y jugabilidad es poco menos que trabajar sobre aire.

De todas formas, es una fase rápida que debería pasarse en no mucho tiempo. Me muevo en el mundillo de los juegos de mesa, y me será relativamente fácil conseguir gente que se apunte a partidas de testeo. En cosa de 3-4 meses estará acabada, menos tiempo si hago un esfuerzo personal potente.

Muchas gracias, la verdad es que no esperaba tanta participación.
Siento tener unas dudas tan básicas, es casi empezar desde cero y me vienen muy bien los consejos y ayudas de todo tipo :)


PD: Si quieres sacar el arcón tus proyectos de juego, puedo echarte una mano con la jugabilidad y demás. De hecho, te recomiendo que te pases por el subforo de Diseño de BSK (http://www.labsk.net/index.php?board=51.0), es sencillo aprender allí simplemente leyendo posts de otros autores.






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.