sexta-feira, 13 de janeiro de 2012

Serie de Tutoriais de Python BGE 2.5/2.6 Parte I: Introdução!

Apresentação
Olá meu nome é Victor Hugo(Victor448),programo em python com a BGE a mais ou menos 1 ano,e muitas pessoas estavam pedindo material de scripting,para o novo Blender,o objetivo do tutorial é dá uma colher de chá aos iniciantes,e a quem quer portar seus scripts para o novo Blender!

Introdução
A BGE ou blender game engine como é apelidada,oferece diversas funções para scripting do seu jogo,na verdade o python dentro da BGE,serve para se ter um controle muito maior sobre suas aplicações,o modulo que você mais usará será o bge.logic(no 2.49 GameLogic),que na verdade parou de ser modulo,e se tornou classe a partir do 2.5,por isso não é possivel importar assim:
import bge.logic as l
a solução seria importar assim:
from bge import logic as l
Para importar todos os modulos,oque eu não recomendo,pois dependendo do caso averá perda de desempenho pouco significativa:
import bge #Importa todas as classes da bge: events,logic,physics constraints,video texture.
Lembrando que a api do 2.49 para o 2.5/2.6,não mudou muito,oque mudou mesmo,foi a retirada dos comandos "deprecateds" da versão 2.48(como "getOwner()" que no 2.49 e no 2.5/2.6,fica apenas "owner"),que permaneciam no 2.49,e possibilitavam a portagem do 2.48 pro 2.49,quase nula.
Toda a documentação que será mencionada durante os tutoriais está aqui em blender api 2.61.

Requerimentos
Conhecimento básico em Python,se não tem: Curso Básico da Async , Python para Desenvolvedores 2nd Edição.
Conhecimento básico em Logic Bricks.
Persistência.
Não copiar e colar nada,digitar tudo na mão.

Básico do Básico
Primeiro,uma revisada rápida nos logic bricks:
Neste conceito apresentado a cima de como são organizados os logic bricks,usaremos isso em um pequeno script:
import bge
controlador_atual = bge.logic.getCurrentController() #Classe contendo todas as funcoes,referentes aos logic bricks,alem de retornar o nome do controlador.
sensores_conectados_ao_controlador = controlador_atual.sensors #Retorna uma lista dos sensores conectados ao controlador corrente
atuadores_conectados_ao_controlador = controlador_atual.actuators #Retorna uma lista dos atuadores conectados ao controlador corrente.
print('Sensores: ',sensores_conectados_ao_controlador,'Controlador Atual: ',controlador_atual,'Atuadores: ',atuadores_conectados_ao_controlador)
Esse script,retorna tudo que está conectado ao Controlador corrente,retorno:
Se você notou bem,isso retorna os nomes dos logic bricks:

E em cada sensor,atuador, há um conjunto de funções,que serão vistas no proximo tutorial.
Pra quem quer ir dando uma olha,essa documentação é encontrada em bge_logic_api.
Para Obter um sensor em especial,é só:
controlador.sensors['seusensor']
Da mesma forma para os atuadores:
controlador.actuators['seuatuador']
Para saber se o sensor está positivo,usamos o metodo "positive",exemplo:
if seusensor.positive:
          facaAlgo()
else:
         NaoFacaNada()
E para "ativar" atuadores usamos o método "activate(seuatuador)",para desativar "desactivate(seuatuador)"exemplo:
seuatuador = co.actuators['seuatuador']
activate(seuatuador)
deactivate(seuatuador)

Exemplos Práticos
Pequeno exemplo com tudo que aprendemos,até agora:
import bge

#Classe que contem as funcoes dos sensores e atuadores
controlador = bge.logic.getCurrentController()
#Obtendo todos os sensores
sensor_frente = controlador.sensors['frente']
sensor_direita = controlador.sensors['direita']
sensor_esquerda = controlador.sensors['esquerda']
#Obtendo todos os atuadores
atuador_frente = controlador.actuators['frente']
atuador_direita = controlador.actuators['direita']
atuador_esquerda = controlador.actuators['esquerda']
#Condicoes
if sensor_frente.positive:
    controlador.activate(atuador_frente)
if sensor_direita.positive:
    controlador.activate(atuador_direita)
if sensor_esquerda.positive:
    controlador.activate(atuador_esquerda)
else:
    controlador.deactivate(atuador_frente)
    controlador.deactivate(atuador_direita)
    controlador.deactivate(atuador_esquerda)


Downloads
Script de Prints.
Exemplo prático.

Conclusões
Nossas primeiras conclusões,são que python para bge,tem toda uma hierarquia,mais tudo muito simples,e em apenas algumas horas,você já tem um bom aprendizado,mais isso precisa de um pouco de dedicação.


Próximos Tutoriais
No próximo tutorial,mostrarei mais sobre os métodos dos atuadores e sensores,além de mostrar mais sobre o uso de propriedades para varias coisas.

Duvidas?
Qualquer duvida,mande um email para: victorviana_maranhao@hotmail.com
Ajudarei qualquer um que me contactar.
Um grande abraço e vejo vocês no proximo tutorial,Bye.

7 comentários:

  1. Valeu pelo tutorial, me ajudou com uma dúvida.

    Continue com os tutoriais (:

    ResponderExcluir
  2. esse tutorial e muito bom mais cade o segunda parte

    ResponderExcluir
    Respostas
    1. Eu fiquei sem tempo e acabei esquecendo, mais eu irei fazer um novo blog para postar minhas aventuras em programação e alguns tutoriais ;).

      Excluir
  3. ola , eu to com uma duvida em python , gostaria de saber se com python e possivel simular AI (INTELIGENCIA ARTIFICIAL) , do tipo que quando o boneco passa perto do inimigo ele começa a atacar ?

    ResponderExcluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir
  5. É pura logica cara, basta quebrar a cabeça um pouco, na internet tem bastante exmplos..

    ResponderExcluir