Eu já posso fazer mapas em 3D usando o editor de mapas em 2D! Agora, desta vez, é bastante simples - todas as peças são simplesmente cubos e o id da tile determina como textura do cubo fica. Isso, no entanto, comprova a validade do uso de RMXP fazer jogos 3D.
Agora, não só está atraindo esses mapas 2D em 3D com a minha ferramenta possível, também é, até agora, muito mais rápida do que o desenho dos mapas em 2D usando RGSS Module Graphics. Na verdade, durante o meu teste eu recebo 250+ quadros por segundo .
Tudo bem, então chega de conversa. Vamos chegar ao impressionante: * Aviso Imagens Grandes*
Camada 1 no RMXP
Camada 2 no RMXP
Camada 3 no RMXP
Mapa Completo em 3D
Agora, o código RGSS executado no demo: (Sem comentários explicativos desta vez, pessoal)
E, claro, há uma demo para ser desfrutado!
chaves:
As setas para mover (Você pode mudar para WASD)
F para mostrar FPS
CTRL + F4 para sair
Demo:Download Aqui
Lançamentos de Versões:
Terceira Versão (RGSS Controla o 3D)
Segunda Versão (FPS para a lógica do jogo)
Primeira versão (3D)
Créditos:
DeM0nFiRe's - Scripts
Leandroteix - Modificação e também eu mostrei para vocês =D
Estou testando os scripts e em um futuro breve atualizarei o tópico para tentar tranzer os scripts com algumas modificações e também se não funcionar em algum NP tentarei adapta-lo Obrigado.
A você deve estar se perguntando porque começou da 3 versão até chegar a 1 é porque eu traduzi o tópico e ele é muito antigo foi difícil achar ele é de 2009 só quando terminei de traduzi-lo que percebi que estava desse jeito, mas acho que isso não irá atrapalhar
Agora, não só está atraindo esses mapas 2D em 3D com a minha ferramenta possível, também é, até agora, muito mais rápida do que o desenho dos mapas em 2D usando RGSS Module Graphics. Na verdade, durante o meu teste eu recebo 250+ quadros por segundo .
Tudo bem, então chega de conversa. Vamos chegar ao impressionante: * Aviso Imagens Grandes*
Camada 1 no RMXP
- Spoiler:
Camada 2 no RMXP
- Spoiler:
Camada 3 no RMXP
- Spoiler:
Mapa Completo em 3D
- Spoiler:
Agora, o código RGSS executado no demo: (Sem comentários explicativos desta vez, pessoal)
- Código:
DF_GameWindow.set_dimensions(0,0,0,0)
device = DF3DDevice.new(Video::EDT_DIRECT3D9, [800,600], 32, false)
smgr = device.scene_manager
driver = device.video_driver
camera = smgr.add_camera_scene_node_FPS
camera.set_position(-100,300,-100)
camera.set_target(0,0,0)
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$game_map = Game_Map.new
$game_map.setup(1)
for i in 0...20
for j in 0...15
for k in 0...3
if $game_map.data[i,j,k] != 0
node = smgr.add_cube_scene_node(64)
node.set_position(i * 64, k * 64, j * 64)
node.set_material_flag(Video::EMF_LIGHTING, false)
texture_name = ($game_map.data[i,j,k] - 383).to_s + ".png"
node.set_material_texture(0, driver.get_texture(texture_name))
end
end
end
end
lasttime = Time.now
while device.run
DF_Input.update
if DF_Input.trigger?(DF_Input::KEY_F)
p driver.get_fps
end
time = Time.now
if time - lasttime > 5
Graphics.update
lasttime = Time.now
end
driver.begin_scene(true, true, [255, 160, 160, 255])
smgr.draw_all
driver.end_scene
end
device.drop
E, claro, há uma demo para ser desfrutado!
chaves:
As setas para mover (Você pode mudar para WASD)
F para mostrar FPS
CTRL + F4 para sair
Demo:Download Aqui
Lançamentos de Versões:
Terceira Versão (RGSS Controla o 3D)
- Spoiler:
Tudo bem caras, agora é hora de mostrar uma coisa muito legal. Eu não tenho uma demo, mas eu tenho uma captura de tela e algum código RGSS real para fazer com ele.
E aqui está o código RGSS mágico que faz. (Normalmente, você iria colocar isso em uma cena, mas vocês sabem como fazer cenas para que eu não me incomodei)
- Código:
#First, let's move the 2D window out of the way:
DF_GameWindow.set_dimensions(0,0,0,0)
#next, let's create out device. The parameters are:
#Driver type, screen size (in an array), bits per pixel, and fullscreen
#This device is the central point of the 3D engine. Absolutely everything
#can be accessed through this device.
device = DF3DDevice.new(Video::EDT_DIRECT3D9, [800,600], 32, false)
#Now, let's get our scene manager. The scene manager does stuff like adding nodes
#and cameras
smgr = device.scene_manager
#Now, let's get our driver. The driver handles actually rendering.
driver = device.video_driver
#Let's get our mesh! (Note that you should probably add error handling here.
#smgr.get_mesh will return nil if it can't find the file so make sure you
#always check that the mesh was actually created. I didn't do any error handling
#but a simple check for nil would suffice)
mesh = smgr.get_mesh("sydney.md2")
#Let's create an animated scene node from the mesh. Again, normally you
#want to check for errors.
node = smgr.add_animated_mesh_scene_node(mesh)
#now, let's add a camera to the scene node! Camera are how you view everything
#in the scene. Note that it is possible to have more than one camera and
#you can switch between them, or even have them render to different parts
#of the screen.
camera = smgr.add_camera_scene_node
#move our camera, since both the camera and scene node are at the same, default
#position right now. (Which is (0,0,0)) Note that the parameters here are x, y, z.
#when your camera is at (0,0,0) and has no rotation, x is sideways, y is up,
#and z is forwards/backwards
camera.set_position(100,100,100)
#Rememeber how I said that the default position is 0,0,0? Well, since we never moved
#our node, it is at 0,0,0 right now. So, Let's tell the camera to look there:
camera.set_target(0,0,0)
lasttime = Time.now
while device.run #check if our device is still running
#begin rendering the scene. I will not explain what these parameters are yet
#it's not important right now, and it's kind of complicated XD
driver.begin_scene(true, true, [255, 160, 160, 255])
smgr.draw_all #draw all of the scene nodes
driver.end_scene #finish rendering the scene
#this junk is just so Graphics doesn't whine.
time = Time.now
if time - lasttime > 5
Graphics.update
end
end
#Now, alway always always remember to drop your device when you are done.
#The device is something you should only drop at the end of your game, after
#the device no longer runs.
device.drop
Segunda Versão (FPS para a lógica do jogo)
- Spoiler:
Ei! Acabei de terminar uma nova demo! Este permite que você realmente andar por aí, para que vocês possam ver que este é realmente prático para fazer um jogo, e não apenas tirar screenshots. Você também pode escolher qual representante de usar. Note que os dois processadores de software são muito lento, e D3D8 não funciona em todos. OpenGL ou D3D9 são sua melhor aposta.
Tudo bem, primeiro um screenshot. Nesta tela eu só tirei uma foto da janela 3D, já que vocês sabem que é verdade RMXP (vgvgf posso garantir para mim, pois ele realmente decifrado o projeto e olhou XD)
E a nova demo pode ser baixada aqui:
Aqui
CHAVES:
Teclas de seta para andar
Mouse para olhar
F para imprimir FPS atuais (Por favor, me diga o que você tem)
Ctrl + F4 para sair (não alt, alt nota que está desativada durante a execução deste)
Primeira versão (3D)
- Spoiler:
Eu tenho agora? Bom. Isso é exatamente o que parece: um programa 3D correndo de RMXP. (Eu vou explicar por que há duas janelas, a um pouco um grande)
Não acredita em mim? Tente você mesmo:
Demo
Créditos:
DeM0nFiRe's - Scripts
Leandroteix - Modificação e também eu mostrei para vocês =D
Estou testando os scripts e em um futuro breve atualizarei o tópico para tentar tranzer os scripts com algumas modificações e também se não funcionar em algum NP tentarei adapta-lo Obrigado.
A você deve estar se perguntando porque começou da 3 versão até chegar a 1 é porque eu traduzi o tópico e ele é muito antigo foi difícil achar ele é de 2009 só quando terminei de traduzi-lo que percebi que estava desse jeito, mas acho que isso não irá atrapalhar