[Tutorial] Recursos externos

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade [Tutorial] Recursos externos

Mensagem por Fuzenrad em Dom 29 Ago 2010, 13:36

Como usar recursos externos

Alguns tem essa curiosidade, já procuraram sobre, mas a falta de explicações complica bastante, no fórum eu não encontrei um tutorial sobre o assunto que não se aprofundasse tanto quanto eu pretendo nesse. É relativamente fácil usar recursos externos em seus jogos, fazendo-os de forma mais profissional e dinâmica.

Observação: Ao usar recursos externos lembre-se que mudanças externas podem ser feitas por qualquer um, entretanto jogos com a possibilidade de modificação de alguns recursos, podem fazer surgir layouts personalizados, playlist de músicas a escolha do jogador entre outros.

As principais funções para manipulação de arquivos externos são:

Música e efeitos sonoros
sound_add()
sound_replace()
sound_delete()

Backgrounds e imagens fixas
background_add()
background_replace()
background_delete()

Sprites e imagens móveis
sprite_add()
sprite_replace()
sprite_delete()

Eu recomendo usar o comando _add() para uso geral, no qual não existe a imagem no source, dependendo exclusivamente do arquivo externo, o _replace() é recomendado quando se tem uma imagem padrão caso não exista o arquivo e _delete() pra liberar a memória do jogo, fazendo-o assim ficar mais rápido. Em geral dominar essas funções com perfeição e harmonia requer estudo, tentativas e principalmente dedicação.

Esses comandos são muito bons para arquivos grandes, como músicas no formato mp3 ou wav, imagens de fundo etc.

Arquivos de som
Pra começar vou carregar uma música apartir de um arquivo e então executá-la. No evento Create (deve ser nesse evento, caso constrário o arquivo seria carregado eternamente, travando o jogo):

Código:
dir_mus1=working_directory+"\musica.mp3"

if file_exists(dir_mus1) {
musica1=sound_add(dir_mus1,3,1)

if !sound_isplaying(musica1) sound_play(musica1)}
Nesse caso o jogo carrega o som na variável musica1 somente se o arquivo existir e toca somente se a música já não está. O 3 representa o tipo de som, deve ter muito cuidado, pois dependendo do formato, não funcionará corretamente. Os tipos são:
0 Sons normais (como explosões, clicks, pulos etc) geralmente no formato .wav
1 Música de fundo, formatos mid
2 Sons 3D (outro tipo de configuração)
3 Reprodução externa (como o mmplayer), formatos wma e mp3

Código:
sound_replace(snd_musica1,dir_mus1,3,1)
Tem a mesma finalidade da função anterior, porém agora será substituído o som snd_musica1 pelo arquivo no diretório.

Em um evento qualquer, você pode indicar para liberar a memória desse arquivo, por exemplo, Alarm[0], colocando:

Código:
if !sound_isplaying(musica1) sound_delete(musica1)

Imagens/backgrounds
Muito útil quando você pretende lançar diferentes layouts pro jogo, mudando muitas vezes somente o background, isso abre uma enorme ramificação de possibilidades.

Seu funcionamento é muito semelhante aos sons, porém requer um pouco mais de atenção, já que as imagens devem ter o tamanho da tela e "encaixar" no designer do jogo, do contrário você terá um resultado "feio" visualmente.

Código:
dir_fnd1=working_directory+"\fundo.png"

if file_exists(dir_fnd1)
fundo1=background_add(dir_fnd1,0,1)

background_index[0]=fundo1

Eu indiquei um background para o jogo apartir de um arquivo (lembre-se de ativar o "Visible when room starts" em "Background 0" nas configurações da room).

Para descartar um background, você pode indicar uma mudança de room, fica a critério, basta inserir:

Código:
background_delete(fundo1)

Sprites
Código:
dir_sp1=working_directory+"\sprite.png"

if file_exists(dir_sp1)
sprite1=sprite_add(dir_sp1,0,0,0,0,0)

sprite_index=sprite1
Trabalha somente no objeto em que o código está, no caso será adicionado uma nova sprite e a anterior (caso exista) será descartada.

Cuidado ao descartar uma sprite (sprite_delete), você deve indicar uma nova caso contrário não será mostrado nada.

Fuzenrad

Ranking : Nota A
Número de Mensagens : 1026
Idade : 26
Data de inscrição : 04/07/2010
Notas recebidas : A-A-A-A-B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por SIGILOSO em Dom 29 Ago 2010, 14:13

Eu levei mto tempo pra aprender a usar as funções _add, e ainda me complico bastante. Certamente esse tuto me ajudará muito em projetos maiores, e tbm poderá ajudar outros usuários que queiram jogos mais rápidos ou aplicativos personalisávies!
Parabéns, um ótimo tuto, mto bem explicado e que vai direto ao ponto!
afro

SIGILOSO

Ranking : Nota A
Número de Mensagens : 2264
Idade : 23
Data de inscrição : 06/06/2009
Notas recebidas : A+A+A+A+A+A+A
Reputação : 39
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 4
   : 2
   : 1

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por Super Games em Dom 29 Ago 2010, 14:31

Realmente, vai ajudara bastante.
Me ajudou bastante, pois sou ruim nessa função.

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por Salathiel em Dom 29 Ago 2010, 16:00

E muito legal essa função _add.
Me responde uma coisa:
Como eu coloco para o sprite que eu criar não fique em formatos: .gif etc,
porque se ficar em uns desses formatos da para a pessoa editar.

Salathiel

Número de Mensagens : 346
Idade : 20
Data de inscrição : 29/05/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://salathiel1337.blogspot.com/

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por †Ceifador em Dom 29 Ago 2010, 16:09

Se não quiser que o usuário edite os arquivos é mais prático não deixá-los acessíveis. Evitar isso de outro modo requer que os recursos sejam convertidos para formatos próprios e não é algo simples de fazer.

†Ceifador

Número de Mensagens : 154
Data de inscrição : 28/08/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por Fuzenrad em Dom 29 Ago 2010, 16:26

Como eu coloco para o sprite que eu criar não fique em formatos: .gif etc, porque se ficar em uns desses formatos da para a pessoa editar.
Existe uma maneira de modificar a extenção, entretanto não protege efetivamente o arquivo, afinal continua sendo uma imagem ou um som. Seria assim, você renomeia o arquivo pra qualquer extenção, por exemplo imagem.res ou som.res, mas antes de carregar o arquivo, você deve renomear para serem lidos como imagem ou som:

Código:
file_rename("imagem.res","imagem.png")
Lembre-se de que ao finalizar o jogo, coloque a função inversa, pra voltar o nome do arquivo.

Código:
file_rename("imagem.png","imagem.res")
Como eu disse, não é seguro, mas visualmente resolve o problema.

Fuzenrad

Ranking : Nota A
Número de Mensagens : 1026
Idade : 26
Data de inscrição : 04/07/2010
Notas recebidas : A-A-A-A-B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por gambit em Dom 29 Ago 2010, 18:00

como se usa em tile

gambit

Número de Mensagens : 156
Data de inscrição : 22/06/2008
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://ssqt.blogspot.com.br/

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por Fuzenrad em Dom 29 Ago 2010, 19:08

Funciona da mesma forma, se você substituir um background que está sendo usado como tile, ele continua sendo mostrado porém com o novo arquivo, no caso esse background deve existir no source para você substituí-lo.

Código:
background_replace(bkgrd,working_directory+"\fundo.png",0,0)

Fuzenrad

Ranking : Nota A
Número de Mensagens : 1026
Idade : 26
Data de inscrição : 04/07/2010
Notas recebidas : A-A-A-A-B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Recursos externos

Mensagem por Conteúdo patrocinado Hoje à(s) 00:12


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum