Div Games Online en Html5 y Javascript
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Div Games Online en Html5 y Javascript
@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.
- OskarG
- Posts: 612
- Joined: Tue Jan 12, 2010 2:12 am
Re: Div Games Online en Html5 y Javascript
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.
- AmakaSt
- Posts: 402
- Joined: Fri Oct 03, 2008 10:00 pm
- Contact:
Re: Div Games Online en Html5 y Javascript
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.
Lo de WebAssembly tengo curiosidad y bastantes dudas, a ver en que queda y cuanto tardaran en lanzar algo estable.
- OskarG
- Posts: 612
- Joined: Tue Jan 12, 2010 2:12 am
Re: Div Games Online en Html5 y Javascript
Hola amaka,paseando por los foros he encontrado GAMEPOWER,es clavadito a div2
me ha hecho gracia,ahora estoy trasteando con el y viendo que diferencias hay entre tu proyecto y este y cual corre mas rapido
.Espero que la competencia haga que divgo se supere asi mismo y tengamos un programa para hacer juegos en html gratis y potente.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Div Games Online en Html5 y Javascript
Amaka puedo preguntarte algo?
- Como has montado el sistema de procesos? por array de objetos o por otro sistema?
- Como has montado el sistema de procesos? por array de objetos o por otro sistema?
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- AmakaSt
- Posts: 402
- Joined: Fri Oct 03, 2008 10:00 pm
- Contact:
Re: Div Games Online en Html5 y Javascript
Hola OskarG,OskarG wrote:Hola amaka,paseando por los foros he encontrado GAMEPOWER,es clavadito a div2me ha hecho gracia,ahora estoy trasteando con el y viendo que diferencias hay entre tu proyecto y este y cual corre mas rapido
.Espero que la competencia haga que divgo se supere asi mismo y tengamos un programa para hacer juegos en html gratis y potente.
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.
Hola erkosone,erkosone wrote:Amaka puedo preguntarte algo?
- Como has montado el sistema de procesos? por array de objetos o por otro sistema?
Con array de objetos y prototipos. Es lo que da mejor resultado al realizar pruebas de benchmark.
Un saludo.
- OskarG
- Posts: 612
- Joined: Tue Jan 12, 2010 2:12 am
Re: Div Games Online en Html5 y Javascript
Pues si,la verdad que con divgo me ha picado el gusano de hacer cosas,viendo que prospera y surge competencia
,pues implica que tiene futuro y este lenguaje de leguas es el mas sencillo de utilizar.
- OskarG
- Posts: 612
- Joined: Tue Jan 12, 2010 2:12 am
Re: Div Games Online en Html5 y Javascript
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
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
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Div Games Online en Html5 y Javascript
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.
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..
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.
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..
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- AmakaSt
- Posts: 402
- Joined: Fri Oct 03, 2008 10:00 pm
- Contact:
Re: Div Games Online en Html5 y Javascript
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.
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.
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();
}
Un saludo.