• Jueves 7 de Noviembre de 2024, 18:32

Autor Tema:  Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.  (Leído 4821 veces)

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« en: Viernes 12 de Septiembre de 2003, 17:26 »
0
:good:

Pueden ver algunas pantallas capturadas en esta comunidad:

http://groups.msn.com/Legadodelasartesa ... oebox.msnw

Todos los efectos de blt están implementados en delphi con el método lock del directDraw (Que sólo te da una referencia a la posición de memoria donde puedes trabajar y otros datos adicionales para trabajar con la superficie)

Tiene un engine isométrico 2D, funciona perfectamente en cualquier máquina con win98 y el nro de fps aumenta con la calidad del hardware sin afectar la sincronización de animación, como sucede en un buen juego hecho en modo 3d.

El servidor también está sincronizado con el cliente para mantener la calidad de animación del juego.

Cualquier pregunta q' tengan:

ZeratulZ@hotmail.com


:lightsabre: :beer: :guitar:

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #1 en: Domingo 14 de Septiembre de 2003, 02:33 »
0
Un procedimiento que elaboré q permite hacer blt con alpha del 50%, ideal para objetos semi-transparentes. Está optimizado para modo 16bits (5-6-5).

Noten q el efecto de transparencia se obtiene con dos operadores lógicos y un desplazamiento. El efecto es visualmente muy bueno una transparencia del 50% perfecta para los ojos.

Notas:

* SuperficieRender es una variable global.
* El color transparente es el 0,0,0 =$0000

Espejo: en el eje vertical.




procedure BltTrans(const DestR:Trect;SuperficieDD:IDirectDrawSurface7;const OrigR:Trect;espejo:bytebool);
const mskTrans=$F7DF;
var x,y,anchoFaltante,anchoFaltanteOrig,ancho:integer;
    conta,contaOrig:pointer;
    dato2:integer;
    lpDDSurfaceDesc:TDDSurfaceDesc2;
begin
  FillChar(lpDDSurfaceDesc, SizeOf(lpDDSurfaceDesc),#0);//Llena de ceros.
  lpDDSurfaceDesc.dwSize := sizeof(lpDDSurfaceDesc);
  lpDDSurfaceDesc.dwFlags := DDSD_CAPS or DDSD_LPSURFACE or DDSD_PITCH;
//SuperficieRender
  if SuperficieRender.lock(@DestR,lpDDSurfaceDesc,DDLOCK_WAIT,0)=DD_OK then
  begin
    conta:=lpDDSurfaceDesc.lpSurface;
    anchoFaltante:=lpDDSurfaceDesc.lPitch-(DestR.Right-DestR.Left) shl 1;
//SuperficieTransparente
    FillChar(lpDDSurfaceDesc, SizeOf(lpDDSurfaceDesc),#0);//Llena de ceros.
    lpDDSurfaceDesc.dwSize := sizeof(lpDDSurfaceDesc);
    lpDDSurfaceDesc.dwFlags := DDSD_CAPS or DDSD_LPSURFACE or DDSD_PITCH;
    if SuperficieDD.lock(@OrigR,lpDDSurfaceDesc,DDLOCK_WAIT,0)=DD_OK then
    begin
      if espejo then
      begin
        contaOrig:=Pointer(integer(lpDDSurfaceDesc.lpSurface)+(origR.Right-origR.Left) shl 1);
        anchoFaltanteOrig:=lpDDSurfaceDesc.lPitch+(origR.Right-origR.Left) shl 1;
        ancho:=lpDDSurfaceDesc.lPitch;
        x:=integer(lpDDSurfaceDesc.lpSurface);//!
        for y:=origR.top to origR.Bottom-1 do//-1
        begin
          while integer(contaOrig)>x do
          begin
            dec(integer(contaOrig),2);
            dato2:=word(contaOrig^);
            if dato2<>0 then
              word(conta^):=((dato2 and mskTrans)+(word(conta^) and mskTrans)) shr 1;
            inc(integer(conta),2);
          end;
          inc(integer(conta),anchoFaltante);
          inc(integer(contaOrig),anchoFaltanteOrig);
          inc(x,ancho);//!
        end;
      end
      else
      begin
        contaOrig:=lpDDSurfaceDesc.lpSurface;
        anchoFaltanteOrig:=lpDDSurfaceDesc.lPitch-(origR.Right-origR.Left) shl 1;
        ancho:=lpDDSurfaceDesc.lPitch;
        x:=integer(lpDDSurfaceDesc.lpSurface)+(origR.Right-origR.Left) shl 1;;//!
        for y:=origR.top to origR.Bottom-1 do
        begin
          while integer(contaOrig)<x do
          begin
            dato2:=word(contaOrig^);
            if dato2<>0 then
              word(conta^):=((dato2 and mskTrans)+(word(conta^) and mskTrans)) shr 1;
            inc(integer(conta),2);
            inc(integer(contaOrig),2);
          end;
          inc(integer(conta),anchoFaltante);
          inc(integer(contaOrig),anchoFaltanteOrig);
          inc(x,ancho);//!
        end;
      end;
      SuperficieDD.unlock(@OrigR);
    end;
    SuperficieRender.unlock(@DestR);
  end;
end;

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #2 en: Domingo 14 de Septiembre de 2003, 02:35 »
0
Noooooo...:o
Desaparecieron las Tabulaciones..

Aqui va adjuntado...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #3 en: Domingo 14 de Septiembre de 2003, 03:34 »
0
por lo que veo usas Visual Basic, y direct X al parecer inferior al 9 managed...

en direct x managed , existen superficies alpha, que hacen todo lo que tu has hecho y con mas cositas por ahi...
De todos modos te felicito por lo que hiciste ya que casi nadie se le mide a la programacion grafica en ninguna plataforma.

Espero que no te haya parecido odioso el comentario..no es la intencion.

Ahh si para lo de los tabuladores debes utilizar la opcion de insertar codigo cuadndo estes postenado el mensaje, de esta forma , conservara el formato. ejemplo:

 
Código: Text
  1.  
  2.     public void RenderGraphics(Point currentDestination)
  3.     {
  4.         if (!owner.Created)
  5.             return;
  6.  
  7.         try
  8.         {
  9.             Rectangle rect = new Rectangle(owner.PointToScreen(new Point(0,0)), new Size(surfaceSecondary.SurfaceDescription.Width, surfaceSecondary.SurfaceDescription.Height));
  10.  
  11.             sprMegaMan.PointToScreen(index,ref currentDestination);
  12.             surfaceSecondary.Draw(surfFondo, DrawFlags.DoNotWait);
  13.             surfaceSecondary.Draw(new Rectangle(currentDestination, new Size(sprMegaMan[index].Width, sprMegaMan[index].Height)), surfMegaman
  14.                     ,sprMegaMan[index] ,DrawFlags.DoNotWait | DrawFlags.KeySource);
  15.             //surfaceSecondary.DrawFast(0 ,0 ,surfFondo , DrawFastFlags.DoNotWait);        
  16.             //surfaceSecondary.DrawFast(currentDestination.X, currentDestination.Y, surfMegaman
  17.             //    ,sprMegaMan[index] ,DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);
  18.             /*esperar retrazado vertical*/
  19.             localDevice.WaitForVerticalBlank(WaitVbFlags.BlockEnd);        
  20.             surfacePrimary.Draw(rect, surfaceSecondary , DrawFlags.DoNotWait);  
  21.        
  22.             ProccessNextFrame(currentDestination);
  23.         }
  24.         catch(SurfaceLostException)
  25.         {
  26.             AllSurfacesDisposer();
  27.             CreateSurfaces();
  28.         }
  29.     }
  30.  
  31.     private void ProccessNextFrame(Point currentDestination)
  32.     {
  33.         if(fstload)
  34.         {
  35.             p = currentDestination;
  36.             fstload = false;
  37.         }
  38.         else
  39.         {
  40.             if((System.Environment.TickCount-tiempo)>= 100 )
  41.             {
  42.                 if((index < sprMegaMan.Count()-1) )
  43.                 {
  44.                     index++;
  45.                     tiempo = System.Environment.TickCount;
  46.                 }
  47.                 else
  48.                 {
  49.                     index = 1;
  50.                 }
  51.                 if(p == currentDestination)
  52.                     index = 0;
  53.             }
  54.             p=currentDestination;
  55.         }
  56.     }
  57.  
  58.  

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #4 en: Lunes 15 de Septiembre de 2003, 19:06 »
0
En realidad es código para Delphi.

¿Es posible aplicar efectos alpha/alphaEdgeBlending sin estar en modo 3d?

Parece que todas las tarjetas de video tienen implementados estos efectos sólo para modo 3d, obviamente porque la codificación es distinta entre 2d y 3d, en 3d es más complicado y los algoritmos son inevitablemente más pesados que para 2d. DirectX tampoco parece tener estos efectos por "software"  en caso de que tu tarjeta de video no los soporte en modo 2d.

Por estos motivos tengo implementados esos efectos en 2d por software, es más ligero que entrar en modo 3d y utilizar los de la tarjeta aceleradora, por lo menos con una tarjeta de 8MB todo va muy lento:(  .

El juego que estoy haciendo está orientado a usuarios q no puedan pagar los 10$us mensuales que generalmente cuesta jugar un MMORPG.  Por esto mismo el juego no puede exigir que el usuario tenga la super máquina.

El juego funcionará en cualquier máquina donde corra win98+directX7. Y si la máquina es buena el juego irá a mayores fps.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #5 en: Lunes 15 de Septiembre de 2003, 19:40 »
0
todo lo que te mencione en 2d se hace a travez de directDraw o sea solo 2D.
No se las  ersiones anteriores de Directx pero la 9, tanto la managed, como la normal, poseen la capacidad de trabajar casi todos estos efectos tanto por hardware, por hardware emulation y por software emulation.

Todos los efectos 2d de directx son soportados por sw y hw, no se si con los 3D hayan muchos que solo soporten por hardware.

Creo que la emulacion por software, alcanza a ser mas lenta que si usas las superficies 3d por hardware... seria bueno consultar con algun experto.. esto generalmente es asi pero depende de las maquina donde lo ejecutes.
La implementacion por hardware de cosas como el alfa blending es igual en 2d que en 3D, lo que realmente afecta el rendimiento en este caso no es la propia implementacion del efecto sino los calculos pertinentes al 3D, y al  zbuffer de las superficies, y por supuesto todo lo que esto conlleva, generalmente si trabajas con superficies 2D con librerias 3D que ejecuten rutinas implementadas por hw, no habra diferencia entre manejar rutinas 2D o 3D, desde que manejes tan sololos recursos necesarios.

En las maquinas más modernas, es decir digamos que desde un pentium de 1000 mhz, es practicamente transparente las implementaciones 2D por emulacion por sw o el trabajo por hw, ya que la velocidad de procesamiento, en general es muchisimas veces mayor a la velocidad de procesamiento de las propias tarjetas.


Juank


Ahh si note lo delphi por las minusculas :P pero igual eso gfue ayer enla noche. :hippi:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Zoltrakk

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #6 en: Lunes 15 de Septiembre de 2003, 20:14 »
0
Amalius no se puede bajar el juego? si se puede pasame el link plz

Gracias de antemano

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #7 en: Miércoles 17 de Septiembre de 2003, 00:26 »
0
A fin de mes mandaré una versión beta para test a todos los q se apunten y dejen su email en este foro (Un email con 4 megas libres como mínimo). Lo mandaré por partes (a lo sumo 4 correos de 1mega c/u).

Incluirá el cliente y el servidor para funcionar sobre TCP/IP.

Tendrá varios comandos de test "cheats" para subir de nivel, viajar a otros mapas, crear artefactos, etc.

Zoltrakk

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #8 en: Jueves 18 de Septiembre de 2003, 21:36 »
0
Amalius, yo tengo un correo, pero solo es de 2 Mb asi ke no me vale... mejor ke lo subas a un host pa ke se lo baje la gente... si hace fala te presto uno cuando encuentre los datos, sera mejor para todos... y asi no habra saturacion en el servidor(cosa ke veo dificil), el juego es un tipo ultima online no? si es asi mola un cojon, tambien otra cosa ke podrias hacer es como lo de gm(Game Master) ke tengan mas poderes ke otros, mas fuerza ke otros y esas cosas... son sugerencias, detallicos ke tarian bien los GM seria como los moderadores del juego, y una zona de entrenamiendo, ke alli la gente pueda entrenar, y hacer combates sin kitar vida, para dejarlo la noche entrenando(sin poder matar). bueno, son ideas. espero ke saques ya el beta

Dancing-Mood

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #9 en: Viernes 19 de Septiembre de 2003, 16:08 »
0
Excelente realmente.
Eso que dice Zoltrakk, se llama Macreo Desatendido, lo dejas subiendo cierta habilidad.
Hace un par de anios que juego al UO (Ultima Online), siempre me gusto este tipo de juegos, pero lo que realmente, no me atrae mucho, es el tema de las experiencias, eso lo hace mas "limitado' al juego, con esto quiero decir, que uno llega al tope de experiencia y que pasa??.
En cambio el UO, es por subidas de skills, Necromancer, Magery, Sword, Fencing, Cooking, Mining, etc, etc y unas 100 habilidades mas.
De todas formas, excelente el juego, apenas lo tengas avisame, que me anoto para probarlo.
Salu2 y espero qeu sigas asi.
Hernan

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #10 en: Sábado 20 de Septiembre de 2003, 05:35 »
0
Ya pueden bajar la versión para test del Cliente+Servidor de esta comunidad:

(En la parte de documentos)

http://groups.msn.com/Legadodelasartesarcanas

Espero que les guste, sólo ocupa 3 Megas. (por el momento...) Si notan que faltan cosas recuerden que está en pleno desarrollo.

Basta que tu máquina tenga win98 y directX7 o superior, pero si tienes una maquina buena puedes presionar "F" para incrementar los FPS.

En el servidor pueden controlar el consumo de ancho de banda/cpu cambiando el número de turnos por segundo en el juego. Bastan 200/100(modo de bajo consumo) bytes por segundo por cada cliente conectado. Pueden presionar "E" para ver la cantidad de bytes "Netos" (descontando información de control) recibidos del servidor.

También pueden poner música mp3 en lugar de midis, para lo que tienen que reemplazar los archivos .mid por sus .mp3 preferidos, cambiándoles de extensión a .mpg

Recuerden que siempre podrán salir con Alt+F4 si las cosas se ponen feas en el combate!

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #11 en: Sábado 20 de Septiembre de 2003, 05:53 »
0
Respecto a lo del macreo y experiencia:

Si el jugador tiene que macrear es que el juego es aburrido, es una de las cosas que quiero evitar. No será tan difícil y moroso conseguir recursos (si tienes la pericia adecuada) Y será también fácil perder lo que conseguiste.

El juego no está orientado en el sentido de que el jugador más poderoso es el que tiene más experiencia. El jugador más poderoso será el que se prepare para el combate con alguna estrategia bien pensada para acabar con el enemigo. Será vital la coordinación de magos y guerreros. Casi todos los conjuros afectan también a los monstruos. Puedes conjurar guerreros esqueleto, darles armaduras mágicas, acelerarlos, darles meyor fuerza, hacerlos invisibles, hacer que vean a invisibles, curarlos ,etc. Igual puedes ayudar a tus guerreros en el combate. Puedes atacar al adversario reduciendo su capacidad de ataque al mínimo, paralizándolo, maldiciendo sus armas/armaduras, quemándolo, congelándolo, etc. El guerrero puede tener la pericia de Ira Tenax que le permitirá duplicar el daño que haga a costa de perder capacidad de defensa. Los magos pueden crear armas/armaduras/vestimentas mágicas de todo tipo ya sea con gemas como el rubí o con aleaciones como el oricalco que es elaborado por los alquimistas. Y muchas cosas más que ya están implementadas.

El comercio aún no está implementado, pero tendrá el concepto de "libre oferta y demanda" para que el juego se auto-balancee, pero poniendo límites para evitar que los jugadores hagan lo que algunos tipos hacen en wall street.

Los precios podrán incrementarse hasta CASI 4 veces el precio "normal", al mismo tiempo podrás vender tus objetos a medio uso por 1/4 del precio de venta del objeto nuevo. Esto es para fomentar el comercio entre jugadores y la fabricación propia de artefactos.

Zoltrakk

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #12 en: Sábado 20 de Septiembre de 2003, 09:41 »
0
y cuando estara listo el server LAA? es ke yo me tuve ke crear una partida pero no se donde estan las tiendas, supongo ke no abra nada por lo ke as dicho ke el comercio on esta preparado, pero, tampoco se como hacer las magias, conjuros y eso.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #13 en: Sábado 20 de Septiembre de 2003, 18:25 »
0
aún no lo descargo, lo haré en cuanto esté el server;).

Escribo para comentar que me gustaría que se mantuviera en pedir pocos recursos de máquina, para que la mayoría lo pueda disfrutar sin tener que hacerse de un 'maquinón'. Es lo que se hace normalmente con los juegos 'shareware' ¿no?
La imaginación es el límite.
Hardware & Software | Mexchip

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #14 en: Sábado 20 de Septiembre de 2003, 21:07 »
0
Para hacer magia:

Como aún no existen vendedores puedes crear los objetos que necesites con el cheat "%Objeto n n"

1.- Crear un mago o un clérigo preferentemente.

2.- Subir de nivel o utilizar el cheat
  %nivel

3.- Crear pergaminos mágicos para aprender conjuros:
escribir en el chat:

  %objeto 224 n    

n va de 0 a 29. Cada número corresponde a un tipo de conjuro.

Seleccionar el icono del pergamino y hacer click derecho para usarlo.

Si logras leer el pergamino ya puedes lanzar ese hechizo.

Para recuperar mana:

1.- Poción de mana:
 
%objeto 162 255

2.- Crear un libro de hechiceria para magos o uno de oraciones para los clérigos, luego lo colocas en tu mano derecha (Selecciona el libro y haz click derecho  o bien presiona la tecla u, también puedes hacer click derecho sobre la casilla donde quieres usar el objeto que seleccionaste)

Libros:

%objeto 115 1
%objeto 119 1

Luego en el chat escribe /descansar
para empezar a recuperar maná.

Para lanzar los conjuros:

Dependiendo del conjuro será necesario que apuntes a un monstruo y luego presiones "C" para lanzar el conjuro. Puedes seleccionar el conjuro que utilizarás en el tab de conjuros al lado del tab del inventario del jugador.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #15 en: Sábado 20 de Septiembre de 2003, 21:49 »
0
En realidad será un juego "freeware" y se podrá jugar como mínimo en una Pentium 100 de 32 RAM y 1mega de video (a 9 FPS). Si tienes una máquina más rápida el juego irá a 18,27 y hasta 36 FPS. De forma que si tienes una máquina lenta lo jugarás como si fuera ajedrez donde vez tus fichas moverse de casilla en casilla, pero si tienes una máquina rápida verás a tu personaje y a los monstruos delplazándose más suavemente por la pantalla.

Dancing-Mood

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #16 en: Domingo 21 de Septiembre de 2003, 19:21 »
0
Por lo que veo, necesito subscribirme a tu grupo, asi que ahora te mando la peticion.
Salu2

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Juego de Rol Multi-Usuario Masivo 100% Hecho en Delphi.
« Respuesta #17 en: Sábado 25 de Octubre de 2003, 08:26 »
0
Además:

- Auras para ver los hechizos que afectan a monstruos y jugadores
-Nuevas animaciones para personajes
- El aspecto de tu personaje cambia dependiendo de la vestimente, por el momento sólo existen dos a tres variaciones dependiendo de la clase y raza, pero el sistema ya está hecho y "sólo" es cuestión de diseñar más animaciones sin modificar código.
- 6 mapas para jugar, un calabozo y diversos terrenos y sonidos ambientales.

Pueden bajarse el juego completo de:

http://groups.msn.com/Legadodelasartesarcanas