[Tutorial] Engine RTS

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

[Tutorial] Engine RTS

Mensagem por manobrother em Ter 09 Set 2014, 12:29

Título: Engine RTS (Real Time Strategy)
Versão do GM: (não sei ao certo, se alguém souber por favor me diga)
Dificuldade: Iniciante
Link para download da Engine: Não Precisa
Requer Extensões: Não
Requer DLLs: Não
Tags: Mouse, construir

EDIT#
Iai pessoal estou repostando aqui hoje meu tutorial de construindo com o mouse, esse é meu primeiro tutorial e não manjo tanto dos códigos, então se tiver uma sugestão para melhorar pode falar.
Agradeço ao Thyago e ao DieBoy que me ajudaram (mesmo não sabendo que estavam) a criar esse tutorial.

                                                                 Tutorial
Sprites
       Primeiramente vocês terão que criar 3 sprites, um para a loja, um para seguir o mouse e você ter uma ídeia de como ficará a construção antes de colocar, e o da construção pronta, mas se quiserem deixar mais bonitinho crie um que será o erro de quando não puder construir. Eu já criei e vou chamar de spr_casa_loja, spr_casa_mao, spr_casa e por último mas não menos importante o spr_casa_erro.

OBS: Para parecer "real" crie os 3 sprites do mesmo tamanho menos o da loja que não precisa ser do mesmo tamanho. Para dar certo aconselho criar 32x32, mais embaixo descobriram como fazer maior.

      Depois de criado, você terá que colocar a origem do spr_casa_loja, o spr_casa_mao e o spr_casa_erro no centro.
OBS: Porque no centro? Você pode deixar sem a origem no centro, mas se tiver no centro, o mouse ficará no centro dele e ficará melhor de colocar.

Objetos
    Depois disso você criará objetos para todos eles menos o do spr_casa_erro (que não precisa) e criem um obj_controle ( esse não precisa de sprite) . Eles ficaram como obj_casa_loja, obj_casa_mao,obj_casa e obj_controle.
    Após isso marque todos menos o obj_controle e o obj_casa_mao como sólido, isso vai ajudar a nao construir um em cima do outro.

Códigos
Vá no obj_controle e vai crie um evento create e coloque:
Código:

global.dinheiro = 100;//aqui seta o dinheiro para 100 quando o obj_controle for criado

Agora no mesmo objeto vá no evento Draw:
Código:

draw_set_colour(c_blue){//deixa a cor do texto em azul
draw_text(x-120,y-150,"Dinheiro: " +string(global.dinheiro))}//desenha o dinheiro de acordo com a variavel global.dinheiro

Vá no obj_casa loja e coloque no evento do mouse Left_Pressed
Código:

if not instance_exists(obj_casa_mao){ //se já não existir o obj_casa_mao ele irá criar um
instance_create(mouse_x, mouse_y, obj_casa_mao);}

Agora por último no obj_casa_mao no evento Step
Código:
x=round(mouse_x/32)*32
y=round(mouse_y/32)*32 //assim que esse objeto existir a posição dele será igual a posição x e y do mouse de acordo com a grid 32x32 (isso ajuda na hora de criar o obj na room, os objetos ficarão simetricos)

if mouse_check_button_pressed(mb_left){// se apartar o botao esquerdo do mouse

if global.dinheiro >= 30{ //e se o dinheiro for maior ou igual a 30

if place_free(x,y){// e se tiver livre o lugar

instance_create(x,y,obj_casa)//vai criar o obj casa
global.dinheiro -= 30;}}}//assim que criar a casa gasta você 30 de dinheiro

if global.dinheiro < 30{// se o dinheiro for menor que 30
sprite_index = spr_casa_erro}//o sprite vai ser o spr_casa_erro, que vai informar ao jogador que não pode mais construir

if mouse_check_button_pressed(mb_right){
instance_destroy()//destroi o obj_casa_mao}//se apertar o botao direito do mouse vai destruir o obj_casa_mao, ou seja nao vai poder construir de novo até clicar na loja novamente



Ainda em obj_casa_mao no evento Animation_End
Código:

if (sprite_index == spr_casa_erro){ //se o sprite for igual ao spr_casa_vermelha
sprite_index = spr_casa_mao} //  aqui vai deixar o sprite normal se vc tiver dinheiro o suciciente

Como sempre tive vontade de criar um jogo estilo RTS eu criei esse código que possibilita você criar um sistema de construção usando o mouse que já quebra um galhão, esse sistema é bem parecido com o do jogo Age of Mythology, Age of Empires e vocês poderão criar um jogo casual como por exemplo, aqueles joguinhos de cidade de celular. Então já que consegui fazer resolvi compartilhar para todos que quiserem criar um jogo assim.[/code]


Última edição por manobrother em Qua 10 Set 2014, 20:09, editado 10 vez(es)

manobrother

Número de Mensagens : 206
Idade : 17
Data de inscrição : 31/10/2013
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por Mateus O de Andrade em Ter 09 Set 2014, 12:54

Boa tarde manobrother,
Achei legal seu tutorial mas infelizmente demorei para entender o que você estava fazendo, pois você pulou alguns passos.

Tenho que recriar seu tutorial aqui mas acho que tem um probleminha nele.

...Recriando...

Acabei de refaze-lo:

if mouse_check_button_pressed(mb_right){//destroy o obj_casa_mao
instance_destroy();}
Isso não vai destruir nada!! pois no obj_casa_loja é criado um instantaneamente no mouse_x e y. Rode isso no debug e verá a quantidade de instancias criadas automaticamente.

Você também poderia fazer com que seus objetos se alinhassem com o grid do mapa (infelizmente não sei fazer para lhe explicar).
Outra dica é criar o obj_casa_mao somente quando selecionado de um HUD.

Ficou bem legal, basta corrigir os bugs e dar uma polida na engine.

Lhe aconselho dar uma estudada na mecânica do jogo sim city para snes.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por manobrother em Ter 09 Set 2014, 13:01

Mateus O de Andrade escreveu:Boa tarde manobrother,
Achei legal seu tutorial mas infelizmente demorei para entender o que você estava fazendo, pois você pulou alguns passos.

Tenho que recriar seu tutorial aqui mas acho que tem um probleminha nele.

...Recriando...

Acabei de refaze-lo:

if mouse_check_button_pressed(mb_right){//destroy o obj_casa_mao
   instance_destroy();}
Isso não vai destruir nada!! pois no obj_casa_loja é criado um instantaneamente no mouse_x e y. Rode isso no debug e verá a quantidade de instancias criadas automaticamente.

Você também poderia fazer com que seus objetos se alinhassem com o grid do mapa (infelizmente não sei fazer para lhe explicar).
Outra dica é criar o obj_casa_mao somente quando selecionado de um HUD.

Ficou bem legal, basta corrigir os bugs e dar uma polida na engine.

Lhe aconselho dar uma estudada na mecânica do jogo sim city para snes.



Vlw pelas dicas Mateus vou dar uma estudada aqui e mais tarde editarei para ficar melhor vlw ai!

manobrother

Número de Mensagens : 206
Idade : 17
Data de inscrição : 31/10/2013
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por manobrother em Ter 09 Set 2014, 18:02

.


Usuário Advertido por Flood - dharrison


Última edição por manobrother em Ter 09 Set 2014, 18:53, editado 1 vez(es)

manobrother

Número de Mensagens : 206
Idade : 17
Data de inscrição : 31/10/2013
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por DieBoy em Ter 09 Set 2014, 18:25

Muito bom! Outro tutorial básico para os mais leigos. Isso é muito útil para os novatos ;)

DieBoy

Número de Mensagens : 91
Data de inscrição : 22/08/2014
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por fredcobain em Qua 10 Set 2014, 17:40

manobrother, é preciso organizar melhor o tutorial para que seja aprovado.

É necessário mais explicação sobre qual o objetivo (resultado final) que deve ser alcançado (pode ser com uma imagem).

Outra coisa é identar tanto o texto qto o código (sugiro quebrar em capítulos).

Pelo que pude entender, sua idéia é fazer uma engine do tipo RTS (real time strategy), tipo os jogos starcraft, age of empires, warcraft, certo ?

Então um título pertinente seria - Engine RTS.

Enfim, são dicas pra vc ir aprimorando o tuto.

Espero que vc continue trabalhando no tópico pois o assunto é muito interessante e faz parte do processo de aprendizado. Que vc atualize o tópico para que a gente possa aprovar esse tuto.

Abraço!
=D

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Engine RTS

Mensagem por Conteúdo patrocinado Hoje à(s) 10:01


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