Div Games Online en Html5 y Javascript

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.
Post Reply
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Div Games Online en Html5 y Javascript

Post by CicTec »

@OskarG, no es posible aumentar el rendimiento en manera considerable, ni ahora, ni posiblemente en futuro, no porque Amaka no sepa hacerlo, sino porque DIVGO esta escrito en JS que es un lenguaje que no permite eficiencia y optimizaciones de performance, por eso han planteado crear un nuevo standard llamado WebAssembly (puse un thread siempre en offtopic), porque se han dado cuanta que este lenguaje no tiene futuro en cuanto a rendimiento para juegos complejos o medio/grandes.
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Div Games Online en Html5 y Javascript

Post by OskarG »

Gracias Citec por la duda uhmmm.....sera cuestion de ser paciente y ver como se van desarrollando los diferentes proyectos para elegir el mas conveniente.
User avatar
AmakaSt
Posts: 402
Joined: Fri Oct 03, 2008 10:00 pm
Contact:

Re: Div Games Online en Html5 y Javascript

Post by AmakaSt »

Lo que dice CicTec es cierto, no es por el engine, JS para desarrollar juegos es más lento que C/C++ o C#, y si tiene un sistema de procesos como Div pues ayuda a que sea todavía más lento. Pero no por ello no se pueden crear juegos como muchos que aparecen por Steam o en móviles (muchos de ellos son juegazos), en ordenadores y móviles más modernos apenas se aprecia tanta lentitud (si quieres hacer juegos como los que hay en la PS4, XONE o WiiU a 1080 y 60fps... difícil sin un monstruo de ordenador). En ese aspecto DivGO siempre ira más lento que Gemix o Bennu.

Lo de WebAssembly tengo curiosidad y bastantes dudas, a ver en que queda y cuanto tardaran en lanzar algo estable. 8-)
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Div Games Online en Html5 y Javascript

Post by OskarG »

Hola amaka,paseando por los foros he encontrado GAMEPOWER,es clavadito a div2 :lol: me ha hecho gracia,ahora estoy trasteando con el y viendo que diferencias hay entre tu proyecto y este y cual corre mas rapido :mrgreen: .Espero que la competencia haga que divgo se supere asi mismo y tengamos un programa para hacer juegos en html gratis y potente.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Div Games Online en Html5 y Javascript

Post by erkosone »

Amaka puedo preguntarte algo?
- Como has montado el sistema de procesos? por array de objetos o por otro sistema?
User avatar
AmakaSt
Posts: 402
Joined: Fri Oct 03, 2008 10:00 pm
Contact:

Re: Div Games Online en Html5 y Javascript

Post by AmakaSt »

OskarG wrote:Hola amaka,paseando por los foros he encontrado GAMEPOWER,es clavadito a div2 :lol: me ha hecho gracia,ahora estoy trasteando con el y viendo que diferencias hay entre tu proyecto y este y cual corre mas rapido :mrgreen: .Espero que la competencia haga que divgo se supere asi mismo y tengamos un programa para hacer juegos en html gratis y potente.
Hola OskarG,

La competencia siempre es buena para el usuario, y en este caso para los desarrolladores en lenguaje Div, cuantas más opciones donde poder elegir da más seguridad de que esto tiene futuro, de que si uno detiene su desarrollo con hacer pequeños cambios de código a nuestros proyectos se puede saltar a otro sin necesidad de aprender un nuevo lenguaje de 0. :)
También esto hace que los que desarrollamos un Div-like nos de la venilla de mejorarlo y no dejarlo atrás. ;)
erkosone wrote:Amaka puedo preguntarte algo?
- Como has montado el sistema de procesos? por array de objetos o por otro sistema?
Hola erkosone,

Con array de objetos y prototipos. Es lo que da mejor resultado al realizar pruebas de benchmark. :P

Un saludo.
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Div Games Online en Html5 y Javascript

Post by OskarG »

Pues si,la verdad que con divgo me ha picado el gusano de hacer cosas,viendo que prospera y surge competencia :D ,pues implica que tiene futuro y este lenguaje de leguas es el mas sencillo de utilizar.
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Div Games Online en Html5 y Javascript

Post by OskarG »

Hola,no logro que con el set_center cambiar el centro de rotacion del grafico 2,da igual lo que ponga que siempre rota en el mismo punto.
PROGRAM ejemplo_map_block_copy;

PRIVATE
x_destino, y_destino;
x_origen, y_origen;
ancho, alto;
fichero1;

BEGIN
set_fps(0,0)
set_mode(320,200);

fichero1= load_fpg ("graficos/tutorial0");
file=fichero1;
set_center(file, 2,320,200);

graph=2;
x=160;
y=120;


LOOP
x_destino=rand(0, 320*2);
y_destino=rand(0, 200*2);
ancho=rand(1, 32);
alto=rand(1, 32);
x_origen=rand(0, 32-ancho);
y_origen=rand(0, 32-alto);

map_block_copy(fichero1, 2, x_destino, y_destino, 1, x_origen, y_origen, ancho, alto);

FRAME;
angle+=1000;
END
END
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Div Games Online en Html5 y Javascript

Post by erkosone »

Hola Amaka, así leyendo el tema de performance he recordado una conversación que tuve con Codemaster "El tipo que creó Jdiv y Cdiv" donde me comentaba que el para aumentar rendimiento lo que hacia es crear un thread por cada objeto PROCESS y que subian los FPS mucho.

Te lo comento por que en su día esto dió una subida importante al numero de procesos que se podían ejecutar en Android con Jdiv.
Yo en cuanto estudie los threads los implementaré en mi engine, llevo ya unos meses haciendo un Div para Processing y también he tenido que ir a morir al array de objetos, pero eso es un cuello de botella muy grande, la función que devuelve la instancia del objeto n de un array es super lenta tio, y si es así en java no quiero pensar en javascript. :oops:

No se si me explico vamos, yo lo hago tmb como indicas:

[Codebox=java file=Untitled.java] Collections.sort(draws, new drawComparator());
// recorrer el array de draws y procesar su rendering..
for (int i = draws.size ()-1; i >= 0; i--) {
tempDraw = draws.get(i);
tempDraw.render();
if (tempDraw.delete()) {
//Items can be deleted with remove().
draws.remove(i);
}
}
//######################################################################
Collections.sort(sprites, new spriteComparator());

// recorrer el array de sprites y procesar su rendering..
for (int i = sprites.size ()-1; i >= 0; i--) {
tempSprite = sprites.get(i);
tempSprite.render();
if (tempSprite.delete()) {
//Items can be deleted with remove().
sprites.remove(i);
}
}

//######################################################################
Collections.sort(writes, new writeComparator());
// recorrer el array de textos y procesar su rendering..
for (int i = writes.size ()-1; i >= 0; i--) {
tempWrite = writes.get(i);
tempWrite.render();
if (tempWrite.delete()) {
//Items can be deleted with remove().
writes.remove(i);
}
} [/Codebox]

Lo malo es que encima yo uso 3 listas de objetos, una para los writes, otra para los draws, y otra para los sprites... es super super lento..
Si quieres podemos comentar como hace uno y otro que cosa y así quizá se nos ocurra como mejorar el rendimiento, a mi es un tema que me carcome desde siempre XD.. si te apetece debatir sobre como mejorar esto..
User avatar
AmakaSt
Posts: 402
Joined: Fri Oct 03, 2008 10:00 pm
Contact:

Re: Div Games Online en Html5 y Javascript

Post by AmakaSt »

OskarG, lo del punto de control con map_block_copy(), map_put(), map_xput(), map_put_pixel() y screen_copy() ya está arreglado para la próxima versión. :)

Erkosone es muy similar a lo que hago yo. También uso un bucle de array para cada tipo de objeto (write, process, draw, object3d...) y en el caso de los procesos hay 2 bucles: uno para actualizar todas las instrucciones al proceso hasta el siguiente frame, y otro para dibujar los cambios.

Code: Select all

var total = DivGO.numero_process.length;
for (var i = 0; i < total; i++){
	var pr = DivGO.numero_process[i];
			
	for (var e in DivGO.numero_scroll){
		if (scroll[e].camera == pr && pr.ctype == 0) pr.ctype = c_scroll;
	}

	for (var e in DivGO.numero_mode7){
		if (m7[e].camera == pr && pr.ctype == 0) pr.ctype = c_m7;
	}
			
	for (var e in DivGO.numero_scene3d){
		if (scene3d[e].camera == pr && pr.ctype == 0) pr.ctype = c_scene3d;
	}
	
	//para pintar y controlar los procesos dentro del scroll
	if (pr.ctype == c_scroll){
		var binaryData = '1111111111';

		if (pr.cnumber != 0){
			binaryData = ('000000000' + pr.cnumber.toString(2)).slice(-10);
			binaryData = binaryData.split('').reverse();
		}

		for (var e in DivGO.numero_scroll){ //opcion mas optima para este caso
			if (binaryData[e] == 1){ //esto pintara el proceso en el scroll indicado
				pr.region = DivGO.numero_scroll[e].region;
				pr.PAINTprocess();
			}
			
			......
		}

		......
	}

	......
}

var total 	= DivGO.numero_draw.length;
num_drawing = total; //variable global para obtener totales en DivGO
for (var i = 0; i < total; i++){
	DivGO.numero_draw[i].PAINTdraw();
}
	
var total = DivGO.numero_texto.length;
num_text = total; 
for (var i = 0; i < total; i++){
	DivGO.numero_texto[i].PAINTtexto();
}

Lo de los thread en javascript creo que no era posible o por lo menos lo que leí sobre ello comparándolo con otros lenguajes.

Un saludo.
Post Reply

Return to “Offtopic”