Entidad 3D :: Creación de juegos en 3D sin programar

Foro de Entidad 3D
 
PortalÍndiceBuscarMiembrosGrupos de UsuariosFAQChatAnalisisRegistrarseConectarse
. . . . . . . . . . . . . . . . . . . . . . . .
Visita el sitio oficial de Entidad 3D para descargar la última versión!
Si encuentras un bug en la útlima versión de Entidad 3D, comunícaselo directamente al autor de Entidad 3D, Jordi Perez via correo electronico. Si no estás seguro si es un bug o no, consúltalo con la gente del foro!
Si eres un usuario nuevo preséntate en el subforo de saludos y despedidas para asegurar tu cuenta! (Los usuarios que tengan 0 mensajes pasados los primeros 10 días de creada su cuenta serán eliminados como política de limpieza del foro)

Comparte | 
 

 Gear3D - Mi proyecto

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Gear3D - Mi proyecto   Lun Oct 24, 2016 3:57 pm

Objetivos a cumplir para la liberación del motor demo desarrollo v.0.0 Alpha.

[Tienes que estar registrado y conectado para ver esa imagen]




DESCARGAR DEMO DESARROLLO

[Tienes que estar registrado y conectado para ver este vínculo]


Última edición por Yue el Miér Jul 12, 2017 10:54 pm, editado 23 veces
Volver arriba Ir abajo
Ver perfil de usuario
croviman
Moderador
Moderador
avatar

Último Juego : Aporía2
Sexo : Masculino
Mensajes : 1948
Edad : 37
Localización : Canelones

MensajeTema: Re: Gear3D - Mi proyecto   Lun Oct 24, 2016 6:19 pm

Gran emprendimiento!!!! Muy interesante!

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://http.//atmosferismos.blogia.com
Wizard
Experto
Experto
avatar

Último Juego : Murciélago v3.0
Sexo : Masculino
Mensajes : 590
Edad : 30
Localización : Perdido

MensajeTema: Re: Gear3D - Mi proyecto   Lun Oct 24, 2016 6:53 pm

De entrada te digo que hacer un motor es 'complicado' si no haces un planteamiento inicial bueno. Entender como asignar la cámara al jugador en vez de programarla en la misma clase del jugador (este error lo cometí yo hace mucho y es muy malo), hay que separar el movimiento del jugador de la cámara para que luego todo se mueva bien (otro error que cometí importante y que luego lo complica todo), etc...

Dicho esto... algunas preguntas:
¿Tipo de motor?
RPG,MMORPG,Aventura gráfica, plataformas...
¿Tipo de visión?
Cuadriculada desde arriba (tipo pokemon), isométrica...
¿tipo de movimiento?
cuadricula tipo pokemon, libre desplazamiento, octogonal...
¿librería?
SDL, directX, openGL...
¿Mapeador propio o publico? si es publico ¿cual?

Por aquí tienes un minimotor que estoy haciendo en HTML5 [Tienes que estar registrado y conectado para ver este vínculo]

PD: Igual son muchas preguntas de entrada pero es un tema que me gusta Wink

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
| [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] |
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidad-e3d.com
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Lun Oct 24, 2016 7:24 pm

Funciones : Continuando con esto, ya se pueden implementar funciones personalizadas desde un archivo de CE SCripts.

Para aclarar lo de las funciones, existen dos tipos, unas son las nativas del motor, es decir las que yo creo y el usuario final no tiene acceso al código, una de esa sería Mensaje, que recibe un parámetro, un dato literal que se muestra en pantalla que puede ser cualquier de los tres tipos de datos. Por otro lado el usuario puede crear sus funciones personalizadas en base a las existentes.

Declarando funciones personalizadas.
Las funciones personalizadas se declaran con la clausula de apertura "Function", seguido se estable el nombre o identificador, y entre parentisis de forma opcional se pueden declarar parámetros, o variables de uso interno en la función. Ya para finalizar la clausula de cierre sería un "EndFunction".

Código:

Function MostrarMensaje()

EndFunction


Para hacer uso de la respectiva función, simplemente llamamos su nombre o identificador.
Código:

Function MostrarMensaje()

EndFunction

MostrarMensaje()


En este punto la función no hace nada especial, pues dentro de su cuerpo no hemos implementado código. Así que para hacer esto algo ilustrativo, dentro de la función ponemos el comando "Mensaje".

Código:

Function MostrarMensaje()

       Mensaje("Hola Mundo")
End Function

MostrarMensaje()


En este caso el resultado es que se muestra el mensaje en la pantalla de trabajo de Cube Engine. Algo que anotar es que las funciones pueden ser declaradas en cualquier lugar para luego ser usadas, algo que no sucede con las variables que debe ser al contrario, es decir primero creadas y luego usadas.

Otro aspecto importante, es que por defecto las funciones están preparadas para retornar un tipo de dato entero desde su interior. Para que esto sucede se debe usar la palabra reservada "Return" desde adentro de la función. Por omisión se regresa un valor de tipo entero al no hacer uso de los modificadores de tipo de datos tras el nombre de la función.  

Código:

Function Numero()

          Return 10

EndFunction

Mensaje( Numero())


Ahora funciones con parámetros.

Código:

Function Saludo(texto:String, texto2:String)

 Mensaje( texto + " " +  texto2 )

EndFunction


Saludo("Hola", "John")



Esto es todo por el momento, subo una versión de desarrollo a Dropbox, por si alguien quiere probar lo que se esta implementando. Saludos.

[Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Lun Oct 24, 2016 7:32 pm

Wizard escribió:
De entrada te digo que hacer un motor es 'complicado' si no haces un planteamiento inicial bueno. Entender como asignar la cámara al jugador en vez de programarla en la misma clase del jugador (este error lo cometí yo hace mucho y es muy malo), hay que separar el movimiento del jugador de la cámara para que luego todo se mueva bien (otro error que cometí importante y que luego lo complica todo), etc...

Dicho esto... algunas preguntas:
¿Tipo de motor?
RPG,MMORPG,Aventura gráfica, plataformas...
¿Tipo de visión?
Cuadriculada desde arriba (tipo pokemon), isométrica...
¿tipo de movimiento?
cuadricula tipo pokemon, libre desplazamiento, octogonal...
¿librería?
SDL, directX, openGL...
¿Mapeador propio o publico? si es publico ¿cual?

Por aquí tienes un minimotor que estoy haciendo en HTML5 [Tienes que estar registrado y conectado para ver este vínculo]

PD: Igual son muchas preguntas de entrada pero es un tema que me gusta Wink

Hola, Smile
- Plataformas.
- Tercera persona.
- Libre desplazamiento.
- DirectX.

En el momento estoy enfocado totalmente en el CE Scripts, no es perfecto, se puede implementar muchas cosas, pero trato de ser lo mas simplista al respecto. La idea es usar comandos como por ejemplo, G3D2D( anchoVentana:int, altoVentana:int, modoVentana:int) para implementar cosas en el juego.

Ya casi todo lo de CE Script lo tengo, estoy revisando algunas cosas, y el siguiente paso es empezar a implementar comando que se caracterizan por estar en español, "CargarImagen", "DibujarImagen", "CargarMalla", "EliminarMalla", "DibujarHud" etc. Smile

Saludos.
Volver arriba Ir abajo
Ver perfil de usuario
Wizard
Experto
Experto
avatar

Último Juego : Murciélago v3.0
Sexo : Masculino
Mensajes : 590
Edad : 30
Localización : Perdido

MensajeTema: Re: Gear3D - Mi proyecto   Lun Oct 24, 2016 8:07 pm

Ya que aun estas empezando ¿Te has planteado utilizar SDL en vez de DirectX? Es rápido, fácil de usar y multiplataforma

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
| [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] |
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidad-e3d.com
estantaya
Avanzado
Avanzado
avatar

Último Juego : Sur Survival
Sexo : Masculino
Mensajes : 273
Edad : 30
Localización : Mi casa

MensajeTema: Re: Gear3D - Mi proyecto   Miér Oct 26, 2016 7:33 am

eres grande yue ecua dor ecua dor ecua dor!!!
nose si pido mucho pero podrias separar en una dll las funciones de parseo??

por ejemplo cubeEngineParser.dll
y documentar un poco las funciones
de esta manera yo podria por ejemplo usar tu lenguaje en mis juegos de unity3d
dandole posibilidades a mis jugadores de crear comandos

pero es solo una idea
Volver arriba Ir abajo
Ver perfil de usuario http://33.media.tumblr.com/04ce0ed37cbf34da18782f49a8b3765d/tumb
Th_Rh_luis
Avanzado
Avanzado
avatar

Sexo : Masculino
Mensajes : 210
Edad : 23
Localización : DF, México

MensajeTema: Re: Gear3D - Mi proyecto   Jue Oct 27, 2016 1:40 pm

Esto de crear motores siempre me ha parecido interesante pero la verdad no le entiendo nada XD . Sin duda interesante proyecto
Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Jue Oct 27, 2016 4:30 pm

Hola, continuamos con esto, el proyecto en cierta manera es colosal, y a veces creo que peco por codicioso. Sin embargo es muy temprano para hablar del futuro de Cube Engine. Asì que por ahora avances nuevos.

Los el lenguaje de programación de CE Scripts, ya está en su totalidad, es importante una documentación al respecto y en cuanto tenga tiempo tendré que hacerla. Además ya tengo una serie de comandos, por ejemplo tituloAPP( "Titulo ventana"), y de esta manera serán todos.

El resto implica que estoy construyendo un editor de niveles, inspirado en la Unidad, y solo tengo esta pequeña ventana de lo que estoy haciendo ahora.

[Tienes que estar registrado y conectado para ver esa imagen]

Saludos.
Volver arriba Ir abajo
Ver perfil de usuario
Wizard
Experto
Experto
avatar

Último Juego : Murciélago v3.0
Sexo : Masculino
Mensajes : 590
Edad : 30
Localización : Perdido

MensajeTema: Re: Gear3D - Mi proyecto   Jue Oct 27, 2016 11:24 pm

Estás haciendo los mismos pasos que hice yo hace tiempo Razz

Al final eso no me llevo a terminar el proyecto pero si aprendí mucho en el transcurso, por lo que no fue tiempo perdido Very Happy

Crearte tu mismo el mapeador con lleva un montón de trabajo extra (yo cree uno en javascript que parecía un programa instalado) y aunque divertido, te carga de trabajo.

Ya que es un 2d echa un vistazo a este mapeador gratuito:
[Tienes que estar registrado y conectado para ver este vínculo]

Te ahorrará trabajo y es muy versátil.

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
| [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] |
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidad-e3d.com
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Vie Oct 28, 2016 8:43 pm

Creo que tienes razón Wizard, proyectos como estos nos ayudan a aprender mucho, yo realmente espero poder hacer esto realidad, tengo mucha fe Very Happy.

Por ahora comparto el sitio web oficial de [Tienes que estar registrado y conectado para ver este vínculo], donde en estoy creando actualmente una sección llamada documentación para la programación en CE Script. Si alguien se anima a colaborar probando el trabajo estaré enormemente agradecido.


[Tienes que estar registrado y conectado para ver este vínculo]

Nos veremos Luego.
Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Vie Nov 04, 2016 4:57 pm

El tema para hoy es hablar de lo nuevo implementado en CE Script.

Tipos personalizados de datos.
Los tipos personalizados de datos son una estructura en la cual se puede almacenar diferentes tipos de datos, sea cadena de texto, flotantes o enteros, eso es conocido como un objeto.


Código:

Type TCoche



EndType


La forma de declarar un Type, se realizar con la clausula de apertura Type, donde se indica el identificador de el Type o lo que en otros lenguajes orientados a objetos se conoce como Clase. el Identificador siempre debe tener la Letra T al iniciar ese nombre, no es obligatorio pero permite mejora la legibilidad del script. su clausula de apertura es un simple EndType.

Dentro del cuerpo de los tipos personalizados declarados se establecen variables. Como en el mundo real un objeto coche, puede tener varios datos, número de llantas, color de chassis, número de puertas, fuerza motor etc. Estos datos se declaran con la palabra reservada Field.

Código:

Type TCoche

       Field colorChassis:String
       Field nLLantas:Int
       Field combustible:Float
      Field velocidad:Float

EndType


Tras la creación de nuestro tipo o clase, el siguiente paso es crear una instancia de este tipo y crear un objeto, eso se hace mediante la palabra reservada New. Donde la estructura del objeto se se puede almacenar por ejemplo en una variable con el tipo de dato personalizado TCoche.

Código:


Local cocheDeportivo:TCoche

cocheDeportivo = New TCoche

Local camion:TCoche

camion= new TCoche

En este punto se han creado dos vehículos / Objetos del tipo personalizado "TCoche", donde su diferencia radica en los valores de sus variables internas, donde por ejemplo el camión, puede tener mayor número de llantas y mayor capacidad de combustible en relación con el coche deportivo, pero esto último tiene mayor velocidad.

Para iniciar los valores de los diferentes objetos creados, lo hacemos de la siguiente forma.

Código:

camion.nLlantas = 8

Menaje( camion.nLlantas )


Todo objeto que es creado con la palabra "New", se puede eliminar con la palabra reservada "Delete", esto implica que si posteriormente queremos acceder sus datos, nos será imposible ya que el objeto no existe mas en la memoria.


Código:


Delete camion


Frentes de trabajo
Núcleo del motor.
Editor de niveles.
Editor de código.

Nos veremos luego Wink
Volver arriba Ir abajo
Ver perfil de usuario
estantaya
Avanzado
Avanzado
avatar

Último Juego : Sur Survival
Sexo : Masculino
Mensajes : 273
Edad : 30
Localización : Mi casa

MensajeTema: Re: Gear3D - Mi proyecto   Lun Nov 07, 2016 1:34 am

Wizard escribió:
Estás haciendo los mismos pasos que hice yo hace tiempo Razz

Al final eso no me llevo a terminar el proyecto pero si aprendí mucho en el transcurso, por lo que no fue tiempo perdido Very Happy


eso nos paso a todos Laughing Laughing Laughing
Volver arriba Ir abajo
Ver perfil de usuario http://33.media.tumblr.com/04ce0ed37cbf34da18782f49a8b3765d/tumb
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Jue Jul 06, 2017 12:48 am

Saludos, he regresado desde un tiempo.

Aún continuo con esto y los cambios han sido relevantes. En primer lugar he optado por permitir programar usando el Script Lua. Y en las pruebas una simple escena con una cámara y un cubo en Lua sería de esta forma.



Código:


require("pu")


local camara = 0
local cubo  = 0

function Start()
   
   Sistema.Graphics3D()
   camara = Sistema.CreateCamera()
   cubo = Sistema.CreateCube()
   
       

end

function Update()
   

   
   Sistema.PositionEntity( cubo )
   Sistema.RenderWorld()
   
   Sistema.TurnEntity( cubo )
   Sistema.Flip()

   

end




[Tienes que estar registrado y conectado para ver esa imagen]

Saludos.

Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Dom Jul 09, 2017 1:45 am

Objetivos a cumplir para la liberación del motor demo desarrollo v.0.0 Alpha.

[Tienes que estar registrado y conectado para ver esa imagen]

En Progreso
Finalizado
No Iniciado
Pausado

Clase CMesh

CMesh.CreateCube(  int parent)
CMesh.CreateCone( int segments, bool solid,  int parent)
CMesh.CreateTorus(int segments, float r, float r_Tube, Int parent)
CMesh.CreateSphere(int segments, int parent)
CMesh.CreateCylinder( int segments, bool solid, int parent )
CMesh.LoadMesh( char* file, int parent )
CMesh.LoadAnimMesh( char* file, int parent )


Clase CControl

CControl.SetPosEntity( float x, float y, float z, bool global)
CControl.SetColorEntity(byte r, byte g, byte b)
CControl.SetScaleEntity(float x, float y, float z)
CControl.TurnEntity(float x, float y, float z, bool glogal)
CControl.MoveEntity(float x, float y, float z)
CControl.TranslateEntity( float x, float y, float z)
CControl.SetRotEntity( float x, float y, float z, bool global)


Clase CInput

CInput.KeyDown( int KeyCode)
CPrim.KeyDown( int KeyCode )
CInput.KeyHit( int KeyCode )
CInput.KeyUp( int KeyCode)
CInput.MouseDown( int KeyCode)
CInput.MouseHit(int KeyCode)

CInput.MouseUp ( int KeyCode )

Clase CLight

TCLight.CreateLight( int Type )


Clase CSystem

TSystem.AppTitle( char* Title )
TSystem.G3D( int width, int height, int depth, int mode, bool vsync )



Ejemplo programación Script Lua.

Código:

--******************************************
--| Fichero : Main.lua / Gear3D
--| Nota    : Fichero de entrada Script.
--|           No cambiar el nombre Main.lua
--******************************************

--Variables Globales.
teapot = 0
True = 1
False = 0
sun = 0
-- Function Start.
function Start()

 --Ilumination.
 sun = CLight.CreateLight(1)

 --Teapot.
 teapot = CMesh.LoadMesh("Teapot.3ds")
 --Control Teapot.
 CControl.SetPosEntity ( teapot,0, 0, 0)
 CControl.SetRotEntity ( teapot, 10, 10, 10 )
 CControl.SetColorEntity( teapot, 255, 255, 0 )

 
      
end
--Function Update.
function Update()
 
  
 if CInput.MouseDown(1) == True  then
 
 CControl.TranslateEntity( teapot, 0, 0, 1.0 )
 
 end  
 CControl.TurnEntity ( teapot, 1, 1, 1,1 ) -- Turn teapot.
 
end

Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Lun Jul 10, 2017 6:02 pm

Imagen de carga del motor. Smile

[Tienes que estar registrado y conectado para ver esa imagen]
Volver arriba Ir abajo
Ver perfil de usuario
croviman
Moderador
Moderador
avatar

Último Juego : Aporía2
Sexo : Masculino
Mensajes : 1948
Edad : 37
Localización : Canelones

MensajeTema: Re: Gear3D - Mi proyecto   Lun Jul 10, 2017 6:03 pm

Pinta espectacular esto!

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://http.//atmosferismos.blogia.com
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Lun Jul 10, 2017 6:35 pm

Hola, he liberado la versión de desarrollo v.0.0 de Gear3D, me encantaría  saber vuestras opiniones. La lista de comandos que funciona son las que se encuentran en color verde en la primer entada. Solo es necesario un sistema operativo Windows, y cero que cualquier computadora podrá correrlo sin problema. Ya que es una fase muy temprana de desarrollo.

Saludos.

DESCARGAR DEMO GEAR3D v.0.0

[Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Lun Jul 10, 2017 10:09 pm

Modulos tabla código de teclado.

Código:

--******************************************
--| Fichero : KeyCode.lua / Gear3D
--| Nota    : Módulo Claves de las teclas y
--|           mouse.
--******************************************
local KeyCode = {}

KeyCode.F1 = function() return(59) end
KeyCode.F2 = function() return(60) end
KeyCode.F3 = function() return(61) end
KeyCode.F4 = function() return(62) end
KeyCode.F5 = function() return(63) end
KeyCode.F6 = function() return(64) end
KeyCode.F7 = function() return(65) end
KeyCode.F8 = function() return(66) end
KeyCode.F9 = function() return(67) end
KeyCode.F10 = function() return(68) end
KeyCode.F11 = function() return(87) end
KeyCode.F12 = function() return(88) end

KeyCode.Escape = function() return (1)   end
KeyCode.Key1 = function() return (2)   end
KeyCode.Key2 = function() return (3)   end
KeyCode.Key3 = function() return (4)   end
KeyCode.Key4 = function() return (5)   end
KeyCode.Key5 = function() return (6)   end
KeyCode.Key6 = function() return (7)   end
KeyCode.Key7 = function() return (8)   end
KeyCode.Key8 = function() return (9)   end
KeyCode.Key9 = function() return (11)  end
--KeyCode.Minus = function() return (12)  end
--KeyCode.Equals= function() return (13)  end
KeyCode.Back = function() return (14)  end

KeyCode.Tab     = function() return (15)  end
KeyCode.Q = function() return (16)  end
KeyCode.W = function() return (17)  end
KeyCode.E = function() return (18)  end
KeyCode.R = function() return (19)  end
KeyCode.T = function() return (20)  end
KeyCode.Y = function() return (21)  end
KeyCode.U = function() return (22)  end
KeyCode.I = function() return (23)  end
KeyCode.O = function() return (24)  end
KeyCode.P = function() return (25)  end
--KeyCode.LBracket= function() return (26)  end
--KeyCode.RBracket= function() return (27)  end
KeyCode.Enter     = function() return (28) end

KeyCode.A = function() return (30) end
KeyCode.S = function() return (31) end
KeyCode.D = function() return (32) end
KeyCode.F = function() return (33) end
KeyCode.G = function() return (34) end
KeyCode.H = function() return (35) end
KeyCode.J = function() return (36) end
KeyCode.K = function() return (37) end
KeyCode.L = function() return (38) end
--Key.Code.Scolon = function() return (39) end
--KeyCode.Apostrophe = function() return (40) end
--keyCode.Grave = function() return (41) end
KeyCode.LShift = function() return (42) end
--KeyCode.Bakslash = function() return (43) end

KeyCode.Z = function() return (44) end
KeyCode.X = function() return (45) end
KeyCode.C = function() return (46) end
KeyCode.V = function() return (47) end
KeyCode.B = function() return (48) end
KeyCode.N = function() return (49) end
KeyCode.M = function() return (50) end
KeyCode.Comma   = function() return (51) end
KeyCode.Period  = function() return (52) end
KeyCode.Slahs = function() return (53) end
KeyCode.RShift  = function() return (54) end

KeyCode.Space   = function() return (57) end
KeyCode.Capslock= function() return (58) end
KeyCode.LCtrl   = function() return (29) end
KeyCode.RCtrl   = function() return (157) end
KeyCode.RAlt    = function() return (184) end
KeyCode.LAlt    = function() return (56) end

--Flechas.
Keycode.Up = function() return (200) end
KeyCode.Down = function() return (208) end
KeyCode.Right   = function() return (205) end
KeyCode.Left = function() return (203) end


return KeyCode


Uso del módulo dentro del script main.lua

Código:


-******************************************
--| Fichero : Main.lua / Gear3D
--| Nota    : Fichero de entrada Script.
--|           No cambiar el nombre Main.lua
--******************************************

-- Módulos.
KeyCode = require "Scripts.Modulos.KeyCode" -- Ruta donde se encuentra el módulo KeyCode.

teapot = 0
True = 1
False = 0
sun = 0



function Start()
 
 CSystem.fullScreen =    true
 CSystem.G3D(800,600)
 
 sun = CLight.CreateLight(1)

 
 teapot = CMesh.LoadMesh("Teapot.b3d")
 --Control Teapot.
 CControl.SetPosEntity ( teapot,0, 0, 0)
 CControl.SetRotEntity ( teapot, 10, 10, 10 )
 CControl.SetColorEntity( teapot, 255, 255, 0 )
 
        
        
 
      
end

function Update()
 
 
 if CInput.KeyDown( KeyCode.W() ) == True  then
 
 CControl.TranslateEntity( teapot, 0, 0, 1.0 )

 end
 if CInput.KeyDown( KeyCode.S() ) == True  then
 
 CControl.TranslateEntity( teapot, 0, 0, -1.0 )

 end


 if CInput.KeyHit( KeyCode.Escape() ) == True then
 
 CSystem.Close()
 end

CControl.TurnEntity ( teapot, 1, 1, 1,1 ) -- Turn teapot.
 

 
 
end




Volver arriba Ir abajo
Ver perfil de usuario
Yue
Iniciado
Iniciado


Sexo : Masculino
Mensajes : 16
Edad : 38
Localización : Bogotá

MensajeTema: Re: Gear3D - Mi proyecto   Miér Jul 12, 2017 10:53 pm

Nueva versión libre de desarrollo. V.0.1 Alfa. En el link de DropBox. Very Happy
Volver arriba Ir abajo
Ver perfil de usuario
estantaya
Avanzado
Avanzado
avatar

Último Juego : Sur Survival
Sexo : Masculino
Mensajes : 273
Edad : 30
Localización : Mi casa

MensajeTema: Re: Gear3D - Mi proyecto   Vie Ago 04, 2017 11:39 pm

[Tienes que estar registrado y conectado para ver esa imagen]

codigo:
 

El jugador camina con wasd y gira con las teclas arriva, abajo, izquierda, derecha
los modelos son fbx, funciona bien en windows seven y en windows xp con placa integrada

Los archivos .obj no los toma, las imagenes .jpg no andan, las imagenes png con transparencias tienen la transparencia negra, solo se puede programar con las clases documentadas o se puede programar con mas clases nativas?

edit: cree mi propio sistema de transformación
Código:
--******************************************
--| Fichero : Main.lua / Gear3D
--| Nota    : Fichero de entrada Script.
--|          No cambiar el nombre Main.lua
--******************************************

-- Módulos.
KeyCode = require "Scripts.Modulos.KeyCode" --enum
--Personaje = require "Scripts.Modulos.Personaje" --jugador

-- Clases/Funciones

function CVector3( px, py, pz)
   
   vector3 = {}
   vector3.x = px
   vector3.y = py
   vector3.z = pz
   vector3.Sum = function( self, v)
      self.x = self.x + v.x
      self.y = self.y + v.y
      self.z = self.z + v.z
   end
   vector3.Res = function( self, v)
      self.x = self.x - v.x
      self.y = self.y - v.y
      self.z = self.z - v.z
   end
   vector3.Mul = function( self, m)
      self.x = self.x * m
      self.y = self.y * m
      self.z = self.z * m
   end
   vector3.Div = function( self, d)
      self.x = self.x / d
      self.y = self.y / d
      self.z = self.z / d
   end
   vector3.Gir = function( self, euler)
      -- z-forward y-up
      radian = CVector3(0,0,0)
      radian:Sum(euler)
      radian:Div(57.295)
      x_up = self.x * math.cos(radian.y) - self.z * math.sin(radian.y)
      --self.x = self.x * math.cos(radian.y/57.295) - self.z * math.sin(radian.y/57.295)
      --self.y = self.y * math.cos(radian.x) - self.z * math.sin(radian.x)
      z_up = self.x * math.sin(radian.y) + self.z * math.cos(radian.y)
      
      y_right = self.y * math.cos(radian.x) - self.z * math.sin(radian.x)
      z_right = self.z * math.cos(radian.x) - self.y * math.sin(radian.x)
      
      y_forward = self.y * math.cos(radian.z) - self.x * math.sin(radian.z)
      x_forward = self.x * math.cos(radian.z) - self.y * math.sin(radian.z)
      
      self.x = x_up
      self.y = y_right + y_forward
      self.z = z_up
   end
   vector3.EulerSum = function( self, x, y, z)
      self.x = self.x + x
      self.y = self.y + y
      self.z = self.z + z
      if self.x > 360 then self.x = self.x - 360 end
      if self.y > 360 then self.y = self.y - 360 end
      if self.z > 360 then self.z = self.z - 360 end
      if self.x < -360 then self.x = self.x + 360 end
      if self.y < -360 then self.y = self.y + 360 end
      if self.z < -360 then self.z = self.z + 360 end
   end
   return vector3
   
   --[[
   return {
      x = px
      y = py
      z = pz
      Sum = function(self,v)
         self.x = self.x + v.x
         self.y = self.y + v.y
         self.z = self.z + v.z
      end
      Res = function(self,v)
         self.x = self.x - v.x
         self.y = self.y - v.y
         self.z = self.z - v.z
      end
      Mul = function(self,m)
         self.x = self.x * m
         self.y = self.y * m
         self.z = self.z * m
      end
      Div = function(self,d)
         self.x = self.x / d
         self.y = self.y / d
         self.z = self.z / d
      end
   }
   ]]
end

function CGameObject( name, pos, rot)
   gameObject = {}
   gameObject.name=name
   gameObject.ent=0
   gameObject.parent=0
   gameObject.pos = pos --global
   gameObject.rot = rot --global
   --[[
   gameObject.MoveDir = function(self,v)
      
      --sumar a la posición global una dirección local
      self.pos:Sum(v:Gir(self.rot))
      
   end
   ]]
   gameObject.RegistrarModelo = function( self, m, r, g, b)
      self.ent = CMesh.LoadMesh( m)
      CControl.SetPosEntity( self.ent, self.pos.x, self.pos.y, self.pos.z)
      CControl.SetRotEntity( self.ent, self.rot.x, self.rot.y, self.rot.z)
      CControl.SetColorEntity( self.ent, r, g, b)
   end
   return gameObject
end

function MoverEntidades(e)
   for k,v in pairs(e) do
      CControl.SetPosEntity( e[k].ent, e[k].pos.x, e[k].pos.y, e[k].pos.z, 1)
      CControl.SetRotEntity( e[k].ent, e[k].rot.x, e[k].rot.y, e[k].rot.z, 1)
   end
end

--[[
local moveDir = {}
moveDir.x = 0.0
moveDir.y = 0.0
moveDir.z = 0.0
]]
local cam = {}
cam.x = 0.0
cam.y = 0.0
cam.z = 0.0

--variables

local moveDir= CVector3( 0, 0, 0)

local entidad = {}
entidad.jugador= CGameObject( 'Player', CVector3( 30, 0.1, 10), CVector3( 0, 90, 0))

-- Names
True = 1
False = 0

-- Engine
CSystem.fullScreen = False
CSystem.G3D(800,600)

-- Entidades
sun = 0
sky = 0
escenario = 0

sun = CLight.CreateLight( 1)
CControl.SetRotEntity( sun, 90, 0, 0, 0)

entidad.jugador:RegistrarModelo( 'sombra.fbx', 255, 255, 255)

camara = CCam.CreateCamera( entidad.jugador.ent)
CControl.SetPosEntity( camara, 0, 1.7, 0, 0)

sky =  CMesh.LoadMesh( 'sky.fbx')
CControl.SetPosEntity( sky, 0, 0, 0)
CControl.SetColorEntity( sky, 255, 255, 255)
CControl.SetScaleEntity( sky, 20, 20, 20)

escenario =  CMesh.LoadMesh( 'metales.fbx')
CControl.SetPosEntity( escenario, 0, 0, 0)
CControl.SetColorEntity( escenario, 255, 255, 255)

function Update()
   
   --wasd movimiento del jugador
    --[[
   moveDir.x=0.0
   moveDir.y=0.0
   moveDir.z=0.0
   ]]
   
   moveDir:Mul(0)
   
   if CInput.KeyDown( KeyCode.W ) == True  then
      moveDir.z=0.1
   end
   
   if CInput.KeyDown( KeyCode.S ) == True  then
      moveDir.z=-0.1
   end
   
   if CInput.KeyDown( KeyCode.A ) == True  then
      moveDir.x=-0.1
   end
   
   if CInput.KeyDown( KeyCode.D ) == True  then
      moveDir.x=0.1
   end
   
   --CControl.MoveEntity( entidad.jugador.ent, moveDir.x, moveDir.y, moveDir.z )
   moveDir:Gir(entidad.jugador.rot)
   entidad.jugador.pos:Sum(moveDir)
   
   --rotación del jugador
    
   if CInput.KeyDown( KeyCode.Left ) == True  then
      
      --CControl.TurnEntity( entidad.jugador.ent, 0, 1, 0, 0)
      entidad.jugador.rot:EulerSum( 0, 1, 0)
      
   end
   
   if CInput.KeyDown( KeyCode.Right ) == True  then
      
      --CControl.TurnEntity( entidad.jugador.ent, 0, -1, 0, 0 )
      entidad.jugador.rot:EulerSum( 0, -1, 0)
      
   end
   
   --rotación de camara
   
   if CInput.KeyDown( KeyCode.Up ) == True  then
      
      CControl.TurnEntity( camara, -0.5, 0, 0, 0 )
      
   end
   
   if CInput.KeyDown( KeyCode.Down ) == True  then
      
      CControl.TurnEntity( camara, 0.5, 0, 0, 0 )
      
   end
   
   --test
   --[[
   if CInput.KeyDown( KeyCode.H ) == True  then
      
      os
      
   end
   ]]
   
   MoverEntidades(entidad)
   
   if CInput.KeyHit( KeyCode.Escape ) == True then
      
      CSystem.Close()
      
   end
   
end
es parecido a lo que se hace al escribir mods para juegos, crear tu propio sistema y modificar las entidades al final de cada frame MoverEntidades({array con entidades del motor})
Volver arriba Ir abajo
Ver perfil de usuario http://33.media.tumblr.com/04ce0ed37cbf34da18782f49a8b3765d/tumb
 

Gear3D - Mi proyecto

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» Cual seria el "Procedimiento perfecto" para el desarrollo de un proyecto...
» Insertar proyecto VBA con macros
» Evolución de un proyecto desde cero
» logo para proyecto radio
» Proyecto LOGO

Permisos de este foro:No puedes responder a temas en este foro.
Entidad 3D :: Creación de juegos en 3D sin programar :: Off-Topic :: Otros Proyectos-