Seu conteúdo é muito bom. Parabéns! Tenho dado uma olhada no Love, Solar 2D e Defold...pra fazer uns projetinhos, e tenho gostado muito da linguagem Lua. Essas ferramentas são muito poderosas e simplificam muita coisa... só tirando algumas coisas relacionadas à entrada de texto que é um pouco mais complicado, nessas engines e bibliotecas que utilizam Lua como linguagem nativa, em comparação a Unity , Gdevelop e outras que utilizam Java , C ++ e C# . Mas no geral dá pra fazer muita coisa com Love e com Defold. Vale muito a pena aprender a usar essas ferramentas.
Cara, poderia fazer os videos mostrando o tutoriais de coisas básicas da Game Engine Defold e do Framework Love2D? Aqui no TH-cam Br eh bem difícil de ter esse tipo de conteúdo. Ótimo video, Valeu!
Love2d é perfeita para fazer qualquer protótipo de um jogo 2d porque é muito simples e fácil (ao contraio de outros frameworks como o pygame). E se quiser fazer um jogo maior eu recomendo integrar Love2d + sti + tiled. Onde o tiled é uma ferramenta de interface gráfica para criar seus próprios mapas.
Estou migrando de Godot para o Defold, queria saber como é a experiência de exportar jogos no Defold para web e mobile, pois o Godot tem problemas de compatibilidade com web e os exports são pesados, por esses motivos estou migrando.
Nesses jogos, ele tem o "motor" feito em C++ mas a "scriptagem" do motor é feito com lua, ou seja, eles embutiram a linguagem dentro do jogo e expuseram "funções" que chamamos de API do motor que são feitas em c++ para serem chamadas a partir de lua, isso facilita muito fazer novos npcs novos sistemas e várias outras coisas
@@cesiodomeia-ponte444 sim, ele te dá todas as ferramentas que precisa, mas vc precisa implementar tudo do zero. Porém da pra fazer sim, inclusive balatro foi feito com love2d
npc1.timer = npc1.timer + dt if npc1.timer > npc1.moveDuration then npc1.timer = 0 local direction = love.math.random(1, 5) local npc1vx, npc1vy = 0, 0
if direction == 1 then npc1vy = -npc1.speed npc1.anim = npc1.animations.up isMovingnpc = true end
if direction == 2 then
npc1vy = npc1.speed npc1.anim = npc1.animations.down isMovingnpc = true end if direction == 3 then
npc1vx = -npc1.speed npc1.anim = npc1.animations.left isMovingnpc = true end if direction == 4 then
npc1vx = npc1.speed npc1.anim = npc1.animations.right isMovingnpc = true end if direction == 5 then isMovingnpc = true npc1vx, npc1vy = 0, 0
end
npc1.collider:setLinearVelocity(npc1vx, npc1vy)
if not isMovingnpc then npc1.anim:gotoFrame(2) end
end ME AJUDA... O NPC NAO VAI PARA O "FRAME 2" DA GRADE. ELE CONTINUA SE MOVENDO. ONDE ESTOU ERRANDO?
parede = {} if gameMap.layers["parede"] then for i, obj in pairs(gameMap.layers["parede"].objects) do local arvores = world:newRectangleCollider(obj.x , obj.y, obj.width, obj.height) arvores:setType('static') table.insert(parede, arvores) end end -- Variáveis de controle de tempo para o NPC npc1.timer = 0 npc1.moveDuration = 4 -- Duração do movimento em cada direção npc1.anim = npc1.animations.left end function love.update(dt) local isMoving = false local vx, vy = 0, 0
-- Verifica as teclas de movimento do jogador if love.keyboard.isDown("right") then vx = player.speed player.anim = player.animations.right isMoving = true elseif love.keyboard.isDown("left") then vx = -player.speed player.anim = player.animations.left isMoving = true elseif love.keyboard.isDown("down") then vy = player.speed player.anim = player.animations.down isMoving = true elseif love.keyboard.isDown("up") then vy = -player.speed player.anim = player.animations.up isMoving = true end
-- Define a velocidade do jogador player.collider:setLinearVelocity(vx, vy)
-- Verifica se o jogador não está se movendo para ajustar a animação if not isMoving then player.anim:gotoFrame(2) end
npc1.timer = npc1.timer + dt
-- Lógica de movimento do NPC local isMovingnpc = false
npc1.timer = npc1.timer + dt if npc1.timer > npc1.moveDuration then npc1.timer = 0 local direction = love.math.random(1, 5) local npc1vx, npc1vy = 0, 0
if direction == 1 then npc1vy = -npc1.speed npc1.anim = npc1.animations.up isMovingnpc = true end
if direction == 2 then
npc1vy = npc1.speed npc1.anim = npc1.animations.down isMovingnpc = true end if direction == 3 then
npc1vx = -npc1.speed npc1.anim = npc1.animations.left isMovingnpc = true end if direction == 4 then
npc1vx = npc1.speed npc1.anim = npc1.animations.right isMovingnpc = true end if direction == 5 then isMovingnpc = true npc1vx, npc1vy = 0, 0
end
npc1.collider:setLinearVelocity(npc1vx, npc1vy)
if not isMovingnpc then npc1.anim:gotoFrame(2) end
Boa noite, cara entra lá no nosso grupo que a galera te ajuda a resolver, mas eu olhei seu código por cima acho que a gente precisa de mais contexto pra te ajudar, vou fazer uns testes aqui se descobrir o que é eu te mando um comentário aqui
Fala Jorge, se puder fazer o video das engines m agradeço
Fico feliz que tenha interesse, vou fazer sim! Já tô escrevendo alguns vídeos sobre love
E estudando a defold
Opa Maycon, já postei o primeiro vídeo sobre a engine love
Faz um tutorial usando a defold quase não tem tutoriais no TH-cam que ensina a usar defold e os poucos que tem são antigos,
Seu conteúdo é muito bom. Parabéns!
Tenho dado uma olhada no Love, Solar 2D e Defold...pra fazer uns projetinhos, e tenho gostado muito da linguagem Lua. Essas ferramentas são muito poderosas e simplificam muita coisa... só tirando algumas coisas relacionadas à entrada de texto que é um pouco mais complicado, nessas engines e bibliotecas que utilizam Lua como linguagem nativa, em comparação a Unity , Gdevelop e outras que utilizam Java , C ++ e C# . Mas no geral dá pra fazer muita coisa com Love e com Defold. Vale muito a pena aprender a usar essas ferramentas.
Olá Diego, fico feliz que tenha gostado dos meus vídeos! Em breve teremos aulas de Love e posteriormente de defold!!
Fala garoto!!!! faz sim por favor!!!
Boa
Cara, poderia fazer os videos mostrando o tutoriais de coisas básicas da Game Engine Defold e do Framework Love2D?
Aqui no TH-cam Br eh bem difícil de ter esse tipo de conteúdo. Ótimo video, Valeu!
Opa, eu tô fazendo uma playlist de love, no momento só tem um vídeo, mas tô gravando mais
Da uma olhada nas minhas playlists que tbm tem aulas de Lua, obrigado por assistir meus vídeos
Cara por favor faz um curso completo de desenvolvimento de jogos usando Love2d por favorr;)
Quase não tem conteúdo em português de Love :(@@luaverse
@@Markulynoo está nos planos sim, tem uma playlist aqui que vou alimentar com vídeos de love
@@luaverse eu peço com muito carinho que você não desista deste projeto...
Love2d é perfeita para fazer qualquer protótipo de um jogo 2d porque é muito simples e fácil (ao contraio de outros frameworks como o pygame).
E se quiser fazer um jogo maior eu recomendo integrar Love2d + sti + tiled. Onde o tiled é uma ferramenta de interface gráfica para criar seus próprios mapas.
Exatamente!! Essas ferramentas são muito boas e muito fácil de começar a usar
Estou migrando de Godot para o Defold, queria saber como é a experiência de exportar jogos no Defold para web e mobile, pois o Godot tem problemas de compatibilidade com web e os exports são pesados, por esses motivos estou migrando.
Cara, nos meus testes foi tranquilo, mobile fica um pouco pesado, mas acredito que todas engine vão ficar um pouco...
Ainda vou fazer uma série de vídeos programando com o defold
Eu uso LÖVE, como eu tô sem PC no momento eu consigo usa-la no celular
Opa, é uma engine bem legal né?
@@luaverse Sim
Tem também a leadwerks e a Cocos Creator
@nicolas_navega boa, essa leadwerks eu não conheço, mas a cocos é bem famosa
Trás um vídeo sobre a cave engine
Opa, vou fazer sim!
Sabe me dizer como foi feito oa jogos como gta rp, world of Warcraft e Ragnarok online? Quais ferramentas usaram? Na parte de lua
Nesses jogos, ele tem o "motor" feito em C++ mas a "scriptagem" do motor é feito com lua, ou seja, eles embutiram a linguagem dentro do jogo e expuseram "funções" que chamamos de API do motor que são feitas em c++ para serem chamadas a partir de lua, isso facilita muito fazer novos npcs novos sistemas e várias outras coisas
Esse LOVE2D seria bom pra fazer um jogo de tabuleiro online?
@@cesiodomeia-ponte444 sim, ele te dá todas as ferramentas que precisa, mas vc precisa implementar tudo do zero. Porém da pra fazer sim, inclusive balatro foi feito com love2d
faaala mais sobre esses jogos aí meu amigo!
Vou falar
Vou fazer um vídeo sobre
@@luaverse cadêe heiim
fala sobre a GLYYYY ENgINE
Vou falar!
@@luaverse quando?
@@eltrem_th aguarde kkk não vou prometer data
@@luaverse ai ai ai ksksk
falto robloxstudio:)
@@brunomaia4980 vou tentar gravar
Help** error NPC.
local isMovingnpc = false
npc1.timer = npc1.timer + dt
if npc1.timer > npc1.moveDuration then
npc1.timer = 0
local direction = love.math.random(1, 5)
local npc1vx, npc1vy = 0, 0
if direction == 1 then
npc1vy = -npc1.speed
npc1.anim = npc1.animations.up
isMovingnpc = true
end
if direction == 2 then
npc1vy = npc1.speed
npc1.anim = npc1.animations.down
isMovingnpc = true
end
if direction == 3 then
npc1vx = -npc1.speed
npc1.anim = npc1.animations.left
isMovingnpc = true
end
if direction == 4 then
npc1vx = npc1.speed
npc1.anim = npc1.animations.right
isMovingnpc = true
end
if direction == 5 then
isMovingnpc = true
npc1vx, npc1vy = 0, 0
end
npc1.collider:setLinearVelocity(npc1vx, npc1vy)
if not isMovingnpc then
npc1.anim:gotoFrame(2)
end
end
ME AJUDA... O NPC NAO VAI PARA O "FRAME 2" DA GRADE. ELE CONTINUA SE MOVENDO. ONDE ESTOU ERRANDO?
CODIGO COMPLETO.
function love.load()
wf = require 'libraries/windfield'
world = wf.newWorld(0, 0)
camera = require 'libraries/camera'
anim8 = require 'libraries/anim8'
sti = require 'libraries/sti'
love.graphics.setDefaultFilter("nearest", "nearest")
cam = camera()
cam:zoom(5) -- Definindo o zoom
gameMap = sti('maps/mapa1.lua')
player = {}
player.collider = world:newBSGRectangleCollider(400,250, 10, 20,5)
player.collider:setFixedRotation(true)
player.x = 400
player.y = 200
player.speed = 50
player.spriteSheet = love.graphics.newImage('sprites/personagens/warrior_m.png')
player.grid = anim8.newGrid(32, 36, player.spriteSheet:getWidth(), player.spriteSheet:getHeight())
player.animations = {}
player.animations.up = anim8.newAnimation(player.grid('1-3', 1), 0.2)
player.animations.right = anim8.newAnimation(player.grid('1-3', 2), 0.2)
player.animations.down = anim8.newAnimation(player.grid('1-3', 3), 0.2)
player.animations.left = anim8.newAnimation(player.grid('1-3', 4), 0.2)
player.anim = player.animations.left
npc1 = {}
npc1.collider = world:newBSGRectangleCollider(450, 250, 10, 20, 5)
npc1.collider:setFixedRotation(true)
npc1.x = 450
npc1.y = 200
npc1.speed = 30
npc1.spriteSheet = love.graphics.newImage('sprites/personagens/mage_f.png')
npc1.grid = anim8.newGrid(32, 36, npc1.spriteSheet:getWidth(), npc1.spriteSheet:getHeight())
npc1.animations = {}
npc1.animations.up = anim8.newAnimation(npc1.grid('1-3', 1), 0.2)
npc1.animations.right = anim8.newAnimation(npc1.grid('1-3', 2), 0.2)
npc1.animations.down = anim8.newAnimation(npc1.grid('1-3', 3), 0.2)
npc1.animations.left = anim8.newAnimation(npc1.grid('1-3', 4), 0.2)
npc1.anim = npc1.animations.left
parede = {}
if gameMap.layers["parede"] then
for i, obj in pairs(gameMap.layers["parede"].objects) do
local arvores = world:newRectangleCollider(obj.x , obj.y, obj.width, obj.height)
arvores:setType('static')
table.insert(parede, arvores)
end
end
-- Variáveis de controle de tempo para o NPC
npc1.timer = 0
npc1.moveDuration = 4 -- Duração do movimento em cada direção
npc1.anim = npc1.animations.left
end
function love.update(dt)
local isMoving = false
local vx, vy = 0, 0
-- Verifica as teclas de movimento do jogador
if love.keyboard.isDown("right") then
vx = player.speed
player.anim = player.animations.right
isMoving = true
elseif love.keyboard.isDown("left") then
vx = -player.speed
player.anim = player.animations.left
isMoving = true
elseif love.keyboard.isDown("down") then
vy = player.speed
player.anim = player.animations.down
isMoving = true
elseif love.keyboard.isDown("up") then
vy = -player.speed
player.anim = player.animations.up
isMoving = true
end
-- Define a velocidade do jogador
player.collider:setLinearVelocity(vx, vy)
-- Verifica se o jogador não está se movendo para ajustar a animação
if not isMoving then
player.anim:gotoFrame(2)
end
npc1.timer = npc1.timer + dt
-- Lógica de movimento do NPC
local isMovingnpc = false
npc1.timer = npc1.timer + dt
if npc1.timer > npc1.moveDuration then
npc1.timer = 0
local direction = love.math.random(1, 5)
local npc1vx, npc1vy = 0, 0
if direction == 1 then
npc1vy = -npc1.speed
npc1.anim = npc1.animations.up
isMovingnpc = true
end
if direction == 2 then
npc1vy = npc1.speed
npc1.anim = npc1.animations.down
isMovingnpc = true
end
if direction == 3 then
npc1vx = -npc1.speed
npc1.anim = npc1.animations.left
isMovingnpc = true
end
if direction == 4 then
npc1vx = npc1.speed
npc1.anim = npc1.animations.right
isMovingnpc = true
end
if direction == 5 then
isMovingnpc = true
npc1vx, npc1vy = 0, 0
end
npc1.collider:setLinearVelocity(npc1vx, npc1vy)
if not isMovingnpc then
npc1.anim:gotoFrame(2)
end
end
world:update(dt)
player.x = player.collider:getX()
player.y = player.collider:getY()
player.anim:update(dt)
npc1.x = npc1.collider:getX()
npc1.y = npc1.collider:getY()
npc1.anim:update(dt)
cam:lookAt(player.x, player.y)
end
function love.draw()
cam:attach()
gameMap:drawLayer(gameMap.layers["terreno"])
player.anim:draw(player.spriteSheet, player.x, player.y, nil, 0.5, nil, 16, 18)
npc1.anim:draw(npc1.spriteSheet, npc1.x, npc1.y, nil, 0.5, nil, 16, 18)
gameMap:drawLayer(gameMap.layers["arvores"])
cam:detach()
end
Boa noite, cara entra lá no nosso grupo que a galera te ajuda a resolver, mas eu olhei seu código por cima acho que a gente precisa de mais contexto pra te ajudar, vou fazer uns testes aqui se descobrir o que é eu te mando um comentário aqui
Lá no grupo tem muita gente que entende de love chat.whatsapp.com/LX6j4AIPTTtB8WGYUMgLH8
@@luaverse esta bem vou entrar
@@moiiza opa beleza! Vvamos conseguir te ajudar
O link do grupo de whatsapp não está funcionando
@@cesiodomeia-ponte444 chat.whatsapp.com/E4U4PKFVpi5GhF6AmjVLRr