Jump to content

Jogo em ActionScript 3.0 + XML


Recommended Posts

Boa tarde,

Fala Gonçalo, natural de Portugal e preciso de uma ajuda urgente!

sou iniciante em ActionScript 3.0 e XML, e preciso de ajuda num jogo.

o meu jogo é um SpaceShooter, ando aos tirinhos a matar inimigos no

eixo XX, mas o jogo precisa de ter 2 niveis mas feitos em XML, pergunto

como se faz a interligação entre ActionScript 3.0 e o XML ?

Como se faz um ficheiro XML, por causa dos niveis do jogo? (são 2)

Agradecia imenso ajuda, é urgente!! por favor...

Senão houver paciencia para me ajudarem (normalmente a tipica resposta

é nao terem tempo) se faz favor, enviem-me bons links onde eu perceba

como se usa XML com ActionScript 3.0. Obrigado mais uma vez.

Gonçalo

Link to post
Share on other sites
  • Replies 57
  • Created
  • Last Reply

Top Posters In This Topic

  • stage

    33

  • nelsonr

    18

  • coxosclassic

    6

  • vikcch

    1

Top Posters In This Topic

Popular Posts

boas, Tal como o nelsonr disse, o xml é apenas uma estrutura onde sao definidas as propriedades do teu jogo (e nao a logica). Pegando no exemplo do nelsonr: <player initialLives="5" initialHe

Muito obrigado nelsonr, mas preciso de algo mais concreto.

Esse tipo de sites sao muito generalistas e acabo por ficar na mesma.

Se estou a tentar que me ajudem em jogos, preciso de apoio virado

para esse tipo de situações, XML virado para jogos. Ler, guardar, carregar (exemplos).

Obrigado na mesma.

Link to post
Share on other sites
nelsonr

Errr... o XML é apenas uma estrutura, o conteúdo é o que quiseres.

Que conteúdo queres guardar no ficheiro?

Que informação necessitas para gerar cada nivel?

Eu normalmente guardo em XML as definições gerais do jogo, entidades e niveis.

Exemplo:

<game>
<levels>
	<level number="1" timeLimitInMinutes="5">
		<Music file="music.ogg" Loop="true" />
		<enemies>
			<enemy type="shuttle01" health="100" weaponDamage="10" />
			<enemy type="shuttle02" health="200" weaponDamage="50" />
			<enemy type="boss01" health="500" weaponDamage="70" />
		</enemies>
	</level>
	<level number="2" timeLimitInMinutes="7">
		<Music file="music.ogg" Loop="true" />
		<enemies>
			<enemy type="shuttle01" health="150" weaponDamage="20" />
			<enemy type="shuttle02" health="250" weaponDamage="70" />
			<enemy type="boss02" health="800" weaponDamage="100" />
		</enemies>
	</level>
</levels>
</game>
Link to post
Share on other sites

Bom dia,

Respondendo às duas questões colocadas, no ficheiro XML preciso de determinar por exemplo

que ao fim de "matar" (por exemplo) 30 inimigos, o 1º nivel desaparece e carrega-se o 2º nivel.

De resto, em XML defenir que inimigos vão aparecer no 2º nivel, o numero de vidas que tenho (4 por exemplo) tanto no

1º nivel, como no 2º nivel. Epa :) deve haver mais coisas que se tenham que definir mas nao tenho a "experiencia" toda

para dizer mais coisas importantes para um jogo.

Acredito que esse exemplo mostrado, seja importante.

Se poderes colocar mais exemplos, parecidos ao que acabei de referir (do que penso ser preciso), seria de extrema utilidade.

Até agora, agradeço imenso o teu apoio... tenham paciência com os "novatos" nestas andanças... :(:)

Cumprimentos

Link to post
Share on other sites
nelsonr

Exemplo parecido com o que indicas

<game>
   <player initialLives="5" initialHealth="100" />
   <levels>
       <level number="1" requiredKills="30">
           <enemies>
               <enemy type="shuttle01" health="100" weaponDamage="10" startTimeInMS="5000" repeat="5" intervalInMS="500" />
               <enemy type="shuttle02" health="200" weaponDamage="50" startTimeInMS="5000" repeat="10" intervalInMS="500" />
               <enemy type="boss01" health="500" weaponDamage="70" startTimeInMS="7000" />
           </enemies>
       </level>
   </levels>
</game>

Como usar o XML:

- Lês o número de vidas e energia inicial do player a partir do atributo no elemento game/player.

- Vais ler ao XML as configurações do nivel em que estás.(procuras o elemento level com o atributo number igual ao nivel)

- Lês o atributo requiredKills do elemento level do nivel atual

- Lês a lista de inimigos do nivel. Nesse exemplo coloquei o atributo startTimeInMs para indicar quando é que o inimigo aparece (ex: após 5000 ms ou 5 segundos).

- Repete este inimigo durante 5 vezes com um intervalo de 500ms entre eles.

- Quando estes inimigos desaparecem (são destruidos), passas para o inimigo seguinte.

- No inimigo seguinte, tens definido um startTimeInMs de 5000ms, que indica que só deve aparecere passados 5 segundos do ultimo inimigo anterior ter sido destruido.

- Repete este inimigo durante 10 vezes com um intervalo de 500ms entre eles.

- Quando estes inimigos desaparecem (são destruidos), passas para o inimigo seguinte que é o boss.-

- O boss tem definido que aparece passados 7 segundos do ultimo inimigo da wave anterior ter sido destruido

Link to post
Share on other sites

Mas isso não é "automático", certo?

tenho que "programar" essa transição de niveis?

Sem me levares a "mal" :) é isso que ainda nao percebi. o resto que tens falado

e escrito estou a acompanhar, agora a transição de niveis faz-me confusão

não é automatico, certo? tenho que definir em código, no XML digo eu.

Cumprimentos

Link to post
Share on other sites
nelsonr

O ficheiro XML apenas serve para definir informação, não faz nada automaticamente.

O teu jogo é que vai ler a informação do XML e processar de acordo com o funcionamento pretendido.

Link to post
Share on other sites

Ou seja, na parte do "ActionScript" (é tipo Javascript)

é que tenho que fazer essa situação dos niveis?

tipo, "chamar" o ficheiro XML ? Criar uma função, certo? errado?

Cumprimentos

Link to post
Share on other sites
nelsonr

O jogo tem de ser feito em ActionScript, não vais chamar nenhum ficheiro XML.

O ficheiro XML será apenas para conter as várias configurações, de modo a facilitar alterares por exemplo o numero de inimigos ou a vida inicial sem teres de ir mexer no teu código.

Link to post
Share on other sites

Agora é que me baralhas-te todo ....

estava eu a seguir uma logica de pensamento e agora, o ficheiro XML não é

"chamado"!? :( entao onde entra a funcionar o ficheiro XML, em que parte?

pensava que ia criar tipo uma funçao no codigo actionscript, para ir buscar

dados ao XML..... afinal funciona como? (desculpa)

Link to post
Share on other sites
nelsonr

Sim, o ficheiro XML é lido para que o teu jogo tenha informação suficiente para gerar os niveis.

Quando disse que não ias chamar o ficheiro era que o ficheiro não vai fazer nada por si mesmo.

Link to post
Share on other sites

"....tenha informação suficiente para gerar os niveis...."

pegando nesta tua frase, é tudo o que ja temos falado do que deve

estar la dentro do ficheiro XML, certo? o ficheiro XML deve conter as

informações (inimigos, vidas, quantos inimigos devo abater, etc...) para que haja essa passagem de niveis?

penso correto, certo?

Link to post
Share on other sites
nelsonr

Sim.

Pensa assim, esquece o ficheiro XML, como tinhas essa informação?

Provavelmente em constantes definidas no código.

Quando precisasses de alterar a vida do jogador, ias a essa constante e alteravas e geravas o build novamente.

Mas ao teres essa informação no XML, basta alterar no ficheiro e reiniciar o jogo, sem alterares o codigo

Link to post
Share on other sites

Obrigado. peço imensas desculpas por tudo isto, mas para mim esta a ser importante.

Relativamente aos 2 códigos que puses-te, quais sao as diferenças principais ? (primeiro responde a esta questão)

2ª questão - o que é, e para que serve o requiredKills ?

Obrigado mais uma vez.

Link to post
Share on other sites
nelsonr

Relativamente aos 2 códigos que puses-te, quais sao as diferenças principais ? (primeiro responde a esta questão)

O primeiro exemplo de XML foi num formato geral, sem saber exactamente o que pretendias.

No segundo fiz alterações para incluir a informação que indicaste que precisas

2ª questão - o que é, e para que serve o requiredKills ?

Era apenas um exemplo onde podias guardar a informação que indicaste aqui:

preciso de determinar por exemplo que ao fim de "matar" (por exemplo) 30 inimigos, o 1º nivel desaparece e carrega-se o 2º nivel.

Link to post
Share on other sites

Muito obrigado. percebido.

o valor que esta à frente de weaponDamage="10" é o que ?

ja que falo nisto, quero perceber uma coisa, "weaponDamage", "requiredKills", e outras que existam

é a pessoa que cria (neste caso tu) ou ja é assim que existe ? (desculpa se é pergunta básica)

Link to post
Share on other sites
coxosclassic

boas,

Tal como o nelsonr disse, o xml é apenas uma estrutura onde sao definidas as propriedades do teu jogo (e nao a logica).

Pegando no exemplo do nelsonr:

<player initialLives="5" initialHealth="100" />

pegas nesta informacao e constrois o teu object de 'Player' com 5 vidas, e a health a 100.

<level number="1" requiredKills="30">
...

aqui, é a informacao relativa ao 1º nivel (number="1"). O 'requiredKills' indica que iras precisar de 30 kills para passares para o proximo nivel.

<enemytype="shuttle01" health="100" weaponDamage="10" startTimeInMS="5000" repeat="5" intervalInMS="500"/>
...

O type, o tipo do teu objecto de inimigo, ira ser 'shuttle01', e ira comecar com uma health de 100, o damage sera de 10 e por ai fora.

estas informacoes todas, irao servir para definires as propriedades dos teus objectos (player, level e enemy).

Toda a logica de jogo, tipo a health status do teu player ou dos teus inimigos, ira ser feita por actionscript.

Na tua class principal carregas o xml e logo a seguir constrois os objectos (Level, Player e Enemy) com as definicoes que veem do xml, e apartir dai constrois toda a logica do jogo em ActionScript.

Tenta é so perceber, que o xml é apenas a estrutura de dados para o teu jogo, e nao a logica.

alguma duvida diz.

cumps,

cc

Edited by coxosclassic
  • Vote 1

Cumps,

cc

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.