Guía de desarrollo de juegos Indie

BLZKZ

#3090 depende del compilador, pero te lo acepto.

Aún asi se cumple esto que dijo Soltrac "Mi falacia es que mi programa que está escrito en C# no funciona en linux. Quizás con eso te sea suficiente."

r2d2rigo

Y ahora me decis que C# no es multiplataforma porque unas putalibrerías que tiran de DirectX en su core no se soportan en otros SO. VIVA Y BRAVO.

Pues JOGL no funciona en plataformas que no tienen la stack de OpenGL, JAVA NO ES MULTIPLATAFORMA!!!!1111oneoenoenoe!!111oneoneo

PD: y para el que salga con lo de que XNA esta muerto, mira que lo habre dicho veces, MonoGame.

2
krew

hostias pero que pesaos, iros al IRC que ya llevais una pagina de un debate que no lleva a ningún lado

4
MarioRomero

No es por fastidiar... pero creo que se ha desvirtuado, y bastante, el tema del hilo.

Una cosa es que se comente, aunque estamos en el debate de siempre de X es mejor que Y o Y es mejor que X cuando en realidad siempre depende del proposito y de que se quiera implementar y las herramientas/librerías que el idioma nos proporciona para ello, y otra son 2 páginas debatiendo sobre la implementación de .NET en Linux...

De todo hay cabida, e incluso yo tengo mi opinión y me gustaría participar en el debate siempre que sea constructivo y no un "aquí manda mi polla" (aunque suene soez), pero no creo que éste sea el sitio.

Si montáis un hilo aparte para debatir los distintos lenguajes de programación y sus pros y contras, librerías y si es multiplataforma o no, características de cada uno, y un punto donde comentar experiencias... como un compendio mediavidero de lenguajes de programación, contad conmigo...

Pero, por favor, dejad de desvirtuar el hilo.
Y no va a malas ni nada... de buen rollo siempre ;)

elkaoD

<post para quejarme de que el hilo se ha desvirtuado pero en realidad desvirtúo más el hilo>

Sólo quería hacerlo notar, no va a malas xD

1 1 respuesta
Meleagant

A mi no me importa que lo desvirtuéis un poco. Está un poco muerto esto sin Midgard liando algunas de las suyas ni Greyshock publicando novedades.

1 respuesta
MarioRomero

#3095 xDD ya lo sé...
Iba a complementarlo con algo relacionado con el hilo, pero estoy desde el móvil y me daba pereza...
Y no escribo nada más que al final desvirtuo yo más que ninguno xDD

GreyShock

#3096 Oído cocina. Este mes he estado sin mucha actividad en MV porque, poniendo a kaoD por testigo, he estado partiéndome los cuernos montando un sistema de juego online que tras varias semanas reventándome a hacer horas apenas he conseguido algo medio jugable.

Hablo de Sugar Loco Wrestling. Desde aquí aprovecho para deciros que si alguna vez os lanzáis a hacer algo multiplayer online, elegid un género que no sea shooter o de acción porque lo vais a fliper en colores para compensar el lag.

La fecha límite de entrega para el TIG Source es el 30 de Noviembre, así que este viernes volveré con el resultado, tenga lo que tenga +_+

4 3 respuestas
B

#3098 Seguro que has adelgazado y todo con el estrés que te habrá causado conseguir algo medio-jugable xD

"A la izquierda, un asesino que viaja por el tiempo, nuestro fresón agrio... Ezio!" (Se llamaba así, no?)
"Y a la derecha, tenemos al programador de este juego... Aun que se oculta la cara para que no sepamos que usa chetos... GREYSHOCK!"

Round 1 - Fight!

¿Quién ganará? El viernes lo sabremos.

1 1 respuesta
r2d2rigo

#3098 http://web.cs.wpi.edu/claypool/courses/4513-B03/papers/games/bernier.pdf

1 respuesta
Jastro

#3098 el que esta tras las cuerdas en el lado derecho, ese no era de sunset riders??? xDD

1 1 respuesta
storm2211

aqui os dejo el progreso de nuestro despues de una semana, a ver que os parece. Como siempre cualquier tipo de feedback o critica es agradecida.

http://vimeo.com/54386504

3 2 respuestas
Srednuht

#3102 Mola mil.

A veces da algun paroncillo que otro, pero no se si es el video o el juego, me gusta mucho como habeis montado las cámaras y como habeis cuidado los detalles. Enhorabuena

1 respuesta
storm2211

#3103 muchas gracias, los parones no estoy seguro si son del juego en el ordenador donde ha sido grabado o del video, por que el video lo ha grabado el "productor" en su portatil y no estaba ahi. Pero en los ordenadores del laboratorio y en mi casa funciona perfectamente.

Las camaras todavia le vamos a dar muchisima cera, la queremos hacer super dinamica rollo explosion man. http://www.youtube.com/watch?v=TGWC30mmK14

Lo que tenemos ahora es un placeholder.

Potito

#3102 cual es la razon de q solo se pueda jugar con mando ? lo veo ridiculo, mas sabiendo q viene ya todo implementado para poder usar todo tipo de controles.

1 respuesta
storm2211

#3105 he tenido la misma discusion con el disenador. La verdad que para poder jugar con teclado y raton lo unico que le tendriamos que cambiar es la mecanica del apuntar, que por el momento solo se apunta cuando se toca el joystick derecho del mando, pero el disenador se ha puesto perro en que sea con mando solo y asi esta. Yo ahi ni pincho ni corto.

EDIT: HD video, que el que habiamos subido se veia mal.
http://vimeo.com/54395962

1 2 respuestas
Elrond

#3106 tiene muy muy buena pinta!! qué tecnologías habéis usado?

1 respuesta
B

#3106 Dios! Me encantan las texturas!! ¿Quién las hace? Ya va teniendo bastante mejor pinta! Ánimo!

#3107 Creo que usan Unity.

GreyShock

#3099 #3101 Son Ezio de Assassin's Creed y Cormano de Sunset Riders, efectivamente :)

#3100 Muchas gracias por el documento! Aunque yo no puedo implementar algo así de guay por limitaciones técnicas. Pero es una lectura interesante (junto a todo lo que he leído y lo mucho que me queda por leer sobre el juego online...)

Para empezar, estoy utilizando un sistema de long-polling, por lo que no tengo demasiado potencial en la comunicación, enviar más de 10 mensajes por segundo puede saturar la conexión. Así que mi técnica es enviar cuando se pulsa o se suelta un tecla, reproduciendo ese movimiento en el cliente del oponente y cada 3 segundos ir comprobando si las posiciones exactas de los personajes no se diferencian demasiado, y de ser necesario la corrijo (con el consecuente salto brusco de lag).

Para más inri, la lógica de juego no se resuelve en el servidor, ya que ImpactJs no funciona sin el objeto window, y tendría que hackear el framework para poder hacerlo funcionar como servidor de juego. Eso se traduce a que cada cliente hace sus cálculos por su parte y envía los cambios a su oponente, siendo según que cosas autoritativas en un lado u en otro, por ejemplo, si un proyectil ha impactado o no en el oponente, se resuelve en el lado del oponente, por mucho que tú veas que le has dado, si el oponente lo ha esquivado, ese será el resultado (tú simplemente verás cómo la tarta le atraviesa). Es bastante controvertido y hace que el juego online no sea una experiencia del todo fidedigna, pero es a lo que he conseguido llegar dados mis escasos recursos.

Aún quiero pulirlo un poco más con algunos truquitos que he visto en otros juegos online, así que si salgo vivo de esta me curraré un informe de daños :P

2 respuestas
Potito

#3109 No pasa nada si haces el primer juego de lucha libre por turnos jajaja

2
r2d2rigo

#3109 Has implementado prediction? https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

Si tuvieses alguna manera de enviar UDP, podrias replicar el modelo de red de Quake y enviar snapshots del gamestate con delta encoding.

2 respuestas
GreyShock

#3111 No tío, tampoco hay gamestate en ImpactJS xD, no tengo steps ni historias, cuando estuve revisándolo con kaoD estaba indignado y le dieron ganas de hackear todo ImpactJS xDDD

Así que mi modo online es una locura rudimentaria haciendo keytracking y comprobando de vez en cuando si todo sigue OK. No puedo rebobinar el juego para cuadrar acciones con timestamp, y aunque pudiera, para más inri, cada cliente tiene su propia versión de los hechos. Ya te digo, funciona de milagro tras más de 100 horas de curro _u Y si hay un poquito más de lag de lo aceptable olvídate... lo máximo para jugar de forma mediocorrecta son unos 300ms de latencia.

Eso sí, gracias por toda esa documentación, cuando tenga entre manos un entorno más serio o más presupuesto seguro que me vienen de fábula.

elkaoD

#3111 te resumo los males de ImpactJS: variables globales, uso de "window", clases que referencian a objetos globales que se referencian a sí mismas (joder, usa this!), un método "copy" que te permite hacer copias de todo MENOS de cosas de ImpactJS (¿qué sentido tiene esto?), timestep variable, un sólo objeto Game por cada pestaña del navegador, clases acopladas por todos lados a instancias globales... y un largo etcétera que hace imposible hacer corrección de lag sin pegarle un remozado desde cero al engine.

Tampoco puede usar UDP (va por WebSockets) pero eso es lo de menos.

3 respuestas
r2d2rigo

#3113 joder macho... creo que no voy a volver a tocar JS en mi vida.

1 3 respuestas
elkaoD

#3114 JS? More like Impact. Como si no pudieras hacer mierda en cualquier otro lenguaje.

GreyShock

#3113 #3114 JavaScript mola, eso son carencias concretas de ImpactJS :P

Jastro me ha comentado que ImpactJS 2.0 está cerca y le van a pegar un buen lavado al engine, sobre todo enfocado a temas de juego online... a buenas horas xD En fin, ha sido una experiencia muy enriquecedora.

1 respuesta
elkaoD

#3116 sí, yo también estuve viendo algo de ImpactJS2.0 y mucha autocrítica por parte del autor. Incluso comentaba que lo va a orientar por defecto para poder ejecutarse en Node sin hacer magia, e integración con WebSockets.

Por desgracia para vosotros al cambiar de major version os va a tocar soltar guita xD

#3114 si quieres un ejemplo de una carencia real de JS, algo que siempre me revienta la cabeza (y que justo ayer le dio problemas a GreyShock y estamos discutiendo ahora por IRC):

array = [];
for (var i=0; i<10; i++) {
  var t = i;
  array[t] = function(){ return t; };
}

array[0](); // => 9
array[1](); // => 9
array[2](); // => 9
array[...](); // => 9

Y cómo hacer lo que yo esperaba que ocurriera:

array = [];
for (var i=0; i<10; i++) {
  (function(t){
    array[t] = function(){ return t; };
  })(i);
}

array[0](); // => 0
array[1](); // => 1
array[2](); // => 2
array[n](); // => n
1 2 respuestas
tarzanete

#3117 No falta un paréntesis por cerrar en el segundo?
me perturba

2 respuestas
elkaoD

#3118 falta, falta xD Fixed.

1 respuesta
Meleagant

#3113

Personalmente, como no trabajo en desarrollo, llevo sin tocar programación en serio desde que dejé la carrera. ¿Sabes algún buen libro o fuente para aprender bien todas esas buenas prácticas de la programación? Que en ese sentido estoy bastante pez.

3 respuestas
Tema cerrado