You are on page 1of 233

Criando Jogos com o Game Maker

Verso 8 Portugus Traduzido por Israel Chaves de Oliveira Escrito por Mark Overmars

O que h de novo
Verso 8.0 do Game Maker tem um grande de melhorias desde a verso 7.0. Abaixo as mudanas mais importantes so descritas. Incompatibilidades Telas de apresentao de texto j no mostra mais imagens. No entanto, telas de apresentao web foram adicionados para poder mostrar documentos html completos com imagens, etc. Um numero de modificaes foram em funes ligadas aos recursos sprite e plano de fundo. Isto foi feito devido ao fato de que o Game Maker usa um mecanismo completamente novo para esses recursos. Se seu jogo usa boa parte das chamadas de funes de recursos que abre e salva imagens com certeza muito recomendado usar a verso antiga 7.0 para esse jogo. Se voc usa pacotes de extenso, ento voc ter que reinstala-las. Algumas modificaes foram feitas ao mecanismo de timeline que pode levar a incompatibilidades. Em particular, atribuindo uma timeline e iniciando ela agora so coisas separadas. Um importante bug que foi resolvido nos evento collision em que executados duas vezes se dois objetos tem os eventos collision um com o outro. Alguns jogos no entanto podem ter dependido deste bug e, por isso, j no podem funcionar corretamente. Novidades O Game Maker agora por padro mostrado um pgina de Noticias quando ele iniciado. Aqui novas verses sero anunciadas, novos recursos sero indicados, h informaes sobre competies, e dicas e truque para design de jogos. Noticias so mostradas somente uma vez por dia. Na Edio Pro isto pode ser desligado. Voc sempre pode acessar as notcias atravs do menu Help e voc incentivado regularmente para checar noticias com informaes importantes sobre o Game Maker. Tutorial O Game Maker agora vem embutido por padro tutorial para iniciantes. Ele aparece no painel direita da tela. Usurio experientes podem indicar que eles no querem visualizar o tutorial jamais. Para ajustar o painel de tutorial, Game Maker agora agora iniciado por padro em modo tela cheia. Ele no entanto lembra suas configuraes ento modificando isso uma vez para o modo de janela ir neste momento iniciar neste modo.

Alpha-blended backgrounds e sprites A nova verso do Game Maker usa backgrounds e sprites com canais alfa (transparncia). Isto torna possvel criar e usar sprites muito mais agradveis. Arquivos PNG com essas informaes agora so corretamente carregado. O Editor de Sprite e imagem foi completamente reescrito, incluindo muitas novas opes de desenho e efeitos. Um novo seletor de arquivo sprite foi adicionado que mostra as animaes em sprites. Tambm temos um pacote com um grande nmero de sprites de alta qualidade no Game Maker que voc pode usar gratuitamente em seus jogos. Checagem de coliso melhorado Voc agora tem mais opes de verificao de coliso. Por exemplo, voc pode indicar que as colises deveriam ser fechados com um disco e voc ter melhor controle sobre a caixa delimitadora(bounding box). A sub-imagem do sprite pode ter uma mscara combinada e voc pode definir a dependncia em relao ao valor de transparncia alfa. Telas de Apresentao Uma nova funo splash_show_web (url, delay), foi acrescentada que pode ser usado para mostrar pginas da web como telas. Voc tambm pode usar pginas HTML local para isso. Isto permite um mecanismo poderoso como exemplo criar pginas de ajuda. Um boto de fechar adicionado s telas. Tambm uma srie de novas aes foram adicionados para mostrar os diferentes tipos de pginas de abertura e para alterar as configuraes de abertura. (As antigas aes Show Video e Webpage foram removidos visto que novas aes foram includas. Eles vo funcionar ainda em jogos antigos.) Eventos Trigger Um novo tipo de evento, foi introduzido: os eventos Trigger. Com os Eventos Trigger voc mesmo pode especificar. Voc d-lhes um nome e uma condio, escrito em GML. Aps isso, eles podem ser usados em todos os objetos, assim como outros eventos. Com isso voc pode estender facilmente a funcionalidade do Game Maker. Time lines As timelines foram estendidas. A forma de propriedade possui botes adicionais como por exemplo, espalhar os momentos e excluir ou duplicar as faixas de momentos. Timelines agora podem ser pausadas e reiniciadas e podem mesmo ser tocadas para trs. Tambm podem repetir automaticamente agora. Importando e exportanto recursos A possibilidade de fundir os jogos foi substitudo por um sistema muito mais vasto de importao e exportao de recursos. O usurio pode indicar quais recursos exportar para um arquivo (. GMRES). Em seguida, eles podem ser importados em um jogo diferente. Em princpio, s pode existir um recurso para cada nome. Quando h um conflito de nome ao importar o usurio pode especificar para manter o original, substitui de qualquer forma, ficar com o que foi alterado recentemente, ou manter os dois (no recomendado). Para ser capaz de fazer a terceira opo, todos os recursos agora seguiro quando eles forem modificados. Script e editor de cdigo reescritos

O script e editor de cdigo embutido foram totalmente reescritos, tornando-se muito mais fcil de escrever cdigo. Por exemplo, h nome de funo pop-up completa, ajudar de argumentao, a correspondncia de parnteses, a codificao de cor melhorada, os nmeros de linhas, preciso de verificao de erros, trechos de cdigo, e uma sofisticada funcionalidade localizar e substituir. Velocidade Aumentada A velocidade dos jogos que usa cdigo foi consideravelmente melhorado. A acelerao de at 100% s vezes possvel. Tambm o tempo de carregamento dos jogos melhorou consideravelmente. Tambm, quando executando um jogo stand-alone. Outras Mudanas H vrias outras mudanas e adies. Aqui est algumas das mais importantes. Agora voc pode usar cones de alta qualidade para seus jogos. Constantes agora pode ser definida em sua prpria forma (e no atravs do Global Game Settings). Como resultado, eles podem permanecer visvel enquanto voc estiver por exemplo escrevendo scripts. Voc tambm pode carregar e salvar as constantes de arquivos de texto. Tambm esto includos os arquivos que no so mostrados no Global Game Settings, mas em sua prpria forma. Muitas pequenas melhorias visuais. Adicionada a funo random_range (x1, x2), irandom (x), e irandom_range (x1, x2). Os ltimos do resultados inteiros e pode incluir x ou x2. Adicionado funes mouse_wheel_up e mouse_wheel_down. Adicionada uma funo set_application_title (ttulo) para definir o ttulo da aplicao (que mostrado na barra de tarefas). Adicionada a funo file_text_eoln () (Checa se chegou ao final da linha). Adicionado read-only varivel debug_mode. Existe agora uma configurao de jogo para no permitir protees de tela ou opes de consumo de energia (sleep, Hybernate), enquanto o Jogo estiver sendo executado (padro como no permitir). Funes adicionadas disk_size (unidade) e disk_free (unidade) e um gamemaker_version varivel. Mensagens de erro Runtime melhores que indica a posio do erro. Agora voc pode alterar a localizao dos arquivos temporrios, consulte o documento no tpico Preferncias. ... Bugs Corrigidos Os seguintes bugs foram corrigidos. Uma srie de outros bugs menores foram corrigidos tambm. Uma mensagem de erro ao iniciar o Maker no Vista com Active Controle do Usurio removido. Corrigiu um bug que ao usar Alt muitos campos em formulrios tornou-se invisvel no Vista. Corrigido um bug com dicas de aes no mostrados em objeto e os formulrios da

linha do tempo. Ao abrir um jogo ou iniciar um novo, para todos os recursos modificados nas janelas abertas uma pergunta de confirmao para salvar feita. Corrigido um (tipo de) erro com a preciso de operadores de comparao no cdigo. Resolvido bug com um plano de fundo ruim para o campo Applies To no editor de cdigo. Criando um autnomo agora verifica corretamente se existem rooms. Substitudos todas as combinaes Ctrl + Alt por Shift + Ctrl porque algumas combinaes so importantes para o teclado alemo. Corrigido tambm o atalho para a criao de sprites. Nos modos simples, atalhos para os recursos escondidos e itens de menu agora esto desativados. Tambm no menu Scripts est escondido. Corrigiu um bug na funo window_get_color (). Aumentou o limite para o nmero de vrtices em primitivas de desenho 3D para os modelos 1000 a 32000. Corrigiu um bug em ignorar z-valor para os vrtices do modelo. Corrigiu os eventos Outside View e Boundary View. Jogo ser executado (com aviso) quando no h nenhuma placa de som habilitada. Quando a janela do jogo perde o foco, eventos io como teclas so apagadas. Corrigida e melhorada os relatrios de erro para o cdigo de criao de rooms e instncias nas rooms. room_tile_add e room_tile_add_ext agora corretamente definir a cor de mistura para branco e retornar o ndice do tile correto. Agora configurar corretamente o ttulo do aplicativo para o nome de arquivo. Corrigido um bug no draw_line_width_color quando o comprimento 0. Tiles com fatores de escala negativas so agora corretamente desenhado. Mudou a leitura e escrita de nmeros reais em arquivos de texto. Agora o separador decimal sempre utiliza um ponto. No entanto, ao ler, tanto um ponto ou vrgula so aceitos. Um grupo de recursos que est vazia agora ter o cone correto de pasta fechada. Resolvido o problema com a piscada da rvore de recursos. Funes de string e string_format no falham quando o nmero muito grande e eles vo retornar o string ERROR. Trajetos longos so agora corretamente elaborado com draw_path. Contrao da rvore de recursos agora funciona corretamente. Em uma condio se, um valor de 0,5 agora tratado como verdade. Resolvido um bug que algumas vezes ocorreu quando pressionar a tecla ~. Funo sign () agora retorna corretamente 0 quando o argumento 0. No editor do caminho, quando se escolhe uma room, clicar fora do menu j no limpa a room. Ligeiramente ampliada a forma de depurao para mostrar todos os cones da barra de ferramentas. Tambm feito o visualizador de grade escala de colunas quando o formulrio redimensionado. Corrigiu um bug que pode causar um acidente quando o redimensionamento da janela do jogo a altura 0. Resolvido um bug no ds_grid_add / multiply / set_grid_region. Chamadas para scripts e funes de extenso agora retornar um valor de 0 quando no atribuem um valor de retorno a se mesmo.

Resolvido um bug srio em que os eventos de coliso quando executado duas vezes quando dois objetos tm eventos de coliso com o outro. Resolvido um bug no draw_text_ext com linhas em branco (mltiplos #) e um problema com o desenho que contm seqncias de CR-LF pares (quando se usa strings de vrias linhas no cdigo). Arquivos somente leitura podem agora ser usados como arquivos includos sem erros.

Usando o Game Maker


Game Maker um programa fcil de usar para criao de seus prprios jogos de computador. Esta seo do arquivo de ajuda d-lhe todas as informaes que voc precisa para criar seus primeiros jogos. As sees sero abordados temas mais avanados, como poltica e distribuio do seu jogo, e a linguagem de programao GML embutida que amplia consideravelmente as possibilidades.

Ento voc quer criar seu prprio jogo de computador


Jogar jogos de computador divertido. Mas realmente mais divertido projetar seus jogos de computador e deixar que outras pessoas joguem. No passado, a criao de jogos de computador no foi fcil. Jogos de computador comercial que voc compra hoje em dia tipicamente tomam um ou dois anos de desenvolvimento com equipes de qualquer lugar entre 10 a 50 pessoas. Oramentos chegam facilmente a milhes de dlares. E todas essas pessoas so altamente experientes: programadores, designers de arte, tcnicos de som, etc Mas o Game Maker mudou isso. Com o Game Maker voc pode criar seus prprios jogos de computador rapidamente sem a necessidade de aprender uma linguagem de programao. Claro que voc no deve esperar para criar o seu prprio Halo 4 ou Virtua Tennis dentro de algumas semanas. Mas isso tambm no necessrio. A alegria de jogar um jogo no est relacionado com a sua complexidade. Jogos mais simples, como Tetris, Bejeweled, Space Invaders, etc, so muito divertido de jogar e muito mais fceis de criar. Game Maker oferece uma interface intuitiva e fcil de usar drag-and-drop (arrasta-e-solta) que permite que voc crie seus prprios jogos muito rapidamente. Voc pode importar e criar imagens, sprites (imagens animadas) e sons e us-los. Game Maker fornecido com um conjunto considervel de recursos, para voc comear. Voc pode facilmente definir os objetos em seu jogo e indicar o seu comportamento, e voc pode definir agradveis rooms (nveis), em que o jogo ocorre. E se voc quer controle total h realmente uma linguagem de programao fcil da usar construda em Game Maker que lhe d total controle sobre o que est acontecendo em seu jogo. Game Maker centra-se em jogos bidimensionais. Portanto, no feita para criar mundos 3D como o Quake, embora haja algumas funcionalidades limitadas para grficos 3D. Mas no deixe isso te derrubar. Muitos jogos de grande utilizao de duas tecnologias sprite bidimensionais, embora eles possam parecer muito tridimensional. E projetar jogos bidimensionais muito mais fcil e mais rpido. Game Maker vem em duas edies, a Edio Lite e a Edio Pro. A Edio Lite pode ser usado gratuitamente, mas limitado em sua funcionalidade e exibir mensagens pop-up. Voc pode contudo distribuir livremente os jogos que voc criar com ele, voc pode at vend-los se quiser. Veja o acordo de licenciamento fechado para obter mais detalhes. Est fortemente incentivado a atualizar a sua cpia do Game Maker para a verso Pro. Ir estender consideravelmente a funcionalidade do Game Maker e ele ir remover o logotipo

ao executar jogos. Tambm ir dar suporte ao desenvolvimento do Game Maker. Para obter mais informaes sobre a atualizao veja a pgina da Edio Pro. Este arquivo de ajuda ir dizer-lhe as coisas mais importantes que voc precisa saber sobre o Game Maker e como voc pode criar seus prprios jogos com ele. Por favor, compreenda que, mesmo com um programa como o Game Maker, projetando jogos de computador no est completamente ausente de esforos. H muitos aspectos que so importantes: o jogo, grficos, sons, interao com o usurio, etc. Inicie com exemplos simples e voc vai perceber que a criao de jogos muito divertido. Verifique tambm o web site http://www.yoyogames.com/ para vrios exemplos, tutoriais, idias e links para outros sites e fruns. E em breve voc vai se tornar um mestre fabricante de seus jogo. Divirta.

Instalao
Voc provavelmente j fez isso, mas se no, aqui est como instalar o Game Maker. Basta executar o programa gmaker80.exe. Siga as instrues na tela. Voc pode instalar o programa em qualquer lugar que quiser, mas o melhor seguir as sugestes padro determinadas. Quando a instalao estiver concluda, no menu Iniciar voc vai encontrar um novo grupo de programas onde voc pode iniciar o Game Maker e ler o arquivo de ajuda. O Game Maker tambm instala um nmero considervel de imagens, sprites (imagens animadas) e efeitos de som no computador, que pode ser utilizado gratuitamente em seus jogos. Alm disso, alguns jogos de exemplo so instalados. Todos estes podem ser encontrados em pastas dentro da localidade onde voc instalou o Game Maker. A primeira vez que voc executar o Game Maker perguntado se voc pretende executar o programa no modo simples ou avanado. Se voc no tiver usado um programa de criao de jogo antes e voc no um programador experiente, melhor usar o modo simples ( s selecionar No). No modo simples, menos opes so mostradas. Voc pode facilmente mudar para o modo avanado mais tarde, usando o item apropriado no menu Arquivo. Tambm ser mostrado a voc um tutorial no lado direito da janela. O tutorial vai ensinarlhe como criar rapidamente seu primeiro jogo. Ele ir gui-lo atravs dos passos fundamentais no uso do Game Maker. Se voc no tiver usado Game Maker antes fortemente aconselhado trilhar seu caminho atravs do tutorial. Voc pode sempre usar o tutorial mais tarde atravs do menu Ajuda. Requerimentos Qualquer computador que tenha menos de cinco anos deve ser capaz de executar o Game Maker, sem quaisquer problemas. Para ser mais preciso o Game Maker requer um PC razoavelmente moderno executando o Windows 2000, XP, Vista, 7, ou posterior. Um DirectX 8 (ou superior) comptivel com um placa grfica com pelo menos 32MB de memria necessria para a maioria dos jogos criados. Ela exige uma resoluo de tela mnima de 800x600 e 65000 (16-bit) cores (cor de preferncia completo). Tambm um DirectX 8 compativel com uma placa de som necessrio. Certifique-se de que tenha os drivers mais recentes instalados. Game Maker requer o DirectX verso 8.0 ou posterior para ser instalado em seu computador. (Voc pode baixar a nova verso do DirectX a partir do site da Microsoft em: http://www.microsoft.com/windows/directx/.) Quando desenhando e testando os jogos, os requisitos de memria so muito altos (pelo menos 128 MB e de preferncia mais, tambm dependendo do sistema operacional). Quando apenas para rodar jogos, os

requisitos de memria so menos graves e dependem muito do tipo de jogo.

Atualizando para a Edio Pro


Game Maker vem em duas edies, a Edio Lite e a Edio Pro. A Edio Lite destinada queles que do seus primeiros passos no caminho do desenvolvimento de jogos. Ele pode ser usado gratuitamente, mas limitado em sua funcionalidade. Tambm mostra um pop-up logo ao executar jogos e ir sempre lembrar de atualizar o programa. Quando voc estiver usando o Game Maker regularmente ser recomendado para atualiz-lo para a verso Pro. A verso Pro contm consideravelmente mais funcionalidades e no exibe quaisquer logotipos ou mensagens pop-up. Mais precisamente, a edio Pro tem as seguintes funcionalidades adicionais: Nenhum logotipo Game Maker exibido ao executar um jogo. Sem pop-ups regulares para lembrar de atualizar. Voc pode usar rotao, cor misturada e sprites translcidos. Existem opes adicionais no sprite e editores de imagem. H aes adicionais por exemplo CD de msica, rotao de texto, formas coloridas. Voc pode usar efeitos especiais de som e som posicional. Voc pode criar telas de apresentao, com filmes, imagens, pginas web, textos, etc. Existe um sistema de partculas para criar exploses, fogos de artifcio, fogo, chuva, e outros efeitos. Uma srie de funes avanadas de desenho esto disponveis, por exemplo, texto colorido e polgonos texturizados. possvel criar jogos 3D usando funes para grficos 3D. possvel criar jogos multiplayer que podem ser jogados em uma rede. Voc pode definir suas prprias transies de rooms. Voc pode usar as funes para criar, carregar e modificar recursos (sprites, fundos, etc), enquanto que o jogo est em execuo. H uma coleo de funes para criar e utilizar estruturas de dados. Existem funes para o planejamento do movimento. Voc fica com a possibilidade de incluir outros arquivos executveis no jogo que pode ser usado quando o jogo executado. A verso Pro pode ser facilmente estendido usando pacote de extenso. Estes podem ser feitos por todos e em geral deve ser fornecido gratuitamente. Trs pacotes de extenso sejam includas adicionar muitas transies de rooms, janelas de dilogo, e facilidades de impresso. Voc pode definir seus prprios disparador de eventos. Voc pode exportar e importar os recursos, o que torna mais fcil para colaborar os jogos. Atualizando a edio Lite para a verso Pro custa apenas 20 euros ou E.U. $ 25 (sujeito a alteraes). Esta uma nica taxa que, pelo menos, vlida para todas as verses 8.x do Game Maker. Quando voc estiver executando a edio Lite, sempre que voc iniciar o Game Maker o seguinte formulrio ser mostrado:

Voc pode usar este formulrio para fazer upgrade para a verso Pro. Existem vrias maneiras de fazer isso. A maneira mais fcil comprar a atualizao online. Para este fim pressione o boto de comprar o Pro Edition Online. Voc ser levado a uma pgina web onde voc pode fazer o seu pagamento seja por carto de crdito ou atravs do PayPal. O pagamento ser tratada pela empresa SoftWrap que o nosso processador de pagamentos autorizados. Depois de feito o pagamento do software ser imediatamente atualizado para a verso Pro, sem qualquer outra medida por sua parte. Cuidadosamente salve (e imprima) a confirmao que voc receber uma vez que contm a referncia de compra que voc pode precisar mais tarde, se voc deseja reinstalar o software. (Quando voc estiver executando o programa, voc tambm pode atualizar online, escolhendo Upgrade to Pro Edition no menu Ajuda.) Se voc comprou Game Maker antes (e, portanto, tm um cdigo de ativao ou uma referncia de compra anterior), pressione a tecla Enter Activation Code. Voc ser levado a uma pgina web onde voc pode inserir seu cdigo de ativao ou a sua referncia de compra do seu pagamento anterior. Aqui voc tambm pode recuperar sua licena se voc perdeu. Depois de preenchido o Maker corrigir as informaes do jogo ser atualizado para a verso Pro. Observe que voc deve ter uma conexo Internet para a ativao. (Quando voc estiver executando o programa, voc tambm pode atualizar on line, escolhendo Enter Activation Code no menu Ajuda.) Se voc no quiser atualizar para a verso Pro, nesta fase, pressione o boto Continuar Usando a Edio Lite.

Primeiros Passos
Criar o seu primeiro jogo sempre um desafio. Mas se voc est disposto a colocar um

pouco de esforo nele, ele vai ser realmente fcil. Voc pode t-lo funcionando dentro de uma hora. Mesmo que seja realmente fcil de fazer jogos com Game Maker voc precisa compreender alguns dos conceitos bsicos. Para esse efeito voc fortemente recomendado a seguir o tutorial que aparece quando o Game Maker iniciado. Se voc removeu o tutorial sem querer, voc sempre pode torn-lo visvel novamente, escolhendo Tutorial no menu Ajuda. A Idia Global Antes de investigar as possibilidades de Game Maker bom ter uma sensao uma idia global antes do programa. Jogos criados com o Game Maker ocorrer em um ou mais rooms. (Os rooms so planos, no 3D, mas eles podem conter grfica aparncia 3D.) Nesses rooms voc pode colocar objetos, que podem ser definidos no programa. Objetos tpicos so as paredes, bolas movendo-se, o personagem principal, monstros, etc. Alguns objetos, como paredes, apenas ficam l e no fazer nada. Outros objetos, como o personagem principal, ir deslocar-se e reagir a interao do jogador (teclado, mouse e joystick) e um para o outro. Por exemplo, quando o personagem principal encontra um monstro que ele pode morrer. Os objetos so os ingredientes mais importantes dos jogos feitos com Game Maker, ento vamos falar um pouco mais sobre eles. Primeiramente, a maioria dos objetos precisam de alguma imagem para torn-los visveis no tela. Tais imagens so chamados de sprites. Um objeto muitas vezes no uma nica imagem, mas um conjunto de imagens que so exibidas uma aps a outra para criar uma animao. Desta forma, parece que o personagem anda, uma bola rotaciona, uma nave espacial explode, etc. Durante o jogo, a sprite de um determinado objeto pode mudar. (Assim o personagem pode parecer diferente quando se caminha para a esquerda ou para a direita.) Voc pode criar seus prprios sprites no Game Maker ou carreg-los a partir de arquivos (por exemplo, arquivos PNG ou GIF animado). Muitas Sprites vm junto com o Game Maker que voc pode usar gratuitamente em seus jogos. Certas coisas acontecero com os objetos. Tais acontecimentos so chamados de eventos. Os objetos podem ter determinadas aes quando os eventos acontecem. H um grande nmero de eventos diferentes que podem ocorrer e um grande nmero de aes diferentes que voc pode deixar seus objetos tomar. Por exemplo, existe um evento de criao quando o objeto criado. (Para ser mais preciso, quando uma instncia de um objeto criado pode haver vrias instncias do mesmo objeto.) Por exemplo, quando um objeto bola criado voc pode dar uma ao de movimento para que ela comece a se mover. Quando dois objetos se encontram, voc usa um evento de coliso. Nesse caso voc pode fazer a bola parar ou inverter direo. Voc tambm pode jogar um efeito de som. Para este fim Game Maker permite definir sons. Quando o jogador pressionar uma tecla no teclado existe um evento de teclado, e o objeto pode tomar uma ao apropriada, como se mover na direo indicada. Esperamos que voc tenha entendido. Para cada objeto de desenho, voc pode indicar aes para vrios eventos, definindo, desta forma o comportamento do objeto. Depois de ter definido os seus objetos, hora de definir as rooms em que eles vivero. As rooms podem ser utilizados para os nveis em seu jogo ou para sair para lugares diferentes. H aes para se deslocar de uma room para outra. Rooms, antes de tudo, tm um plano de fundo. Este pode ser uma simples cor ou uma imagem. Tais imagens de fundo podem ser criados no Game Maker ou voc pode carreg-los a partir de arquivos.

(O fundo pode fazer um monte de coisas, mas por enquanto, apenas a consider-lo como algo que faz com que as rooms tenham aparncia agradvel.) Em seguida, voc pode colocar os objetos na room. Voc pode colocar vrias instncias do mesmo objeto em um room. Assim, por exemplo, voc precisa definir apenas um objeto de parede e pode us-lo em muitos lugares. Voc pode tambm ter vrias instncias dos objetos como monstros, enquanto eles tm o mesmo comportamento. Agora voc est pronto para executar o jogo. A primeira room ser mostrada e objetos ganham vida por causa das aes de eventos de sua criao. Eles vo comear a reagir uns com os outros devido a aes em eventos de coliso e podem reagir com o jogador usando as aes de eventos de teclado ou mouse. Ento em resumo, as seguintes coisas (muitas vezes chamado) desempenham um papel crucial: objetos: quais so as entidades verdadeiras no jogo rooms: os lugares (nveis) em que os objetos vivem sprites: (animado) imagens que so usadas para representar os objetos sons: estes podem ser usados nos jogos, quer como efeito ou como msica de fundo backgrounds: as imagens usadas como plano de fundo para as rooms

H realmente um nmero de outros tipos de recursos: os caminhos, scripts, fontes e linhas de tempo. Estes so apenas importante para jogos mais complicados. Voc s vai v-los quando voc executar Game Maker no modo avanado. Eles sero tratados nos captulos mais avanados neste documento.

A interface de usurio geral


Quando voc iniciar o Game Maker a seguinte tela ser mostrada. Observe que a tela, na realidade, mostra tambm algumas novidades Game Maker e o tutorial que pode ser visvel do lado direito.

(Na verdade, isto o que voc v quando executar o Game Maker no modo simples. No modo avanado um nmero de itens adicionais so mostradas.) esquerda, voc v os diferentes recursos acima mencionados: Sprites, Sounds, Backgrounds, Objects, Rooms e mais dois: Game Information and Global Game Settings. No topo, h o menu familiar e a barra de ferramentas. Neste captulo iremos descrever brevemente vrios itens de menu, botes, etc Nos prximos captulos discutiremos uma srie deles em detalhe. Observe que muitas coisas podem ser obtidos de diferentes formas: pela escolha de um comando do menu, clicando em um boto, ou clicando com o boto direito em um recurso. Menu File No menu file voc pode encontrar alguns dos comandos de costume para carregar e salvar arquivos, alm de uns outros especiais: New. Escolha este comando para iniciar a criao de um novo jogo. Se o jogo atual foi alterado ser perguntado se voc quer salv-lo. H tambm um boto da barra de ferramentas para isso. Open. Abre um arquivo de jogo. Arquivos Game Maker tm a extenso. GMK. Voc tambm pode abrir arquivos antigos. Gm6. (Se voc deseja abrir arquivos .GMD criados com a verso 5 do Game Maker voc deve selecionar o tipo de arquivo apropriado na parte inferior da janela. Estes podem ainda no funcionar corretamente na nova verso.) Existe um boto para este comando. Voc tambm pode abrir um jogo, arrastando o arquivo para a janela do Game Maker. Recent Files. Use este submenu para reabrir arquivos de jogo que voc abriu recentemente. Save. Salva o arquivo de projeto do jogo com o seu nome atual. Se nenhum nome foi especificado antes, ser pedido um novo nome. Voc s pode usar este comando quando o arquivo foi alterado. Novamente, h um boto da barra de

ferramentas para isso. Save As. Salva o arquivo de projeto do jogo com um nome diferente. Voc est convidado para um novo nome. Create Executable. Uma vez que seu jogo est pronto provavelmente voc vai querer dar aos outros para jogar. Utilizando este comando voc pode criar uma verso autnoma de seu jogo. Isto simplesmente um executvel que voc pode dar a outras pessoas para executar. Advanced Mode. Ao clicar sobre este comando o Game Maker ir alternar entre o modo simples e avanado. No modo avanado, comandos e recursos adicionais estaro disponveis. Exit. Provavelmente bvio. Pressione para sair do Game Maker. Se voc alterou o jogo atual voc ser perguntado se voc quer salv-lo.

Menu Edit O menu de edio contm uma srie de comandos que se relacionam com o recurso selecionado (objeto, Sprite, som, etc.) Dependendo do tipo de recurso alguns dos comandos podem no ser visveis. Insert resource. Insere uma nova instncia do tipo de recurso atualmente selecionado antes do atual. Uma janela ser aberta na qual voc pode alterar as propriedades do recurso. Isso ser tratado em detalhe nos captulos seguintes. Duplicate. Faz uma cpia do recurso atual e adicion-o. Uma janela ser aberta na qual voc pode alterar o recurso. Delete. Exclui o recurso seleccionado (ou grupo de recursos). Tenha cuidado. Isso no pode ser desfeito. Voc vai, no entanto, ser avisado. Rename. D o recurso de um novo nome. Isso tambm pode ser feito sob a janela de propriedade de recurso. Alm disso, voc pode selecionar o recurso e, em seguida, clicar sobre o nome. Properties. Use este comando para abrir a janela para editar as propriedades. Observe que todas as janelas de propriedade aparecem dentro da janela principal. Voc pode editar muitos deles ao mesmo tempo. Voc tambm pode editar as propriedades clicando duas vezes sobre o recurso. Observe que todos estes comandos tambm podem ser dados de uma forma diferente. Boto direito do mouse em um recurso ou grupo de recursos, e o menu pop-up apropriado aparecer. Menu Resources Neste menu, voc pode criar novos recursos com cada um dos diferentes tipos. Observe que para cada uma deles existe tambm um boto na barra de ferramentas e um atalho de teclado. Tambm voc pode alterar as informaes do jogo e as configuraes global de jogo. Menu Run Este menu utilizado para executar o jogo. H duas maneiras de executar um jogo. Executar normalmente. Executa o jogo como aconteceria normalmente. O jogo executado da forma mais eficiente e ir olhar e agir como em um jogo executvel.

Executar no modo Debug. O jogo executado em modo de depurao. Neste modo, voc pode verificar certos aspectos do jogo e voc pode pausar e percorr-lo. Isso til quando algo d errado, mas um pouco avanada. Uma vez que o jogo esteja terminado, voc pode criar um executvel independente do jogo usando o comando no menu File. Menu Window Neste menu, voc encontra alguns dos comandos usuais para gerenciar as diferentes janelas de propriedades na janela principal: Cascade. Cascata todas as janelas de modo que cada um deles parcialmente visvel. Arrange Icons. Organizar todas as janelas de propriedades iconified. (teis em especial quando o redimensionamento do formulrio principal.) Close All. Feche todas as janelas de propriedades, perguntando ao usurio se deseja ou no salvar as alteraes feitas.

Help menu Aqui voc encontrar alguns comandos para ajud-lo: Contents. Use este comando para mostrar este arquivo de ajuda. Tutoriais. Use este submenu para mostrar os diferentes tutoriais que so fornecidos com o Game Maker lhe ensinar como fazer seus primeiros jogos. Upgrade to Pro Edition. Voc pode usar este comando para atualizar a edio do Game Maker Lite para a Pro Edition Online. A verso Pro tem muitas caractersticas adicionais. Enter Activation Code. Se voc comprou Game Maker antes (e, portanto, tm um cdigo de ativao ou uma referncia de compra anterior), voc pode usar este comando para inserir o seu cdigo. Voc ser levado a uma pgina web onde voc pode inserir seu cdigo de ativao ou a sua referncia de compra do seu pagamento anterior. News. Aqui voc pode ver as notcias mais recentes sobre Game Maker. Book. Este comando ir lev-lo a um local no site onde voc pode encontrar informaes sobre o livro Game Maker. More Tutorials. Este comando ir lev-lo a um local no site onde voc pode baixar mais alguns tutoriais. Website. Conecta ao site Game Maker, onde voc pode encontrar informaes sobre a verso mais recente do Game Maker e colees de jogos e recursos para o Game Maker. Forum. Este comando ir lev-lo at o frum onde os usurios ajudam uns aos outros em muitos aspectos do Game Maker. Wiki. Este comando ir lev-lo ao wiki Game Maker, onde voc pode encontrar muitas informaes sobre o uso de Game Maker. About Game Maker. D algumas informaes acerca desta verso do Game Maker.

O explorer de recurso

esquerda da janela principal voc encontra o explorer de recursos. Aqui voc ver uma rvore de visualizao de todos os recursos em seu jogo. Ele funciona da mesma maneira como o Windows Explorer, e voc provavelmente est familiarizado com ele. Se um item tiver um sinal de + na frente dele voc pode clicar no sinal para ver os recursos em seu interior. Ao clicar no boto com sinal de - estes desaparecem novamente. Voc pode alterar o nome de um recurso (exceto os de nvel superior), selecionando-o (com um nico clique) e, em seguida, clicar sobre o nome. D um duplo clique em um recurso para editar suas propriedades. Use o boto direito do mouse para acessar os mesmos comandos no menu Editar. Voc pode alterar a ordem dos recursos, clicando sobre eles com o mouse e segurando o boto do mouse pressionado. Agora voc pode arrastar o recurso para o local apropriado. (Claro que o lugar deve ser correta. No possvel arrastar um som para a lista de sprites.)

Definindo sprites
Sprites so as representaes visuais de todos os objetos do jogo. Uma Sprite tanto uma nica imagem, desenhada com qualquer programa de desenho que voc gosta, ou um conjunto de imagens que, quando jogados um aps o outro, parece um movimento animado. Por exemplo, as quatro imagens formam uma sprite para um personagem que se deslocam para a direita.

Quando voc faz um jogo que normalmente comea por coletar um conjunto de sprites bonitas para os objetos em seu jogo. Um nmero considervel de sprites teis vem junto com o Game Maker. Outras colees de sprites interessantes pode ser encontradas no site Game Maker. Muitas sprites podem ser encontrado na Internet, normalmente em forma de arquivos PNG ou GIF animado. Para criar uma sprite, escolha o item Create Sprite a partir do menu Resource, ou use o boto correspondente na barra de ferramentas. A janela a seguir ir aparecer.

Na parte superior esquerda voc pode indicar o nome da sprite. Todas as sprites (e todos os outros recursos) tem um nome. melhor dar a cada sprite um nome descritivo. Certifique-se de que todos os recursos tm nomes diferentes. Mesmo que este no estritamente necessria, recomendado usar apenas letras e nmeros e o smbolo sublinhado (_) no nome de um sprite (e qualquer outro recurso) e que comece com uma letra. Em particular, no use o caractere de espao. Isso ser importante uma vez que voc comee a usar o cdigo. Para carregar uma sprite, clique no boto Load Sprite. Uma caixa de dilogo especial de arquivo abrir no qual voc pode escolher a sprite:

A parte da esquerda parece com o seletor de arquivos padro no qual voc pode selecionar o sprite que voc quer. direita voc v um preview da sprite animado e algumas informaes sobre ele. Aqui voc tambm pode indicar que voc quer tornar a sprite opaco (isto , retirar todas as peas transparentes), quer para remover o fundo, tornando-se padro (transparente), ou para suavizar as bordas da sprite, o que pode melhorar a sua aparncia. Quando voc est feliz com o resultado pressione Open para carregar o objeto. Game Maker pode carregar muitos arquivos grficos diferentes. Quando voc carregar um gif animado, as subimagens diferentes formam as imagens da sprite. Quando o nome do arquivo termina com _stripXX, com um nmero XX, considera-se conter uma faixa de XX subimagens prximas umas das outras (no para arquivos GIF). Por exemplo, um arquivo de imagem com o nome ball_strip4.png assumido que contm 4 subimagens. Uma vez que a sprite carregada a primeira subimagem mostrada direita. Quando h vrias sub-imagens, voc pode alternar entre eles usando os botes de seta. Com o boto Edit Sprite voc pode editar a sprite, ou at mesmo criar uma sprite totalmente novo. Game Maker tem uma extensa coleo de Sprites e editor de imagens. Para obter mais informaes, consulte as sees sobre Editando suas sprites e edio subimagens individualmente.

Sons e msica
A maioria dos jogos tm determinados efeitos sonoros e msica de fundo. Muitos efeitos sonoros teis podem ser encontradas no site Game Maker. Muitos mais podem ser encontrados em outros lugares na web. Para criar um recurso de som em seu jogo, utilize o item de Create Sound no menu Resources ou use o boto correspondente na barra de ferramentas. A janela a seguir ir aparecer.

Para carregar um som, pressione o boto marcado com Load Sound. Uma caixa de dilogo seletor de arquivo aparece na qual voc pode selecionar o arquivo de som. Existem dois tipos de arquivos de som, arquivos wave e midi. Arquivos Wave so usadas para efeitos sonoros curtos. Eles usam uma grande quantidade de memria mas tocam instantaneamente. Use estes para todos os efeitos sonoros em seu jogo. Arquivos Midi descrever a msica de uma maneira diferente. Como resultado, eles usam muito menos memria, mas eles so limitados a msica de fundo instrumental. Alm disso, o padro som midi pode tocar a qualquer momento. Uma vez que voc carregar um arquivo de msica voc pode ouvir o som utilizando o boto "play". H tambm um boto de Save Sound para salvar o som atual para um

arquivo. Este boto no realmente necessria, mas talvez seja necessrio se voc perder o som original.

Backgrounds
O terceiro tipo de recurso bsico so os backgrounds. Os backgrounds so geralmente grandes imagens que so usadas como plano de fundo (ou plano de frente) para as rooms em que o jogo tem lugar. Muitas imagens de background so feitas de tal forma que eles possam preencher um espao sem quebrar o visual. Desta forma, voc pode preencher o background com algum modelo. Um tanto desses background teis esto embutidos no Game Maker. Outros podem ser encontrados no site do Game Maker. Muitos mais pode ser encontrado em outros lugares na web. Para criar um recurso background em seu jogo, utilize o item Create Background no menu Resources ou use o boto correspondente na barra de ferramentas. A janela a seguir ir aparecer.

Na parte superior esquerda voc pode indicar o nome do fundo. recomendado para dar a cada background (e outros recursos) um nome descritivo. Pressione o boto Load Background para carregar uma imagem de background. Um seletor de arquivo mostrado no qual voc pode selecionar o fundo que voc quer. direita da caixa de dilogo voc pode indicar se voc deseja fazer o fundo opaco (isto , retirar todas as peas transparentes), quer para remover o fundo, tornando padro (no transparente), ou suavizar as bordas do fundo, o que pode melhorar a sua aparncia quando ele parcialmente transparente. Quando voc est feliz com o resultado pressione Open para carregar o fundo. Game Maker suporta muitos formatos de imagem. Imagens de background no pode ser animado! Voc pode alterar o fundo ou criar uma nova utilizando o boto Edit Background . Isto ir abrir um editor de imagem extensiva. Para obter informaes sobre como usar o editor de imagem veja a seo sobre edio de imagens. Tenha cuidado com grandes formaes. Alguma placas grficas antigas no conseguem lidar com imagens que so maiores do que a tela. Ento, de preferncia, manter as suas imagens de fundo inferior a 1024x1024.

Definindo objetos

Com os recursos que voc tem visto at agora voc pode adicionar algumas imagens e sons agradveis ao jogo, mas eles no fazem nada. Passamos agora para o recurso mais importante do Game Maker, os objetos. Objetos so entidades no jogo que fazem coisas. Na maioria das vezes tm uma sprite como representao grfica de modo que voc possa v-los. Eles tm comportamento, pois eles podem reagir a determinados eventos. Todas as coisas que voc v no jogo (exceto o background) so objetos. (Ou para ser mais preciso, so instncias de objetos.) Os personagens, os monstros, as bolas, as paredes, etc, so todos objetos. Tambm pode haver certos objetos que voc no v, mas que controlam certos aspectos do jogo. Por favor, perceba a diferena entre sprites e objetos. Sprites so apenas imagens (animadas) que no tm qualquer comportamento. Objetos tm normalmente um sprite para represent-los, mas os objetos tm comportamento. Sem objetos no h jogo! Perceba tambm a diferena entre objetos e instncias. Um objeto que descreve uma determinada entidade, por exemplo, um monstro. Pode haver vrias instncias deste objeto no jogo. Quando falamos de uma instncia significa que uma instncia especfica do objeto. Quando falamos de um objeto queremos dizer todas as instncias deste objeto. Para criar um objeto em seu jogo, escolha Criar Object no menu Resources. A janela abaixo ir aparecer:

Isto muito complexo. esquerda h algumas informaes gerais sobre o objeto. No meio, h a lista de eventos que podem acontecer ao objeto. direita h vrias aces que o objeto pode executar. Eventos e aes sero discutidas nos prximos captulos. Como sempre, voc pode (e deve) dar um nome ao seu objeto. Em seguida, voc pode escolher a sprite para o objeto. Para este fim, clique com o boto esquerdo do mouse sobre a caixa de sprite ou o boto de menu ao lado. Um menu aparece com todas as imagens disponveis. Selecione a opo que voc deseja usar para o objeto. Se voc no

tem uma sprite ainda, voc pode clicar no boto Novo para criar um recurso sprite novo e alter-lo. Alm disso, quando voc selecionar um recurso haver um boto Edit aqui que voc pode usar para mudar a sprite. Isto mais rpido do que encontrar o primeiro recurso na lista de recursos e, em seguida, indicando que pretende editar. Abaixo disto existem duas caixas de seleo. Visble indica se as instncias deste objeto so visveis. Claramente, a maioria dos objetos so visveis, mas s vezes til ter objetos invisveis. Por exemplo, voc pode us-los para waypoints (ponto de referncia) para um monstro em movimento. Objetos invisveis vo reagir a eventos e outras instncias faro coliso com eles. A caixa com o nome Solid indica se este um objeto slido (como uma parede). Colises com objetos slidos so tratadas diferentemente das colises com objetos no-slido. recomendado usar Solid somente para o objeto que no esto se movendo.

Eventos
Game Maker usa o que chamado de uma abordagem orientada a evento. Isso funciona da seguinte forma. Sempre que algo acontece no jogo as instncias dos objetos recebe eventos (tipo de mensagens que dizem que algo aconteceu). As instncias podem ento reagir a estas mensagens ao executar determinadas aes. Para cada objeto voc deve indicar qual evento ele responde e as quais aes devem ser executadas quando o evento ocorrer. Isto pode parecer complicado, mas realmente muito fcil. Primeiramente, para a maioria dos eventos o objeto no precisa fazer nada. Para os eventos em que algo deve ser feito, voc pode usar um simples arrastar e soltar para indicar as aes. No meio da janela de propriedade do objeto, existe uma lista de eventos aos quais o objeto deve reagir. Inicialmente ela est vazia. Voc pode adicionar eventos a ela, pressionando o boto Add Event. Aparecer uma janela com todos os diferentes tipos de eventos. Aqui voc seleciona o evento que voc deseja adicionar. s vezes surge um menu com opes adicionais. Por exemplo, para o evento de teclado voc deve selecionar a tecla. Abaixo voc encontra uma lista completa dos mais diferentes eventos e suas descries. Um evento na lista ser selecionado. Este o evento que atualmente estamos mudando. Voc pode alterar o evento selecionado, clicando sobre ele. direita, h todas as aes representadas por pequenos cones. Eles esto agrupados em vrias pginas com abas. No prximo captulo voc vai encontrar descries de todas as aes e o que fazem. Entre os eventos e as aes, h a lista de aes. Essa lista contm as aes que devem ser realizadas para o evento atual. Para adicionar lista de aes, arraste-os com o mouse da direita para a lista. Elas sero colocadas uma abaixo da outra, com uma breve descrio. Para cada ao, voc ser solicitado a fornecer alguns parmetros. Estes tambm sero descritos no prximo captulo. Assim, aps a adio de algumas aes que a situao pode aparecer da seguinte forma:

Agora voc pode comear a adicionar as aes a outro evento. Clique no evento correto com o boto esquerdo do mouse para selecion-lo e arraste aes na lista. Voc pode alterar a ordem das aes na lista novamente usando arrastar e soltar. Se voc segurar a tecla <Alt> enquanto arrasta, voc faz uma cpia da ao. Voc ainda pode usar arrastar e soltar entre listas de as de objetos diferentes. Quando voc clica com o boto direito do mouse sobre uma ao, aparece um menu no qual voc pode excluir a ao selecionada (tambm pode ser feito usando a tecla <Del>) ou copiar e colar. (Voc pode selecionar vrias aes como cortar, copiar ou apagar segurando a tecla <Shift> da tecla <Ctrl>. Pressione <Ctrl> <A> para selecionar todas as aes.) Quando voc ficar com mouse em repouso acima de uma ao, uma descrio mais detalhada dada da ao. Veja o prximo captulo para obter mais informaes sobre as aes. Para apagar o evento atualmente selecionado, juntamente com todas as suas aces aperte o boto Delete. (Eventos sem quaisquer aes sero excludas automaticamente quando voc fechar a janela de modo que no h necessidade de exclu-los manualmente.) Se voc quiser atribuir as aes a um evento diferente (por exemplo, porque voc decidiu usar uma tecla diferente para eles ) aperte o boto Change e escolha o novo evento que voc deseja. (O evento no deve ser definido j!) Usando o menu que aparece quando o boto direito do mouse sobre a lista de eventos, voc tambm pode duplicar um evento, ou seja, adicionar um novo evento, com as mesmas aes. Como indicado acima, para adicionar um evento, pressione o boto Add Event. O formulrio abaixo, aparece:

Aqui voc seleciona o evento que deseja adicionar. s vezes surge um menu com opes adicionais. Aqui est uma descrio dos vrios eventos. (Novamente lembre-se que voc normalmente usa apenas alguns deles.) Create event Este evento acontece quando uma instncia do objeto criado. normalmente usado para definir a instncia em movimento e/ou para definir algumas variveis para a instncia. Destroy event Este evento ocorre quando a instncia destruda. Para ser preciso, isso acontece pouco antes de ser destruda, ento a instncia ainda existe quando o evento executado! Na maioria das vezes este evento no usado, mas voc pode, por exemplo, us-lo para mudar o placar ou criar algum outro objeto. Alarm events Cada instncia tem 12 relgios despertadores. Voc pode ajustar estes alarmes usando determinadas aes (ver captulo seguinte). O alarme em seguida, conta para baixo at chegar a 0 no momento em que o evento de alarme gerado. Para indicar as aes de um alarme dado, primeiro voc precisa selecion-lo no menu. Alarmes so muito teis. Voc pode us-los para que certas coisas acontecem de vez em quando. Por exemplo, um monstro pode mudar sua direo de movimento a cada 20 passos. (Em tais casos, uma das aes no evento deve definir o alarme novamente.) Step events O evento passo acontece a cada passo do jogo. Aqui voc pode colocar as aes que precisam ser executados de forma contnua. Por exemplo, se um objeto deve seguir um outro, aqui voc pode adaptar a direo do movimento em direo ao objeto que estamos seguindo. Contudo tenha cuidado com este evento. No coloque muitas aes complicadas no evento passo dos objetos que tenha muitas instncias. Isso pode retardar o jogo. Para ser mais preciso, h trs eventos passos diferentes. Normalmente, voc s precisa de um padro. Mas usando o menu voc tambm pode selecionar o evento inicio de passo e o fim de passo. O evento inicio de passo executado no incio de cada passo, antes de quaisquer outros eventos ocorrerem. O evento passo normal executado imediatamente antes das instncias serem colocadas em suas novas posies. O evento fim de passo executado no final do passo, antes do desenho. Isso normalmente usado para mudar a sprite dependendo da direo atual.

Collision events Sempre que duas instncias se colidem (isto , seus sprites se sobrepem) um evento de coliso aparece. Bem, para ser preciso o dois eventos de coliso ocorrem, um para cada instncia. A instncia pode reagir a esse evento de coliso. Para esse efeito, a partir do menu, selecione o objeto com o qual pretende definir o evento de coliso. Em seguida voc coloca as aes aqui. H uma diferena que acontece quando a instncia se choca com um objeto slido ou um objeto no slido. Primeiramente, quando no existem aes em caso de coliso, no acontece nada. A instncia atual simplesmente mantm em movimento, mesmo quando o outro objeto slido. Quando o evento de coliso contm aes acontece o seguinte: Quando o outro objeto slido, a instncia colocado de volta no seu lugar anterior (antes da coliso). Em seguida, o evento executado. Finalmente, a instncia transferido para sua nova posio. Assim, se o caso por exemplo inverte a direo do movimento, a instncia ricocheteia contra a parede, sem parar. Se ainda houver uma coliso, a instncia seja mantido no seu lugar anterior. Por isso, pra de se mover efetivamente. Quando o outro objeto no slido, a instncia no colocada de volta. O evento simplesmente executado com a instncia na posio atual. Alm disso, no h checagem para uma segunda coliso. Se voc pensar bem, essa a nica coisa lgica que deve acontecer. Porque o objeto no slido, podemos simplesmente passar por cima dele. O evento notifica-nos que isto est acontecendo. H muitos utilidades para o evento de coliso. Instncias podem us-lo para ricochetear contra as paredes. Voc pode us-lo para destruir objetos, quando, por exemplo, eles so atingidos por uma bala. Keyboard events Quando o jogador pressionar uma tecla, um evento de teclado acontece para todas as instncias de todos os objetos. Existe um evento diferente para cada tecla. No menu voc pode escolher a tecla para o qual pretende definir o evento de teclado e aes arrastadas para l. Claramente, apenas alguns objetos precisam de eventos para apenas algumas teclas. Voc comea um evento em cada passo, desde que o jogador mantenha a tecla pressionada. H dois eventos de teclado especiais. Um chamado de <No key>. Este evento acontece em cada passo, quando nenhuma tecla for pressionada. O segundo chamado <Any key> e acontece quando qualquer tecla pressionada. Quando o jogador pressiona teclas mltiplas, os eventos para todas as teclas pressionadas acontece. Observe que as teclas do teclado numrico s produzem os eventos correspondentes quando <NumLock> pressionado. Mouse events Um evento de mouse acontece para uma instncia sempre que o cursor do mouse est dentro da sprite que representa a instncia. Dependendo de quais botes do mouse for pressionado pega o evento, boto sem pressionar, boto esquerdo, boto direito, boto do meio. Os eventos de boto do mouse so gerados a cada passo, desde que o jogador mantenha o boto do mouse pressionado. Os eventos de pressionar so gerados apenas uma vez quando o boto for pressionado. Os eventos de liberado so gerados apenas quando o boto for liberado. Observe que esses eventos ocorrem somente quando o mouse estiver sobre o evento. Se quiser reagir ao evento de presso ou liberao do

mouse em um lugar arbitrrio, use o mouse eventos globais que podem ser encontrados em um submenu. H dois eventos de mouse especial. Oe vento mouse entra acontece quando o mouse entra numa instncia. O evento mouse deixar acontece quando o mouse deixa a instncia. Estes eventos so normalmente usados para modificar a imagem ou tocar algum som. Eventos girar a roda do Mouse para cima e para baixo acontecem quando o usurio move a roda do mouse. Por ltimo, h uma srie de eventos relacionados com o joystick. Voc pode indicar aes para as quatro direes principais do joystick (em sentido diagonal ambos os eventos acontecem). Tambm voc pode definir aes para at 8 botes do joystick. Voc pode fazer isso tanto para o joystick primrio e secundrio. Other events H uma srie de outros eventos que podem ser teis em determinados jogos. Eles so encontrados no menu. Os seguintes eventos podem ser encontrados aqui: Outside room: Este evento ocorre quando a instncia est completamente fora da sala. Isto normalmente um bom momento para destru-lo. Intersect boundary: Este evento ocorre quando a instncia cruza a fronteira da room, ou seja, ele se encontra (pelo menos) parcialmente fora da sala. Views: Aqui voc encontrar uma srie de eventos que so teis quando voc usar exibies em suas rooms. Estes eventos testa se a instncia est completamente fora de uma viso particular ou cruza o limite de exibio. Game start: Este evento acontece para todas as ocorrncias na primeira room, quando o jogo inicia. Isso acontece antes do evento comear room (ver abaixo), mas aps a criao de eventos para as instncias na room. Este evento normalmente definido em apenas um objeto "controlador" e usado para iniciar uma msica de fundo e para inicializar algumas variveis, ou carregar alguns dados. Game end: O evento acontece a todas as instncias quando o jogo termina. Novamente normalmente apenas um objeto define este evento. Por exemplo, usado para armazenar alguns dados em um arquivo. Room start: Este evento acontece em todas as instncias, inicialmente em uma room quando a room comea. Isso acontece aps os eventos de criao. Room end: Este evento acontece a todas as instncias existentes quando finaliza a room. No more lives: Game Maker tem um sistema embutido de vidas. Existe uma ao para definir e alterar o nmero de vidas. Sempre que o nmero de vidas torna-se menor ou igual a 0, o evento acontece. tipicamente usada para encerrar ou reiniciar o jogo. No more health: Game Maker tem embutido um sistema de sade. Existe uma ao para definir e alterar a sade. Sempre que a sade torna-se menor ou igual a 0, o evento acontece. Ele tipicamente usado para reduzir o nmero de vidas ou para reiniciar o jogo. Animation End: Como indicado acima, uma animao composto por um nmero de imagens que so exibidas uma aps a outra. Depois que o ltimo quadro mostrado comea de novo com o primeiro. O evento acontece precisamente neste momento. Como um exemplo, isso pode ser usado para alterar a animao, ou destruir a instncia. End of path: Este evento ocorre quando a instncia segue um caminho e quando o fim do caminho atingido. Close Button: Este evento acontece quando o usurio clica no boto fechar da

janela. Isso s acontece quando desativar nas configuraes do jogo a opo de ter o boto para fechar como a tecla Escape. User defined: H 16 desses eventos. Eles normalmente nunca acontecer a menos que voc mesmo chame-os de uma parte do cdigo.

Draw event Instncias, quando visveis, desenham sua sprite em cada passo na tela. Quando voc especificar aes no evento de desenho, o sprite no desenhada, mas essas aes so executadas em seu lugar. Isto pode ser usado para desenhar algo diferente da sprite, ou primeiro fazer algumas alteraes nos parmetros da sprite. H uma srie de aes de desenho que so especialmente feitos para uso no evento desenho. Observe que o evento desenho s executado quando o objeto visvel. Observe tambm que, independente do que voc desenha, eventos de coliso so baseadas no sprite que est associado com a instncia. Key Pess events Este evento semelhante ao evento de teclado, mas isso acontece apenas uma vez quando a tecla pressionada, ao invs de continuamente. Isso til quando voc quer uma ao acontea apenas uma vez. Key Release events Este evento semelhante ao evento de teclado, mas isso acontece apenas uma vez quando a tecla liberada, e no continuamente. Em algumas situaes importante para compreender a ordem os processos de eventos do Game Maker. a seguinte: Begin step events Alarm events Keyboard, Key press, e Key release events Mouse events Normal step events (agora todos as instncias so definidas para suas novas posies) Collision events End step events Draw events

O eventos criar, destruir, e outros so realizados quando coisas correspondentes acontecem. Aes Aes indica as coisas que acontecem em um jogo criado com o Game Maker. As aes so colocadas em eventos de objetos. Sempre que o evento acontece essas aes so executadas, resultando em um comportamento certo para as instncias do objeto. H um grande nmero de aes diferentes disponveis e importante que voc entenda o que eles fazem. Neste captulo iremos descrever as aes disponveis no modo simples. Observe que algumas destas aes so apenas disponvel na verso Pro do Game Maker. Isso ser indicado. Todas as aes so encontrados nas pginas exibidas na parte direita da janela de propriedade do objeto. Existem seis tipos de aes. Voc seleciona o ajuste que voc quer, clicando na aba correta. Quando voc mantm o mouse sobre uma das aes, uma

breve descrio exibida para lembr-lo de sua funo. Vamos brevemente repetir: Para colocar uma ao em um evento, basta arrast-lo a partir das pginas com abas para a lista de aes. Voc pode alterar a ordem da lista, novamente usando arrastar. Segurando a tecla <Alt> enquanto arrasta faz uma cpia da ao. (Voc pode arrastar e copiar aes entre as listas de diferentes janelas de propriedade do objeto.) Use o boto direito do mouse e selecione o item de menu correto para remover as aes (ou use a tecla <Del>) e copiar e colar as aes selecionadas. Quando voc descarta uma ao na lista de aes, uma janela aparece na maioria das vezes, em que voc pode preencher certos parmetros para a ao. Os parmetros sero descritos a seguir, ao descrever as aes. Dois tipos de parmetros aparecem em muitas aes por isso vamos descrever essas aqui. No topo voc pode indicar para qual instncia a ao se aplica. O padro self (si mesma), que a instncia para a qual a ao executada. Na maioria das vezes, isso que voc quer. No caso de um evento de coliso, voc tambm pode especificar a aplicar o recurso para a instncia de outros envolvidos na coliso. Por exemplo, desta maneira voc pode destruir a outra instncia. Finalmente, voc pode optar por aplicar as medidas para todas as instncias de um objeto especfico. Desta maneira voc pode mudar todas as bolas vermelhas para bolas azuis. O segundo tipo de parmetro a caixa chamada de Relative. Ao marcar esta caixa, os valores que voc digite so relativos aos valores atuais. Por exemplo, dessa forma voc pode adicionar algo a pontuao atual, em vez de alterar a pontuao atual para o novo valor. Os outros parmetros sero descritos abaixo. Voc pode posteriormente alterar os parmetros clicando duas vezes sobre a ao. Aes de movimento Os primeiros ajustes de aes consistem em ligar esses movimentos aos objetos. Existem as seguintes aes: Move Fixed (Mover numa direo) direction speed Use esta ao para fazer com que a instncia inicie movimento em uma determinada direo. possvel indicar a direo com as teclas de seta. Use o boto central para interromper o movimento. Tambm necessrio especificar a velocidade do movimento. Esta velocidade fornecida na forma de pixels por passo (step). Preferencialmente, no se deve usar valores de velocidade negativos. Voc pode especificar direes mltiplas. Neste caso, feita uma escolha aleatria. Assim, por exemplo, um monstro pode iniciar seu movimento para esquerda ou para direita. Move Free (Mover livremente) motion_set(dir,speed) Esta a segunda forma de se especificar um movimento. Neste caso, pode-se indicar uma direo precisa, em um ngulo que varia entre 0 e 360 graus. 0 significa direo direita. A direo cresce em sentido anti-horrio. Assim, por exemplo, 90 indica uma direo para cima (na vertical). Para uma direo aleatria, pode-se utilizar random(360). Como ser explicado posteriormente, a funo random gera um nmero aleatrio menor do que o valor indicado. Como se pode observar, h uma caixa denominada Relative. Marcando-a, o novo movimento definido com base no atual. Por exemplo, se a instncia est se movimentando para cima e definido um pouco de movimento esquerda, o movimento resultante ser para cima e para esquerda. Move Towards (Move em direo a um ponto)

move_towards_point(x,y,sp) Esta ao fornece uma terceira forma de se especificar um movimento. Indica-se uma posio e velocidade, a instncia ento inicia seu movimento com a velocidade indicada em direo a posio fornecida (observe que ela no interrompe o movimento ao atingir a posio). Por exemplo, se voc quer que um tiro v em direo a uma espaonave, use como posio spaceship.x, spaceship.y (posteriormente, ser descrito mais sobre o uso destas variveis). Marcando a caixa Relative, especifica-se a posio relativa atual da instncia (a velocidade, entretanto, no relativa). Speed horizontal (Velocidade horizontal) hspeed A velocidade de uma instncia composta de uma parte horizontal e uma parte vertical. Atravs desta ao, possvel modificar a velocidade horizontal. Uma velocidade horizontal positiva significa um movimento para direita. J uma negativa, significa movimento esquerda. A velocidade vertical ser mantida intacta. Use relative para aumentar a velocidade horizontal (ou diminu-la se for fornecido um valor negativo). Speed Vertical (Velocidade vertical) vspeed De forma similar, atravs desta ao possvel modificar a velocidade vertical de uma instncia. Set gravity (Ajustar gravidade) gravity gravity_direction Atravs desta ao, cria-se gravidade para um objeto em particular. Pode-se especificar uma direo (ngulo entre 0 e 360 graus) e uma velocidade, e a cada passo esta velocidade e direo so adicionadas ao movimento atual da instncia do objeto. Normalmente, preciso apenas um pequeno incremento na velocidade (algo como 0.01). Para gravidade, tipicamente se quer uma direo para baixo (270 graus). Marcando a caixa Relative aumenta-se a velocidade e direo gravitacional. Observe que, ao contrrio da vida real, objetos diferentes podem ter direes gravitacionais diferentes. Reverse Horizontal (Inverter direo horizontal) path_reverse(ind) Esta ao reverte o movimento horizontal de uma instncia. Pode ser usada, por exemplo, quando um objeto colide com uma parede vertical. Reverse Vertical (Inverter direo vertical) path_reverse(ind) Reverte o movimento vertical de uma instncia. Utiliza-se, por exemplo, quando um objeto colide com uma parede horizontal. Set friction (Ajustar o atrito) friction O atrito diminui a velocidade de movimento das instncias. Com esta ao, especifica-se a quantidade de atrito. A cada passo, este valor subtrado da velocidade, at que esta se torne 0 (zero). Geralmente, deseja-se um valor de atrito bem pequeno (como 0.01). Categoria Jump (Pular)

Jump to position (Saltar para uma posio) x=x+k y=x+k Atravs desta ao, possvel deslocar uma instncia para uma posio em particular. Simplesmente preciso especificar as coordenadas (x e y), e a instncia posta com seu ponto de referncia nesta nova posio. Marcando-se a caixa Relative, a posio final relativa posio atual da instncia. Esta ao geralmente utilizada para movimentar uma instncia de modo contnuo. Por exemplo, a cada passo, incrementa-se um pouco a posio. Jump to start (Saltar para a posio inicial) xstart ystart Esta ao coloca a instncia de volta na posio original, onde ela estava no momento de sua criao. Jump to a random (Saltar para uma posio aleatria) move_random(hsnap,vsnap) Move a instncia para uma posio aleatria no room. S so escolhidas posies onde no ocorra interseco com alguma instncia slida. possvel definir modelos padronizados para a escolha da nova posio. Por exemplo, escolhendo valores positivos, as coordenadas escolhidas sero mltiplos inteiros dos valores indicados (isto pode ser usado para manter a instncia alinhada com clulas existentes no jogo, se for o caso). Tambm possvel separar a definio de valores para posies horizontais e para posies verticais. Align to Grid (Alinha a uma grade) move_snap(hsnap,vsnap) possvel delimitar o posicionamento da instncia a uma grade. Indica-se valores para posicionamento horizontal e vertical (em outras palavras, o tamanho das clulas na grade). Isto pode ser muito til para se ter certeza de que as instncias permanecero na grade. Wrap Screen (Esconder da Tela) move_wrap(hor,vert,margin) Com esta ao voc pode deixar uma instncia escondida ao redor, quer dizer, quando deixar um lado da room ela reaparece do outro lado. Esta ao normalmente usada no evento Outside (Lado de Fora). Observe que a instncia tem que ter uma velocidade por esconder para funcionar, porque a direo de se esconder est baseado na direo do movimento. Voc pode indicar se s esconde horizontal, s vertical, ou em ambas as direes. Move to Contact (Mover a uma posio de contato) move_contact_solid(dir,maxdist) move_contact_all(dir,maxdist) Com esta ao possvel movimentar a instncia em uma dada direo at que se atinja a posio de contato com um objeto. Se j h uma coliso na posio atual, a instncia no movida. De outra forma, a instncia deslocada exatamente antes que a coliso ocorra. possvel indicar uma direo, mas tambm uma distncia mxima a mover. Por

exemplo, quando uma instncia est caindo possvel desloc-la para baixo at que um objeto seja encontrado. Tambm possvel definir se apenas objetos slidos devam ser considerados ou se todos os objetos. Tipicamente se define esta ao em um evento do tipo coliso para se ter certeza de que a instncia pare aps o contato com a outra instncia envolvida na coliso. Bounce (Ricochetear) move_bounce_solid(adv) move_bounce_all(adv) Com esta ao em um evento coliso com algum objeto, a instncia bate no objeto e volta de forma natural. Ajustando o parmetro preciso para falso (false), apenas paredes verticais e horizontais so tratadas corretamente. Ajustando preciso para verdadeiro (true) tambm paredes em declive ou em curva so tratadas de modo satisfatrio (embora um pouco mais lento). Tambm possvel indicar que apenas ricocheteie se bater em objetos slidos, ou em todos objetos. Observe que o efeito de ricochete (bounce) no totalmente correto porque depende de muitas propriedades, embora o resultado em geral seja bom. Aes Principais 1 Os seguintes ajustes de aes de acordo com a criao, alterao, e destruio de instncias de objetos, com sons, e com rooms. Create instance (Cria uma instncia de um objeto) instance_create(x,y,obj) Com esta ao possvel criar uma instncia de um objeto. Especifica-se para qual objeto a instncia ser criada e a sua posio. Marcando-se a caixa Relative, a posio se torna relativa posio da instncia atual. A criao de instncias durante um jogo extremamente til. Uma espaonave pode criar tiros; uma bomba pode criar uma exploso, etc. Em muitos jogos, haver um objeto controlador que de tempos em tempos cria monstros ou outros objetos. Para a nova instncia recm criada, executado um evento criar. Create Moving (Criar uma instncia de um objeto com velocidade e direo) instance_create(x,y,obj) speed direction praticamente idntica a anterior, mas com dois campos adicionais. Com ela tambm possvel especificar a velocidade e direo da instncia a ser criada. Observe que se a caixa Relative for marcada, apenas a posio relativa, e no a velocidade e a direo. Por exemplo, para ajustar o movimento de um tiro, preciso utilizar um pequeno truque. Como posio, usar 0,0 e marcar a caixa Relative. Como direo, preciso a direo atual da instncia, que pode ser obtida digitando a palavra direction (uma varivel que indica a direo atual em que uma instncia est se movendo). Create random (Criar instncia de um objeto aleatrio) instance_create(random(400),random(400),obj) Esta ao o deixa criar uma instncia de um entre quatro objetos. Voc especifica os quatro objetos e a posio. Uma instncia de um destes quatro objetos criada determinada posio. Se voc marcar a caixa Relativa, a posio relativa posio da

instncia atual. Se voc precisa de uma escolha fora de menos dos quatro objetos voc pode usar No Object para alguns deles. Isto por exemplo til para gerar um inimigo aleatrio em um local. Change Instance (Modificar a instncia) instance_change(obj,perf) Utiliza-se para mudar a instncia atual para uma instncia de um outro objeto. Por exemplo, possvel mudar a instncia de uma bomba para uma exploso. Todas as configuraes, como o movimento e o valor das variveis, permanecero iguais. Pode-se indicar ou no a realizao de um evento destruir para o objeto atual e um creation event para o novo objeto. Destroy Instance (Destruir a instancia) instance_destroy() Esta ao destri uma determinada instncia. executado um evento destruir para a instncia em questo. Destroy at position (Destruir instncias em uma posio) position_destroy(x,y) Com esta ao, possvel destruir todas as instncias contidas em um retngulo abrangendo uma determinada posio. til, por exemplo, quando acontece a exploso de uma bomba, que deve atingir uma determinada rea. Marcando-se a caixa Relative, a posio se torna relativa posio da instncia atual. Change Sprite (Mudar a sprite) sprite_index Utiliza-se esta ao para mudar a sprite de uma instncia. Indica-se, tambm, qual subimagem deve ser exibida. Normalmente, o valor apropriado 0 (indicando a primeira subimagem), a menos que se queira exibir uma sub-imagem em particular. Usa-se -1 se no se quer modificar a sub-imagem atualmente exibida. Finalmente, possvel mudar a velocidade da animao. Se for desejada a visualizao de uma sub-imagem em particular, utiliza-se o valor 0 para a velocidade. Se o valor de velocidade for maior do que 1, algumas sub-imagens no sero exibidas; se for menor do que 1, algumas subimagens sero exibidas mais de uma vez. No se deve utilizar valores negativos para velocidade. A modificao de sprites uma caracterstica importante. Por exemplo, freqentemente desejado modificar a sprite de um objeto dependendo da sua direo de movimento, o que pode ser obtido criando sprites diferentes para cada uma das 4 direes. Dentro dos eventos do teclado para as teclas de setas direcionais, ajusta-se a direo de movimento e a sprite correspondente. Transform Sprite (Transformar a sprite) sprite_width sprite_height Utiliza-se esta ao para modificar o tamanho e orientao da sprite para a instncia. Atravs de fatores de escala, possvel torn-la maior ou menor. O ngulo fornecido no sentido anti-horrio. Para criar a sprite orientada na direo de movimento, usa-se como valor direction. Isto til, por exemplo, para representar um carro. Tambm possvel indicar se a sprite deve ser espelhada vertical ou horizontalmente.

Color Sprite (Configurar a cor de uma sprite) image_blend Normalmente, a sprite desenhada como foi definida. Atravs desta ao, possvel mudar a cor da sprite. Esta cor misturada com a sprite, isto , combinada com as cores da sprite. Se for desejado desenhar uma sprite em cores diferentes, melhor definir a sprite em preto e branco e usar a cor de mistura para ajustar a cor. Tambm possvel indicar uma transparncia: valor igual a 1, a sprite fica opaca; valor igual a 0, fica completamente transparente; com um valor intermedirio (entre 0 e 1), se v parcialmente o fundo. Este efeito muito bom para criar exploses. Esta ao s est disponvel na verso registrada. Play a sound (Tocar um som) sound_play(index) Com esta ao, possvel tocar um dos sons (sound resouces) que foram adicionados ao jogo. Indica-se o som e se este deve ser tocado uma vez (o padro) ou em repetio contnua. Pode ser tocado mais de um som wave por vez, mas sons do tipo midi s podem ser tocados um de cada vez. Quando se inicia um novo som midi, o atual interrompido. Stop a sound (Parar um som) sound_stop(index) A ao interrompe o som indicado. Se mltiplas instncias desse som esto em execuo, todas so interrompidas. If a sound is playing (Se um som est em execuo) sound_isplaying(index) Se o som indicado est em execuo, a prxima ao realizada. De outro modo, ela ignorada. Pode-se selecionar Not para indicar que a ao deveria executar se o som indicado no estiver em execuo. Por exemplo, pode-se verificar se h uma msica de fundo em execuo e, se no houver, pr alguma msica em execuo. Go to previous room (Ir para sala anterior) room_goto_previous() Move para o room anterior. possvel indicar o tipo do efeito de transio entre rooms (experimente e verifique o que lhe parece mais atraente). Se ainda est no primeiro room, exibido um erro. Go to next room (Ir para prxima sala) room_goto_next() Move para o prximo room. Tambm pode-se indicar a transio. Restart to current room (Reiniciar a sala atual) room_restart() O room atual reiniciado. Indica-se o efeito de transio. Go to a diferent room (Ir para uma sala diferente) room_goto(numb) Atravs desta ao, se pode ir a um room em particular. Indica-se o room e o efeito de transio. If previous rooms exists (Se h uma sala anterior)

Esta ao testa se o room anterior existe. Existindo, a ao definida executada. Geralmente, preciso fazer este teste antes de se mover para o room anterior. If next rooms exists (Se h uma prxima sala) Testa se o prximo room existe. Existindo, a ao definida executada. Geralmente, utiliza-se este teste antes de se mover para o prximo room. Aba Main 2 Categoria Timing (Tempo) Set an alarm clock (Configurar um alarme) alarm[0..7] Atravs desta ao, possvel configurar at 8 alarmes para a instncia. Seleciona-se o nmero de passos e o alarme. Aps a indicao do nmero de passos, a instncia executa o evento de alarme correspondente. Tambm possvel aumentar ou diminuir o valor marcando a caixa Relative. Se o valor do alarme for ajustado para menor do que 0, este ser desativado, ento o evento no gerado. Sleep for a while (Interromper durante um tempo) sleep(numb) Com esta ao, possvel congelar a cena por um determinado tempo. tipicamente usada no incio ou no fim de um nvel, ou quando exibida alguma mensagem para o jogador. Especifica-se o nmero de milisegundos a parar (sleep). Tambm possvel especificar se a tela deveria ser redesenhada para representar a nova situao. Categoria Info (Informao) Display a message (Exibir uma mensagem) show_message(str) Com esta ao, possvel exibir uma mensagem em uma caixa de dilogo. Simplesmente digita-se a mensagem desejada. Usando um smbolo # no texto da mensagem, este ser interpretado como um caracter de nova linha (use \# se deseja exibir o smbolo #, ao invs de mudar de linha). Se o texto da mensagem iniciar com apstrofo ('), ou com aspas ("), interpretado como uma expresso. Posteriormente ser descrito mais a respeito de expresses. Show the game info (Mostrar informaes do jogo) show_info() Exibe a janela de informaes do jogo. Show a video file (Mostrar arquivo de vdeo) show_video(fname,full,loop) Com esta ao, possvel exibir um arquivo de vdeo/filme. Especifica-se o nome do arquivo e se deveria ser exibido em tela cheia ou em janela. Tenha certeza da existncia do arquivo de vdeo. Tambm deveria ser distribudo com o jogo ou colocado em um arquivo de dados e exportado. Restart the game (Reiniciar o jogo) game_restart() Esta ao faz com que o jogo volte ao seu incio.

End the game (Fim do jogo) game_end() Esta ao finaliza o jogo. Save the game (Salvar o jogo) game_save(string) Salva o estado atual de um jogo. Especifica-se o nome do arquivo de salvamento (o arquivo criado na mesma pasta do jogo). Posteriormente, este jogo pode ser recuperado com a ao de carga (descrita a seguir). Observao: apenas o estado bsico do jogo salvo; no salvo, por exemplo, o som que estava tocando, ou aspectos avanados como o contedo de estruturas de dados, partculas, etc. Load Game (Abrir o jogo) game_load(string) Recupera o estado de um jogo a partir de um arquivo (especifica-se o nome do arquivo). Esteja certo de que o jogo salvo corresponde ao jogo atual, e tambm que foi criado com a mesma verso do Game Maker; caso contrrio, ocorrer um erro. Aes de Controle H uma srie de aes com o qual voc pode controlar quais outras aes so realizadas. A maioria destas aes uma pergunta, por exemplo, se uma posio est vazio. Quando a resposta sim (true) a prxima ao executada, caso contrrio ele ignorado. Se voc quiser vrias aes a serem executadas ou ignoradas com base no resultado voc pode coloc-los em um bloco, colocando blocos de ao de incio e fim em torno delas. Tambm pode haver uma outra parte que executada quando a resposta no. Ento, uma pergunta tipicamente aparece como segue:

Aqui a questo perguntar se uma posio para a instncia atual est livre de coliso. Em caso afirmativo, a instncia comea a se mover em uma determinada direo. Se no, a instncia vai para uma determinada posio. Observe que os blocos so recuados. Isto d uma melhor viso global das aes. (Em especial quando voc usa blocos dentro de blocos.) Tambm mais fcil detectar quando voc se esqueceu de um bloco de incio ou

final de ao de bloco. Para todas as perguntas h um campo denominado NO. Se voc verificar neste campo, o resultado da questo invertida. Ou seja, se o resultado era verdade se torna falsa e se era falsa, torna-se verdade. Isso permite que voc execute certas aes quando uma pergunta no verdade. Para muitas perguntas voc pode indicar que elas devem ser aplicadas a todas as instncias de um objeto especfico. Neste caso, o resultado s verdade se verdade para todas as instncias do objeto. Por exemplo, voc pode verificar se todas as bolas para a posio ligeiramente a direita esto livre de coliso. As seguintes questes e aes relacionadas esto disponveis. (Observe que todos eles tm um cone diferente em forma e uma cor de fundo diferente para que eles possam mais facilmente ser distinguidos de outras aes.) Check Empty (Se uma posio est livre de coliso) if place_free(x,y) Esta pergunta retorna o valor true se a instncia atual, colocada na posio indicada, no ocasiona uma coliso com outro objeto. possvel especificar a posio tanto absoluta como relativa. Tambm pode-se indicar se apenas objetos slidos devam ser levados em conta, ou todos os objetos. Esta ao tipicamente usada para verificar se uma determinada instncia pode se mover para uma posio em particular. Check Collision (Se h uma coliso em uma posio) if place_empty(x,y) Esta pergunta tem ao reversa pergunta anterior. Retorna true se h uma coliso quando a instncia atual colocada em uma determinada posio (novamente, pode ser relativa tanto a objetos slidos, como a todos os objetos). Check Object (Se h objeto em uma posio) if place_meeting(x,y,obj) Esta pergunta retorna true se a instncia colocada na posio indicada encontra uma instncia de um objeto indicado. Test Instance (Se o nmero de instncias um certo valor) Pode-se especificar um objeto e um nmero. Se o nmero de instncias atual de um objeto igual ao nmero especificado, a pergunta retorna true; caso contrrio, retorna false. Tambm pode-se especificar se esta verificao pelo nmero de instncias deveria ser menor ao determinado valor ou maior do que o dado valor. tipicamente usado para verificar todas as instncias de um tipo de objeto em particular, freqentemente no momento de terminar um nvel ou mesmo um jogo. Test Chance (Sorteado um nmero, realize uma ao) random_set_seed(seed) possvel especificar o nmero de lados de um dado. Ento se o dado sorteia um determinado valor, o resultado true e uma determinada ao realizada. Isto pode ser utilizado para colocar um elemento aleatrio ao jogo. Por exemplo, em cada passo podese gerar em posio aleatria uma bomba ou modificar sua direo. Quanto maior for o nmero de lados do dado, menor so as chances. Atualmente, possvel inclusive utilizar nmeros reais para a especificao do nmero de lados. Usar nmeros menores que 1, entretanto, no faz sentido.

Check Question (Se o usurio responde sim a uma pergunta) Especifica-se uma pergunta. Uma caixa de dilogo mostrada ao jogador, com um boto yes e um boto no. O resultado true se o jogador responde yes. Test Expression (Se uma expresso verdadeira) Esta a pergunta mais geral. Pode-se especificar uma expresso qualquer. Se a expresso for avaliada true (isto , um nmero maior ou igual a 0.5) a ao realizada. Posteriormente, ser descrito mais sobre expresses. Check Mouse (Se um boto do mouse est pressionado) mouse_check_button(numb) Retorna true se o boto indicado do mouse est pressionado. Um uso padro no evento de passo (step event). Pode-se verificar se o boto do mouse est pressionado, e caso afirmativo, por exemplo mover o objeto para certa posio; use a ao jump to a point com valores mouse_x e mouse_y. Check Grid (Se instncia est alinhada com a grade) place_snapped(hsnap,vsnap) Retorna true se a posio de uma instncia encontra-se em uma grade (grid). Especificase o espaamento horizontal e vertical da grade. muito til em certas aes que so apenas permitidas quando a instncia ocupa uma determinada posio na grade. Start block (Incio de um bloco) Indica o incio de um bloco de aes. End block (Incio de um bloco) Indica o fim de um bloco de aes. Else (Seno) Atrs desta ao segue a parte seno (else) de uma pergunta, ou seja, executada quando o resultado da pergunta falso (false). Repeat next action (Repete uma ao) usada para repetir a prxima ao (ou bloco de aes) um determinado nmero de vezes. Simplesmente, indica-se quantas vezes deseja-se repetir. Exit event (Sair deste evento) exit Quando esta ao encontrada, nenhuma ao adicional, neste evento, executada. tipicamente usada aps uma pergunta. Por exemplo, quando uma posio est livre, nada precisa ser feito, ento pode-se sair do evento. Neste exemplo, as aes que se seguem so apenas executadas quando h uma coliso. Desejando-se maior controle sobre o que est acontecendo no jogo, possvel utilizar a linguagem de programao integrada (GML), que descrita na parte 4 da documentao. Se por um lado fornece maior flexibilidade do que a utilizao de aes, por outro exige controle de variveis. A seguir, algumas aes para ilustrar.

Execute code (Executar um pedao de cdigo) execute_string(str) Quando adiciona-se esta ao, uma janela exibida em que possvel digitar linhas de cdigo. Pode conter chamadas de funes simples ou mesmo cdigo mais complexo. Recomenda-se o uso apenas para pequenos trechos de cdigo. Para trechos mais extensos, deve-se usar scripts, que so descritos na parte 2 da documentao. Put some comment (Coloca um comentrio) Use esta ao para adicionar uma linha de comentrio lista de aes. A linha exibida em fonte itlico. Ela no faz nada quando da execuo do evento. A adio de comentrios ajuda na lembrana do que os eventos esto fazendo. Apesar de no fazer nada, lembre-se de que ainda uma ao, ou seja, quando colocada aps uma ao condicional, executada quando a condio verdadeira (true), ainda que no faa nada. Set Variable (Ajustar o valor de uma varivel) H muitas variveis integradas no jogo. Com esta ao, pode-se modific-las. Tambm possvel criar variveis prprias e atribuir valores a estas. Especifica-se o nome da varivel e o novo valor. Quando a caixa Relative marcada, o valor adicionado ao valor atual da varivel. Por favor, observe que isto s pode ser feito se a varivel j possui um valor atribudo a ela. If a variable has value (Se o valor da varivel igual a) Pode-se verificar qual o valor de uma varivel em particular. Se o valor igual ao nmero fornecido, a pergunta retorna true, seno retorna false. Tambm pode-se verificar se o valor menor ou maior do que um valor especificado. E ainda possvel usar esta ao para comparar 2 expresses. Draw the value of a variable (Desenhar o valor da varivel) Com esta ao, possvel exibir o valor de uma varivel em uma posio determinada da tela. Observe que isto s pode ser feito atravs do evento de desenho (draw event) de um objeto. Aes de Pontuao Na maioria dos jogos que o jogador ter uma determinada pontuao. Tambm muitos jogos do ao jogador um nmero de vidas. Finalmente, muitas vezes o jogador tem uma certa sade. As seguintes aes se torna mais fcil de lidar com a pontuao, a vida e a sade do jogador. Set score (Ajusta a pontuao) score Game Maker possui um mecanismo de escore integrado. O escore normalmente exibido no ttulo da janela. Pode-se usar esta ao para mudar o escore. Simplesmente fornecido o novo valor para o escore. Geralmente, se quer adicionar algum valor ao escore; neste caso, no se deve esquecer de marcar a caixa Relative. Test Score (Se a pontuao tem um valor)

Com esta ao, pode-se verificar se o escore alcanou um determinado valor. Indica-se o valor e se o escore deveria ser igual ao valor, ser menor, ou ser maior do que o valor. Draw Score (Desenha o valor da pontuao) draw_text(5,-2,'Pontos: ' + string(score)) Esta ao capaz de exibir o escore em uma posio particular da tela. Deve-se fornecer a posio e o ttulo a ser colocado junto do valor do escore. O escore desenhado com a fonte atual. Esta ao s pode ser utilizada no evento de desenho (drawing event) de um objeto. Show the highscore(Exibir as melhores pontuaes) draw_highscore(x1,y1,x2,y2) Para cada jogo, so mantidos os 10 melhore escores. Esta ao exibe esta lista. Se o escore atual est entre os 10, inserido na lista e o jogador pode digitar seu nome. Podese indicar qual a imagem de fundo a ser utilizada, se a janela deveria ter borda, qual a cor para a nova entrada e para as outras j existentes, e qual fonte usar. Clear Highscore (Limpar as melhores pontuaes) highscore_clear() Esta ao limpa a tabela de melhores escores. Set Lives (Ajustar o nmero de vidas) lives Game Maker tambm possui um sistema de vidas integrado. Com esta ao, possvel modificar o nmero de vidas que restam. Geralmente, ajusta-se para um valor como 3 no incio do jogo e decrementa-se ou incrementa-se este valor dependendo do que acontece. No se deve esquecer de marcar a caixa Relative em caso de se desejar adicionar ou subtrair o nmero de vidas. No momento em que o nmero de vidas se torna 0 (ou menor do que 0) um evento "no more lives" gerado. Test Lives (Se nmero de vidas igual a) if(lives==x) Serve para verificar se o nmero de vidas alcanou um determinado valor. Indica-se o valor e se o nmero de vidas deveria ser igual, menor ou maior do que o valor. Draw Lives (Desenhar o nmero de vidas) show_lives Pode-se exibir o nmero de vidas em uma determinada posio da tela. Fornece-se a posio e o ttulo a ser exibido junto ao nmero de vidas. O desenho feito com a fonte atual. Esta ao s pode ser utilizada no evento de desenho de um objeto. Draw Life Images (Desenhar o nmero de vidas com imagem) draw_sprite(sprite,subimg,x,y) Ao invs de exibir o nmero de vidas atravs de nmeros, freqentemente mais atraente usar imagens pequenas para representar este nmero; o que esta ao faz. Especifica-se a posio e a imagem; na posio indicada, o nmero de vidas exibido atravs de imagens. Esta ao s pode ser utilizada no evento de desenho de um objeto.

Set Health (Ajustar a energia) health Game Maker possui um mecanismo integrado de energia. Use esta ao para mudar o nvel de energia. Um valor 100 considerado mximo e 0 o mnimo. Simplesmente o novo valor fornecido. Geralmente, se quer subtrair algum valor do nvel de energia, ento deve-se marcar a caixa Relative. Quando a energia se torna menor ou igual a 0, gerado um evento do tipo out of health event. Test Health (Se energia igual a) Serve para verificar se a energia alcanou um valor em particular. Indica-se o valor e se a energia deveria ser igual, menor ou maior do que o valor especificado. Draw Health (Desenhar a barra de energia) draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,sho wborder) Com esta ao pode-se desenhar a energia no formato de barra. Quando o valor 100, exibida uma barra completamente preenchida. Quando o valor 0, a barra fica vazia. Indica-se a posio e o tamanho da barra, bem como a cor e o fundo. Score Caption (Ajustar a informao de ttulo da janela) window_set_caption(caption) Geralmente, no ttulo da janela, so exibidos o nome da room (nvel) e pontuao. Com esta ao, possvel modificar isto. Pode-se indicar se a pontuao, as vidas, e/ou a energia, devem ou no ser exibidos, bem como ttulo que cada um destes deve ter. Aba Draw (Desenhar) Draw Sprite (Desenhar uma imagem de sprite) draw_sprite(sprite,subimg,x,y) Especifica-se a sprite, a posio (tanto absoluta quanto relativa posio atual da instncia) e a sub-imagem da sprite. (As sub-imagens so numeradas a partir de 0). Desejando-se desenhar a sub-imagem atual, usa-se o nmero -1. Draw Background (Desenhar uma imagem de plano de fundo) draw_background(back,x,y) Indica-se a imagem de fundo (background), a posio (absoluta ou relativa) e se a imagem deveria ser distribuda ou no por todo o room. Draw Text (Desenhar um texto) 'X: ' + string(x) Especifica-se o texto e a posio. Um smbolo # no texto interpretado como nova linha. (Use \# para obter o caracter #, ao invs de ir para uma nova linha). Assim, pode-se criar textos com mltiplas linhas. Se o texto comea com aspas (simples ou duplas), interpretado como uma expresso. Por exemplo, pode-se utilizar 'X: ' + string(x) para exibir o valor da coordenada x da instncia. (A varivel x armazena a coordenada x atual. A funo string() transforma este nmero em string. O caracter + combina as 2 strings).

Draw Scaled Text (Desenhar um texto transformado) draw_text_transformed(x,y,string,xscale,yscale,angle) Esta ao similar anterior, mas possvel especificar um fator de escala horizontal e vertical para mudar o tamanho do texto, bem como especificar um ngulo de rotao. Draw Rectangle (Desenhar um retngulo) draw_rectangle(x1,y1,x2,y2,outline) Especifica-se as coordenadas de 2 cantos opostos do retngulo; tanto relativas quanto absolutas posio atual da instncia. Horizontal Gradient (Desenhar um gradiente horizontal) draw_line_color(x1,y1,x2,y2,col1,col2) Esta ao tambm desenha um retngulo, mas utilizando uma cor com efeito gradiente, que se modifica da esquerda para direita. Especifica-se o retngulo e as 2 cores a utilizar. Vertical Gradient (Desenhar um gradiente vertical) draw_line_color(x1,y1,x2,y2,col1,col2) Esta ao tambm desenha um retngulo, mas utilizando uma cor com efeito gradiente, que se modifica de cima para baixo. Especifica-se o retngulo e as 2 cores a utilizar. Draw Ellipse (Desenhar uma elipse) draw_ellipse(x1,y1,x2,y2,outline) Desenha uma elipse; especifica-se as coordenadas de 2 cantos opostos do retngulo circundante; tanto absolutas quanto relativas posio atual da instncia. Gradient Ellipse (Desenhar uma elipse gradiente) draw_circle_color(x,y,r,col1,col2,outline) Novamente uma elipse desenhada, mas utilizando uma cor com efeito gradiente do centro para a extremidade. Draw Line (Desenhar uma linha) draw_line(x1,y1,x2,y2) Especifica-se as coordenadas dos 2 extremos da linha; tanto absolutas quanto relativas posio atual da instncia. Draw Arrow (Desenhar uma seta) draw_arrow(x1,y1,x2,y2,size) Desenha uma seta; especifica-se as coordenadas dos extremos da linha e o tamanho da seta, compondo tipos de setas de acordo com este tamanho. Set Color (Ajustar a cor) draw_set_color(col) Permite configurar a cor usada para preencher retngulos e elipses e a cor usada para desenhar linhas, como as que compem o contorno de retngulos e elipses.

Change fullscreen mode (Mudar para tela cheia) window_set_fullscreen(full) Esta ao alterna entre o modo janela e tela cheia. Pode-se indicar se permitido a mudana do modo ou especificar um dos 2 modos. Take a snapshot image of the game (Tirar um foto do jogo) Com esta ao possvel gravar uma imagem em arquivo .bmp, correspondendo a uma foto do jogo atual. Especifica-se o nome do arquivo. Create an effect (Criar um efeito) effect_create_below(kind,x,y,size,color) effect_create_above(kind,x,y,size,color) effect_clear() Com esta ao voc pode criar todos os tipos de efeitos de um modo muito simples. Voc especifica o tipo de efeito, por exemplo, uma exploso ou fumaa, sua posio, seu tamanho e sua cor e se isso deveria ser mostrado debaixo dos objetos ou em cima deles. Para o resto trabalhar automtico. (Para chuva e neve a posio irrelevante como sempre cai do topo da tela. Adquirir chuva contnua, voc deveria criar isto em cada passo.) Por favor Observe que abaixo normalmente quer dizer uma profundidade de 100000 e acima uma profundidade de -100000. Esta ao est disponvel somente na Edio Pro. H vrios tipos diferentes de efeitos: ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow Using expressions and variables Em muitas aes que voc precisa fornecer valores para os parmetros. Ao invs de apenas digitar um nmero, voc tambm pode digitar uma frmula, por exemplo, 32 * 12. Mas voc pode digitar expresses realmente muito mais complicado. Por exemplo, se voc quiser dobrar a velocidade horizontal, voc pode configur-lo para 2 * hspeed. Aqui hspeed uma varivel que indica a velocidade atual horizontal da instncia. H um grande nmero de outras variveis que voc pode usar. Alguns dos mais importantes so: x a coordenada x da instncia y a coordenada y da instncia hspeed a velocidade horizontal (em pixels por passo) vspeed a velocidade vertical (em pixels por passo) direction direo atual do movimento em graus (0-360) speed a velocidade atual nesse sentido visible se o objeto visvel (1) ou invisvel (0)

image_index essa varivel indicam que sub-imagem na sprite atual mostrada no momento. Se voc alter-la e definir a velocidade a 0 (veja abaixo) voc pode exibir uma subimage fixo. image_speed esta varivel indica a velocidade com que a sub-imagens so mostradas. O valor padro 1. Se voc fizer esse valor maior que 1 algumas subimagens so ignoradas para fazer a animao mais rpida. Se voc deix-lo menor do que 1, a animao fica mais lenta pela repetio das sub-imagens. score o valor atual da pontuao lives o nmero atual de vidas health a sade atual (0-100) mouse_x posio x do mouse mouse_y posio y do mouse Voc pode alterar a maioria destas variveis usando a ao set variable. Voc tambm pode definir suas prprias variveis, definindo-lhes um valor. (No use relativo, porque no existe mais.) Ento voc pode usar essas variveis em expresses. Variveis que voc cria so locais para a instncia atual. Ou seja, cada objeto tem sua prpria cpia dos mesmos. Para criar uma varivel global, coloque a palavra global e um ponto na frente dele. Voc tambm pode consultar os valores das variveis para outros objetos, colocando o nome do objeto e um ponto na frente deles. Assim, por exemplo, se voc quer uma bola se mover para o lugar onde a moeda est, voc pode definir a posio (coin.x, coin.y). No caso de um evento de coliso voc pode consultar a coordenada x do outro objeto como other.x. Em expresses condicionais que voc pode usar comparaes como <(menor que),>, etc. Em sua manifestao voc tambm pode usar funes. Por exemplo, a funo random (10) d um nmero inteiro aleatrio abaixo de 10. Assim, voc pode definir, por exemplo, a velocidade ou direo do movimento para um valor aleatrio. Muitas outras funes existem. Elas so descritos na parte 4 da documentao. Criando rooms Agora que voc j definiu os objetos com o seu comportamento na janela de eventos e aes, hora de criar as rooms ou nveis em que o jogo tem lugar. Qualquer jogo vai precisar de pelo menos uma room. Nestas rooms colocamos instncias dos objetos. Uma vez que o jogo inicia a primeira room mostrada e os casos em que vm vida por causa das aes em seus eventos de criao. H um grande nmero de possibilidades na criao de rooms. Alm de definir um nmero de propriedades e adicionando as instncias dos objetos que voc pode adicionar fundos, definir pontos de vista, e adicione tiles. A maioria destas opes sero discutidas posteriormente. Neste captulo, vamos apenas discutir algumas definies bsicas, a adio de instncias de objetos, bem como a criao de imagens de fundo. Para criar uma room, escolha Criar Room a partir do menu Resources. A janela abaixo ir aparecer:

Na parte superior da janela existe uma barra de ferramentas. Nesta voc pode indicar o tamanho das clulas de grade usada para alinhar objetos. Tambm voc pode indicar se deseja ou no mostrar as linhas de grade e se mostra ou no os fundos, etc s vezes til para ocultar temporariamente determinados aspectos da room. Constatam ainda que, quando voc est adicionando instncias de objetos, estes iro ser sempre indicadas, (independente da configurao de exibio.) Tambm h botes para limpar todas as instncias da room e mudar todas as ocorrncias ao longo de um nmero de pixels. Use nmeros negativos para transferi-los para a esquerda ou para cima. Isso til quando, por exemplo, voc decidir ampliar a room. (Voc tambm pode usar isso para colocar instncias fora da room, que s vezes til.). Finalmente, h o boto Desfazer para desfazer a ltima alterao da room e no boto OK para salvar as alteraes. (Clique na cruz no canto superior direito para fechar a janela sem guardar as alteraes.) Na esquerda voc ver trs abas de pginas (cinco no modo avanado). A guia de objetos onde voc adicionar as instncias de objetos na room. Na guia configuraes voc pode indicar vrias configuraes para a room. Na aba backgrounds voc pode definir as imagens de fundo para a room. Adicionando instncias direita, na janela de design da room voc v a room. No incio ela est vazia, com um fundo cinza.

Para adicionar as instncias na room, primeiro selecione a guia objetos se este no estiver visvel. Em seguida, selecione o objeto que voc quer adicionar clicando no boto com o cone de menu (ou clicando na rea da imagem esquerda). A imagem do objeto aparece esquerda. (Observe que quando voc mudar a origem do sprite h uma cruz na imagem. Este indica como as instncias sero alinhados com a grade.) Agora clique com o boto esquerdo do mouse na rea da room ao lado. Uma instncia do objeto aparecer. Ser alinhado a grade indicada. Se voc segurar a tecla <Alt> ao colocar a instncia, ela no ser alinhado grade. Se voc segure o boto do mouse enquanto o arrasta ao longo da room, voc move a instncia para o local correto. Se voc segurar a tecla Shift enquanto pressiona e move o mouse, vrias instncias sero adicionadas. Com o boto direito do mouse voc pode remover as instncias. Desta forma, voc define o contedo da room. Como voc ir notar, se voc colocar um exemplo em cima de outro lado, a instncia original desaparece. Normalmente isso que voc quer, mas nem sempre. Isto pode ser evitado, desmarcando a caixa de seleo Delete underlying esquerda. Se voc quiser alterar a posio de uma instncia, segure a tecla "CTRL" e clique com o boto esquerdo do mouse na instncia e segure o boto. Agora voc pode arrast-lo para uma nova posio. (Use <Alt> para um posicionamento preciso.) Se voc segurar a tecla "CTRL enquanto clica com o boto direito do mouse em uma instncia, um menu aparece. Aqui voc pode excluir o objeto, digite uma posio exata para a instncia, ou mover a instncia mais para baixo, para cima ou para enviar a instncia superior para o fundo. Configurao da Room Cada room tem um nmero de configuraes que voc pode mudar clicando na aba

settings.

Cada room tem um nome. Melhor dar um nome significativo. H tambm uma legenda. Essa legenda exibida na legenda da janela quando o jogo est em execuo. Voc pode definir a largura e altura do espao (em pixels). Voc pode tambm configurar a velocidade do jogo. Este o nmero de passos por segundo. Quanto maior a velocidade, o movimento mais suave. Mas voc vai precisar de um computador mais rpido para execut-lo. Configurao do background Com a aba background voc pode definir a imagem de fundo da room. Na verdade, voc pode especificar mltiplas planos de fundo. A pgina tem o seguinte aspecto:

No topo voc vai ver a cor de fundo. Voc pode clicar sobre ela para mud-la. A cor de fundo s til se voc no usar uma imagem de fundo que cobre toda a sala. Caso contrrio, melhor desmarcar a caixa Draw background color, pois isto ser um desperdcio de tempo. No topo voc ver uma lista de 8 planos de fundo. Voc pode definir cada um deles, mas na maioria das vezes voc precisar de apenas um ou dois. Para definir um plano de fundo, primeiro selecione-o na lista. Em seguida marque a caixa Visible when room starts caso contrrio voc no vai v-lo. O nome do plano de fundo ficar em negrito quando ele est definido. Agora indicar uma imagem de plano de fundo no menu. H uma srie de configuraes que voc pode alterar. Primeiramente voc pode indicar se a imagem de fundo deve ser tile na room horizontalmente e/ou verticalmente. Voc tambm pode indicar a posio do plano de fundo da room (isto ir influenciar tambm a colocao das tiles). Uma opo diferente esticar o plano de fundo. Ele ser, ento, dimensionado para que ele preencha toda a room. A proporo da imagem no ser mantida. Finalmente voc pode fazer a rolagem do plano de fundo, dando-lhe uma velocidade horizontal ou vertical (pixels por etapa). melhor no usar a rolagem com um fundo esticado. O resultado ficar um pouco estranho. H mais uma opo chamada de Foreground image. Quando voc marcar esta caixa, o fundo na verdade um plano, que elaborado em cima de tudo e no por trs dele. evidente que essa imagem deve ser parcialmente transparente para ser de alguma utilidade. Distribuindo seu jogo Com as informaes nos captulos anteriores voc pode criar seus jogos. Quando o jogo est terminado voc obviamente quer que outras pessoas joguem. Pode, claro, dar-lhes

o GMK. Arquivo que voc criou e deix-los usar o Game Maker para jog-lo, mas isto normalmente no o que deseja. Primeiramente, voc no quer que outras pessoas sejam capazes de alterar o jogo, e segundo voc tambm quer que as pessoas joguem o jogo, mesmo que eles no tenham o Game Maker. Ento, voc gostaria de criar um executvel independentes de seu jogo. Criando executveis independentes muito fcil de Game Maker. No menu Arquivo voc selecione o item Criar executveis. Voc ser solicitado para o nome do executvel que deve ter do jogo. Indique um nome, aperte OK e voc ter seu jogo independente que voc pode dar para algum que voc gosta. Voc pode alterar o cone do jogo independente no Game Global Settings. Ver parte 3 para detalhes. Depois de ter criado um executvel independente da maneira descrita acima, voc pode dar este arquivo para outra pessoa ou coloc-lo em seu site para download. Voc livre para distribuir os jogos que voc cria com o Game Maker, da forma que quiser. Voc pode at mesmo vend-los. Isto, obviamente, pressupe que os sprites, imagens e sons que voc usar podem ser distribudos ou vendidos tambm. Veja o acordo de licenciamento fechado para mais informaes. normalmente til para compactar seu executvel, juntamente com algumas informaes de leia-me. No Windows XP e mais tarde isso pode ser feito diretamente atravs do menu do boto direito, e existem muitos utilitrios zip disponveis na web. Alternativamente, voc pode criar um instalador para o seu jogo. Novamente, um grande nmero de programas livres de criao de instalao esto disponveis na web. Se voc quiser que o seu jogo seja jogado por muitas mais pessoas, recomendamos que voc faa o upload no site YoYo Games e pressione o boto Share na parte superior. Uso Avanado Esta seo do arquivo de ajuda fornece informaes sobre os aspectos mais avanados do Game Maker.

Modo Avanado At agora apenas vimos as caractersticas simples do Game Maker. Mas existem muito mais possibilidades. Para poder utiliz-las voc deve executar o Game Maker no modo avanado. Isso fcil de alterar. No menu File, clique no item de menu do Advanced mode. (Para ver os efeitos completamente voc deve reiniciar o Game Maker, ou pelo menos salvar o seu jogo e carreg-lo novamente.) Quando voc comear a fabricar o jogo no modo avanado, a janela que se segue apresentada:

Ele contm tudo o que estava no modo simples, mas h uma srie de recursos adicionais, botes e itens de menu. Alm disso, como veremos nos captulos que se seguem, os diferentes recursos tm opes adicionais. Aqui ns discutiremos os itens dos menus adicionais. Menu File No menu file voc pode encontrar os seguintes comandos adicionais: Publish your Game. Esse comando ir lev-lo ao nosso site, onde voc pode facilmente fazer upload e publicar o seu jogo terminado de forma que todos possam jog-lo. Siga cuidadosamente as instrues para fazer o seu jogo disponvel. Por favor, s use isso para jogos terminados, no para as verses preliminares. Esta possibilidade est apenas disponvel na verso Pro. Import Resources. Com este comando voc pode importar os recursos que voc exportou com o prximo comando. Veja a seo sobre Exportao e Importao de Recursos para obter mais detalhes. Export Resources. Com este comando voc pode exportar recursos em um

arquivo. Veja a seo sobre Exportao e Importao de Recursos para obter mais detalhes. Preferences. Aqui voc pode definir um nmero de preferncias sobre o Game Maker. Eles sero lembrados entre as diferentes chamadas do Game Maker. Para obter mais informaes, consulte a pgina Preferncias.

Menu Edit No menu Edit voc vai encontrar os seguintes comandos adicionais: Add group. Os recursos podem ser agrupados. Isto muito til quando voc fazer jogos grandes. Por exemplo, voc pode colocar todos os sons relacionados a um determinado objeto em um grupo, ou voc pode agrupar todos os objetos que so utilizados em um determinado nvel. Este comando cria um novo grupo no tipo de recurso selecionado no momento. Voc ser solicitado para um nome. Os grupos podem conter grupos novamente, etc Voc pode arrastar recursos para os grupos. Find Resource. Com este comando voc digita o nome de um recurso e aberto a forma de propriedade correspondente. Expand Resource Tree. Totalmente expande a rvore de recursos, mostrando todos os recursos. Collapse Resource Tree. Totalmente cai da rvore de recursos, escondendo todos os recursos. Show Object Information. Utilizando este comando voc pode obter uma viso geral de todos os objetos de The Game.

Menu Resources Neste menu, voc pode tambm criar os recursos adicionais. Observe que para cada uma delas existe tambm um boto na barra de ferramentas e um atalho de teclado. Existem trs itens do menu especial, na parte inferior: Define Constants. Aqui voc pode definir constantes para uso em seus scripts e argumentos de ao. Para obter mais informaes, consulte a seo Constantes. Define Triggers. Aqui voc pode definir seus prprios eventos disparadores. Para obter mais informaes, consulte a seo sobre eventos disparadores. Included Files. Aqui voc pode indicar quais arquivos adicionais devem ser includos executvel do jogo. Para obter mais informaes, consulte a seo sobre arquivos, incluindo.

Menu Scripts No menu de scripts que voc pode encontrar os seguintes comandos adicionais: Import Scripts. Pode ser utilizado para importao de arquivos de scripts teis. Export Scripts. Pode ser usado para salvar seus scripts em um arquivo, para ser usado por outros. Quando voc selecionar um recurso de script apenas este script salvo. Quando voc selecionar um grupo e todos os scripts no grupo sero salvos. Quando voc seleciona o recurso de raiz (ou um tipo diferente de recurso) todos os scripts so salvos. Este item de menu tambm est disponvel quando o aperta o boto direito do mouse em um script ou um grupo de scripts. Show Built-in Variables. Mostra uma lista ordenada de todas as variveis internas, tanto locais como globais. Show Built-in Functions. Mostra uma lista ordenada de todas as funes internas. Show Extension Functions. Mostra uma lista ordenada de todas as funes disponveis nos pacotes de extenso que voc incluiu no seu jogo. Show Constants. Mostra uma lista ordenada de todos as constantes internas e constantes definidas as opes de jogo. Show Resource Name. Mostra uma lista ordenada de todos os nomes dos recursos. Voc pode clicar em um nome para abrir o recurso especial para a edio. Search in Scripts. Voc pode procurar por uma string em todos os scripts. Voc pode clicar em um dos locais relatados e ir at l para editar. Check Resource Names. Faz uma verificao de todos os nomes de recursos. Nomes sero comunicados se eles no esto corretos, se h nomes de recursos duplicados, ou quando um nome de recurso o nome de uma varivel, funo ou constante. Voc pode clicar em um nome para abrir o recurso especial para editar. Check All Scripts. Verifica todos os scripts se h erros. Voc pode clicar em um dos locais relatados e ir at l para editar.

Menu Help Aqui voc encontra as informaes de ajuda sobre o pacote de extenses que voc est usando. Preferences Sob o item do menu Preferences no menu File voc pode definir um nmero de preferncias que sero mantidas entre as execues do Game Maker. As seguintes preferncias podem ser definidas:

Aba General

Show recently edited games in the file menu. Se marcado os oito jogos editados recentemente so apresentadas em recents files no menu file. Load last opened file on startup. Se marcado quando iniciar Game Maker o arquivo mais recentemente aberto, ser aberto automaticamente. Keep backup copies of files. Se marcado o programa salva uma cpia de backup do seu jogo com a extenso GB0-GB9. Voc pode abrir esses jogos no Game Maker. Est aconselhado usar pelo menos uma cpia de backup para o seu trabalho! Maximum number of backups. Aqui voc pode indicar quantas cpias (1-9) de backup devem ser gravados pelo programa. Show progress while loading and saving files. Se verificado, ao carregar ou salvar um arquivo de um indicador de progresso mostrada. At startup check for, and remove old temporary files. Game Maker e jogos criados com ele, cria arquivos temporrios. Normalmente estes so removidos automaticamente, mas, s vezes, por exemplo, quando falha os jogos, eles so deixados para trs. Se esta opo estiver marcada, verifica Game Maker se esses arquivos existem e remove-os na inicializao. Don't show the website in the main window. Quando marcada a imagem e o link para o site na janela principal no so mostradas. Hide the designer and wait while the game is running. Quando marcada o parte de criao do jogo ser escondido enquanto voc est testando um jogo. Run games in secure mode. Se estiver marcado, qualquer jogo criado com o Game Maker que funciona em sua mquina no ser permitida a execuo de programas externos ou alterar ou excluir arquivos em um local diferente do local de jogo. (Esta uma precauo contra cavalos de Tria, embora o sucesso no garantido.) Marcando isto significa que os jogos que utiliza arquivos externos, etc no ser executado corretamente. A definio s funciona enquanto o Game Maker executado. Portanto, se voc executar o jogo independentemente do Game

Maker, por exemplo, um arquivo executvel independete, ele no executado em modo seguro. Show news on startup. Mostra as notcias do Game Maker, uma vez por dia quando o programa iniciado. (No pode ser alterado na edio de Lite). Show news in default brower. Mostra as notcias do fabricante do jogo em seu navegador de Internet padro, e no no prprio programa. (No pode ser alterado na edio de Lite).

Aba form Show the origin in the sprite image. Se marcado, na janela de propriedades da sprite, na imagem da sprite, a origem do objeto mostrado. In object properties, show hints for actions. Se marcado, na janela de propriedades do objeto, quando voc mantm o mouse sobre uma das aes, uma descrio mostrada. When closing, remove instances outside the room. Se marcado, o programa avisa quando existem instncias ou tiles fora de uma room e deixa voc removlos. Remember room settings when closing the form. Se marcado, uma srie de configuraes de room, como mostrar a grade, se deseja excluir objetos abaixo de outros, etc so lembrados quando voc editar a mesma room mais tarde.

Aba Scripts and code

Essas definies referem-se o script e editor de cdigo embutidos. A maioria destas configuraes so explicadas em detalhes na pgina de Scripts. Aqui vamos apenas dar um breve resumo: Group undo operations Quando vrias aes so agrupadas (como digitar uma linha inteira) torna-se uma operao a desfazer. Number of undo Voc pode alterar esse nmero, mas em geral isso deve ser bom. Automatic indentation Quando definido as teclas Enter e Backspace habilmente lidam com recuo. Indent amount Quantidade de recuo e cada aba. Smart tabs Quando marcada os tabs vo para a posio abaixo do primeiro espao no vazio na linha anterior. Allow cursor beyond end of line Quando marcada voc pode colocar o cursor em qualquer posio na tela do editor, tambm alm do fim da linha. Se nada for feito isso no possvel. Tambm altera o comportamento das teclas de seta esquerda e direita. Show auto-completion options Ao marcar a ajuda dada em funes e variveis que comeam com as letras que voc est digitando. Dealy (msec) O atraso em milissegundos antes da ajuda mostrado. Definir por exemplo, a 0 para o imediato. Show function argument help Quando definido, quando se digita argumentos da funo, na barra de status do ajuda este fornecido. Show find string Quando definido, sempre que digitar uma seqncia de localizao, todos os locais so indicados no cdigo. Show line numbers Se o editor deve mostrar os nmeros de linha. Show matching brackets Se o editor deve indicar correspondncia abrir e fechar parnteses. Show code snippets with F2 Quando marcado, pressionando F2 ir trazer uma srie de trechos de cdigos teis. Check code while typing Quando marcado o cdigo constantemente verificado e os erros reportados. Use color coding Quer usar cores nos cdigos para o editor. Colors Aqui voc pode definir as cores usadas para a codificao de cores. Voc tambm pode redefinir as cores padro. Font Aqui voc pode selecionar o tipo de letra para o editor. Observe que apenas fontes fixas so mostradas. Observe tambm que apenas a fonte e o tamanho so utilizados.

Editores Aqui voc pode escolher se quer usar o editor de cdigo embutido (altamente recomendado) ou um editor externo. No caso de um editor externo, o texto do script salvo como um arquivo .txt e o editor chamado com este arquivo como um argumento. Aps a edio voc deve salvar o arquivo e fechar o editor de tal forma que o Game Maker possa ler o arquivo. Tambm voc pode escolher se quer usar o editor de imagem embutida (altamente recomendado) ou um editor externo. No caso de um editor externo, a imagem guardada como um arquivo. Png e o editor chamado com este arquivo como um argumento. Aps

a edio que voc deve salvar o arquivo e feche o editor de tal forma que o Game Maker possa ler o arquivo. Finalmente, voc pode indicar os diferentes editores externos para os arquivos de som que pretende utilizar. Game Maker no contm editores de som interno. H trs editores de manipulao possvel de arquivos .wav, .mid e .mp3. No caso de um editor externo, o som gravado como um arquivo .wav, .mid ou .mp3 e o editor correspondente chamado com este arquivo como um argumento. Aps a edio voc deve salvar o arquivo e fecha o editor de tal forma que o Game Maker possa ler o arquivo. Outras Configuraes Tambm possvel alterar o local dos arquivos temporrios que Game Maker cria, por exemplo, local onde o jogo testada. Esta localizao no pode ser alterada a partir das preferncias, mas so as mudanas, criando um arquivo tempdir.txt na pasta onde est localizado o Game Maker. Neste arquivo deve haver uma linha contendo a localizao da pasta na qual os arquivos temporrios so cria, por exemplo C: \ GMTEMP. Observe que o nome deve incluir o caminho completo e no deve terminar com uma barra. Cada vez que o Game Maker executado uma nica pasta temporria criada dentro desta localidade. Ento as coisas vo funcionar bem, mesmo quando vrias instncias do Game Maker utilizam o mesmo local. (Observe que os jogos tambm criam uma pasta temporria para os seus arquivos. Novamente, isso pode ser mudado atravs da criao de um tempdir.txt arquivo e coloc-lo na pasta onde jogo executvel est localizado.) Em segundo lugar, possvel mudar o imagem que Game Maker est usando para o plano de fundo de sua janela principal. Para isso coloque um arquivo de imagem Back.bmp na pasta onde est localizado o Game Maker. Mais sobre sprites Quando executar o Game Maker em modo avanado a um grande nmero de opes avanadas existem. Quando voc abrir a janela de sprite vai aparece o seguinte:

Um novo boto Save Sprite aparece. Com este boto voc pode salvar a sprite em um formato proprietrio. Este formato no s ir armazenar a imagem(s) da sprite, mas

tambm outras configuraes, tais como configuraes de coliso e da origem. O arquivo ter a extenso .Gmspr. Game Maker pode carregar esses arquivos, mas os jogos tambm podem carreg-los. No canto inferior esquerdo, possvel indicar a origem da sprite. Este o ponto da sprite que corresponde com a sua posio na room. Quando voc define a uma instncia uma posio especial, a origem do objeto colocado l. Padro o canto superior esquerdo da sprite, mas s vezes mais conveniente usar o centro (clicando no boto center) ou algum outro ponto importante. Voc pode at escolher uma origem fora do objeto. Voc tambm pode definir a origem, clicando na imagem da sprite. A origem ser mostrado com uma cruz. O mais importante so as opes relacionadas com a verificao de coliso. Sempre que duas instncias se encontram um evento de coliso gerado. Colises so checados da seguinte forma. Cada Sprite tem uma mscara. Este padro corresponde a todos os pixels que no so totalmente transparentes. Quando dois pixels das mscaras das duas sprites se sobrepem, uma coliso relatada . s vezes voc no quer que o teste de coliso seja preciso. Neste caso, desmarque a caixa de Precise collision checking. Agora, a caixa delimitadora usado como mscara. Quando as sprites tem sub-imagens mltiplas, por padro h apenas uma nica mscara que combina as mscaras de todos as sub-imagens. Normalmente isso que voc quer, mas em certas situaes, voc pode querer que cada sub-imagem tenha a sua prpria mscara. Neste caso marque a caixa Separate collision masks. Mscaras de coliso Se voc quiser ainda mais controle sobre as mscaras de coliso, pressione o boto Modify Mask. A janela seguinte ir mostrar:

No canto superior esquerdo h novamente as informaes sobre a imagem do objeto.

Voc pode mostrar as sub-imagens diferentes. Tambm voc pode indicar aqui se pretende mostrar a mscara de coliso (padro ligada). Neste caso, as imagens, direita da mscara mostrada no escuro. Voc tambm pode aproximar e afastar para obter uma melhor visualizao. direita desta voc pode mudar a caixa delimitadora. Apenas pixels de dentro dessa caixa delimitadora so utilizados para a mscara. Padro da caixa delimitadora calculado automaticamente, tendo a tolerncia alfa em conta separada para cada subimagem, quando usa mscaras de coliso separadas. Voc tambm pode configur-lo para toda a imagem ou voc pode configur-lo para manual. Neste ltimo caso, voc pode especificar a caixa delimitadora por conta prpria. Quando marca como manual, voc tambm pode desenhar a caixa delimitadora com o boto esquerdo do mouse na imagem, ou voc pode mov-lo com o boto direito do mouse. (Repare que a mscara mostrada enquanto desenha, sem a caixa delimitadora!) Abaixo disso voc pode indicar a forma da mscara. O padro preciso, teste de coliso por pixel, mas voc pode selecionar tambm aqui a usar o retngulo delimitador, um disco (ou elipse) dentro dela, ou uma forma de diamante. Retngulos ou discos so em muitos casos, a melhor representao da forma. (Observe que a escolha no tem efeito sobre a velocidade!) Finalmente, na parte inferior esquerda voc pode (novamente) indicar se devem ou no ser separadas das mascaras de coliso para todas as sub-imagens. (Observe que se voc definir a caixa delimitadora manual, uma nica caixa delimitadora ser utilizado para todos os sub-imagens, independentemente desta definio.) Voc tambm pode indicar a tolerncia em relao transparncia. Com uma maior tolerncia pixels que so parcialmente transparentes so deixados fora da mscara. Isto influencia tanto a caixa delimitadora (quando no definido para manual) e a mscara para verificar coliso precisa. importante decidir cuidadosamente sobre a mscara de coliso que voc usa para as suas sprites. Embora a verificao de coliso precisa parece ser a opo mais lgica, em jogo muitos casos jogo melhorado atravs da utilizao de caixas de delimitadoras ou discos, ou mscaras que so um pouco menores do que as sprites reais. Se voc quiser mesmo maior controle sobre a mscara, Observe que para objetos, voc pode especificar uma sprite diferente para usar como mscara. Desta forma, voc pode fazer a mscara de coliso completamente independente da imagem. Assim que estiver pronto, pressione OK. Se a mscara foi modificado, a palavra Modified ir aparecer na janela de sprite que voc mudou antes algumas configuraes daqui. Editando suas sprites At agora, ns carregamos nossos arquivos de sprites. No entanto, possvel tambm criar, nomear e modific-los dentro do Game Maker. Para fazer isso, abra a janela de propriedades da sprite clicando duas vezes sobre uma de suas sprites (ou criando uma nova). Agora aperte no boto Edit Sprite. Uma nova janela aparecer, mostrando todas as sub-imagens que compem o objeto. O janela do editor de sprite vai parecer como esta que se segue:

direita, voc v as diferentes imagens que compem o objeto. Observe que no Game Maker todas sub-imagens de uma sprite devem ter o mesmo tamanho. esquerda uma animao da sprite sendo tocada. (Se voc no ver a animao, marque a caixa Show Preview.) Abaixo da visualizao voc pode alterar a velocidade da animao e cor de fundo. Voc pode tambm selecionar um dos planos de fundo em seu jogo e se deve ser esticado. Desta forma voc pode ter uma idia da aparncia da animao no jogo. (Observe que essa velocidade apenas para visualizao. A velocidade da animao durante do jogo depende da velocidade da room.) O editor de sprite contm muitos comandos para criar e alterar a sprite. Estes so todos dados atravs dos menus. (Para alguns, existem botes na barra de ferramentas.) Alguns trabalhos comandos em imagens individuais. Eles exigem que voc selecione primeiro um subimage com o mouse. Menu File O menu de arquivo contm um nmero de comandos relacionados a carregar e salvar sprites. New. Cria uma Sprite novo, vazio. Voc deve indicar o tamanho do objeto. (Lembre-se, todas as imagens em uma sprite devem ter o mesmo tamanho.) Create from File. Cria a sprite de um arquivo. Muitos formatos de arquivos podem ser utilizados. Todos eles criam uma sprite que consiste em uma nica imagem, com exceo de arquivos GIF animados que so divididas em no sub-imagens e sequncias que tm um nome terminando com _stripXX. Ao selecionar um arquivo voc pode indicar se a imagem deve ser opaca, para remover o fundo ou para suavizar a borda. Voc pode selecionar vrias imagens na qual todas sero carregadas. Eles devem ter, preferencialmente, o mesmo tamanho, caso contrrio,

os tamanhos de tela sero adaptados. Add from File. Adiciona uma imagem (ou vrias imagens) de um arquivo para a sprite atual. Se as imagens no tm o mesmo tamanho, pode escolher onde coloc-las ou estic-las. Voc pode selecionar vrias imagens e depois que tudo ser carregado. Eles devem ter, preferencialmente, o mesmo tamanho. Save as PNG File. Salva a sprite como uma sequncia em um arquivo PNG. Quando o Sprite tem vrios subimages o texto _stripXX XX, com o nmero de subimagens automaticamente acrescentado. Create from Strip. Permite que voc crie um sprite de uma sequncia. Consulte a prxima seo para mais informaes. Add from Strip. Utilize esta opo para adicionar imagens a partir de uma sequncia. Consulte a prxima seo. Close Saving Changes. Fecha a janela, salvando as alteraes feitas no objeto. Se voc no deseja salvar as alteraes, clique no boto Fechar da janela.

Menu Editar O menu de edio contm os seguintes comandos: Undo. Desfaz a ltima alterao. As ltimas 16 alteraes podem ser desfeitas. Redo. Refazer a ltima alterao desfeita. Cut. Corta a sub-imagem selecionada para a rea de transferncia. Voc pode editar ou usar o sub-imagem em um programa diferente dessa forma. No entanto, a informao de transparncia pode ser perdida. Copy. Copie a sub-imagem selecionada para a rea de transferncia. Paste. Colar a imagem na rea de transferncia como uma sub-imagem nova. Quando no tem o tamanho correto voc deve indicar a forma de mudar isso. Quando a imagem veio de um programa diferente, a informao de transparncia pode ser perdida. Erase. Apaga a atual, ou todas as imagens de uma determinada cor. Uma janela abre, e voc pode selecionar a cor e a valor da opacidade (alfa). Uma prvia do resultado mostrado. Voc pode indicar se quer apagar todas as imagens ou apenas a atual. Delete. Excluir a sub-imagem selecionada. Move Left. Mova a sub-imagem selecionada uma posio para a esquerda na seqncia. Move Right. Mova o sub-imagem selecionada uma posio para a direita na seqncia. Add Empty. Adicionar uma nova sub-imagem vazia no fim da seqncia. Insert Empty. Insere uma nova sub-imagem vazia antes da sub-imagem selecionada. Edit. Edite a sub-imagem selecionada usando o editor de imagem embutido. Set Transparency Background. Aqui voc pode indicar qual a rea de transparente das sprites que deve ser mostrada no editor de sprite. Voc pode usar o bloco modolo (padro), ou uma cor que voc pode mudar clicando na caixa de cores.

Menu Transform No menu transform voc pode executar uma srie de transformaes nas imagens. Para a maioria deles voc pode escolher se quer aplic-las apenas para a sub-imagem atual ou

a todas as imagens. Shift. Aqui voc pode deslocar a(s) imagem(ns) em uma quantidade horizontalmente e verticalmente indicada. Mirror / Flip. Espelha a(s) imagem(ns) horizontal e/ou flip-los verticalmente. Rotate. Voc pode girar a(s) imagem(ns) 90, 180 ou 270 graus, ou um valor arbitrrio. Scale. Este comando escala a(s) imagem(ns) (mas no do tamanho da imagem!). Voc pode indica o fator de escala e se ser horizontal e / ou verticalmente. Skew. Este comando distorce a(s) imagem(ns) horizontal e / ou verticalmente, com numa determinada quantidade. Resize Canvas. Aqui voc pode alterar o tamanho da tela. Voc tambm pode indicar onde as imagens sero colocadas na nova tela. Stretch. Aqui voc pode esticar as imagens em um novo tamanho. Voc pode indicar o fator de escala e qualidade. Crop. Isso faz com que as imagens fiquem to pequenas quanto possvel. Isto muito til, pois quanto maior o imagens, mais memria de vdeo o Game Maker vai usar. Voc pode indicar o tamanho de uma fronteira transparente em torno das imagens. Se voc fornecer um valor negativo, o exterior das imagens ser cortado.

Menu Images No menu de imagens que voc pode executar uma srie de operaes sobre as imagens. Algumas delas esto disponveis apenas na edio Pro. Cycle Left. Ciclos de todas as imagens para a esquerda. Isso efetivamente comea a animao em um ponto diferente. Cycle Right. Ciclos de todas as imagens para a direita. Black and White. A(s) imagem(ns) se tornam preto e branco (ou seja, em tons de cinza). Colorize. Aqui voc pode mudar a cor (matiz) das imagens. Use o controle deslizante para escolher a nova matiz. Quando voc quer mudar a tonalidade, as cores so deslocadas sobre o quantidade indicada dando efeitos bastante interessantes. Colorize Partial. Aqui voc pode mudar a cor (tonalidade) parcial das imagens. Voc pode selecionar a tonalidade antiga e uma tolerncia em torno dela e, ento, indicar o tom das novas cores para substituir essa gama de cores. Isso pode ser usado, por exemplo, para alterar apenas a cor das camisas dos jogadores. Voc pode escolher a tonalidade antiga tambm, clicando na imagem esquerda. Intensity. Aqui voc pode alterar a intensidade, fornecendo valores para a saturao da cor e do valor das novas imagens. Invert. Inverte as cores nas imagens. Make Opaque. Remover todas as informaes de transparncia das imagens, tornando-os opacos. Erase a Color. Voc pode selecionar uma cor (clicando na caixa de cor ou clicando na imagem esquerda. Alm disso, voc especificar uma tolerncia. Todos os pixels com de cor escolhida a cor selecionada tornar transparente. Smooth Edges. Suavizar as bordas ao redor da parte opaca da(s) imagem(ns) de certa forma ficam mais bonitas. (O efeito mais forte pode ser criado usando Desfoque, mas apenas ofuscando a transparncia; veja abaixo. Opacity. Aqui voc pode alterar a opacidade (transparncia) para toda a imagem.

Voc pode configurar em relao opacidade atual ou absoluta. (Pixels que j so totalmente transparentes sempre ficam totalmente transparente). Set Alpha from File. Voc pode selecionar uma imagem. A iluminao dos pixels da imagem que ser usada como valor de transparncia. Pixels pretos levar a pixels completamente transparente, enquanto o pixels brancos levar a pixels opacos. Quando a imagem no tem o tamanho correto ser esticada. Apenas disponvel na verso Pro. Fade. Aqui voc especifica uma cor e um valor. Os pixels da imagem (s) so dessa cor desbotada em relao com o montante determinado. Blur. Desfocando as imagens a cores so misturadas um pouco, tornando-o mais indefinido. Voc pode selecionar um pequeno, mdio ou grande desfoque. Voc pode tambm escolher se pretende encobrir os valores de cor e/ou os valores da transparncia. Apenas mexendo nos valores de transparncia pode ser uma boa maneira de suavizar o contorno das imagens. Sharpen. Esta a variao inversa do desfoque. A imagem ser mais acentuada, realando as bordas. Voc pode fazer uma nitidez sutil ou uma forte nitidez. A nitidez especial coloca empasis adicionais sobre as margens, levando a um efeito engraado. Voc pode aguar os valores de cor e / ou os valores da transparncia. Outline. Criar um contorno ao redor da imagem. Voc pode ajustar a cor e a espessura do contorno. Voc tambm pode colocar o contorno dentro da imagem. Voc pode remover a imagem em si, apenas mantendo o contorno, ou suavizar o contorno. Apenas disponvel na verso Pro. Shadow. Criar uma sombra por trs da imagem. (Isto s ir funcionar quando a imagem est parcialmente transparentes). Voc indica a cor da sombra e a opacidade. Tambm voc indicar a posio relativa da sombra. Finalmente, voc pode indicar se ela deve ser uma sombra suave ou um disco rgido. Apenas disponvel na verso Pro. Glow. Criar um brilho colorido ao redor da imagem. Voc indica a cor do brilho, a opacidade e a espessura. Voc tambm pode colocar o brilho dentro da imagem. Apenas disponvel na verso Pro. Buttonize. Torna a(s) imagem(ns) um boto. Voc especifica a cor do boto e a opacidade. Tambm necessrio indicar a espessura do limite do boto e se deve ser suave ou no. Apenas disponvel na verso Pro. Gradient Fill. Adiciona um preenchimento gradiente para a(s) imagem (ns). Voc especifica as duas cores de preenchimento, a opacidade, e o tipo de preenchimento. A imagem substituda pelo gradiente embora a transparncia seja mantida. Desmarcando a caixa Replace o gradiente misturado na imagem. Ao marcar a caixa Change Transparency o valor alfa da imagem original alterado tambm. Voc pode criar grandes efeitos. Por exemplo, fazer uma imagem em preto-e-branco e em seguida, uma mistura gradiente nela. Apenas disponvel na verso Pro.

Voc ter que experimentar estes comandos para conseguir as sprites que voc deseja. Menu Animation Pelo menu animation voc pode criar novas sprites animadas fora da sprite atual. H muitas opes e voc deve experimentar um pouco delas para criar os efeitos desejados. Tambm no se esquea que voc sempre pode salvar uma sprite animada e depois adicion-lo atual. Tambm voc pode sempre adicionar algumas imagens vazias e

excluir as indesejveis. Ns vamos passar brevemente as possibilidades variadas. Set Length. Aqui voc pode alterar o comprimento de sua animao. A animao repetida vezes suficientes para criar o nmero de quadros que voc indicar. (Normalmente voc quer que este seja um mltiplo do nmero atual de frames.) Stretch. Este comando tambm altera a durao da animao. Mas desta vez, os quadros so duplicados ou removido para obter o nmero correto. Portanto, se voc aumentar o nmero de quadros da animao ir mais devagar e se voc diminuir o nmero vai mais rpido. Reverse. Bem, como voc pode supor, ele inverte a animao. Com isso, tocado para trs. Add Reverse. Desta vez, a seqncia inversa adicionado, dobrando o nmero de quadros. Isto muito til para fazer um objeto ir para a esquerda e direita, muda a cor e retorna, etc s vezes voc pode querer remover a moldura dupla em primeiro lugar e quadro do meio que aparece. Translation Sequence. Voc pode criar uma animao em que a imagem traduz um pouco em cada passo. Voc deve fornecer o nmero de quadros e a quantidade total para mover horizontalmente e verticalmente. Rotation Sequence. Cria uma animao em que rotaciona a imagem. Voc pode escolher a rotao no sentido horrio ou anti-horrio. Especifique o nmero de quadros e o ngulo total, em graus (360 uma volta completa). (Talvez seja necessrio redimensionar a tela primeiro para certificar-se que a imagem total permanece visvel durante a rotao). Colorize. Cria uma animao que transforma a imagem em uma determinada cor. Fade to color. Cria uma animao que desfaz a imagem para uma determinada cor. Disappear. Faz a imagem desaparecer, tornando-a mais transparente em cada etapa. Shrink. Encolhe a imagem at chegar ao nada. Voc pode indicar a direo. Grow. Cresce a imagem do nada. Flatten. Achata a imagem at chegar ao nada para uma determinada direo. Raise. Aumenta a imagem de uma determinada direo. Overlay. Sobrepem a animao com outra sprite ou imagem em um arquivo. Voc indica o arquivo e a(s) imagem(ns) em que so colocadas em cima da animao atual. Quando a imagem do arquivo tem um tamanho diferente esticado. Morph. Morfa a animao para uma animao ou imagem de um arquivo. Observe que morfar funciona melhor se as duas animaes cobrem a mesma rea da imagem. Caso contrrio, no meio do caminho alguns pixels desaparecem e outros aparecem de repente.

Em particular os ltimos dois comandos so muito poderosos. Por exemplo, para explodir um objeto, adicionar um nmero de cpias e, em seguida, uma srie de quadros vazios. Ento sobrepem com uma animao de exploso. (Certifique-se o nmero de imagens sejam iguais.) Alternativamente, morfe o para a exploso. Com alguma prtica voc pode fazer sprites maravilhosas. Strips Como j dito acima, sprites so normalmente armazenados como arquivos ou gif animado ou como tiras em arquivos PNG, em que todas as sub-imagens so colocadas ao lado umas das outras. No segundo caso, o nome do arquivo deve terminar com _stripXX onde

XX indica o nmero de sub-imagens. Contudo, por vezes sprites so parte de um bitmap em que as sub-imagens podem ser armazenadas prximas umas das outras ou abaixo de si e talvez existam linhas de separao entre elas. Essas tiras no podem ser lidas automaticamente, o Game Maker no vai saber o tamanho e a posio da sub-imagem. Por exemplo, a seguinte parte de um arquivo de tira contm quatro animaes diferentes.

Se voc quiser pegar que uma certa animao fora de um arquivo que voc deve indicar onde as imagens esto. Para esse fim, voc pode escolher Create from Strip ou Add from Strip a partir do menu File do editor de sprite. Aps indicar o arquivo de imagem de tira

apropriado, a seguinte janela mostrar: direita voc v (parte da) a imagem com tiras que voc selecionou. Na esquerda voc pode especificar um nmero de parmetros que especificam quais sub-imagens dentro voc est interessado. Observe que um ou mais retngulos na imagem indicam as imagens que voc est selecionando. Os seguintes parmetros podem ser especificados: Number of images. Este o nmero de sub-imagens que pretende pegar da tira. Images per row. Quantas imagens que voc quer que esto l por linha. Por exemplo, ao definir esta opo como 1, voc ir selecionar uma seqncia vertical de imagens. Image width. Largura das imagens individuais.

Image height. Altura das imagens individuais. Horizontal cell offset. Se voc no quer selecionar no canto superior esquerdo das imagens, aqui voc pode definir quantas imagens devem ser ignorados na horizontal. Vertical cell offset. Aqui voc indica quantas imagens devem pular verticalmente. Horizontal pixel offset. s vezes h algum espao adicional no canto superior esquerdo. Aqui voc indica essa quantidade (em pixels). Voc tambm pode usar o mouse para indicar o local onde a primeira imagem deve comear. Vertical pixel offset. Quantidade de espao extra verticalmente. Horizontal separation. Em algumas tiras existem linhas ou espaos vazios entre as imagens. Aqui voc pode indicar a quantidade horizontal para pular entre as imagens (em pixels). Vertical separation. Quantidade vertical para saltar entre as imagens. Uma vez selecionado o conjunto correto de imagens, pressione OK para criar sua sprite. Lembre-se que voc s est autorizado a utilizar as imagens criadas por outras pessoas quando voc tem a permisso ou quando so freeware.

Editando imagens individuais O Game Maker tem um editor de imagem embutido que pode ser usado para editar subimagens individuais de sprites e imagens de fundo. Quando usar o editor para uma subimagem de uma sprite, selecione a sub-imagem no editor de sprite e escolha Edit Image no menu Image (ou clique duas vezes sobre ele). Para editar um fundo, abra as propriedades do fundo e aperte o boto Edit Background. O editor de imagem embutido muito potente e especialmente adequado para a criao de sprites e backgrounds para Game Maker. No entanto, ele no tem todas as caractersticas de grandes pinturas e pacotes de desenho. O editor embutido serve principalmente para fazer alteraes em imagens, e no para criar sprites e backgrounds do zero. Para isso, voc provavelmente vai querer usar um programa de pintura em separado, salvar as imagens como arquivos PNG, e carreg-los no Game Maker. Voc tambm pode definir um editor de imagens externas nas preferncias. Quando voc iniciar o editor de imagens normalmente o seguinte:

A janela mostra a imagem no meio e uma srie de ferramentas de desenho esquerda. Abaixo, voc pode definir certas propriedades das ferramentas de desenho. Estas iro mudar, dependendo da ferramenta selecionada (veja abaixo). No meio voc v a imagem atual. Voc pode ampliar e diminuir, utilizando os botes na barra de ferramentas. direita h informaes sobre as cores para desenhar. Voc pode definir uma cor separada para o boto esquerdo e o direito do mouse. Voc pode alterar elas clicando com o esquerdo ou o boto direito do mouse no seletor de cores das imagens. Tambm voc pode alter-las clicando nas caixas na parte superior, que representam as cores. Abaixo das cores voc v a opacidade. Isso indica quo opaco ou transparente, a cor . Quando voc configur-la para 255 pixels e o seu desenho fica totalmente opaco. Quando voc definir o valor para 0 fica totalmente transparentes. Normalmente, quando voc desenha pixels parcialmente transparentes eles so misturadas com a cor atual. Ao definir o modo de cores para substituir, os pixels sero substitudas com a nova cor. Finalmente, na parte inferior da janelao existe uma barra de status com algumas informaes sobre a ferramenta de desenho atual, a posio do mouse, o tamanho da imagem, e a quantidade de memria que ele precisa. Ferramentas de Desenho As ferramentas de desenho disponveis so as seguintes (da esquerda para a direita, de cima para baixo). Paint. Com esta ferramenta voc pode pintar sobre a imagem. Voc pode usar o boto esquerdo do mouse ou da direita para pintar com cores diferentes. Voc pode selecionar o tamanho da caneta. Quando segura <Shift> ao comear a pintar s pinta linhas horizontais ou verticais. Ao segurar a tecla "CTRL voc pode selecionar uma cor da pintura nova. Spray. Com esta ferramenta voc pode pulverizar sobre a imagem. Spray como na pintura, exceto que voc usa um pincel que parcialmente transparente nas laterais. Voc pode usar o boto esquerdo do mouse ou da direita para pintar com as cores diferentes. Voc pode selecionar o tamanho do pincel. Voc tambm pode selecionar a dureza do pincel. Uma escova macia ser mais transparente perto dos lados. Quando

segura o <Shift> e se inicia a pulverizao s vai pintar linhas horizontais ou verticais. Ao segurar a tecla "CTRL voc pode selecionar uma cor nova pulverizao. Erase. Com esta ferramenta voc pode apagar parte da imagem. Ela se parece muito com spray, mas voc apaga o que est abaixo do mouse. Quanto voc apaga depende da opacidade. Para um valor de 255 apagar completamente. Para um valor menor voc faz com que a imagem fique um pouco mais transparentes. Voc pode definir a dureza da borracha. Quando segura o <Shift> e inicia a pulverizao s vai pintar linhas horizontais ou verticais. Color Picker. Com esta ferramenta voc pode definir a cor do mouse para o boto esquerdo ou direito de um pixel da imagem. Observe se o valor da opacidade est definido. Line. Com esta ferramenta voc pode desenhar linhas retas. Ao segurar <Shift> voc pode desenhar linhas horizontais, verticais ou diagonais. Voc pode definir a largura da linha e se deveria ter setas. Ao selecionar Anti-alias a linha desenhada com pixels parcialmente transparentes do lado para se tornar mais suave. Polygon. Com esta ferramenta voc vai poder desenhar um polgono fechado. Voc clica sobre a posio do primeiro vrtice. Em seguida, voc pode arrastar o vrtice seguinte ou clique sobre a posio do prximo vrtice. Desta forma voc continua. Voc termina o polgono com a tecla Esc. Ao segurar <Shift> voc pode desenhar horizontal, vertical ou diagonal linhas. Voc pode definir a largura da linha e se o polgono deve ser preenchido ou no. Ao selecionar Anti-alias o polgono desenhado com pixels parcialmente transparentes do lado para se tornar mais suave. Rectangle. Com esta ferramenta voc pode, pode desenhar um retngulo. Ao segurar <Shift> voc pode desenhar um quadrado. Quando <Ctrl> segurando voc desenhar o retngulo do centro. Voc pode definir a largura da linha e se o retngulo deve ser preenchido ou no. Ao selecionar Anti-alias o retngulo desenhado com pixels parcialmente transparentes do lado para se tornar mais suave. Ellipse. Com esta ferramenta voc pode desenhar uma elipse. Ao segurar <Shift> voc pode desenhar um crculo. Quando <Ctrl> segurando voc desenhar a elipse do centro da cidade. Voc pode definir a largura da linha e se a elipse deve ser preenchido ou no. Ao selecionar Anti-alias a elipse desenhada com pixels parcialmente transparentes do lado para se tornar mais suave. Rounded Rectangle. Com esta ferramenta voc pode, pode desenhar um retngulo arredondado. Ao segurar <Shift> voc pode desenhar um quadrado. Quando segurando <Ctrl> voc desenha o retngulo arredondado a partir do centro. Voc pode definir a largura da linha e se o retngulo arredondado deve ser preenchido ou no. Ao selecionar Anti-alias o retngulo arredondado desenhada com pixels parcialmente transparentes do lado para se tornar mais suave. Select Region. Com esta ferramenta voc pode, pode seleccionar uma regio retangular. Voc pode estender a seleo atual, segurando a tecla Shift. Tambm voc pode remover partes, segurando a tecla "CTRL". Uma vez que voc fez uma seleo voc pode peg-la com o mouse e arrast-la para uma nova posio. Quando voc usar o boto direito do mouse voc faz uma cpia. A seleo tambm pode ser cortada ou copiada para a rea de transferncia . Ela pode ser apagada com a tecla <Del>. Voc pode terminar a seleo com a tecla Esc. Select with Magic Wand. Neste caso, voc faz a seleo, clicando em um pixel. Todos os pixels conectados com a mesma cor sero selecionados. Voc pode indicar o valor de tolerncia da cor com que os pixels selecionados e se apenas a cor ou tambm o valor da transparncia deve corresponder. Voc pode estender a seleo atual, segurando a tecla Shift pressionada. Tambm voc pode remover partes, segurando a tecla "CTRL". Voc pode manipular a seleo como acima. Select by Spraying. Neste caso voc faa a seleo por pulverizao com o mouse

sobre a imagem. Voc pode definir o tamanho do seletor. Para o resto da seleo podem ser tratados como descrito acima. Seleo de diferentes tipos podem ser combinados. Text. Para adicionar um texto na imagem. Uma janela pop-up aparece na qual voc pode digitar o texto. Use o smbolo # para inserir uma nova linha. Uma vez que voc pressionar OK o texto colocado na imagem, com uma caixa em torno dela. Agora voc pode mover o texto, pressionando com o mouse na caixa e arrastando o texto. Voc pode alterar o texto clicando com o boto direito do mouse na caixa. Voc pode definir a fonte do texto e como as diferentes linhas devem ser alinhadas. Fill. Clique em um pixel da imagem e todos os pixels conectados com a mesma cor ser transformado no novo pixel. Voc pode definir a tolerncia com os quais a cor deve corresponder. Tambm voc pode definir se a nica partida no valor de cor ou ainda ter o valor de transparncia em conta. No que quando o modo de cor definidos Blend a cor de preenchimento ser misturado com o j existente. Para substitu-lo, defina o modo de cores para substituir. Change Color. Clique em um pixel da imagem e todos os pixels da imagem com a mesma cor que ser transformado no novo pixel. Voc pode definir a tolerncia com as quais a cor deve corresponder. Tambm voc pode definir se a nica partida no valor de cor ou ainda ter o valor de transparncia em conta. No que quando o modo de cor definidos Blend a cor de preenchimento ser misturado com o j existente. Para substitulo, defina o modo de cores para substituir. Menus Uma srie de comandos adicionais esto disponvel atravs dos menus. Para alguns destes, existe um boto correspondente na barra de ferramentas. Menu File New. Cria uma imagem nova e vazia. Voc deve indicar o tamanho da imagem. (Quando a imagem parte de uma sprite com vrias imagens no possvel definir o tamanho.) (Lembre-se, todas as imagens em uma sprite deve ter o mesmo tamanho.) Open. Abre uma imagem de um arquivo. Este item de menu no est disponvel quando a imagem parte de uma sprite com vrias imagens. Previous Image. S est disponvel quando a imagem parte de uma sprite com vrias imagens. Salva as alteraes e abre a sub-imagem anterior. Next Image. S est disponvel quando a imagem parte de uma sprite com vrias imagens. Salva as alteraes e abre a sub-imagem seguinte. Save as PNG File. Salva a imagem como um arquivo PNG. Nenhum outro formato de arquivo suportado. Close Saving Changes. Fecha a janela, salvando as alteraes feitas imagem. Se voc no deseja salvar as alteraes, clique no boto Fechar da janela.

Menu Edit Aqui voc encontra os comandos usuais para desfazer a ltima alterao e refazer as ltimos coisa desfeitas, apagar, cortar, ou copiar a seleo atual para a rea de transferncia para colar a imagem na rea de transferncia como uma seleo na imagem, e para selecionar todos. (Observe que quando se utiliza a rea de transferncia, as informaes de transparncia pode ser perdida.) Dois comandos adicionais exigem um pouco mais de explicao.

Erase to Left Color. Isso apaga a imagem e substitui pela cor da esquerda (a configurao e opacidade). Paste from File. Voc pode selecionar uma imagem de um arquivo. Esta imagem ento colada a imagem atual como uma seleo. Voc pode ento mover a seleo para um lugar adequado.

Menu View Zoom Out. Voc pode diminuir o zoom para ver mais a imagem. Voc tambm pode segurar a tecla "CTRL e mover a roda do mouse para aproximar ou afastar. No Zoom. Define a imagem de volta ao tamanho normal. Zoom In. Voc pode ampliar mais precisamente para desenhar em uma rea da imagem. Toggle Grid. Voc pode alternar a grade ligando ou desligando. Observe que a grade s mostrada quando voc aumenta o zoom o suficiente. Grid Options. Aqui voc pode definir o tamanho da grade e a cor. Voc pode indicar se uso exclusivo ou quando desenha a grade (pode torn-lo mais visvel) e se o desenho deve ser presa grade. Show Preview. Mostra uma pr-visualizao da imagem no canto inferior direito do tamanho normal. Este aspecto particularmente til quando voc est ampliando muito para fazer pequenas mudanas. Se a imagem est maior que a previsualizao voc pode usar o mouse para arrastar a parte da imagem que voc quer ver. Voc tambm pode clicar duas vezes sobre a imagem de visualizao para abrir uma janela de visualizao separada na qual voc pode ver a imagem completa. Set Tranparency Background. Aqui voc pode indicar a forma como a rea transparente da imagem deve ser mostrada no editor de sprite. Voc pode usar o (padro) bloco de modelo, ou uma cor que voc pode mudar clicando na caixa de cores.

Menu Transform Este menu contm os mesmo comandos de transformao do editor de sprite. Voc pode ler sobre a sua funo l. Observe que Resize Canvas, Stretch, e Crop no esto disponveis quando a imagem parte de um sprite com vrias imagens, porque, nesse caso, no podemos alterar o tamanho da imagem. Menu Image Este menu contm os mesmos comandos do editor de sprite. Voc pode ler sobre a sua funo l. Observe que alguns comandos esto disponveis apenas na edio Pro. Mais sobre sons e msica No modo avanado voc tem um controle muito maior sobre os sons e as partes de msica que voc adiciona ao seu jogo. Quando voc adiciona um recurso de som a seguinte janela ser mostrada:

Alm dos botes para carregar, gravar e reproduzir sons, h uma srie de definies que agora vo ser discutidas aqui. Primeiramente voc pode indicar o tipo de som. Quatro tipos so possveis. Sons normais so em geral utilizados para efeitos sonoros em arquivos wave (embora possam ser utilizados por arquivos midi tambm). Mltiplos sons normais podem tocar ao mesmo tempo. Voc pode at tocar vrias cpias do mesmo som simultneamente. A msica de fundo semelhante ao som normal, mas s uma pode tocar a qualquer momento. Ento, quando voc comear um novo som de fundo, o atual ser interrompido. Arquivos Midi so msicas de fundo padro. Som 3D boa para voc aplicar configuraes 3D atravs de funes especiais. Voc s vai precisar disto par efeitos sonoros avanados. Os arquivos de som so normalmente reproduzidos atravs do DirectX. Isto d muitas possibilidades, mas os arquivos wave e MIDI so limitados. Se voc quiser tocar outros arquivos, como arquivos de mp3, voc deve selecionar a opo de usar o media player. Mesmo assim Isso muito mais limitado. No h alteraes de volume ou efeitos podem ser usados e s pode tocar um pedao de uma vez. Observe que arquivos midi, quando tocados atravs do media player possam soar diferente do que toc-los como pano de fundo ou sons normais. A razo que o media player usa o sintetizador de hardware (que diferente em cada mquina), enquanto a outra verso um software usado (o que soa a mesma coisa em todas as mquinas). Preferencialmente no usar arquivos de mp3 em seus jogos. Eles precisam ser descompactados que toma tempo de processamento e pode retardar o jogo. O fato de que o tamanho do arquivo menor, no significa que eles usam menos memria. Alm disso, nem todas as mquinas do suporte. Assim, o jogo pode no funcionar em todas as mquinas. Em segundo, voc pode indicar alguns efeitos sonoros, como chorus ou echo (somente no Edition Pro de Game Maker!) Voc pode selecionar qualquer combinao. Voc pode

escutar imediatamente os resultados. (Quando utilizar cdigo GML voc pode at mesmo alterar os parmetros destes efeitos.) Tambm pode indicar o volume padro do som deslocando para a esquerda ou a direita do alto falante. Para todos os sons que voc indicar se eles devem ser pr-carregados ou no. Quando um som reproduzido, deve ser pr-carregados na memria de udio. Se voc prcarregar o som isso feito no incio do jogo, tornando-se imediatamente disponveis para reproduo. Quando no, ele carregado pela primeira vez, ento ele usado. Isto ir economizar memria, mas poderia dar um pequeno atraso, por ser a primeira vez que o som usado. Game Maker no tem um editor de som embutido. Mas nas preferncias voc pode indicar editores externos que voc deseja usar para editar sons. Se voc selecionou algum voc pode apertar no boto Edit para editar o som atual. (A janela do Game Maker ser escondido enquanto voc edita o som e reaparece quando voc fecha o editor de som). Mais sobre planos de fundo No mais avanado, h uma srie de opes adicionais para o plano de fundo. Primeiramente, um novo boto Save Background aparece. Com este boto voc pode salvar o plano de fundo em um formato proprietrio. Isto no s ir armazenar a imagem em si, mas tambm por exemplo, informaes sobre os tiles (veja abaixo). Estes arquivos tm a extenso. Gmbck. Voc pode carreg-los no Game Maker e durante o jogo. Alm disso, voc tambm pode alterar um plano de fundo ou criar seu prprio plano de fundo, pressionando o boto chamado Edit Background. Um editor de imagem embutido abre que tem muitos recursos. Por favor, observe que este no um programa completo e se necessitar de ferramentas de edio mais avanadas voc pode querer usar um programa de desenho separado. Para mais informaes sobre como usar o editor de imagem veja a seo sobre edio de imagens. s vezes voc quer usar um plano de fundo como um conjunto de tiles, ou seja, uma coleo de imagens menores numa imagem grande. Ao criar as rooms ento voc pode adicionar estas sub-imagens em diferentes lugares na room. Isto muito til para a criao de nveis com uma boa aparncia. Para usar um plano de fundo como um conjunto de tiles, marque a caixa Use as tile set. A janela muda agora a olhar como se segue:

Voc pode indicar um nmero de configuraes para o conjunto de tiles. Em particular, voc pode indicar a largura e a altura de cada tile. (Apenas um tamanho pode ser dado, assim melhor se certificar de que todas as tiles do conjunto tm o mesmo tamanho. Se tem tamanhos diferentes, crie dois ou mais conjuntos de tiles.) Voc tambm pode indicar um deslocamento no topo esquerda, onde comea a tile. Finalmente, uma separao entre as tiles (isto normalmente 0 ou 1) pode ser indicado. Para obter mais informaes sobre o uso de tiles, consulte a seo Adicionando Tiles na criao de rooms. Uma palavra de aviso necessrio aqui. Quando voc coloca bordas separadoras entre as sprites e uso de interpolao entre os pixels (ver as configuraes globais do jogo) isso pode resultar em fendas entre as tiles. Melhor se certificar que os pixels em torno das tiles realmente correspondem com os pixels apenas no interior das tiles para evitar isso. Voc pode facilmente conseguir isso editando o fundo e mudando a cor de tal pixel. Mais informaes sobre objetos Quando voc cria um objeto no modo avanado, voc pode alterar algumas configuraes mais avanadas. Profundidade Primeiramente, voc pode definir a profundidade das instncias do objeto. Quando as instncias so desenhadas na tela eles so desenhados a de acordo com a profundidade. Instncias com maior profundidade so desenhas primeiro. Instncias com a menor profundidade so elaboradas passado. Quando as instncias tm a mesma profundidade, elas so desenhadas na ordem em que eles foram criadas. Se voc quiser garantir que um objeto est na frente dos outros, d-lhe uma profundidade negativa. Se voc quer ter a certeza que se situa abaixo de outras instncias, d-lhe uma grande profundidade positivo. Voc tambm pode alterar a profundidade de um instncia, durante o jogo usando a varivel chamada depth. Objetos persistentes Em segundo lugar, voc pode fazer um objeto persistente. Um objeto persistente continuar em vigor quando se move de uma room para a prxima. Ela s desaparece quando voc explicitamente destru-lo. Assim, voc s precisa colocar uma instncia do objeto na primeira room e em seguida, ela permanecer disponvel em todas as room.

Isso timo quando voc tem um personagem que se move de room em room. Usando objetos persistentes um mecanismo poderoso, mas tambm facilmente conduz a erros. Parents Cada objeto pode ter um objeto pai. Quando um objeto tem um pai, ele herda o comportamento do pai. Dito de outra forma, o objeto uma espcie de caso especial do objeto pai. Por exemplo, se voc tem 4 bolas diferentes, nomeado Ball1, ball2, ball3 e ball4, e todos se comportam da mesma, mas tem uma sprite diferente, voc pode fazer Ball1 o pai dos outros trs. Agora voc s precisa especificar eventos para Ball1. Os outros iro herdar os eventos e se comportam exatamente da mesma maneira. Alm disso, quando voc aplicar aes as instncias do objeto pai, ser tambm aplicada para os filhos. Assim, por exemplo, se voc destruir todas as instncias do Ball1 as instncias ball2, ball3 e ball4 tambm sero destrudos. Isso economiza um monte de trabalho. Frequentemente, os objetos devem se comportar de forma quase idntica, mas haver algumas pequenas diferenas. Por exemplo, um monstro pode mover para cima e para baixo e esquerda e outra direita. O resto tm exatamente o mesmo comportamento. Neste caso, quase todos os eventos devem ter as mesmas aes, mas um ou dois podem ser diferentes. Novamente ns podemos fazer um objeto ser o pai do outro. Mas neste caso ns tambm define certos eventos para o objeto filho. Estes eventos "substituem" os eventos do pai. Assim, sempre que um evento para o objeto filho contm aes, estas so executadas ao invs do evento do pai. Se voc tambm quiser executar o evento principal voc pode chamar o evento "herdado" o evento usando a ao apropriada. realmente uma boa prtica em tais casos, para criar um objeto base. Este objeto base contm todo o comportamento padro, mas nunca usada no jogo. Todos os objetos presentes tm esse objeto base como pai. Objetos pai podem ter pais, e assim por diante. (Obviamente voc no tem permisso para criar ciclos.) Desta forma voc pode criar uma hierarquia de objetos. Isto extremamente til para manter o seu jogo estruturado e que altamente aconselhado a aprender a usar este mecanismo. H tambm uma segunda utilizao do objeto pai. Ele tambm herda o comportamento de coliso de outros objetos. Vamos explicar isto com um exemplo. Suponha que voc tenha quatro objetos de cho diferentes. Quando uma bola bate no cho, deve mudar de direo. Isso tem de ser especificado em caso de coliso da bola com o cho. Porque h quatro chos diferentes, precisamos colocar o cdigo em quatro eventos diferentes de coliso da bola. Mas quando voc faz um objeto cho base e faz deste um nico do pai dos quatro objetos cho presente, voc s precisa especificar o evento de coliso com este cho base. As outras colises iro realizar o mesmo evento. Novamente, isso poupa copiar muito. Como indicado, se voc usar um objeto, isso tambm implicar ao descendentes. Isso acontece quando, em uma ao, voc indica que a ao deve ser aplicada a instncias de um determinado objeto. Isso tambm acontece quando voc usa o mtodo with() no cdigo (veja abaixo). E isso funciona quando voc chama funes como instance_position, instance_number, etc. Por fim, ele funciona quando se refere a variveis em outros objetos. No exemplo acima, quando voc definir ball1.speed para 10 Isto tambm se aplica a ball2, ball3 e ball4.

Mscaras Quando duas instncias colidem um evento de coliso ocorre. Para decidir se duas instncias se cruzam, as sprites so utilizados. Isso bom na maioria dos casos, mas s vezes voc quer colises com base em uma forma diferente. Por exemplo, se voc fizer um jogo isomtrico, objetos geralmente tm uma altura (para dar-lhes uma viso 3D). Mas para colises voc s quer usar a parte do cho da sprite. Isto pode ser conseguido atravs da criao de uma sprite separada que usada como mscara de coliso para o objeto. Informao O boto Show Information d uma viso geral de todas as informaes para o objeto que pode tambm ser impresso. Isso particularmente til quando voc solta viso geral de todas as suas aes e eventos. Mais ao No modo avanado existe vrias aes adicionais disponveis que so descritas aqui. Mais aes de movimento Algumas aes de movimento adicionais esto disponveis no modo avanado. A aes seguintes foram adicionadas: Set Path (Ajustar um caminho para a instncia) path_start(path,speed,endaction,absolute) Com esta ao possvel especificar um caminho para a instncia. Indica-se o caminho que deve ser seguido e a velocidade em pixels por passo. Quando a velocidade positiva, a instncia inicia no comeo do caminho; se negativa, inicia pelo fim. A seguir, especifica-se o comportamento: o que deveria acontecer quando se atinge o fim do caminho. Pode-se escolher entre parar o movimento, reinici-lo do ponto inicial, reinici-lo da posio atual, ou reverter o movimento. Finalmente, possvel indicar que o caminho deve ser visto como absoluto, isto , a posio ser como indicada no caminho (til quando se projeta o caminho em um local particular da room) ou relativo, em que o ponto de incio do caminho colocado na localizao atual da instncia (ponto final, quando a velocidade negativa). Consulte o captulo especfico sobre caminhos, para saber mais a respeito. End Path (Finalizar o caminho para a instncia) path_end() Use esta ao para pr a instncia no fim do caminho. Set Position (Ajustar a posio no caminho) path_position Pode-se mudar a posio atual da instncia no caminho. Deve ser um valor entre 0 e 1, onde 0 o incio e 1 o fim. Path Speed (Ajustar a velocidade para o caminho) path_speed

Com esta ao pode-se modificar a velocidade da instncia no caminho. Uma velocidade negativa reverte o sentido de movimento no caminho. Ajuste o valor em 0 para, temporariamente, interromper o movimento no caminho. Step Towards (Executar um passo em direo a um ponto) mp_linear_step(x,y,stepsize,checkall) Esta ao deveria ser usada com o evento step para fazer a instncia executar um passo em direo a uma posio em particular. Se a instncia j est na posio, nada feito. Especifica-se a posio para o movimento, a velocidade com que se move, isto , o tamanho do passo, e se o movimento deveria ser interrompido quando encontrar uma instncia slida ou quando encontra qualquer instncia. Step Avoiding (Passo em direo a um ponto esquivando de objetos) mp_potential_step(x,y,stepsize,checkall) Esta uma ao bem poderosa, que deveria ser colocada no evento step. Como antes, leva a instncia a uma posio em particular, mas o faz tentando evitar obstculos. Quando a instncia encontra outra instncia slida (ou qualquer), muda a direo de movimento para tentar contornar a instncia. No h garantia que sempre chegue, mas na maioria dos casos, a instncia alcana efetivamente o objetivo. Para casos mais complexos, h funes para projetar movimento, como explicado em captulo posterior. Por fim, especifica-se a posio para onde mover, a velocidade para o movimento, ou seja, o tamanho do passo, e se o movimento deveria evitar instncias slidas ou qualquer tipo de instncia. Mais aes principais Algumas aes principais esto disponveis no modo avanado. As aes seguintes foram adicionadas: Set Time Line (Configurar uma linha do tempo) timeline_index Com esta ao configura-se uma linha do tempo para uma instncia de um objeto. Indicase a linha do tempo e a posio inicial dentro dela (0 significa o incio). Voc tambm pode indicar se a linha do tempo deve comear imediatamente e se ela de repetir no fim. Time Line Position (Configurar posio da linha do tempo) timeline_position Atravs desta ao, possvel mudar a posio na linha do tempo atual (tanto absoluta como relativa). Pode ser usada para pular certas partes da linha do tempo ou repeti-las. Time Line Speed Com esta ao, voc pode alterar a velocidade da linha da tempo (absoluto ou relativo). A velocidade de 1 a velocidade normal. Quando por exemplo, configur-lo para 2 as aes acontecero duas vezes mais rpido e quando voc defini-lo para 0,5 fica metade mais lento. Voc tambm pode definir uma velocidade negativa, caso em que a linha do tempo retrocede. Start Time Line Esta ao inicia a linha do tempo da sua posio atual (se est pausado ou parado).

Pause Time Line Esta ao interrompe a linha do tempo. Use a ao comear para continuar. Stop Time Line Esta ao interrompe a linha do tempo e define a posio de volta para 0. Splash Text Com esta aco, voc pode mostrar um arquivo de texto. Isso pode ser um arquivo. Txt ou rtf. (Rich Text Format) (nenhuma imagens ou objetos incorporados so mostrados). Voc especifica o nome do arquivo. Verifique se o arquivo existe. Voc deve ento distribu-lo com o jogo ou inclu-lo no jogo atravs de incluir arquivos no menu Recursos. (Observe que a barra de rolagem no ser mostrado, no h outra maneira de percorrer o texto. Portanto, o texto deve se ajustar janela.) Esta ao s est disponvel na edio Pro. Imagem Splash Com esta ao, voc pode mostrar um arquivo de imagem. A maioria dos tipos de arquivo comum de imagem so suportados. Voc especifica o nome do arquivo. Verifique se o arquivo existe. Voc deve ento distribu-lo com o jogo ou inclu-lo no jogo atravs incluir arquivos no menu Recursos. Voc pode por exemplo usar isso para criar uma srie de imagens como a ajuda para o seu jogo. No incluindo as imagens no jogo vai reduzir o tamanho do jogo e melhorar o tempo de carregamento do jogo. Esta ao s est disponvel na edio Pro. Splash Webpage Com esta ao, voc pode mostrar uma pgina web. Voc fornecer a URL e se deve ser mostrado na janela do jogo ou no navegador da Web padro. A URL pode ser o endereo de um site, http://www.yoyogames.com por exemplo) ou pode ser o nome do arquivo para um arquivo HTML local. Observe no entanto que necessrio fornecer o caminho completo para este trabalho (que no o caso das outras aes splash). Ento, o melhor usar como URL algo como "working_directory + +" \ index.html ". (As duas primeiras citaes so obrigados a indicar esta uma expresso em vez de uma seqncia de caracteres.) Voc deve ento distribuir o arquivo com o jogo ou inclu-lo nele atravs de incluir arquivos no menu Recursos. Voc pode por exemplo usar esse recurso para criar pginas de ajuda como preferir para o seu jogo. Esta ao s est disponvel na edio Pro. Splash Vdeo Com esta ao, voc pode mostrar um arquivo de vdeo/filme. Voc especifica o nome do arquivo e se preciso ser repetido. Verifique se o arquivo de vdeo existe. Voc deve ento distribu-lo com o jogo ou inclu-lo no jogo atravs de incluir arquivos no menu Recursos. Esta ao s est disponvel na edio Pro. Splash Settings Com essa ao, voc pode alterar certas configuraes para as telas de apresentao que voc mostra com as aes anteriores. Voc pode fornecer a legenda para a janela de ajuda (s quando mostrado em uma janela separada normal), voc pode indicar onde

as telas de apresentao deve ser apresentada (dentro da janela do jogo, em uma janela normal, ou tela cheia), voc pode indicar se um boto fechar deve ser mostrado no canto superior direito da tela e se pressionar a tecla Escape ou clicando com o mouse na tela inicial ir fechar a tela inicial. (Para pginas da Web clicando com o mouse no funciona nem a tecla escape a menos que o boto fechar mostrado.) Esta ao est apenas disponvel na edio Pro. Replace Sprite (Substituir uma sprite em um arquivo) sprite_replace(ind,fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig) Esta ao pode ser utilizada para substituir uma sprite em um arquivo. Indica-se a sprite que voc que substituir, o nome do arquivo (.bmp, .jpg, ou .gif) e o nmero das subimagens na sprite, quando carrega-se um arquivo .bmp ou .jpg. Para um arquivo .gif, o nmero de sub-imagens automaticamente decidido baseado no nmero de sub-imagens no aquivo. Outras configuraes para a sprite, por exemplo se transparente ou no, no so modificadas. possvel utilizar esta ao com intuito de evitar que todas as sprites sejam armazenadas no prprio executvel. Por exemplo, no comeo de um nvel, possvel substituir as sprites com outras que representem o personagem naquele nvel. NO se deve, entretanto, mudar a sprite que, no momento, esta sendo usada em uma instncia na room, pois ocasionaria efeitos indesejveis em eventos de coliso. Replace Sound (Substituir um som de um arquivo) sound_replace(index,fname,kind,loadonuse) Atravs desta ao, possvel substituir um som pelo contedo de um arquivo (.wav, .mid, ou .mp3). Especifica-se o som e nome do arquivo. Isto evita ter que armazenar todos os sons no prprio executvel do jogo. Por exemplo, possvel usar diferentes pedaos de msica de fundo e escolher a parte que quer tocar. NO se deve, entretanto, mudar um som enquanto est em execuo. Replace Background (Substituir uma imagem de fundo de um arquivo) background_replace(ind,fname,transparent,smooth,preload) Com esta ao, possvel substituir uma imagem de plano de fundo pelo contedo de um arquivo (.bmp, or .jpg). Especifica-se a imagem e o nome do arquivo. Isto evita ter que armazenar todas as imagens no prprio executvel do jogo, NO se deve, entretanto, mudar uma imagem de background que esteja sendo exibida. More aes de controle Algumas aes de controle adicionais esto disponveis no modo avanado. As aes seguintes foram adicionadas: Execute a script (Executar um script) script_execute(scr,arg0,arg1,...) Atravs desta ao possvel executar um script adicionado ao jogo. Especifica-se o script e no mximo 5 argumentos para o script. Call the inherited event (Chamar um evento herdado) event_perform(type,numb) Esta ao s til quando o objeto possui um objeto-pai. Ela chama o evento correspondente no objeto-pai.

Mais aes de desenho As seguintes aes adicionais de desenho esto disponveis no modo avanado: Set Set font (Ajustar a fonte) font_add(name,size,bold,italic,first,last) possvel configurar a fonte a ser usada para desenhar um texto. Deve estar dentre os recursos de fonte que foram definidos. Se for esclhido por No Font, usada uma fonte padro do tipo Arial e tamanho 12. Aes de Partculas Um ajuste de ao que lida com partculas est disponvel na aba Extra. Essas aes esto disponveis apenas na edio de Pro Game Maker. Sistemas de partculas so destinadas a criar efeitos especiais. Partculas so elementos pequenos (representada por um pixel ou uma pequena forma). Essas partculas se movimentam de acordo com regras pr-definidas e pode mudar de cor quando se movem. Muitas dessas partculas em conjunto podem criar por exemplo, fogos de artifcio, fogo, chuva, neve, campos de estrelas, destroos de avies, etc

Game Maker contm um extenso sistema de partculas que podem ser acessados atravs de funes. Um sistema de partculas mais limitado pode ser acessado atravs das aes descritas a seguir. Um sistema de partculas pode lidar com partculas de diferentes tipos. Depois de criar o sistema de partculas, a primeira coisa a fazer especificar os tipos de partculas. Usando as aes abaixo, voc pode especificar at 16 tipos de partculas. Cada tipo tem uma forma, um tamanho, a cor de incio e uma cor final. A cor lentamente muda de cor para comear a cor final. Partculas tm um tempo de vida limitado. O tipo que voc deve especificar o tempo de vida mnimo e mximo das partculas. Partculas tm uma velocidade e uma direo. Finalmente, a gravidade e a frico pode trabalhar em partculas. Depois de especificar os tipos de partculas que voc deve cri-los em lugares na room. Voc pode estourar um nmero de partculas de um tipo particular de um lugar ou voc pode criar um fluxo constante de partculas aparecendo. Partculas aparecem emissores. O sistema de partculas pode ter at 8 emissoras que trabalham ao mesmo tempo. Ento,

depois de criar os tipos de partculas necessrio criar os emissores e dizer-lhes para estourar ou fluir as partculas. Aqui est o conjunto completo de aes. Melhor experimentar eles para obter o efeito desejado. Create Part System (Criar sistema de partculas (deve ser chamado primeiro) part_system_create() Cria o sistema de partculas e deve ser chamada antes que qualquer outra ao possa ser usada. S preciso cham-la uma vez. Pode-se especificar a profundidade em que as partculas so desenhadas. Se for utilizado um valor alto de profundidade, as partculas so desenhadas atrs das instncias; se for usado um valor negativo, aparecem antes. Destroy Part System (Destruir o sistema de partculas) part_system_destroy_all() Esta ao destri o sistema de partculas, liberando a memria ocupada. No se deve esquecer de cham-la (por exemplo, quando se move para outro room) porque sistemas de partculas ocupam bastante memria. Clear Part System (Limpar todo as partculas no sistema) part_system_clear(ind) Esta ao remove todas as partculas atualmente visveis. Isto no interrompe os emissores. Assim, novas partculas podem ser criadas novamente, no caso de se usar fluxos. Create Particle (Criar um tipo de particular) part_type_create() Com esta ao voc cria um tipo de partcula, escolhido entre 16 disponveis. Para o tipo, possvel especificar: forma (shape), tamanho mnimo e mximo (quando a partcula aparece, se usado um valor aleatrio entre estes limites), a cor com que a partcula inicia e a cor com que a muda durante o tempo de vida. Observe que s criado um tipo de partcula, sem uma partcula presente; para isto, so necessrios emisses. Particle Color (Ajsutar a cor para um tipo de particular) part_type_color(ind,color_start,color_middle,color_end) Uma partcula pode ter uma cor (padro da cor branco). Com esta ao voc pode ajustar a cor a ser usada para um tipo particular. Voc tem que indicar para o tipo de partcula a cor est definida para ela. Logo voc especifica como uma cor aplicada. Ou uma cor aleatria escolhida entre duas cores determinadas ou a cor comea com a primeira cor e que gradualmente com o passar do tempo de vida da partcula, muda para a segunda cor. Devem ser dadas ambas as cores. Finalmente voc pode indicar a transparncia alfa. Voc especifica a transparncia no momento em que a partcula criada e quando ela morre. A transparncia muda lentamente entre estes valores. Normalmente agradvel para diminuir o valor alfa com o passar do tempo de vida de uma partcula. Particle Life (Ajustar o tempo de vida para um tipo de partcula) part_type_life(ind,life_min,life_max)

Uma partcula vive por um nmero de passos limitado, aps isto desaparece. Esta ao ajusta o tempo de vida de uma partcula. So fornecidos 2 valores-limites e o tempo de vida escolhido aleatoriamente entre estes limites. Particle Speed (Ajustar o movimento para um sistema de partcula) part_type_speed(ind,speed_min,speed_max,speed_incr,speed_rand) possvel ajustar a velocidade e direo de movimento para um tipo de partcula. Novamente, so fornecidos 2 limites e escolhido um valor aleatrio entre estes. Por exemplo, para tornar o movimento da partcula em direo aleatria, fornea como limites da direo os valores 0 e 360. Tambm possvel especificar um atrito. Esta quantidade subtrada da velocidade a cada passo, at tornar-se 0. ( possvel aumentar a velocidade usando um valor negativo para o atrito). Particle Gravity (Ajustar a gravidade de um sistema de partcula) part_type_gravity(ind,grav_amount,grav_dir) Ajusta-se a gravidade e sua direo para um determinado tipo de partcula. Por exemplo, o valor 270 significa: em direo para baixo. Particle Secundary (Criar partculas secundrias) Esta um pouco mais complexa. Partculas podem criar outras partculas durante o tempo de vida e quando morrem; com esta ao, possvel especificar isto. Especifica-se o tipo e o nmero de partculas que devem ser criadas a cada passo, durante o tempo de vida, bem como o tipo e nmero de partculas criadas quando a partcula morre. Tenha cuidado com esta ao, pois fcil criar um grande nmero de partculas, deixando o sistema consideravelmente lento. Tambm possvel especificar um valor negativo: um valor x negativo significa que em cada passo uma partcula criada com uma chance de -1/x. Assim, por exemplo, desejando-se criar uma partcula secundria a cada 4 passos, usa-se o valor -4. Partculas secundrias so teis na criao, por exemplo, de exploses. Create Emitter (Criar um emissor de partcula) part_emitter_create(ps) Cria um gerador de partculas. possvel ter at 8 emissores. Escolha o emissores e especifique a forma, seu tamanho e posio (na forma de uma caixa limtrofe). Destroy Emitter (Destruir um emissor) part_emitter_destroy(ps,ind) Destri o gerador de partculas indicado. Observe que as partculas ainda existentes, originrias deste emissor no so removidas. Burst from emitter (Estourar um determinado nmero de partculas de um emissor) part_emitter_burst(ps,ind,parttype,number) Mesmo que se defina um tipo de partculas e um emissor, ainda no h partculas, pois preciso dizer ao emissor para gerar as partculas. Com esta ao, especifica-se a um determinado emissor para gerar um nmero de partculas de um determinado tipo. Todas estas partculas so geradas de uma s vez. Tambm possvel especificar um valor negativo. Um valor negativo de x significa que uma partcula criada com uma chance de -1/x. Assim, por exemplo, desejando-se criar uma partcula com uma chance de 25%, usase um valor -4.

Stream from emitter (Jato de partculas de um emissor) part_emitter_stream(ps,ind,parttype,number) Com esta ao, especifica-se a um emissor para fazer fluir um nmero de partculas de um determinado tipo. Em cada passo, este nmero de partculas gerado, ocasionando um fluxo contnuo de partculas. O emissor continuar a gerar o fluxo at ser destrudo ou se indique um valor 0 para o fluxo. Tambm possvel especificar um valor negativo. Um valor x negativo significa que, em cada passo, uma partcula criada com uma chance de -1/x. Assim, por exemplo, desejando-se gerar 1 partcula a cada 4 passos, usa-se um valor -4. Aes Extra Na aba Extra h tambm muitas aes para tocar CDs. Estas as esto disponveis na Ediao Pro do Game Maker.

Play CD (Tocar um CD) cd_play(first,last) Com esta ao possvel executar algumas faixas de um CD colocado no drive de CD padro. Especifica-se a trilha de incio e a trilha de fim. Stop CD (Parar o CD) cd_stop() Interrome o CD que atualmente est tocando. Pause CD (Pausar o CD) cd_pause() Efetua pausa no CD que est tocando. Resume CD (Continuar um CD pausado) cd_resume() Volta a tocar um CD que estava em pausa. Check CD (Se um CD existe no drive) cd_present() Verifica se h um CD no drive e executa uma ao. Check CD (Se um CD est tocando) cd_playing() Verifica se um CD est tocando e executa uma ao. Set Cursor (Ajustar o cursor do mouse) Pode-se usar esta ao para substituir o cursor do mouse padro do windows pela imagem de uma sprite. Especifica-se a sprite e se o cursor do mouse do windows ainda deveria ser mostrado. A imagem pode, inclusive, ser uma animao. Observe que a sprite s ser exibida na room, no fora de sua rea. Constantes Esta funcionalidade s est disponvel na verso Pro do Game Maker. No modo avanado voc pode definir constantes que voc pode usar nos scripts e nos valores das aes. Cada constante tem um nome e um valor. Nomes devem seguir as mesmas regras que as variveis, ou seja, eles devem comear com uma letra ou um

smbolo de sublinhado e ainda consistir de letras, nmeros ou smbolos de sublinhado. recomendado deixar todas as suas constantes facilmente distinguveis. A conveno usual usar apenas letras maisculas e sublinhados. Para definir constantes que voc escolheu Define Constant no menu Resources. A janela a seguir vai mostrar (na qual algumas constantes foram definidas):

No topo voc pode ver as constantes. esquerda, h o nome e no lado direito o valor. Voc pode selecionar o nome ou valor com o mouse e alter-lo digitando. Um valor de uma constante deve ser uma expresso constante. Ou seja, ou um nmero constante ou uma string (com aspas em torno dela) ou uma expresso. A expresso avaliada antes de qualquer coisa que acontece no jogo. Assim, por exemplo, no pode fazer referncia a room atual, exemplos, ou scripts. Mas pode conter as constantes internas e os nomes dos recursos. Voc pode acrescentar uma constante, no final da lista usando o boto Add (ou pressionando Enter) e exclu-lo usando o Delete. Voc tambm pode inserir uma constante acima da constante atual selecionada. Tambm h botes para limpar todas as constantes, para mov-las para cima ou para baixo na lista, e classific-los pelo nome. Finalmente, voc pode salvar todas as constantes em arquivo de texto ou carreg-los a partir de um arquivo de texto. Isso til quando voc quiser armazenar conjuntos de constantes til para uso posterior. Quando constantes so carregadas elas so acrescentados lista atual. O arquivo de texto tambm pode ser editado usando um editor de texto. Cada linha contm uma definio constante do formulrio nome = valor. uma boa prtica colocar qualquer valor que voc usa vrias vezes em uma constante. Alm disso, se voc no tiver certeza absoluta sobre um determinado valor melhor coloc-lo em uma constante, pois muito mais fcil mudar as constantes do que

encontrar os valores nos scripts e aes e alter-los l. Trigger events Esta funcionalidade s est disponvel na verso Pro do Game Maker. No modo avanado um novo tipo de eventos est disponvel: eventos disparador. Eventos Disparador voc mesmo pode definir. Voc especifica a condio quando o evento deve ser executado. Para definir eventos de disparador voc deve escolher Define Triggers do menu Resources. O formulrio a seguir vai mostrar (na qual j alguns disparadorse foram definidos):

Na esquerda voc ver uma lista de todos os disparadores que foram definidos. Inicialmente, esta lista est vazia. Abaixo h alguns botes com a funo a seguir: Add. Use este boto para adicionar um novo evento disparador para a lista. Delete. Exclui o evento disparador selecionado da lista. Tenha cuidado para no excluir um evento disparador que usada em um objeto. Isso poderia levar a resultados inesperados. Load. Carrega um conjunto de disparadores de um arquivo. Tal arquivo deve ter extenso. Gmtrg. Os gatilhos de arquivo so adicionados lista de gatilhos. Save. Salva o conjunto de disparadores para um arquivo. Tal arquivo deve ter extenso. Gmtrg. Desta forma voc pode criar suas prprias colees de disparadores teis que voc pode usar em jogos diferentes. Clear. Apaga a lista de disparadores. Tenha o cuidado de s utilizar este objeto, quando no utiliza qualquer evento de disparo. Quando terminar, voc pode pressionar o boto OK para salvar as alteraes. Se voc no deseja salvar as alteraes, feche a janela com a cruz no canto superior direito e indique que voc no deseja salvar as alteraes.

Definindo um disparador Uma vez que voc adicionou um disparador, voc deve preencher suas propriedades. Primeiramente voc tem que dar um nome ao disparador. Este nome vai aparecer no menu disparadores disponveis e nas listas de eventos para objetos. Em seguida, voc deve especificar a condio de que ir acionar o evento. Isto um pedao de cdigo GML. Ela deve conter uma instruo de retorno que retorna um valor verdadeiro ou falso. O disparador ser acionado quando o valor de retorno verdadeiro. Aqui esto alguns exemplos. Suponha que voc deseja cria um evento que acontece quando o jogador pressiona a tecla de controle e a tecla A. Para isso, voc pode usar a seguinte condio: ( return keyboard_check (ord ( 'A')) & & keyboard_check (VK_CONTROL); ) Voc pode colocar os scripts completos na condio, desde que haja em algum lugar uma instruo de retorno. Por exemplo, para ter um evento que acontecer quando o nmero de bolas entre 3 e 5, voc pode usar a seguinte condio: ( var n; n = instance_number(obj_ball); return (n> = 3) & & (n <= 5); ) Voc pode criar muitos outros tipos de eventos disparador. Por exemplo eventos que buscar por combinaes de teclas e botes do mouse, eventos que verificam se voc est perto de um inimigo, os eventos para verificar se voc arrecadou dinheiro suficiente ou pontuao, etc. Se a condio fica um pouco longa voc pode desejar edit-la no editor de cdigo em vez disso. Para esse fim pressione o boto Use code editor. Depois de especificada a condio que voc deve especificar quando a condio testada. H trs opes aqui. Voc pode testar a condio no incio de um passo (pouco antes do evento comear o passo), no meio (pouco antes do evento de passo normal) ou no final (pouco antes do evento de passo final). Na maioria das vezes a posio mdia padro bom, mas em certos casos, voc precisa dos outros momentos. Finalmente, quando voc tambm quiser chamar o evento a partir do cdigo voc pode especificar uma constante com o qual voc pode consultar no cdigo para o evento. Veja o Captulo 4 para obter mais detalhes sobre a chamada de eventos a partir do cdigo. Usando um disparador Depois de ter definido os seus scripts voc pode us-los na definio de objetos. Ao definir as propriedades do objeto e clique no boto Add Event, agora voc pode selecionar eventos Disparador.

No menu que aparece voc pode selecionar o tipo de evento disparador que pretende utilizar. Agora voc pode adicionar as aes para este evento, da mesma forma como voc criou aes para outros eventos. Incluindo arquivos em jogos independentes Esta funcionalidade s est disponvel na verso Pro do Game Maker. Como foi indicado antes que voc pode criar verses independentes do seu jogo. s vezes, o jogo ir usar arquivos adicionais. Por exemplo, voc pode querer incluir os arquivos de vdeo ou arquivos de texto que so usadas no jogo. Em alguns casos voc deseja adicionar DLLs ou imagens e sons que so carregados durante a execuo do jogo. Voc pode fornecer estes juntamente com o executvel independente, mas s vezes mais fcil inclu-los no arquivo. Desta forma, apenas um arquivo precisa ser distribudo. Arquivos includos sero padro sendo exportados quando o jogo inicia. Voc pode indicar os arquivos que deseja incluir no executvel escolhendo Included Files no menu Resources. A janela abaixo ser mostrado:

Na parte superior da janela uma lista de arquivos para incluir. Use Add para adicionar um novo arquivo para a lista, Change para alterar um arquivo selecionado, em Delete para excluir o arquivo selecionado, e Clear para limpar a lista completa. Ao adicionar ou alterar uma entrada, a seguinte janela ir aparecer:

Aqui voc pode indicar um nmero de propriedades. Voc pode pressionar o boto Load para indicar qual arquivo deve ser includo. Voc pode alterar o nome do arquivo se voc

deseja salvar o arquivo com um nome diferente do nome do arquivo original. H uma srie de opes que voc pode definir. Quando voc marcar Store in the editable gmk file do arquivo includo no s adicionado ao executvel, mas tambm para a verso editvel do jogo. A vantagem que voc pode por exemplo enviar a verso editvel para algum e pode ser que o arquivo ainda esteja l. Alm disso, voc pode remover o arquivo includo, se voc quer ou mov-los sem problemas. A desvantagem que a verso editvel do jogo se torna maior e demora mais para carregar. Marcando a opo de Free memory after export significa que depois que o arquivo foi exportado (quando executando o jogo), ser removido da memria. Se voc quiser ser capaz de export-lo novamente mais tarde voc deve desmarcar esta opo. Se um arquivo que exportado j existe no normalmente escrito. Voc pode alterar esse comportamento marcando Overwrite existenting files. Alm disso, quando o jogo est terminado os arquivos normalmente no so removidos (a menos que estejam na pasta temporria que completamente removido). Voc pode mudar isso marcando Remove at game end. Uma palavra de alerta deve ser colocada aqui. Se voc est testando seu jogo, o diretrio de trabalho do jogo o diretrio onde o arquivo. GMK armazenado. Se seus arquivos inclusos tambm esto armazenados aqui, e voc escolher para remov-los no final do jogo voc pode perd-los! Ento melhor no armazenar esses arquivos com o arquivo. GMK mas, por exemplo em uma subpasta! Finalmente, voc pode indicar em que pasta os arquivos sero exportados. Existem quatro opes aqui. Na situao padro os arquivos so exportados na pasta onde o jogo independente est armazenado. Este tambm o diretrio de trabalho para o jogo. Assim, o jogo pode apenas usar os nomes dos arquivos para acess-los (os caminhos no so necessrios). Isso funciona bem se o jogo independente est armazenada por exemplo, no disco rgido, mas ir falhar se ele armazenado em um nico dispositivo de leitura, por exemplo, em um CD. A segunda possibilidade indicar quais arquivos devem ser exportados para a pasta temporria que criada durante a execuo do jogo. Se voc selecionar esta opo, voc ter que fornecer o caminho para a pasta temporria quando voc usa o nome do arquivo durante o jogo. Esse caminho pode ser obtida usando a varivel Temp_Directory embutida. No se esquea de adicionar a barra invertida neste caso. Assim, por exemplo, Tocar um arquivo de vdeo voc pode digitar o seguinte pedao de cdigo: ( splash_show_video Temp_Directory (+ '\ movie.avi', true); ) Perceba que essa pasta temporria removida uma vez quando o jogo finalizado. Assim, por exemplo, voc no pode armazenar salvar jogos ou especiais, no caso atual. S escolher esta opo quando desejar que o jogo seja executado a partir de um CD ou quando voc no escreve todos os arquivos dentro de seu jogo. A terceira opo indicar a pasta onde o arquivo deve ser exportado. Se ela no existir, ser criada. Por exemplo voc poderia especificar C: \ MyGame. (Note que voc precisar fornecer um caminho completo e que voc no deve incluir uma barra no final.) Isto s permitido quando o jogo no executado em modo seguro.

Finalmente, voc pode indicar no exportar o arquivo automaticamente. Neste caso, voc deve usar por exemplo a funo export_include_file (fname) para export-lo a si mesmo, quando necessrio. Mais sobre rooms Rooms no Game Maker tem muitas opes. Antes tratamos apenas os mais importantes. Neste captulo iremos discutir as outras opes. Quando voc abrir a janela da room no modo avanado que tem o seguinte aspecto:

Como voc vai ver, alguns botes novos foram adicionados barra de ferramentas. H botes para classificar as instncias, horizontalmente ou verticalmente. Isso til quando por exemplo se sobrepem parcialmente. (Ao adicionar tiles esses botes e outros funcionam, em tiles ao invs das instncias.) Tambm h botes para bloquear todas as instncias ou desbloquear todas as instncias. Instncias bloqueadas no podem ser movidas ou excludas. Isso protege contra remover incidentalmente removendo instncias. (No entanto, ao usar os botes da barra de apagar ou deslocar todos as instncias, tambm os bloqueados so excludos ou deslocado.) Usando o menu do boto direito do mouse (clique <Ctrl> e segure o boto direito em uma instncia), tambm pode bloquear ou desbloquear instncias individuais. Finalmente, voc pode indicar que voc pretende utilizar uma grade isomtrica. Isto muito til na criao de jogos isomtricos. Primeiramente, as linhas de grade agora executam diagonalmente. Tambm a trava das instncias diferente. (Ele funciona melhor quando a origem da instnciaest no canto superior esquerdo como padro.)

Tambm h duas novas guias que discutiremos a seguir. Configuraes avanadas Havia dois aspectos na aba de configuraes que ainda no foram discutidos. Primeiramente, existe uma opo chamada Persistent. Normalmente, quando voc sair de uma room e voltar mesma room, mais tarde, a room reposta com as definies iniciais. Isso bom se voc tem um nmero de nveis em seu jogo, mas normalmente no o que voc quer, por exemplo, em um RPG. Aqui, a room deve ser do jeito que voc deixou da ltima vez. Marcar a caixa Persistent vai fazer exatamente isso. O status da room ser lembrado e, quando voc retornar a ele mais tarde, ser exatamente o mesmo que voc deixou. Somente quando voc reiniciar o jogo que o quarto ser reiniciado. Na verdade, h uma exceo a esta. Se voc marcou determinados objetos como sendo persistente, instncias deste objeto no vo ficar na room, mas movem para a prxima room. Em segundo lugar, h um boto chamado Creation code. Aqui voc pode digitar em um pedao de cdigo em GML (ver adiante) que executado quando a room criada. Isso til para preencher certas variveis no quarto, criar certas instncias, etc importante entender exatamente o que acontece quando voc mover para uma room particular no jogo. Primeiramente, na room atual (se houver) todas as instncias obtm um evento de room de fim. Em seguida, as instncias no persistentes so removidas (sem destruir o evento gerado!). Em seguida, para a nova room de instncias persistentes da sala anterior so adicionados. Todas as noves instncias so criadas e seus eventos criao so executados (se a room no persistente ou no tiver sido visitada anteriormente). Quando esta a primeira room, para todas as instncias o evento inicio de jogo gerado. Agora o cdigo de criao da room executado. Finalmente, todas as instncias arranjam um evento inicio de room.

Assim, por exemplo, os eventos inicio de room pode usar variveis definidas pelo cdigo de criao para a room e no cdigo de criao voc pode consultar as instncias (tanto os novos quanto os persistentes) na room. Existe uma outra opo. No menu pop-up quando voc clica com o boto direito em um exemplo com a tecla "CTRL" agora voc pode indicar algum cdigo de criao para a instncia especfica. Este cdigo executado quando iniciada a room, pouco antes do evento de criao da instncia ser executada. Isto muito til, por exemplo, conjunto de determinados parmetros que so especficos para a instncia. Adicionando tiles Voc tambm pode criar os chamados tiles de plano de fundo. A idia por trs disso a seguinte: Em muitos jogos voc vai querer ter plano de fundo de uma aparncia boa. Por exemplo, em um jogo do labirinto, as paredes do labirinto deve igualar-se muito bem, e em jogos de plataforma que voc gostaria de ver plataformas muito bem desenhadas, rvores, etc Voc pode fazer isso no Game Maker, definindo muitos objetos diferentes e

compor suas rooms desses objetos. O problema que embora este d um monte de trabalho, utiliza grandes quantidades de recursos, e faz com que os jogos rodam devagar por causa dos muitos objetos diferentes. Por exemplo, para criar paredes boas, em jogos de labirinto que voc precisa como um comeo diferente 15 objetos em formato de parede. A forma padro, utilizadas em muitos jogos, que as paredes e outros objetos estticos so realmente desenhadas no fundo. Mas, voc poderia perguntar: como que o jogo sabe que um objeto atinge uma parede se estiver desenhado s no fundo? O truque o seguinte: Voc cria apenas um objeto de parede em seu jogo. Deve ter o tamanho certo, mas no precisa de uma boa aparncia. Ao criar a room, coloque esse objeto em todos os lugares onde h uma parede. E, a vem o truque, fazemos esse objeto invisvel. Assim, quando jogar o jogo voc no v os objetos de parede. Voc v o belo plano de fundo no lugar. Mas os objetos de parede slida ainda esto l e as instncias do jogo iro reagir a eles. Voc pode usar esta tcnica para qualquer objeto que no est mudando sua forma ou posio. (Voc no pode us-lo quando o objeto deve ser animado.) Para os jogos de plataforma, voc provavelmente precisar de apenas um piso e um objeto parede, mas voc pode fazer belos planos de fundo, onde parece que voc est andando na grama, em galhos de rvores, etc. Para adicionar tiles para a sua room voc precisa primeiro adicionar um recurso de fundo para o seu jogo que contm as tiles. Se voc quer ter suas tiles parcialmente transparente, certifique-se de fazer a imagem de fundo transparente quando carreg-lo. Ao adicionar o recurso de fundo indicam que ela deve ser utilizada como uma conjunto de tiles. Em seguida indicar o tamanho de cada tile e se h espao entre as tiles, como foi indicado no captulo sobre os recursos do plano de fundo. Agora, ao definir a sua room, clique na guia tiles. A janela abaixo mostrada (na verdade, ns j adicionou algumas tiles nesta room e desligamos a grade).

No canto superior esquerdo h o conjunto atual de tiles utilizadas. Para selecionar o conjunto, clique no boto do menu abaixo e selecione a imagem de fundo adequado. Agora voc pode adicionar tiles, selecionando a tile que voc quer na parte superior esquerda, e clicar em no local apropriado da room direita. Isto funciona exatamente da mesma maneira como para adicionar as instncias. Tiles subjacentes sero removidas, a menos que voc desmarque a caixa Delete underlying. Voc pode usar o boto direito para excluir tiles. Segure a tecla <Shift> para adicionar vrias tiles. E segure a tecla <CTRL> para mover tiles para um novo lugar. A tecla <Alt> ir evitar que prenda na grade. Tambm h um novo menu pop-up quando voc segurar a tecla <CTRL> e clicar em uma tile com o boto direito do mouse. Os botes na barra de ferramentas agora ir apagar todos as tiles, mudar todas as ttiles, ordenar as tiles bloqueadas ou desbloqueadas. (Na verdade eles s funcionam na camada atual, veja abaixo). Em algumas situaes voc pode querer colocar uma parte do plano de fundo na room que no exatamente o tamanho de uma tile ou constitudo por vrias tiles. Isto pode ser feito da seguinte forma. No canto superior esquerdo da imagem pressione o boto esquerdo do mouse mantendo a tecla <Alt>. Agora voc pode arrastar uma rea que voc pode ento colocar em uma room da mesma forma como tiles. Para selecionar vrias tiles, segure a tecla <Shift> pressionada. Note que isto s funciona corretamente quando no h separao entre as tiles. Se voc quiser selecionar uma rea que mltiplo do tamanho da grade da room, segure a tecla <CTRL> e a tecla <Shift>. (Note que voc pode realmente mudar a tecla que voc segura durante o arraste. Isto pode s vezes ser til.) As tiles podem ser colocadas em camadas de diferentes profundidades. Abaixo voc v a

profundidade atual. O padro 1000000, que normalmente por trs de todas as instncias. Assim, as instncias vo passar na frente das tiles. Voc pode usar o boto Add para adicionar camadas de tile novas, cada um com uma profundidade diferente. Profundidades negativo pode ser usado para colocar as tiles na frente das instncias. Se voc tambm dar aos objetos diferentes profundidades voc pode coloc-los entre diferentes camadas da tile. Se voc pressionar Delete voc excluir uma camada de tile, juntamente com todos as suas tiles. (Deve haver sempre pelo menos uma camada.) Se voc pressionar Change voc pode mudar a profundidade de uma camada de tile. Se voc d a ele a mesma profundidade de uma outra camada, as camadas so mescladas. Tiles um poderoso recurso que deve ser usado o mximo possvel. muito mais rpido do que usar os objetos e as imagens de tiles so armazenadas apenas uma vez. Ento voc pode usar grandes salas de lado a lado com o consumo de memria muito pequena. Vistas Finalmente, h uma aba chamada views. Isto um mecanismo para desenhar as diferentes partes de sua room, em locais diferentes na tela. H muitos usos para vistas. Primeiramente, em vrios jogos que pretende mostrar apenas uma parte da room a qualquer momento. Por exemplo, na maioria dos jogos de plataforma, a vista segue o personagem principal. Em jogo de dois jogadores muitas vezes voc quer um modo de tela dividido, nas quais, uma parte da tela voc v um jogador, e em outra parte voc v o outro jogador. Um terceiro uso nos jogos em que parte da sala deve andar (por exemplo, com o personagem principal), enquanto outra parte fixa (por exemplo, alguns painis de estado). Isso tudo pode ser facilmente alcanado no Game Maker. Quando voc clique na aba chamada views a seguinte informao aparecer:

No topo h uma caixa chamada Enable the use of Views. Voc deve marcar esta caixa para usar as vistas. Abaixo disto voc v a lista de mais de oito vistas que voc pode definir. Abaixo a lista que voc pode dar informaes para as vistas. Primeiramente voc deve indicar se o ponto de vista deve ser visvel quando a room comear. Certifique-se de

que pelo menos uma vista est visvel. Vistas visveis so exibidas em negrito. Uma viso definida por uma rea retangular na sala. Esta a rea que deve ser mostrada na vista. Voc especificar a posio do canto superior esquerdo e a largura e altura da rea. Em segundo lugar, voc deve especificar onde esta rea mostrada na janela na tela. Isto chamado escotilha(vista). Novamente voc especifica a posio do canto superior esquerdo e o tamanho. Se voc tem uma viso nica da posio normalmente (0,0). Observe que o tamanho da escotinha pode ser diferente do tamanho da vita. Neste caso, a vista ser dimensionada para caber na escotilha. (No cdigo tambm possvel girar uma vista.) As escotilhas podem se sobrepor. Neste caso, so desenhados na ordem indicada em cima uns dos outros. Como indicado acima, muitas vezes voc est a fim de seguir um determinado objeto. Este objeto pode indicar na parte inferior. Se houver vrias instncias deste objeto, apenas o primeiro seguido pela vista. (No cdigo voc tambm pode indicar que uma instncia especfica deve ser seguida.) Normalmente, o personagem deve ser capaz de andar um pouco sem a vista mover. Somente quando o personagem se aproxima do limite da vista, deve mudar a vista. Voc pode especificar o tamanho do limite que deve permanecer visvel em torno do objeto. Finalmente, voc pode limitar a velocidade com que a vista move. Isso pode significar que o personagem pode andar para fora da tela, mas deixa a jogabilidade muito mais suave. Use -1 se pretende que o vista mova instantaneamente. Fontes Quando voc quer desenhar o texto em seu jogo deste texto escrito em uma fonte Arial de 12 pontos. Para fazer textos mais extravagantes voc provavelmente vai querer usar fontes diferentes. Para usar fontes diferentes voc deve criar recursos de fontes. Em cada recurso de fonte que voc especificar um determinado tipo de letra que pode ser usado em seu jogo usando o recurso para definir um tipo de letra. Para criar um recurso de fonte no seu jogo, utilize o item Create Font no menu Resources ou use o boto correspondente na barra de ferramentas. O janela a seguir ir aparecer.

Como sempre, voc deve dar um nome ao seu recurso de fonte. Em seguida, voc pode escolher o nome da fonte. Tambm pode indicar o seu tamanho e se ser em negrito e / ou itlico. Perceba que as grandes fontes gastam uma grande quantidade de memria para armazenar. Ento, aconselhamos a no usar fontes com um tamanho maior do que 32. ( possvel dimensionar as fontes ao executar o jogo.) Um exemplo do tipo de letra indicado mostrado na parte inferior. Uma fonte tipicamente consiste de 256 caracteres, numeradas de 0 a 255. Mas, em geral voc usa apenas uma pequena parte destes. Assim o padro em uma fonte somente os caracteres de 32 at 127 so armazenados na fonte. Os personagens mais voc guardar na fonte mais memria que vai usar. Voc pode alterar o intervalo de caracteres utilizados. Para ver o ndice de cada caractere em que voc pode usar o Mapa de caracteres que podem ser encontrados no menu Iniciar do Windows em Acessrios / Ferramentas do Sistema. Algumas sequncias padres podem ser indicadas atravs dos botes: A distncia normal de 32 at 127, o intervalo total entre 0 at 255, a gama de dgitos que contm apenas os 10 dgitos, e o intervalo de Cartas que contm todas as letras maisculas e minsculas. Outros intervalos podem ser usadas por digitao no ndice de caracteres primeiro e ltimo. Se um caractere no est no intervalo substitudo por um espao. Normalmente voc tem um grande nmero de diferentes tipos de letras instaladas no seu computador e existem sites onde voc pode baixar centenas delas. O problema que se voc us-los em seu jogo e ento dar o seu jogo para algum que jogar h uma grande chance de que a outra pessoa no tem as mesmas fontes instaladas em seu computador. Para evitar isso, o Game Maker incorpora todas as fontes que voc deseja usar no arquivo do jogo, mas s nos jogos independentes. Portanto, se voc d um jogo independente para algum voc no precisa fornecer os arquivos fonte. Mas se voc d a algum a verso editvel do seu jogo e usar fontes fantasia, melhor voc tambm proporcionar pessoa os arquivos de fonte correto.

Caminhos Em jogos mais avanados, muitas vezes voc quer deixar certas instncias seguirem caminhos. Mesmo que voc indique-o por exemplo utilizando eventos do temporizador ou cdigo, isso muito complicado. O recurso caminho um mecanismo mais fcil para isso. A idia bastante simples. Voc define um caminho, chama-o. Em seguida, voc pode colocar uma ao no evento de criao do objeto para dizer ao objeto para seguir o caminho particular. Este captulo ir explicar isso em detalhes. Definindo caminhos Para criar um caminho em seu jogo, escolha Create Path a partir do menu Resources. A janela a seguir ir aparecer (no exemplo j acrescentamos um pequeno caminho).

No canto superior esquerdo da janela, voc pode definir o nome do caminho, como de costume. Abaixo voc encontra os pontos que definem o caminho. Cada ponto tem tanto uma posio e uma velocidade (indicado com o SP). Dependendo de como voc usar o caminho, a posio ou absoluta, ou seja, a instncia para que mais tarde voc vai usar o caminho para segui-lo naquele lugar especfico, ou relativo, ou seja, a instncia ser sempre iniciar no primeira posio no caminho e siga o caminho de l. A velocidade deve ser interpretada como se segue. Um valor de 100 significa a velocidade inicial dada para o caminho quando atribu-lo instncia. Um valor mais baixo reduz a velocidade, um valor maior aumenta (de forma que indica a porcentagem da velocidade real). Velocidades sero interpoladas entre os pontos, ento a velocidade muda gradualmente. Para adicionar um ponto aperte o boto Add. A cpia feita do ponto atualmente selecionado. Agora voc pode mudar a posio e a velocidade real, alterando os valores nas caixas de edio. Sempre que voc selecionar um ponto na lista, voc tambm pode

alterar os seus valores. Pressione Insert para inserir um novo ponto anterior ao atual, e Delete para apagar o ponto atual. No canto direito da janela voc vai ver o caminho real. O ponto vermelho indica o ponto de controle selecionado. Os pontos azuis so os outros pontos de controle. O quadrado verde indica a posio de inicio do caminho. Voc tambm pode alterar o caminho usando o mouse. Clique em qualquer lugar na imagem para adicionar um ponto. Clique em um ponto existente e arraste para alterar a sua posio. Quando voc segura o <Shift> ao clicar em um ponto, voc pode inserir um ponto. Finalmente, voc pode usar o boto direito do mouse para remover pontos. (Note que voc no pode alterar a velocidade dessa maneira.) Normalmente os pontos vai ser alinhada com uma grade. Voc pode alterar as configuraes da grade na barra de ferramentas superior. Aqui voc tambm pode indicar se a grade deve ser visvel ou no. Se voc quiser precisamente a posio de um ponto, segure a tecla <Alt> ao adicionar ou mov-lo. Voc pode influenciar a forma do caminho de duas maneiras. Primeiramente voc pode usar o tipo de conexo. Voc pode escolher as conexes de linha reta ou um caminho suave. Em segundo lugar, voc pode indicar se o caminho tem que ser fechado ou no. Na barra de ferramentas h uma srie de controles importantes. Da esquerda para a direita, tem o seguinte significado. O primeiro boto indica que voc est pronto e quer fechar a janela, mantendo as alteraes. (Se voc quiser desfazer as alteraes, pressione o X para fechar a janela e indicar que voc no deseja salvar as alteraes.) Em seguida, h o boto para desfazer a ltima alterao. O seguinte conjunto de botes da barra de ferramentas permite que voc a limpe o caminho, inverta a ordem em que o caminho percorrido, mudar o caminho, espelha na horizontal, flipa na vertical, gir-lo e dimension-lo. Em seguida, h botes para mudar a vista (no o caminho em si, a rea de visualizao indicado na barra de status na parte inferior) e ao centro vista. Como j indicado acima, voc pode definir o seguinte valores travar e se mostra a grade. Finalmente, h um boto para indicar se voc quer ver uma room particular como plano de fundo para o caminho. Usando isso, voc pode facilmente colocar o caminho em um lugar especial na room, por exemplo, em uma pista de corrida, para que mais tarde as instncias seguiro a rota correta. (Isto s faz sentido quando voc usar caminhos absolutos, veja abaixo). Atribuindo caminhos a objetos Para atribuir um caminho para uma instncia de um objeto, voc pode colocar a ao caminho em algum evento, por exemplo, no caso da criao. Nesta ao, voc deve especificar o caminho a partir do menu suspenso. Existem alguns valores mais voc pode fornec-los. Voc deve indicar o caminho que deve ser seguido e a velocidade em pixels por passo. Quando a velocidade for positivo, a instncia comea no incio do caminho. Se for negativa ela comea no final. Lembre-se que quando voc define o caminho, voc especifica a velocidade real em relao a essa velocidade indicada. H tambm uma ao para mudar a velocidade com que o caminho executado. Voc pode, por exemplo, usar isso para deixar um instncia, retardar ou acelerar no seu caminho. Note que a velocidade normal da instncia ignorado (de fato definido como 0), quando executa um

caminho. Tambm coisas como a gravidade e o atrito no influenciam o movimento ao longo de um caminho. Em seguida, voc especificar o comportamento final, isto , o que deve acontecer quando o fim do caminho atingido. Voc pode optar por parar o movimento no final do caminho. Voc tambm pode reiniciar o caminho desde o incio, ou seja, a instncia volta para a posio em que o caminho foi iniciado e executa o caminho novamente. Uma terceira opo para reiniciar a partir da posio atual, ou seja, a instncia segue o caminho de novo, mas agora com esta nova posio de partida (este o mesmo quando o caminho fechado). Finalmente, voc pode optar por inverter o movimento, fazendo com que a instncia volta ao longo do caminho. Observe que tambm no final do caminho um evento pode acontece, veja abaixo. Finalmente, voc pode indicar se o caminho deve ser absoluto ou relativo. Um caminho absoluto executado no lugar onde ele est definido. A instncia colocado na posio de incio e moveu de l (fim da posio quando a velocidade negativa). Isto , por exemplo, til quando voc tem uma pista de corrida em que voc definiu o caminho. Quando voc escolhe relativo as instncias iniciam a execuo do caminho de sua posio atual. Isso til quando uma instncia deve fazer um movimento local. Por exemplo, naves espaciais no jogo de space invaders pode fazer uma curva particular de sua posio atual. Quando voc deseja colocar a instncia em um ponto diferente no seu caminho voc pode usar a ao para definir a posio do caminho. Uma posio do caminho sempre se situa entre 0 e 1, 0, indicando a posio de incio e 1 a posio final sobre o caminho. Observe que em cada passo a varivel de direo automaticamente ajustada para a direo correta ao longo do caminho. Voc pode usar esta varivel para escolher a orientao correta para a sprite. Quando voc usa scripts ou pedaos de cdigo voc tem mais controle sobre a maneira que o caminho executado. Existe uma funo para iniciar um caminho para uma instncia. A varivel path_position indica a posio atual do caminho (entre 0 e 1, como indicado acima). A varivel path_speed indica a velocidade ao longo do caminho. A varivel path_scale pode ser utilizada para dimensionar o caminho. Um valor de 1 o tamanho original. Um valor maior indica que o caminho feito maior, um valor menor torna menor. A varivel path_orientation indica a orientao que o caminho executado (em graus sentido anti-horrio). Isso permite que voc execute o caminho em uma orientao diferente (por exemplo, movendo para cima e para baixo ao invs de esquerda e direita). H tambm uma varivel para controlar o comportamento final. Finalmente, existem muitas funes para pegar as propriedades de caminhos (por exemplo, o X e Y de coordenar determinadas posies) e h funes para criar caminhos. Existem ainda funes que criam caminhos livres de coliso para uma instncia para atingir um determinado objetivo. Consulte as sees, mais tarde, GML para obter mais detalhes sobre este assunto. Voc pode perguntar o que acontece quando a instncia colide com outra instncia, enquanto ele segue um caminho. Basicamente, o mesmo acontece quando a instncia se move, com uma velocidade. Quando h uma instncia slida, a instncia colocada de volta em sua posio anterior. Quando ambas as instncias no so slidas elas so colocados em suas novas posies depois os evento(s) de coliso so executadas e verificado se a coliso foi resolvido. Se no e outra instncia slida a instncia ir parar, como deveria (supondo que haja um evento de coliso definido). Alm disso, a varivel

path_position no aumentado. Quando a instncia bloqueada desaparece a instncia ir continuar a seguir o seu caminho. Para lidar com as colises a varivel path_positionprevious pode ser til. Ele mantm a posio anterior para o caminho e voc pode definir a posio caminho para essa varivel, para evitar o avano ao longo do caminho. O evento caminho Como descrito acima, voc pode indicar o que deve acontecer quando a instncia chega ao fim do caminho. Neste momento tambm um evento Fim do Caminho (End of Path) ocorre. Voc pode encontr-lo sob os eventos Outros (Other). Aqui voc pode colocar aes. Por exemplo, voc pode querer destruir a instncia, ou deix-la iniciar um novo (diferente) caminho. Linha do Tempo Em muitos jogos certas coisas devem acontecer em determinados momentos no tempo. Voc pode tentar conseguir isso usando eventos de alarme, mas quando as coisas ficam muito complicadas isso no funciona mais. O recurso de linha do tempo que serve para isso. Em uma linha do tempo voc especifica as aes que devem acontecer em determinados momentos no tempo. Voc tambm pode usar todas as aes que esto disponveis para os diferentes eventos. Depois de criar uma linha do tempo voc pode atribu-la a uma instncia de um objeto. Esta instncia ir ento executar as aes indicadas nos momentos do tempo. Vamos explicar isto com um exemplo. Suponha que voc quer fazer um guarda. Este guarda deve avanar 20 passos de tempo para a esquerda, depois 10 para cima, 20 para a direita, 10 para baixo e depois parar. Para alcanar este objetivo de fazer uma linha do tempo onde voc comea com a definio de um movimento para a esquerda. No momento 20 voc define um movimento para cima, no momento 30 um movimento para a direita, no momento 50 um movimento para baixo e no momento 60 voc para o movimento. Agora voc pode atribuir essa linha do tempo para o guarda e o guarda ir fazer exatamente o que voc planejou. Voc tambm pode usar uma linha do tempo para controlar o jogo globalmente. Criar um objeto controlador invisvel, crie uma linha do tempo que em certos momentos, cria inimigos, e atribu-lo ao objeto controlador. Se voc comear a trabalhar com ele voc vai descobrir que um conceito muito poderoso. Para criar uma linha do tempo, escolha Create Time Line a partir do menu Resources. A janela a seguir ir aparecer.

Parece um pouco como a janela de propriedades do objeto. Na esquerda voc pode definir o nome e h botes para adicionar e modificar momentos na linha do tempo. Em seguida, h a lista de momentos. Essa lista especifica os momentos em passos de tempo em que a ao atribuda(s) vai acontecer. Depois, h a lista de aes familiares para o momento escolhido e, finalmente, h o conjunto total de aes disponveis. Na esquerda voc pode usar os seguintes botes: Add. Utilize esta opo para adicionar um momento para a linha do tempo. Voc deve indicar o momento, que o nmero de passo desde que a linha do tempo foi iniciada. Agora voc pode arrastar as aes para a lista de eventos como objeto. Change. Use este boto para mudar o tempo at o momento selecionado. Delete. Use este boto para apagar um momento ou uma srie de momentos. Voc deve indicar o intervalo de tempo do primeiro momento para excluir e o ltimo. Todos os momentos entre eles sero excludos. Clear. Use este boto para limpar toda a lista de momentos. Shift. Use este boto para mudana de um intervalo de tempo para um novo momento. Voc deve indicar o incio do intervalo, o fim do intervalo, e o intervalo de tempo novo para que o incio do intervalo deve ser mudado. Quando diferentes momentos tornam-se iguais as suas listas de ao sero mescladas. Duplicate. Isso quase o mesmo que o boto de mudana, mas neste caso, uma cpia dos momentos so feitas. Spread. Use este boto para espalhar uma srie de momentos, acrescentando tempo entre eles ou coloc-los aproximados atravs da remoo de tempo entre eles. Voc especifica o incio e o fim do intervalo e os percentuais de propagao. Uma percentagem de 100 significa que nada muda. Para valores menores que 100 so movidas os momentos mais prximos e para valores maiores que 100 so movidos mais afastados. Por exemplo, se voc tem momentos em passos de tempo 5, 8 e 12, e voc indicar como intervalo 5:12 e uma percentagem de 200, os momentos se mover para passos de tempo 5, 11 e 19. (Os intervalos entre elas dobraram.) Quando diferentes momentos tornam-se iguais as suas listas de ao sero mescladas.

Merge. Use este boto para mesclar um nmero de momentos em uma s. Voc especifica o incio e o fim do intervalo e todos eles sero mesclados no momento da partida.

Certifique-se de no criar momentos de tempo negativo. Eles nunca sero executados. H tambm um boto Show Information que mostra a linha do tempo de forma legvel. H uma srie de aes relacionadas s linhas do tempo. Voc pode encontr-los na seo Mais aes principais. Scripts Game Maker tem uma linguagem de programao embutida chamada GML. Uma vez que voc ficar mais familiarizado com Game Maker e querer us-lo em sua plenitude estendida, aconselhvel comear a aprender a usar essa linguagem. Para obter mais detalhes na linguagem GML ver a parte 4 desta documentao. H duas maneiras de usar a linguagem. Primeiramente voc pode criar scripts. Estes so pedaos de cdigo para que voc d um nome. Eles so mostrados na rvore de recursos e podem ser salvas em um arquivo e carregados de um arquivo. Eles podem at mesmo ser usado para formar uma biblioteca que estende as possibilidades do jogo. Alternativamente, voc pode adicionar um cdigo de ao para algum evento e como uma pedao de cdigo. Adicionando cdigo de aes funciona exatamente da mesma maneira como a adio de scripts exceto por duas diferenas. Cdigo de aes no tm um nome e no pode usar argumentos. Tambm eles tm o campo bem conhecido para indicar quais objetos a ao deve ser aplicada. Para o resto voc digitar o cdigo exatamente da mesma forma em scripts. Recomendamos que voc use scripts para tudo, mas simples pedaos de cdigo como Game Maker tem muitos mais recursos que tratam de scripts. Assim, concentram-se mais sobre scripts neste captulo. Como afirmado anteriormente, um script escrito com cdigo em GML (a linguagem de programao embutida) e destina-se a executar uma tarefa especfica. Os scripts podem levar variveis de entrada chamadas de argumentos (s vezes chamada de parmetros). Para executar um script em qualquer caso, voc pode usar a ao de script. Na ao de script voc especifica o script que pretende executar, juntamente com os argumentos acima de cinco. Voc tambm pode executar um script a partir de um pedao de cdigo (script diferente) da mesma forma que voc chama uma funo do GM. Nesse caso voc pode usar at 16 argumentos. Os scripts podem retornar um valor. Isso muitas vezes usado para construir mtodos de clculo (mtodos matemticos). A palavra-chave return usada para isso. Nenhum cdigo aps a palavra-chave return executado! Quando um script retorna um valor, voc tambm pode us-lo como uma funo ao fornecer valores em outras aes. Scripts so extremamente teis para ampliar as possibilidades de Game Maker. Isso exige que voc crie seus scripts com cuidado. Os scripts podem ser armazenadas em arquivos que podem ser adicionados ao seu jogo. Para importar um arquivo de script, use o item Import scripts no menu Scripts. Para salvar seus scripts, sob a forma de um arquivo use Export scripts. Bibliotecas de script so arquivos de texto simples (embora eles tenham a extenso. GML). De preferncia, no edite-os diretamente, porque eles tm uma estrutura especial.

Para criar um script em seu jogo, escolha Create Script do menu Resources. Um editor de cdigo ir aparecer que ser descrito a seguir. O editor de cdigo Ao criar ou editar um script (ou um cdigo de ao) a seguinte janela de editor de cdigo ir aparecer (no exemplo j acrescentamos um pequeno script que calcula o resultado de dois argumentos).

No canto superior direito voc pode indicar o nome do script. Voc deve dar a todos os seus scripts um nome com letras minsculas. Certifique-se que o nico nome que consiste em letras, dgitos e o smbolo _. No deve comear com um dgito. Desta forma voc pode usar o script mais tarde como uma funo no cdigo. No topo tem uma barra de ferramentas com alguns botes teis. Da esquerda para a direita tem o boto OK para fechar o editor, salvando as alteraes, os botes para carregar o script de um arquivo de texto, salv-lo em um arquivo de texto e imprimi-lo. Em seguida, h botes desfazer e refazer. O editor, basicamente, lembra-se de todas as mudanas que voc fez e pode desfaz-las (ou refazer as alteraes desfeitas). Voc pode alterar o nmero mximo de desfazer operaes nas preferncias. Aqui voc pode tambm indicar se quer desfazer o grupo de operaes (como por exemplo, que digitar uma linha de texto podem ser desfeitas em uma nica etapa) ou que cada tecla salva separadamente. Voc pode usar <Ctrl> + Z para desfazer e <Ctrl> + <Shift> + Z para refazer. Depois disto, existem botes para recortar, copiar e colar texto, como voc deve estar familiarizado. Os dois ltimos botes so para localizar e substituir e para verificao de cdigo. Estes sero explicados mais adiante em detalhes.

Abaixo da barra de ferramentas h uma rea onde voc pode digitar o texto. esquerda, h os nmeros de linhas. (Voc pode mudar desligando com a tecla F9.) A linha com o cursor sobre ela est marcado em negrito. A barra vermelha escura atrs dos nmeros de linha indica que estas linhas foram alteradas. Voc vai perceber que voc pode digitar o texto em qualquer parte das linhas. Assim, uma linha no tem realmente um fim. Esta tende a ser til quando o alinhamento de texto. Existem muitas possibilidades de edio, que ser descrito abaixo. Na parte inferior h a barra de status. Esta mostra, da esquerda para a direita o nmero da linha actual, o nmero total de linhas e posio do cursor. Se voc est em Inserir ou modo Sobrescrever. (No modo de substituir tambm o cursor chnanges para deixar claro que voc est substituindo o texto existente.) Em seguida, h o tamanho do ponto para a fonte utilizada. Voc pode usar o F7 e F8 para diminuir ou aumentar o tamanho da fonte. (Voc tem mais controle sobre o tamanho da fonte e do tipo na preferncia.) Ferramentas de edio O editor tem muitas possibilidades de edio. Alguns destes tambm podem ser acessados atravs do menu suspenso que aparece quando voc pressiona o boto direito do mouse. Aqui esto os mais importantes: Mltiplos desfazer e refazer, quer por Pressione a tecla ou em grupos As teclas de seta movem em torno do texto. Use <Ctrl> com a seta esquerda e direita para mover para o incio da palavra anterior ou posterior. Use <Ctrl> com o para cima e para baixo, para tambm rolar o texto. Segure a tecla <Shift> pressionada para selecionar o texto. Clique duas vezes no nmero da linha para selecionar a linha completa. Os tecla Home vai para o incio da linha e a tecla End vai para o fim da linha. Com <Ctrl> se deslocam para o incio e o fim do script. Segure a tecla <Shift> pressionada para selecionar o texto. Pode percorrer o texto com a roda do mouse. Com <Ctrl> o cursor desloca-se com o texto. Segure a tecla Shift pressionada para selecionar o texto. Recuo automtico inteligente que se alinha com a linha anterior, quando voc usa a tecla Enter da tecla de Backspace (pode ser configurado nas preferncias). Tabulao Inteligentes em que recua at o primeiro espao vazio nas linhas anteriores (pode ser configurado nas preferncias). Use <Ctrl> + I para recuar as linhas selecionadas e <Shift> + <Ctrl> + I para desfazer o recuo a linhas selecionadas. Mantenha <Ctrl> com a tecla Backspace ou Delete para apagar at o incio da palavra anterior ou posterior. Voc pode arrastar uma seleo com o mouse. (Use <Ctrl> para copi-lo.) O novo local imediatamente mostrado. Cortar, copiar e colar texto entre as formas de script e outros programas. Use F12 para abrir o script ou o recurso cujo nome est na posio do cursor.

Cores do cdigo Como voc deve ter notado, as partes do texto script so coloridas. O editor sabe sobre objetos existentes, variveis e funes embutidas, etc. A cor na codificao ajuda muito a evitar erros. Em particular, voc pode ver imediatamente se tiver algum nome incorreto ou usar uma palavra-chave como uma varivel. Se voc no gosta das cores do cdigo, em

Preferncias voc pode ligar e desligar (voc tambm pode usar F10). Nas preferncias, voc tambm pode mudar a cor para os diferentes componentes do cdigo. Ajuda em funo e varivel Game Maker contm vrias funes internas e variveis e voc adicionar seus prprios recursos e scripts para isso. Portanto, pode ser difcil lembrar de todos eles. Felizmente, o editor de ajuda com isso. Quando voc digitar parte de um nome (pelo menos dois caracteres) e esperar um pouco, mostrada uma lista de todas as possibilidades. Por exemplo, como segue:

Voc pode continuar a escrever e a lista vai se adaptar. Voc pode usar as teclas para cima e para baixo para percorrer a lista e pressione Enter para substituir o texto que voc est escrevendo com a funo selecionada ou nome da varivel. Voc pode mudar esse recurso dentro e fora nas preferncias. Voc pode sempre forar para que lista aparea pressionando <Ctrl> + Space. A segunda forma de ajudar dado quando voc est digitando os argumentos para uma funo. Neste caso, na barra de status na parte inferior da funo com a sua argumentao dada. O argumento atual que voc est digitando mostrado em negrito. Desta forma, voc nunca vai esquecer argumentos ou ficar com a ordem errada. Localizar e substituir comum que voc deseja encontrar alguma parte do texto em seu cdigo ou substituir algum texto por outro. Para este fim pressione o boto Localizar na barra de ferramentas. Um painel ser exibido direita da janela, como segue:

Voc pode digitar a seqncia para encontrar no topo. Observe que o cdigo de todas as ocorrncias da seqncia encontradas so imediatamente mostrados com um fundo amarelo. (Voc pode desligar isto nas preferncias.) Como de costume, voc pode indicar se a pesquisa deve ser case sensitive (que normalmente o que voc quer como varivel e nomes de funo porque no GML tambm so case sensitive) e se voc quiser procurar somente por palavras inteiras. Observe que o editor se lembra de suas pesquisas mais recentes. Com os botes com as setas azuis voc pode agora mover para a ocorrncia anterior, posterior, a primeira, e a ltima da busca pela seqncia. Ser selecionado o texto de tal forma que voc pode, por exemplo exclu-lo. Quando voc deseja substituir ocorrncias, digite tambm um texto na caixa substituir. Agora voc pode usar os botes para substituir a ocorrncia anterior, a seguinte, a primeiro, a ltimo, ou todas as ocorrncias que encontrar no texto. Lembre-se voc sempre pode usar Desfazer para desfazer as substituies. Trechos de cdigo Os trechos de cdigo so pequenos pedaos de cdigo que voc usa frequentemente. Voc pode adicion-los no cdigo atravs do menu trecho. Para este fim pressione F2. Um menu aparece a partir do qual voc pode selecionar o trecho. Ser inserido na posio do cursor em seu cdigo. Alguns pedaos so compostos por letras maisculas. Estes devem ainda ser substitudos por voc. A primeira est marcada para substituio. Para substituir outra, simplesmente clique duas vezes sobre ele. Voc pode definir seus prprios trechos de cdigo, se quiser. Os trechos so armazenadas no snippets.txt arquivo na pasta em que o Game Maker est instalado. Voc pode editar este arquivo com qualquer editor de texto. Cada trecho est em uma linha separada e no deve haver linhas em branco. Ele comea com o nome do trecho

(mostrada no menu), seguido por dois pontos (:) seguido do trecho real. Use # para uma nova linha e colocar o texto que deve ser selecionado primeiro entre smbolos |. Veja os exemplos que j esto no arquivo. (Melhor fazer um backup dele antes de comear a alter-lo.) A verificao de erros Na barra de ferramentas no topo h um boto com o qual voc pode mudar para verificao de erro ligado ou desligado. Quando a verificao de erros est ligada, Game Maker testa constantemente o cdigo que voc est digitando e relata o primeiro erro que encontra na parte inferior da janela. Tambm o nmero da linha, para a linha com o erro desenhado em vermelho. Voc pode clicar sobre a mensagem de erro para ir para a linha correta e na posio para corrigir o erro. Note que nem todos os aspectos podem ser testados nesta fase, mas a sintaxe do seu script ser testada, em conjunto com a existncia de funes usadas. Quando voc comear a escrever um script, a verificao de erros pode ser irritante ento voc pode deslig-lo. Mas quando o script est quase pronto melhor lig-lo para corrigir todos os erros. Observe que tambm a codificao de cor ir ajud-lo a detectar erros. Finalmente, quando voc colocar o cursor em um parntese, o editor ir mostrar-lhe a abertura correspondente ou fechamento do parntese. Se no puder encontr-lo, mostrado em vermelho. (Voc pode desliga-lo nas preferncias.) Depurao Com a criao de scripts voc pode facilmente cometer erros. Sempre teste os scripts usando o boto de verificao de erro. No entanto, ele no vai pegar todos os erros. Ento voc vai precisar para executar o jogo para testar seu cdigo. Quando ocorre um erro durante a execuo de um script esta relatado, com a indicao do tipo de erro, o script ou ao que ocorre na linha e posio. Raramente voc vai ver um popup com o texto "erro inesperado que ocorreu durante o jogo". Esta mensagem de erro indica que algum problema ocorreu no Windows ou no hardware. Muitas vezes, a razo para isso a recursividade infinita, falta de memria ou hardware insuficiente, drivers ou firmware. De um modo geral, esses erros tm a ver com problemas fora do ambiente do Game Maker. Se voc precisa verificar as coisas com mais cuidado, voc pode executar o jogo no modo de depurao. Agora aparece uma janela no qual voc pode monitorar diversas informaes em seu jogo.

No menu Run voc pode pausar o jogo, execute-o passo a passo e at mesmo reinici-lo. No menu Watch voc pode ver o valor de certas expresses. Use Add ao tipo em alguma expresso cujo valor mostrado em cada passo do jogo. Desta forma voc pode ver se seu jogo est fazendo as coisas da maneira certa. Voc pode assistir a muitas expresses. Voc pode guard-las para uso posterior (por exemplo, depois de feita uma correo ao jogo). No menu Tools voc encontrar itens para ver mais informaes. Voc pode ver uma lista de todas as instncias no jogo, voc pode assistir a todas as variveis globais (bem, as mais importantes) e as variveis locais de uma instncia (use o nome do objeto ou a identificao da instncia). Voc tambm pode ver as mensagens que voc pode enviar a partir do seu cdigo usando a funo show_debug_message (str). Finalmente, voc pode dar os comandos do jogo e alterar a velocidade do jogo. Se voc fizer jogos complicado voc realmente deve aprender a utilizar as opes de depurao.

Pacotes de Extenso

Esta funcionalidade s est disponvel na verso Pro do Game Maker. Pacotes de extenso ampliar as possibilidades do Game Maker. Um pacote de extenso pode adicionar um conjunto de aes para Game Maker ou ele adiciona um nmero de funes adicionais e constantes para a linguagem GML construdo no Game Maker. Quando os pacotes de extenso esto disponveis para voc, ajude sobre eles colocado no menu Ajuda. Ao clicar duas vezes sobre o item de recurso Extension Packages a janela que se segue apresentada:

Nesta janela voc pode indicar que os pacotes de extenso deve ser usado no jogo. esquerda h uma lista de pacotes usados e direita a lista de pacotes disponveis. Para mover um pacote a partir de uma lista para a outra, basta selecion-lo e pressione o boto entre a lista. Ao selecionar um pacote uma breve descrio dada na parte inferior. Mais ajuda est disponvel clicando no boto Help. Pacotes de extenso so uma parte extremamente poderosa do Game Maker. Alguns pacotes de extenso so fornecidos com o Game Maker, mas muitos mais estaro disponveis atravs do site. Para instalar novos pacotes ou desinstalar os j existentes, pressione o boto Install. A janela abaixo mostrado:

Voc ver uma lista de todos os pacotes de extenso instalados. Ao selecionar um pacote e clicando no boto Uninstall o pacote removido do sistema. Instalao dos pacotes so distribudos sob a forma de um arquivo .Gex. Voc pode encontrar vrios pacotes, em nosso site que voc pode ir clicando no boto Find More. Uma vez que voc baixou como arquivo um pacote no seu computador, pressione o boto Instalar e selecione o arquivo de pacote. Nessa altura, ser instalado no sistema. Se voc quiser criar seus prprios pacotes de extenso, por favor, verifique as informaes que esto disponveis no http://www.yoyogames.com/extensions. Exportao e importao de recursos Esta funcionalidade s est disponvel na verso Pro do Game Maker. Nota: Importao e exportao de recursos apenas para usurios experientes. Leia atentamente esta seco antes de utilizar esses recursos. Alm disso, faa sempre uma cpia de segurana de seu jogo antes de importar recursos. s vezes voc deseja copiar certos recursos (sprites, sons, rooms, etc) de um jogo para outro jogo. Por exemplo, quando voc quer criar um novo jogo usando as mesmas sprites e sons de um outro jogo. Ou quando est trabalhando junto em um jogo. Um de vocs pode ter criado algumas rooms adicionais que voc deseja importar, no outro jogo. Para este fim o Game Maker tem comandos de importao e exportao de recursos. Exportando recursos Para exportar recursos, escolha Export Resource a partir do menu File. Primeiramente, verificado se todos os recursos tm nomes diferentes. Como os recursos em um jogo so ligados aos outro jogo pelo nome, essencial que todos os recursos tenham nomes diferentes. Se no, voc recebe uma mensagem de erro e os recursos no podem ser exportados. Caso contrrio, um seletor de arquivo mostrado no qual voc pode indicar o nome do arquivo no qual voc deseja exportar os recursos. Esses arquivos devem terminar com a extenso .GMRES. A janela que se segue apresentada:

Nesta janela voc pode indicar que os recursos devem ser exportados. Por padro todos so exportados, mas voc pode selecionar os tipos de recursos que voc deseja exportar. Cuidados devem ser tomados quando exportar objetos, linha do tempo, ou quartos. Estes referem-se a sprites, sons, triggers, etc Por isso, se voc no exportar estes outros recursos, voc deve ter certeza de que esses outros recursos j existentes no jogo em que voc est importando os recursos (com os mesmos nomes ). Se voc no tem certeza, melhor exportar tudo. Importar recursos Assim que tiver um arquivo que contm recursos voc pode import-los em um jogo diferente, escolhendo Import Resources no menu File. Primeiramente, ele ser marcado se todos os recursos tm nomes diferentes. Novamente, porque os recursos em um jogo so ligados alguns em outros jogo pelo nome, essencial que todos os recursos tenha nomes diferentes. Se no, voc recebe uma mensagem de erro que os recursos no podem ser importados. Caso contrrio, um seletor de arquivo mostrado no qual voc pode indicar o nome do arquivo do qual deseja importar os recursos. Esses arquivos terminam com a extenso. GMRES. Depois de tudo a janela de propriedade abertas so fechadas. Isso necessrio para que os recursos importados possam substituir os existentes. Em seguida, a janela que se segue apresentada:

Todos os tipos de recursos do arquivo so mostrados. (Os que no foram exportadas e ficam acinzentados.) Voc pode selecionar quais desses recursos que voc deseja importar. Na maioria das vezes voc deseja importar todos, mas s vezes voc quer fazer uma seleo. Tenha cuidado ao importar objetos, rooms, ou linha do tempo, enquanto no forem importados outros recursos. Como indicado anteriormente, isto pode levar problemas se os recursos a que se referem no existem em seu jogo sob o mesmo nome. Nesse caso, eles sero substitudos por recursos no-existentes. (Por exemplo, nas rooms isso que significa as instncias correspondentes sero removidos.) Quando os recursos no arquivo tem o mesmo nome dos recursos do jogo um conflito de nomes aparece. Voc pode indicar o que deve ser resolvido. O padro que voc mantenha o recurso que foi alterado passado. No entanto, pode tambm optar por manter sempre o original no jogo ou sempre substitu-lo com o recurso no arquivo. Uma quarta opo manter os dois. S use isto quando for absolutamente necessrio, porque seno voc vai acabar com vrios recursos com o mesmo nome que pode levar a conflitos quando se referir a eles. Quando voc importar recursos em um jogo vazio, melhor optar por substitu-los sempre. (Isto pode soar estranho, mas, por exemplo, caso contrrio as configuraes do jogo global no ser substitudo como um jogo novo e vazio uma data mais recente!) Finalmente, voc pode indicar se quer colocar os novos recursos (ou seja, aqueles que j no ocorreram) em um novo grupo. Isto pode ser til para distinguir (visualmente) os recursos importados dos j existentes. Se voc marcar esta caixa os novos recursos sero colocados em um grupo. O nome desse grupo o nome do arquivo de importao. Uma vez que voc pressionar OK os recursos so adicionados ao jogo, substituindo os recursos existentes com o mesmo nome, quando necessrio. Voc vai v-los aparecer no seletor do recurso na esquerda. Advertncias e Observaes

Importao e exportao de recursos um mecanismo poderoso, especialmente quando voc est trabalhando em um jogo com vrias pessoas. No entanto, se voc no entender o que est fazendo isso pode levar a erros e frustraes. Aqui esto alguns avisos importantes que voc deve ler e compreender. Sempre faa uma cpia de backup do seu jogo antes de importar recursos. Caso contrrio, seu trabalho duro pode ser perdida. Voc no pode desfazer a importao de recursos. Certifique-se sempre depois de uma importao se tudo foi importado corretamente. Tambm rode imediatamente o jogo para ver se tudo funciona. Caso contrrio, retornar sua cpia de backup. Observe que os ndices de recursos, instncias e tiles, mudana mais provvel no processo para garantir que elas permanecem nicas. Isto vai causar problemas quando se referem a recursos (ou instncias) por nmero. Tambm ir causar problemas se voc assumir nada sobre a ordem em que as instncias so criadas. Observao de que os recursos sero adicionados na ordem em que so dadas na lista/rvore de recursos. Novos recursos sero adicionados no final. No entanto, a estrutura do grupo est mantida. Isso normalmente o que voc espera, mas em alguns casos raros, voc pode ter recursos para mover para um local diferente. Por exemplo, quando voc tem uma room de incio, uma room final e algumas rooms no meio, quando algum adiciona algumas rooms (entre elas) e voc exporta estes e import-los no jogo original, eles vo aparecer no final (porque so novos). Em seguida, voc deve mover a room final para o local apropriado novamente.! Observe que as constantes e disparadores s globalmente armazenam informaes sobre quando foram modificada. Ento, quando voc muda uma constante ou um disparador, todos sero substitudos quando escolher Manter ltimo alterado. Para as configuraes global do jogo o mesmo mantm. Eles so ou todos, ou no, em todos os substitudos. Observe que um jogo vazio ter uma nova data em que foi modificado. Isto significa que se voc importar recursos em um novo jogo vazio, as constantes, disparadores e configuraes globais de jogo no sero importados, a menos que voc defina o nome de conflito de manipulao para sempre substituir. No retirar recursos de um jogo antes de importar os mesmos recursos de novo! Isto pode parecer uma coisa lgica a fazer, mas no vai funcionar. Uma vez que voc remover um recurso de um jogo que no existe mais. Da todas as referncias a ele se tornar indefinido. Importando o mesmo recurso mais tarde, no vai restaurar essas referncias, porque o programa no pode saber que o mesmo recurso. Mas deixar que o recurso de importao substitua os recursos. Se voc trabalhou em um jogo por um longo tempo adio e excluso de muitos recursos, til para export-lo completamente e em seguida, import-lo para um jogo vazio (com a opo de substituir sempre). O jogo vai funcionar como antes, mas ser despojado de grandes quantidades de dados inutilizados.

Publicando seu jogo Quando voc quiser distribuir o seu jogo melhor voc ter certeza que ele tem todos os ingredientes que fazem um grande jogo. Alm do jogo, voc deve fornecer informaes sobre o jogo, defina corretamente as configuraes globais do jogo, e cuide da velocidade. Esta seo fornece informaes sobre estes aspectos.

Informao do jogo Um bom jogo fornece ao jogador alguma informao sobre como jogar. Esta informao exibida quando o jogador pressiona a tecla F1 durante o jogo. O Game Maker tem um simples mecanismo embutido para fornecer a ajuda do jogo. No entanto, limitado em funcionalidade. Para criar jogos mais agradvel que melhor para criar a ajudar a si mesmo utilizando rooms especiais ou usando tela de apresentao, por exemplo pginas HTML. Para criar as informaes de um jogo simples, d duplo clique em Informaes sobre o jogo na rvore de recursos no lado esquerdo da tela. Um pequeno editor embutido aberto onde voc pode editar as informaes do jogo. Voc pode usar fontes diferentes, diferentes cores e estilos. Tambm voc pode definir a cor de fundo.

No menu Arquivo, voc tambm pode definir um nmero de opes. Padro de ajuda apresentado na janela do jogo e o jogo temporariamente interrompido. Aqui voc pode indicar para mostrar o arquivo de ajuda em uma janela separada. Neste caso voc pode indicar a legenda da informao durante o jogo. Tambm voc pode indicar a posio (use -1 para centrada) e tamanho da janela de informaes do jogo e se deve ter uma borda importante para o jogador. Voc pode forar a janela de informao para ficar em cima e voc pode indicar se o jogo deve continuar enquanto a informao mostrada. Um bom conselho fazer a informao curta, mas precisa. Claro que voc deve adicionar o seu nome porque foi voc que criou o jogo. Todos os jogos de exemplo fornecidos tm um arquivo de informaes sobre o jogo e como ele foi criado. Voc pode querer indicar na parte inferior do arquivo de ajuda que o usurio deve pressionar Esc para continuar jogando.) Se voc quiser deixar um pouco mais extravagante a ajuda, use um programa como o Word. Em seguida, selecione a parte que deseja usar e copiar e colar para mov-lo a partir do Word para o editor de informaes de jogos. Para jogos mais avanados que

voc provavelmente no vai usar esse mecanismo para tudo, porm use algumas rooms dedicadas a mostrar alguma ajuda sobre jogo. Configuraes Globais do Jogo H uma srie de configuraes que voc pode mudar no seu jogo. Elas mudam o formato da janela principal, definem algumas opes grficas, lidar com as configuraes de interao, a imagem de carregamento, constantes e as informaes sobre o criador do jogo. Tambm voc pode indicar aqui quais arquivos devem ser includos no jogos independentes e como os erros devem ser tratados. As configuraes podem ser alteradas clicando duas vezes em Global Game Settings na rvore de recursos no lado esquerdo da tela. Eles so subdivididos em um nmero de pginas com abas. (Algumas opes esto disponveis apenas no modo avanado.) As opes de grficos Neste aba voc pode definir vrias opes que esto relacionadas com o aspecto grfico do seu jogo. Normalmente til verificar os efeitos dessas opes, porque eles podem ter um efeito significativo sobre a forma como o jogo aparece. Lembre-se que diferentes usurios tm diferentes mquinas. Ento melhor se certificar de que as configuraes tambm funcionam em mquivnas de outras pessoas. Start in fullscreen mode Quando marcada o jogo executado em tela cheia, caso contrrio, ele executado em uma janela. Scaling Aqui voc pode indicar o que acontece quando a janela maior do que o quarto ou quando o jogo executado em modo de tela cheia. Existem trs opes. Voc pode indicar uma escala fixa. A sala desenhada em escala com a quantidade indicada no centro da janela ou no centro da tela. 100 indica que no h escala. Voc normalmente usa escala fixo quando as suas sprites e rooms so muito pequenas. A segunda opo a sala de tal dimenso que ele preenche a janela ou a tela, mas manter a razo de aspecto (relao entre largura e altura) da mesma. A terceira opo a escala de tal forma que a janela ou a tela completamente preenchida. Isso pode levar a distores na imagem (em particular no modo de janela quando o usurio pode redimensionar a janela). Intepolate colors between pixels Quando marcada, as cores de pixels em sprites, backgrounds, e peas que no esto alinhados com os pixels na tela sero interpoladas. Este em particular o caso quando so escalados, girado, ou colocados em posies no-inteiro. Interpolao torna o movimento mais suave, mas tambm pode dar um efeito borrado. (Tambm para os azulejos que pode levar a fissuras entre eles, se no for cuidadosamente projetado.) Color outsite the room region Quando a room no preencher completamente a janela ou tela, existe alguma rea no utilizada em torno dele. Aqui voc pode especificar a cor da rea. Allow the player to resize the game window Quando marcada no modo de janela o usurio pode alterar o tamanho da janela do jogo, arrastando com o mouse em seus cantos.

Let the game window always stay on top Quando marcada no modo de janela da janela do jogo fica sempre em cima de outras janelas. Don't draw a border in windowed mode Quando marcada no modo de janela da janela do jogo no ter uma borda ou uma barra de legenda. Don't show the buttons in the window caption Quando marcada no modo de janela a legenda janela no ir mostrar os botes para fechar a janela ou para minimizar ou maximizar. Display the cursor Se pretende que o ponteiro do mouse para ser visvel. Deslig-lo normalmente mais rpido e melhor. (Voc pode facilmente fazer com que voc prprio objeto cursor no Game Maker). Freeze the game when the form loses focus Quando marcada, sempre que o jogador traz alguma outra janela para frente (por exemplo, outro aplicativo) o jogo congela at a janela do jogo novamente obter o foco. Disable screensavers and power saving actions Quando marcada (padro) proteo de tela ou ao de poupar energia (sleep, hibernate) no ser ativado quando o jogo est em execuo. Isto importante porque estas podem destruir certos aspectos grficos do jogo (como superfcies). Resoluo Nesta aba voc pode definir a resoluo da tela em que o jogo deve ser executado. Por padro, a resoluo no alterada. Mas s vezes voc deseja executar o jogo em uma resoluo mais baixa ou voc deseja definir a frequncia do monitor, para fazer o timing certo para que o jogo funcione corretamente. Se voc quiser alterar a resoluo voc deve primeiro marcar a caixa Set the resolution of the screen. H trs coisas que voc pode mudar. Primeiramente h a profundidade de cor. Isso indica o nmero de bits usados para representar a cor de um pixel. A maioria das mquinas agora s permite 16-bit (High Color) ou 32-bit (Full Color), mas mquinas mais antigas tambm permitido para 8-bit e, por vezes, cores de 24-bit. O Game Maker s funciona corretamente em 16-bit e 32-bit color. 32-bit de cor torna mais agradvel as imagens, mas tomar mais memria e tempo de processamento. Se voc quiser que o seu jogo vai funcionar na maioria das mquinas mais velhas defina a profundidade de cor de 16-bit. Caso contrrio, use 32-bit ou no mude-o. Em segundo lugar, h a resoluo da tela, o nmero de pixels (horizontal e vertical) da tela. A alterao da resoluo til quando por exemplo, suas rooms so muito pequenas. Neste caso, poderia ajudar a reduzir a resoluo da tela. Perceba que embora este ser tambm o efeito de outros aplicativos em execuo. Isso pode dar problemas, nomeadamente com baixas resolues. Assim, em geral, melhor fazer isso apenas quando executar o jogo no modo de tela cheia. Game Maker ir alterar automaticamente a resoluo para a situao inicial quando o jogo terminado. Finalmente, voc pode alterar a frequncia de atualizao. Isto indica quantas vezes por

segundo a imagem atualizada na tela. Se a velocidade da room maior que a frequncia nem todos os passos so realmente visveis. Funciona melhor se a frequncia um mltiplo da velocidade da room. (Se voc especificar uma frequncia que muito alta ou no disponvel, a frequncia no alterado.) H tambm um ajuste aqui como Use synchronization to avoid tearing. Isso requer alguma explicao. Uma tela redesenhado vrias vezes por segundo, dependendo da frequncia de atualizao. Se uma room desenhada como meio de atualizao, o topo do tela ir continuar mostrando a imagem antiga enquanto a parte inferior mostra a nova imagem. Isso chamado de rasgar. Para evitar isso voc pode verificar essa opo. Neste caso, a imagem nova da room s copiado para a tela quando a atualizao no est totalmente dentro da janela evitando ao mximo o tempo de rasgar. A desvantagem que normalmente temos de esperar at a prxima atualizao. Isto significa que o nmero mximo de quadros limitada pela frequncia do monitor e, quando o tratamento no rpido o suficiente, a taxa de frames imediatamente cai para a metade desse nmero. Tambm pode haver um conflito entre tempo interno do jogo e da sincronizao. Se voc quiser fazer isso melhor defina a frequncia do monitor, por exemplo, 60 e tambm fazer a velocidade room 30 ou 60. Vrias outras opes Aqui voc pode definir um nmero de opes adicionais. Primeiro de tudo voc pode definir algumas teclas padro: Let <Esc> end the game Quando marcada, a tecla de escape vai fecha o jogo. Mais jogos avanados normalmente no quer que isso acontea, porque pode querer fazer algum processamento (como salvar) antes de finalizar o jogo. Neste caso, desmarque esta caixa e fornea suas prprias aes para a tecla de escape. Treat the close button as <Esc> key Quando marcado o boto para fechar da janela ir gerar um evento da tecla escape. Quando no for verificado o boto para fechar os eventos so chamados ao invs disso. Let <F4> switch between screen modes Quando marcada pressionando a tecla F1 ir exibir as informaes do jogo. Vamos alternar entre os modos de tela <F4> Quando marcada a tecla F4 ir alternar entre o modo tela cheia e janela. Let <F5> save the game and <F6> load a game Quando marcada, o jogador pode usar <F5> para armazenar a situao atual do jogo e <F6> para carregar o jogo salvo pela ltima vez. (Observe que somente os dados bsicos do jogo so armazenados. Quando voc usa recursos avanados como partculas ou estruturas de dados essas definies no so salvas e voc poder ter de criar um mecanismo para salv-los. Let <F9> take a screenshot of a game Quando marcado o jogador pode usar <F9> para criar uma imagem do jogo. Esta imagem ser colocado no arquivo screenshotXXX.png na pasta onde o jogo est funcionando, onde XXX o nmero da imagem. Ao criar vrias screenshots o nmero automaticamente aumentado.

Voc tambm pode definir a prioridade do processo de jogo. Essa prioridade indica quanto tempo do processamento reservado para o jogo. No modo normal do sistema operacional tenta dar tempo de processamento para cada processo que precisa de alguma forma razovel. Quanto maior voc coloca a prioridade mais tempo atribudo ao jogo, deixando-o executar mais suavemente e mais rpido. Mas outros processos recebem menos tempo (alem de o Windows processar tanto o mouse pode no mexer mais). Use isto com cuidado. Finalmente, voc pode definir as informaes de verso do jogo. Esta informao mostrada na helptip que aparece quando o usurio posicionar o mouse sobre o executvel do jogo. Tambm mostrado quando os usurios a clicar com o boto direito do mouse sobre o programa e escolhe propriedades e, em seguida, verso. Se voc distribuir o seu jogo o melhor preencher essa informao. Voc deve dar o seu jogo um nmero de verso que consiste em quatro partes: a verso principal, a verso menor, o nmero do lanamento e o numero da compilao. Tambm voc deve fornecer o nome da empresa (voc), o nome do produto, a informao de copyright, bem como uma descrio muito breve. Todos estes campos devem ter no mximo 64 caracteres. Carregando opes Aqui voc pode indicar o que deve acontecer durante o carregamento de um jogo. Primeiramente voc pode especificar a sua imagem de carregamento prprio. Em segundo lugar, voc pode indicar se deseja exibir uma barra de progresso do carregamento na parte inferior da imagem. Voc tem trs opes aqui. Ou nenhuma barra de carregamento apresentada, ou a barra padro exibido ou pode especificar duas imagens: a de fundo da barra de carregamento e de primeiro plano. Voc pode indicar se a barra de carregamento da frente deve ser escalado (padro) ou cortada enquanto ela se torna mais longo. No segundo caso, certifique se a imagem grande o suficiente para encher a barra. (Observe que ambas as imagens deve ser especificado no presente caso, no apenas um.) possvel indicar que o carregamento da imagem deve ser transparente. Neste caso, o pixel inferior esquerdo da imagem de fundo usado como cor transparente. (Observe que a transparncia, nomeadamente, de arquivos PNG ou GIF no levado em conta aqui!) Tambm a translucncia alfa pode ser indicado. Um valor de 0 significa totalmente transparente. Um valor de 255 significa totalmente opaco. (Ambos funcionam apenas no Windows 2000, XP ou posterior.) Em segundo lugar, voc pode indicar aqui o cone que deve ser usado para jogos independentes. Seu cones devem conter, no mnimo, um cone de 32x32, mas tambm podem conter maiores. Se voc tentar selecionar um outro tipo de cone voc receber um aviso. Finalmente, voc pode alterar id nico do jogo. Esta identificao usada para armazenar a lista de recordes e salvar arquivos do jogo. Se voc lanar uma nova verso de seu jogo e no querer substituir a lista antiga de recordes, voc deve alterar esse nmero. Erro opes Aqui voc pode definir vrias opes que se relacionam com a forma com que os erros

so relatados. Display error messages Quando marcada, mensagens de erro so mostradas para o jogador. Na verso final do jogo voc pode querer desligar esta opo. Write error messages to file game_errors.log Envie mensagens de erro no arquivo game_errors.log Quando marcada todas as mensagens de erro so escritas para um arquivo chamado game_errors.log na pasta do jogo. Abort on all error messages Normalmente, alguns erros so fatais, enquanto outras podem ser ignorados. Ao marcar esta opo todos os erros so considerados fatais e levam a abortar o jogo. Na verso final do jogo que voc distribuir voc pode querer verificar esta opo. Treat uninitialized variables as 0 Tratar variveis no inicializadas como 0 Um erro comum usar uma varivel antes de um valor ser atribudo a ela. s vezes isso difcil de evitar. Ao marcar esta opo, tais variveis no inicializadas j no relatam um erro, mas so tratados como valor 0. Tenha cuidado contudo. Pode significar que voc no aponte mais erros de digitao. Informaes sobre o jogo Aqui voc pode indicar o autor do jogo, a verso do jogo, e algumas informaes sobre o jogo. Tambm a data modificada mantida. Isso til se estiver a trabalhar com muitas pessoas em um jogo ou fazer nova verso atualizada. A informao no est acessvel quando o jogo est em execuo. Consideraes sobre velocidade Se voc est fazendo jogo complicado voc provavelmente vai querer faz-lo rodar o mais rpido possvel. Mesmo Game Maker faz o seu melhor para fazer jogos rodarem rpido, muito depende de como voc cria o seu jogo. Alm disso, bastante fcil de fazer jogos que utilizam grandes quantidades de memria. Nesta pgina, damos algumas dicas sobre como fazer seus jogos mais rpidos e menores. Primeiramente, olhe atentamente para as sprites e planos de fundo que voc usa. Sprites animadas gastam muita memria e desenhar sprites gastam muito tempo. Ento faa suas sprites to pequenas quanto possvel. Remova qualquer espao invisvel em torno dels (o comando Crop no editor de sprite faz isso automaticamente). O mesmo se aplica a imagens de plano de fundo. Se voc tiver um plano de fundo que cobre tudo, certifiquese de desligar o uso de uma cor de fundo. Se voc usar o modo de tela cheia, certifique-se do tamanho da room (ou janela) nunca maior do que o tamanho da tela. A maioria das placas grficas podem eficientemente escalar as imagens para cima, mas elas so mais lentas ao escalar as imagens para baixo! Sempre que possvel, desligar o cursor. Ele retarda o grficos. Tambm deve ter cuidado com o uso de muitas vistas. Para cada vista a room redesenhado.

Alm dos grficos, h tambm outros aspectos que influenciam a velocidade. Verifique se voc tem poucas instncias quanto possvel. Em particular, destruir as instncias, uma vez que no so mais necessrias (por exemplo, quando elas saem da room). Evite muito trabalho no evento passo ou evento desenha das instncias. Muitas vezes as coisas no precisam ser verificadas em cada passo. Interpretao do cdigo razoavelmente rpido, mas ela interpretada. Alm disso, algumas funes e aes tomam muito tempo, em especial aqueles que tem que verificar todas as instncias (como por exemplo, a ao de ricochete). Quando voc precisa de tratamento complicado (por exemplo para inteligncia artificial avanada), melhor voc escrever uma DLL para isso em uma linguagem diferente e criar um pacote de extenso fora deste e importar a DLL usando as funes descritas na pgina sobre o uso de DLL's. Pense sobre onde tratar os eventos de coliso. Voc normalmente tem duas opes. Os objetos que no tm eventos de coliso so tratados muito mais rpido, de preferncia para tratar colises nos objetos que existem apenas algumas instncias. Tenha cuidado com o uso de grandes arquivos de som. Eles gastam muita memria e tambm comprimem de forma ruim. Voc pode querer verificar o seu som e veja se voc pode reduzi-los. Finalmente, se voc quiser fazer um jogo que muitas pessoas podem jogar, certifique-se de test-lo em um nmero de mquinas diferentes, em especial mquinas tambm mais antigas. O Game Maker Language (GML) Game Maker contm um linguagem de programao embutida. Esta linguagem de programao lhe d muito mais flexibilidade e controle que as aes padro. Esta linguagem vamos nos referir como GML (Game Maker Language). Nesta seo iremos descrever a linguagem GML e daremos uma viso geral de todas as (cerca de 1000) funes e variveis disponveis para controlar todos os aspectos do seu jogo. Viso geral sobre a Linguagem GML Game Maker contm uma linguagem de programao embutida. Esta linguagem de programao lhe d muito mais flexibilidade e controle que as aes padro. Esta linguagem vamos nos referir como GML (Game Maker Language). H uma srie de lugares diferentes onde voc pode digitar programas nessa linguagem. Primeiramente, quando voc define scripts. Um script um programa em GML. Em segundo lugar, quando voc adiciona um recurso de cdigo para um evento. Em uma ao de novo cdigo voc tem que fornecer um programa em GML. Em terceiro lugar, o cdigo de criao das rooms. E, finalmente, sempre que voc precisar especificar um valor em uma ao, voc tambm pode usar uma expresso em GML. Uma expresso, como veremos a seguir no um programa completo, mas um pedao de cdigo, resultando em um valor. Neste captulo iremos descrever a estrutura bsica dos programas em GML. Quando voc quiser usar programas em GML, h uma par de coisas que voc tem que ter cuidado. Primeiramente, para todos os seus recursos (sprites, objetos, sons, etc) voc deve usar

nomes que comeam como uma letra e consistem apenas de letras, nmeros e o sublinhado '_' smbolo. Caso contrrio, voc no pode se referir a eles de dentro do programa. Certifique-se de todos os recursos tm nomes diferentes. Tambm tenha cuidado para no nomear os recursos como self, other, global, ou all, porque estes tm um significado especial na linguagem. Tambm no deve utilizar qualquer uma das palavras-chave, indicada abaixo. Um programa Um programa consiste em um conjunto de instrues, chamado declaraes. Um programa deve comear com o smbolo { e termina com o smbolo }. Entre estes smbolos existem as declaraes. As declaraes devem ser separados por um smbolo ";". Assim, a estrutura global de cada programa : { <declarao>; <declarao>; ... } H um nmero de diferentes tipos de declaraes, que sero discutidas abaixo. Variveis Como qualquer linguagem de programao, GML contm variveis. Variveis so posies de memria que armazenam informaes. Eles tm um nome para que voc possa consult-las. A varivel em GML pode armazenar um nmero real ou uma string. Variveis no precisam ser declaradas como em muitas outras lnguas. H um grande nmero de variveis embutidas. Algumas so de carter geral, como mouse_x e mouse_y que indicam a posio atual do mouse, enquanto todos os outros so locais para a instncia do objeto para que executem o programa, como X e Y que indicam a posio atual da instncia. Uma varivel tem um nome que deve comear com uma letra e pode conter apenas letras, nmeros e o smbolo sublinhado '_'. (O tamanho mximo de 64 smbolos.) Quando voc usa uma nova varivel ela local para a instncia atual e no conhecida em programas de outras instncias (mesmo de um mesmo objeto). Voc pode ainda fazer referncia a variveis em outros instncias, ver abaixo. Atribuies Uma atribuio armazena um valor em uma varivel. Uma atribuio tem a forma: <varivel> = <expresso>; Uma expresso pode ser um valor simples, mas tambm pode ser mais complicado. Em vez de atribuir um valor a uma varivel, pode-se acrescentar tambm o valor para o valor varivel atual usando + =. Semelhantes, voc pode subtrair-la usando -=, multiplic-la usando *=, dividi-la usando / =, ou usar operadores bit usando | =, & \, ou ^ =. Expresses As expresses podem ser nmeros reais (por exemplo, 3.4), nmeros hexadecimais, comeando com um sinal $ (por exemplo $00FFAA), strings entre aspas simples ou

duplas (por exemplo, 'Ol' ou "Ol") ou expresses mais complicadas. (Observe que as cordas podem ser executadas em vrias linhas!) Para expresses, os seguintes operadores binrios existentes (em ordem de prioridade): & & | | ^ ^: combinar valores booleanos (& & = e | | = ou ^ = XOR) <<= ==! =>> =: Comparaes, resultam em verdadeira (1) ou falso (0) | & ^: os operadores binrios (| = bit, ou bit e & =, ^ = XOR bit a bit) <<>>: os operadores binrio (<<= desloca esquerda,>> = descola direita) + adio -:, subtrao * mod / div: multiplicao, diviso, diviso de inteiros, e modulo

Observe que o valor de x div y o valor de x / y arredondado na direo do zero para o nmero inteiro mais prximo. O operador mod retorna o resto obtido dividindo seus operandos. Em outras palavras, x mod y = x - (x div y) * y. Alm disso, os operadores unrios seguintes so: !: No, torna verdadeiro o falso e falso o verdadeiro -: nega o prximo valor ~: nega o valor do prximo bit

Como os valores voc pode usar nmeros, variveis ou funes que retornam um valor. Sub-expresses podem ser colocados entre parnteses. Todo o trabalho dos operadores para valores reais. Comparaes tambm funcionam para strings e + strings concatenadas. (Observe que, ao contrrio de certas lnguas, ambos os argumentos para uma operao Booleana so sempre computados, mesmo quando o primeiro argumento j determina o resultado.) Exemplo Aqui est um exemplo com alguns trabalhos. { x = 23; color = $ ffaa00; str = 'Ol Mundo'; y + = 5; x *= y; x = y << 2; x = 23 * ((2 +4) / sin (y)); str = 'Ol' + "mundo"; b = (x <5) & & ! (x == 2 | | x == 4); } Variveis extra Voc pode criar novas variveis atravs da atribuio de um valor para elas (no necessrio declar-las primeiro). Se voc simplesmente usar um nome de varivel, a varivel ser armazenado com a instncia do objeto atual. Ento, no espere encontr-lo quando se tratar de outro objeto (ou outra instncia do mesmo objeto) mais tarde. Voc tambm pode definir e ler variveis em outros objetos, colocando o nome do objeto com um ponto antes do nome da varivel.

Para criar variveis globais, que so visveis a todas as instncias de objeto, preceda-o com a palavra global e um ponto. Assim, por exemplo, voc pode escrever: { if (global.doit) { / / Fazer algo global.doit = false; } } Alternativamente, voc pode declarar as variveis como sendo global. Esta declarao a seguinte. globalvar <varname1>, <varname2>, <varname3>, ... ; Uma vez que esta declarao tenha sido executada, a varivel sempre tratada como global, sem a necessidade de colocar a palavra global e um ponto na frente dele. Ele s precisa ser declarado uma vez em um pedao de cdigo que executado. Depois disso, em todos os outros lugares a varivel considerada como sendo global. s vezes voc quer apenas as variveis dentro do pedao de cdigo atual ou script. Desta forma voc evita o desperdcio de memria e tem a certeza que no h conflito de nomes. Tambm mais rpido do que usar variveis globais. Para conseguir isso, voc deve declarar as variveis no incio do pedao de cdigo usando a palavra-chave var. Esta declarao a seguinte. var <varname1>, <varname2>, <varname3>, ... ; Por exemplo, voc pode escrever: { var xx, yy; xx = x +10; yy = y +10; instance_create (xx, yy, bola); } Endereando variveis em outras instncias Conforme descrito anteriormente, voc pode definir variveis, na instncia atual usando argumentos como x = 3; Mas, em alguns casos, voc pretende enderear variveis em outra instncia. Por exemplo, voc pode querer parar o movimento de todas as esferas, ou voc pode querer mover o personagem principal em uma determinada posio, ou, no caso de uma coliso, voc pode querer definir a sprite para outra instncia envolvida. Isto pode ser conseguido precedendo o nome da varivel com o nome de um objeto e um ponto. Assim, por exemplo, voc pode escrever bola.speed = 0;

Isso ir alterar a velocidade de todas as instncias do objeto bola. H um nmero especiais de "objetos". self: A instncia atual para a qual estamos executando a ao other: A outra instncia envolvida em um evento de coliso all: Todas as ocorrncias noone: Sem instncia de tudo (soa estranho, mas provavelmente ele vem a calhar, como veremos mais adiante) global: No uma instncia de tudo, mas um recipiente que armazena as variveis globais

Assim, por exemplo, voc pode usar os seguintes tipos de declaraes: other.sprite_index = sprite5; all.speed = 0; global.message = 'Um bom resultado'; global.x = ball.x; Agora voc pode se perguntar o que a ltima atribuio faz quando h vrias bolas. Bem, a primeira tomada e seu valor de x atribudo o valor global. Mas e se voc pretende definir a velocidade de uma bola em especial, ao invs de todas as bolas? Isso um pouco mais difcil. Cada instncia tem uma identificao nica. Quando voc coloca as instncias em uma room no designer, este id da instncia mostrado quando voc colocar o mouse sobre ela. Estes nmeros so maiores ou iguais a 100000. Esse nmero tambm pode usar do lado esquerdo do ponto. Mas tenha cuidado. O ponto vai ter interpretado como o ponto decimal do nmero. Para evitar isso, coloque-o entre parnteses. Assim, por exemplo, supondo que o id da bola 100032, voc pode escrever: (100032). Speed = 0; Quando voc cria uma instncia no programa, a chamada retorna o id. Assim, um pedao de programa vlido { nnn = instance_create (100,100, bola); nnn.speed = 8; } Isso cria uma bola e define sua velocidade. Observe que a identificao da instncia atribuda a uma varivel e utiliza essa varivel como indicao em frente ao ponto. Isso totalmente vlido. Vamos tentar fazer com que isto seja mais preciso. Um ponto na verdade um operador. preciso um valor como operando esquerda e um endereo (varivel) como operando direita, e retorna o endereo desta varivel em particular no objeto indicado ou instncia. Todos os nomes de objeto, e os objetos especiais acima indicados simplesmente representam os valores e estes podem ser tratados como qualquer outro valor. Por exemplo, o programa a seguir vlida: { obj [0] = bola; obj [1] = flag;

obj [0]. alarm [4] = 12; obj [1]. id.x = 12; } A ltima afirmao deve ser lida como se segue. Tomamos o id do primeiro flag. Para a instncia com a id que configure a coordenada x para 12. Nomes de objetos, os objetos especiais, e a identificao da instncia tambm pode ser usados em um nmero de funes. Eles so realmente tratados como constantes nos programas. Matrizes Voc pode usar 1- e 2- dimenses nas matrizes no GML. Basta colocar o ndice entre colchetes para uma matriz de 1- dimenso, e os dois ndices com uma vrgula entre eles para 2- dimenses na matriz. No momento em que voc usar um ndice a matriz gerada. Cada matriz executado a partir do ndice 0. Portanto, tenha cuidado com a utilizao de ndices grande porque a memria de uma matriz grande ser reservada. Nunca usar ndices negativos. O sistema coloca um limite de 32000 em cada ndice e 1000000 do tamanho total. Assim, por exemplo, voc pode escrever o seguinte: { a [0] = 1; i = 1; while (i < 10) { a [i] = 2 * a [i-1]; i + = 1; } b [4,6] = 32; } Instruo if Uma declarao if tem a seguinte forma if (<expresso>) <declarao> ou if (<expresso>) <declarao> else <declarao> A declarao tambm pode ser um bloco. A expresso ser avaliada. Se o (arredondado) o valor <= 0 (falso) depois a declarao else executado, caso contrrio (true) a outra declarao executada. um bom hbito sempre colocar parnteses em torno das declaraes na instruo if. Ento, o melhor uso if (<expresso>) { <declarao> } else { <declarao> }

Exemplo O programa exemplo a seguir move o objeto em direo ao centro da tela. { if (x <200) {x + = 4} else (x -= 4); } Instruo de Repetio A declarao de repetio tem a seguinte forma repeat (<expresso>) <declarao> A afirmao repetida o nmero de vezes indicado pelo valor arredondado da expresso. Exemplo O seguinte programa cria cinco bolas em posies aleatrias. { repeat (5) instance_create (random (400), random (400), bola); } Instruo While A instruo while tem a seguinte forma while (<expresso>) <declarao> Enquanto a expresso for verdadeira, a declarao (que tambm pode ser um bloco) executada. Seja cuidadoso com o seus loops while. Voc pode facilmente torn-lo loop infinito, caso em que o jogo ir travar e no reagir a qualquer entrada do usurio mais. Exemplo O programa a seguir tenta colocar o objeto atual em uma posio livre (isto quase o mesmo recurso para mover um objeto para uma posio aleatria). { while (! place_free (x, y)) { x = random room_width (); y = random room_height (); } } Instruo Do Uma declarao do tem a seguinte forma do <declarao> until (<expresso>)

A declarao (que tambm pode ser um bloco) executada at que a expresso seja verdadeira. A declarao executada pelo menos uma vez. Tenha cuidado com o seu loops do. Voc pode facilmente torna-lo loop infinito, caso em que o jogo ir travar e no reagir a qualquer entrada do usurio mais. Exemplo O programa a seguir tenta colocar o objeto atual em uma posio livre (isto quase o mesmo recurso para mover um objeto para uma posio aleatria). { do { x = random room_width (); y = random room_height (); } until (place_free (x, y)) } Instruo for Uma instruo for tem a seguinte forma for (<declarao1>; <expresso>; <declarao2>) <declarao3> Isso funciona da seguinte forma. Primeiro comando1 executado. Ento, a expresso avaliada. Se verdade, a afirmao 3 executado, depois instruo 2 e, em seguida a expresso avaliada novamente. Isto continua at que a expresso falsa. Isto pode parecer complicado. Voc deve interpretar isso como se segue. A primeira instruo inicializa o loop para. Os testes de expresso se o loop deve ser encerrado. Statement2 passo a declarao que vai para o prximo ciclo de avaliao. O uso mais comum ter um contador passe por algumas intervalo. O programa exemplo a seguir inicializa um array de tamanho 10, com os valores 1 - 10. { for (i = 0; i <= 9; i + = 1) lista [i] = i +1; } Instruo Switch Em uma srie de situaes voc quer deixar a sua ao dependendo de um determinado valor. Voc pode fazer isso usando uma srie de declaraes, mas mais fcil usar a instruo switch. A instruo switch tem a seguinte forma: switch (<expresso>) { case <expresso1>: <declarao1>; ... ; break; case <expresso2>: <declarao2>; ... ; break; ... default: <declarao>; ... } Isso funciona da seguinte forma. Primeiramente a expresso executada. Em seguida, comparado com os resultados das diferentes expresses aps as declaraes do case. A

execuo continua depois da primeira declarao case com o valor correto, at que uma instruo break encontrada. Se nenhuma declarao case tem o valor correto, a execuo continuada aps a declarao default. (No necessrio ter uma declarao default.) Observe que as declaraes de case mltiplos podem ser colocadas para a mesma declarao. Alm disso, o break no necessrio. Se no houver nenhuma declarao break a execuo simplesmente continua com o cdigo para a exposio do case seguinte. Exemplo O seguinte programa toma a ao com base em uma tecla que pressionada. switch (keyboard_key) { case vk_left: case vk_numpad4: x -= 4; break; case vk_right: case vk_numpad6: x + = 4; break; } Instruo break A instruo break tem a seguinte forma break Se usado dentro de um loop-for, loop-while, um loop-repeat, uma instruo switch, ou uma instruo with, o fim desse loop ou instruo. Se for usado fora tal como uma declarao, ele termina o programa (no do jogo). Instruo Continue A instruo continue tem a seguinte forma continue Se usado dentro de um loop-for, loop-while, um loop-repeat, ou uma instruo with, ele continua com o prximo valor no loop ou com a declarao. Instruo Exit A instruo exit tem a seguinte forma exit Ele simplesmente termina a execuo desse script ou um pedao de cdigo. (Ela no termina a execuo do jogo! Para isso voc precisa do game_end funo(); ver abaixo).

Funes Uma funo tem o seguinte fomarto de um nome de funo, seguido de zero ou mais argumentos entre parnteses, separados por vrgulas. <funo> (<arg1>, <arg2> ,...) Existem dois tipos de funes. Primeiramente, h uma enorme coleo de funes nativas, para controlar todos os aspectos do seu jogo. Em segundo lugar, qualquer script que voc definir em seu jogo pode ser usado como uma funo. Observe que para uma funo sem argumentos voc ainda precisa usar os parnteses. Algumas funes retornam valores e podem ser usadas em expresses. Outras simplesmente executam comandos. Observe que impossvel usar uma funo como do lado esquerdo de uma atribuio. Por exemplo, voc no pode escrever instance_nearest (x, y, obj).speed = 0. Em vez disso voc deve escrever instance_nearest (x, y, obj)).speed = 0. Scripts Quando voc cria um script, voc deseja acessar os argumentos passados para ele (ou quando se utiliza a ao de script, ou ao chamar o script como uma funo de um programa (ou de outro, ou o mesmo script). Estes argumentos so armazenados no argument0 variveis, argument1, ..., argument15. Portanto, no pode ser no mximo 16 argumentos. (Observe que ao chamar o script a partir de uma ao, apenas os 5 primeiros argumentos podem ser especificados.) Voc tambm pode usar o argumento [0 ], etc. Scripts tambm pode retornar um valor, de modo que possam ser utilizados em expresses. Para este fim, voc usa a instruo de retorno: return <expression> A execuo do script termina na instruo de retorno! Exemplo Aqui est a definio de um pequeno script que calcula o quadrado do argumento: { return (argument0 * argument0); } Para chamar um script dentro de um pedao de cdigo, basta agir da mesma forma ao chamar funes. Ou seja, escrever o nome do script com os valores de argumentos entre parnteses. Construes With Conforme indicado anteriormente, possvel ler e alterar o valor de variveis em outras instncias. Mas, em alguns casos, voc quer fazer muito mais com outras instncias. Por

exemplo, imagine que voc deseja mover todas as bolas de 8 pixels para baixo. Voc pode pensar que isto realizado atravs no seguinte pedao de cdigo bola.y = bola.y + 8; Mas isso no correto. O lado direito da atribuio recebe o valor da coordenada y da primeira bola e adiciona 8 a ela. Em seguida este novo valor definido coordenada y de todas as bolas. Assim, o resultado que todas as bolas obtm a mesma coordenada y. A declarao bola.y + = 8; vai ter exatamente o mesmo efeito porque simplesmente uma abreviao da primeira declarao. Ento, como vamos conseguir isso? Para este efeito, existe a instruo with. A sua forma global with (<expresso>) <declarao> <expresso> indica uma ou mais instncias. Para isso, voc pode usar um id por exemplo, o nome de um objeto (para indicar todas as instncias do objeto) ou um dos objetos especiais (all, self, other, noone). <declarao> agora executado para cada um dos casos indicados, como se essa instncia fosse a instncia (self) atual. Ento, para mover todas as bolas de 8 pixels para baixo, voc pode digitar. with (bola) y + = 8; Se voc quiser executar vrias instrues, coloque chaves em torno deles. Assim, por exemplo, para mover todas as bolas a uma posio aleatria, voc pode usar with (bola) { x = random (room_width); y = random (room_height); } Observe que, na declarao(es), a instncia indicada tornou-se o exemplo do auto. Dentro das declaraes a instncia original self tornou-se a instncia other. Assim, por exemplo, para mover todas as bolas para a posio da instncia atual, voc pode digitar with (bola) { x = other.x; y = other.y; } A utilizao da instruo with extremamente poderoso. Deixe-me dar mais alguns exemplos. Para destruir todas as bolas digite with (bola) instance_destroy ();

Se uma bomba explode e pretende destruir todas as instncias por perto voc pode usar with (all) { if (distance_to_object (other) < 50) instance_destroy (); } Comentrio Voc pode adicionar comentrios aos seus programas. Tudo em uma linha depois de / / no lido. Voc tambm pode fazer um comentrio multi-linha, colocando o texto entre / * e * /. (Codificao de cor pode no funcionar corretamente aqui! Pressione F12 para reajustar a codificao de cor do texto se ocorrer um erro.) Funes e variveis em GML GML contm um grande nmero de funes e variveis embutidas. Com estes voc pode controlar qualquer parte do jogo. Para todas as aes h funes correspondentes, de modo que voc realmente no precisa usar todas as aes se voc preferir usar o cdigo. Mas h muito mais funes e variveis que controlam aspectos do jogo, que no podem ser usados apenas com aes. Portanto, se voc quiser fazer jogos avanados que so fortemente recomendado ler os captulos seguintes para obter uma viso geral de tudo o que for possvel. Por favor observe que estas variveis e funes podem tambm ser utilizados no fornecimento de valores das aes. Portanto, mesmo se voc no planeja usar o cdigo ou escrever scripts, voc ainda vai beneficiar com esta informao. A seguinte conveno usada abaixo. Os nomes das variveis marcados com * so somente leitura, isto , o seu valor no pode ser mudado. Os nomes de variveis com [0 .. n] depois deles so matrizes. A gama de ndices possveis dado.

Computando coisas
Game Maker contm um grande nmero de funes para computar certas coisas. Aqui est uma lista completa. Constantes As seguintes constantes matemticas existem: true igual a 1. false igual a 0. pi igual a 3,1415 ... Funes que utilizam valores reais As seguintes funes existentes lidam com nmeros reais. random (x) Retorna um nmero real aleatrio entre 0 e x. O nmero sempre menor do que x. random_range (x1, x2) Retorna um nmero real aleatrio entre x1 (inclusive) e x2 (exclusive). irandom (x) Retorna um nmero inteiro aleatrio entre 0 e x (inclusive quando x um

inteiro). irandom_range (x1, x2) Retorna um nmero real aleatrio entre x1 (inclusive) e x2 (inclusive). Tanto x1 e x2 devem ser valores inteiros (caso contrrio, eles so arredondados para baixo). random_set_seed (semente) Define a semente (um inteiro) que usada para a gerao de nmeros aleatrios. Pode ser usado para repetir a mesma sequncia aleatria. (Note tambm que embora algumas aes e do prprio sistema utiliza nmeros aleatrios.) random_get_seed () retorna a semente atual. randomize () Define a semente para um nmero aleatrio. choose (val1, val2, val3 ,...) Retorna um dos argumentos escolhidos aleatoriamente. A funo pode ter no mximo de 16 argumentos. abs (x) Retorna o valor absoluto de x. sign (x) Retorna o sinal de x (-1, 0 ou 1). round (x) retorna x arredondado para o nmero inteiro mais prximo. floor (x) Retorna o piso de x, isto , x arredondado para um nmero inteiro. ceil (x) Retorna o limite mximo de x, isto , x arredondado para um nmero inteiro. frac (x) Retorna a parte fracionria de x, isto , a parte aps o ponto decimal. sqrt (x) Retorna a raiz quadrada de x. x deve ser no-negativo. sqr (x) retorna x * x. power (x, n) Retorna x elevado potncia n. exp (x) Retorna e a potncia de x. ln (x) Retorna o logaritmo natural de x. log2 (x) Retorna o log de x de base 2. log10 (x) Retorna o log de x de base 10. n logn (, x) Retorna o log de x de base n. sin (x) Retorna o seno de x (x em radianos). cos (x) Retorna o cosseno de x (x em radianos). tan (x) Retorna a tangente de x (x em radianos). arcsin (x) Retorna o inverso do seno de x. arccos (x) Retorna o inverso do cosseno de x. arctan (x) Retorna o inverso da tangente de x. arctan2 (y, x) Calcula arctan (Y / X), e retorna um ngulo no quadrante correto. degtorad (x) Converte graus em radianos. radtodeg (x) Converte radianos em graus. min (val1, val2, val3 ,...) Retorna o mnimo dos valores. A funo pode ter no mximo 16 argumentos. Eles devem ser todos reais ou todas strings. max (val1, val2, val3 ,...) Retorna o valor mximo dos valores. A funo pode ter um mximo de 16 argumentos. Eles devem ser todos reais ou todas strings. mean (val1, val2, val3 ,...) Retorna a mdia dos valores. A funo pode ter no mximo 16 argumentos. Eles devem ser todos reais. median (val1, val2, val3 ,...) Retorna a mediana dos valores, ou seja, o valor mdio. (Quando o nmero de argumentos o mesmo, o menor dos dois valores do meio retornado.) A funo pode ter argumentos para at 16. Eles devem ter todos os valores reais. point_distance (x1, y1, x2, y2) Retorna a distncia entre o ponto (x1, y1) e o ponto (x2, y2). point_direction (x1, y1, x2, y2) Retorna a direo do ponto (x1, y1) para o ponto (x2, y2) em graus. lengthdir_x (len, dir) Retorna a componente horizontal x do vetor determinado pelo comprimento e direo indicada. lengthdir_y (len, dir) Retorna a componente vertical y do vetor determinado pelo comprimento e direo indicada.

is_real (x) Retorna se x um valor real (em oposio a uma string). is_string (x) Retorna se x uma string (por oposio a um valor real). Funes de manipulao de String As seguintes funes tratam de caracteres e string. chr (val) Retorna uma string contendo o caracter com o do cdigo ASCI val. ord (str) Retorna o cdigo ASCI do primeiro caractere em str. real (str) Transfoma str em um nmero real. str pode conter um sinal de menos, um ponto decimal e at mesmo uma parte exponencial. string (val) Transforma o valor real em uma string usando um formato padro (sem casas decimais, quando se um inteiro, e duas casas decimais de outro modo). string_format (val, tot, dec) Transforma val em uma string usando o seu prprio formato: tot indica o nmero total de posies e dec indica o nmero de casas decimais. string_length (str) Retorna o nmero de caracteres de uma string. string_pos (substr, str) Retorna a posio do substr em str (0 = no ocorrncia). string_copy (str, index, count) Retorna uma substring de str, comeando pelo posio index, e do comprimento count. string_char_at (str, index) retorna o caractere em str na posio index. string_delete (str, index, count) Retorna uma cpia de str com a parte retirada que comea na posio index e tem comprimento count. string_insert (substr, str, index) Retorna uma cpia de str com substr adicionada na posio index. string_replace (str, substr, newstr) Retorna uma cpia de str com a primeira ocorrncia de substr substitudo por newstr. string_replace_all (str, substr, newstr) Retorna uma cpia de str com todas as ocorrncias de substr substitudo por newstr. string_count (substr, str) Retorna o nmero de ocorrncias de substr na str. string_lower (str) Retorna uma cpia minscula da str. string_upper (str) Retorna uma cpia maisculas da str. string_repeat (str, count) Retorna uma string consistindo de cpias count de str. string_letters (str) Retorna uma string que contm apenas as letras em str. string_digits (str) Retorna uma string que contm apenas os dgitos em str. string_lettersdigits (str) Retorna uma string que contm as letras e algarismos em uma str. O acordo com as seguintes funes na rea de transferncia para o armazenamento de texto. clipboard_has_text () Retorna se existe algum texto na rea de transferncia. clipboard_get_text () Retorna o texto atual da rea de transferncia. clipboard_set_text (str) Define a string str na rea de transferncia. Lidando com datas e hora No Game Maker h uma srie de funes para lidar com datas-hora. A combinao de data-hora armazenada em um nmero real. A parte integrante de um valor data-hora o nmero de dias que se passaram desde 12/30/1899. A parte fracionria do valor data e hora a frao de um dia de 24 horas que passou. Existem as seguintes funes: date_current_datetime () Retorna o valor data-hora que corresponde ao momento atual.

date_current_date () Retorna o valor data-hora que corresponde data atual apenas (ignorando a hora). date_current_time () Retorna o valor data-hora que corresponde ao tempo atual apenas (sem a data). date_create_datetime (ano, ms, dia, hora, minuto, segundo) Cria um valor data-hora correspondente data indicada e a hora. date_create_date (ano, ms, dia) Cria um valor data-hora correspondente data indicada. date_create_time(horas, minuto, segundo) Cria um valor data-hora correspondente ao perodo indicado. date_valid_datetime (ano, ms, dia, hora, minuto, segundo) Retorna se data indicada vlida. date_valid_date (ano, ms, dia) Retorna se a data indicada vlida. date_valid_time(hora, minuto, segundo) Retorna se a hora indicada vlida. date_inc_year (data, quantidade) Retorna uma nova data essa a quantidade de anos aps a data indicada. A quantidade deve ser um nmero inteiro. date_inc_month (data, quantidade) Retorna uma nova data, que quantidade de meses aps a data indicada. Quantidade deve ser um nmero inteiro. date_inc_week (data, quantidade) Retorna uma nova data, que quantidade de semanas aps a data indicada. A quantidade deve ser um nmero inteiro. date_inc_day (data, quantidade) Retorna uma nova data que a quantidade de dias aps a data indicada. Quantidade deve ser um nmero inteiro. date_inc_hour (data, quantidade) Retorna uma nova data que a quantidade de horas aps a data indicada. Quantidade deve ser um nmero inteiro. date_inc_minute (data, quantidade) Retorna uma nova data, que a quantidade de minuto aps a data indicada. Quantidade deve ser um nmero inteiro. date_inc_second (data, quantidade) Retorna uma nova data, que a quantidade de segundos aps a data indicada. Quantidade deve ser um nmero inteiro. date_get_year (data) Retorna o ano correspondente data. date_get_month (data) Retorna o ms correspondente data. date_get_week (data) Retorna a semana do ano correspondente data. date_get_day (data) Retorna o dia do ms correspondente data. date_get_hour (data) Retorna a hora correspondente data. date_get_minute (data) Retorna o minuto correspondente data. date_get_second (data) Retorna o segundo correspondente data. date_get_weekday (data) Retorna o dia da semana correspondente data. date_get_day_of_year (data) Retorna o dia do ano correspondente data. date_get_hour_of_year (data) Retorna a hora do ano correspondente data. date_get_minute_of_year (data) Retorna o minuto do ano correspondente data. date_get_second_of_year (data) Retorna o segundo do ano correspondente data. date_year_span (data1, data2) Retorna o nmero de anos entre as duas datas. Ele informa anos incompletos como uma frao. date_month_span (data1, data2) Retorna o nmero de meses entre as duas datas. Ele informa meses incompletos como uma frao. date_week_span (data1, data2) Retorna o nmero de semanas entre as duas datas. Ele informa semana incompleto como uma frao. date_day_span (data1, data2) Retorna o nmero de dias entre as duas datas. Ele informa dias incompletos como uma frao. date_hour_span (data1, data2) Retorna o nmero de horas entre as duas datas. hora relatrios incompletos como uma frao. date_minute_span (data1, data2) Retorna o nmero de minutos entre as duas datas. Ele informa minutos incompleto como uma frao.

date_second_span (data1, data2) Retorna o nmero de segundos entre as duas datas. Ele informa segundo incompleto como uma frao. date_compare_datetime (data1, data2) Compara dois valores de data-hora. Retorna -1, 0 ou 1, dependendo se o primeiro menor, igual ou maior do segundo valor. date_compare_date (data1, data2) Compara dois valores de data-hora, tendo apenas a parte da data em conta. Retorna -1, 0 ou 1, dependendo se o primeiro menor, igual ou maior do que o segundo valor. date_compare_time (data1, data2) Compara dois valores de data-hora, tendo apenas a parte da hora em considerao. Retorna -1, 0 ou 1, dependendo se o primeiro menor, igual ou maior do que o segundo valor. date_date_of (data) Retorna a data da parte do valor da data-hora indicada, o valor do tempo, definindo a parte da hora para 0. date_time_of (data) Retorna a parte da hora da data indicada, o valor da data-hora, definindo a parte da data para 0. date_datetime_string (data) Retorna uma string indicando a data e hora dada no formato padro para o sistema. date_date_string (data) Retorna uma string indicando a data indicada no formato padro para o sistema. date_time_string (data) Retorna uma string indicando a hora determinada, no formato padro para o sistema. date_days_in_month (data) Retorna o nmero de dias no ms indicado pelo valor datahora. date_days_in_year (data) Retorna o nmero de dias no ano indicado at o valor datahora. date_leap_year (data) Retorna se o ano indicado pela data-valor de tempo um ano bissexto. date_is_today (data) Retorna se a data indicada no valor da data-hora que hoje.

Game play
H um grande nmero de variveis e funes que voc pode usar para definir o jogo. Estes, por sua influncia particular, o movimento e a criao de instncias, o momento, o quarto, e no tratamento dos eventos. Informaes sobre o jogo podem ser encontrados nas pginas seguintes: Movimentao Caminhos Planejamento de Movimento Deteco de Coliso Instncias Desativando Instncias Tempo Rooms Pontuao Gerao de Eventos Variveis e funes diversas Moviementao Obviamente, um aspecto importante dos jogos a movimentao das instncias de objetos. Cada instncia tem duas variveis embutidas X e Y que indicam a posio da instncia. (Para ser preciso, elas indicam o lugar onde a origem do objeto colocado.

Posio (0,0) o canto superior esquerdo da room. Voc pode mudar a posio da instncia, alterando suas variveis X e Y. Se voc deseja que o objeto faa movimentos complicados este o caminho a percorrer. Normalmente voc coloca esse cdigo no evento passo para o objeto. Se o objeto se move com velocidade e direo constante, h uma maneira mais fcil de fazer isso. Cada instncia do objeto tem uma velocidade horizontal (hspeed) e uma velocidade vertical (vspeed). Ambos so definidos em pixels por passo. A velocidade horizontal positivo significa um movimento para a direita, uma velocidade negativa significa um movimento horizontal para a esquerda. Velocidade vertical positiva para baixo e a velocidade vertical negativa para cima. Ento voc tem que definir essas variveis apenas uma vez (por exemplo no evento de criao), para dar a uma instncia do objeto constante movimento. Existe uma maneira bem diferente para a especificao de movimento, usando uma direo (em graus 0-359), e uma velocidade (deve ser no-negativo). Voc pode definir e ler essas variveis para especificar um movimento arbitrrio. (Internamente esta transformada em valores para hspeed e vspeed.) Tambm existe o atrito, a gravidade e a direo da gravidade. Finalmente, h a funo motion_add (dir, velocidade) para adicionar um movimento para a instncia atual. Para ser completa, cada instncia tem as seguintes variveis e funes para lidar com a sua posio e movimento: x Sua posio x. y Sua posio y. xprevious anteriores Sua posio-x. yprevious Sua y anterior posio. xstart Sua partida x posio na sala. ystart Sua y partida posio na sala. hspeed componente horizontal da velocidade. vspeed componente vertical da velocidade. direction Sua direo atual (0-360, sentido anti-horrio, 0 = direita). speed Sua velocidade atual velocidade (pixels por passo). friction atrito atual (pixels por passo). gravity Quantidade de gravidade atual (pixels por passo). gravity_direction Direo da gravidade (270 para baixo). motion_set (dir, velocidade) Define o movimento com a velocidade na direo dir indicada. motion_add (dir, velocidade) Adiciona o movimento para o movimento atual (como a adio de vetores). H um grande nmero de funes disponveis que o ajudam na definio de seu movimento: place_free (x, y) Retorna se a instncia colocada na posio (x, y) est livre de coliso. Isso normalmente usado como uma verificao antes de realmente se mudar para a nova posio. place_empty (x, y) Retorna se a instncia colocada na posio (x, y) encontra com ningum. Portanto, esta funo leva em conta tambm instncias no-slido. place_meeting (x, y, obj) Retorna se o exemplo colocado na posio (x, y) encontra o obj. obj pode ser objeto de um caso em que a funo retorna true se alguma instncia do

objeto est no lugar. Tambm pode ser uma id da instncia, a palavra especial all tem o sentido de uma instncia de qualquer objeto, ou a palavra especial other. place_snapped (hsnap, vsnap) Retorna se a instncia est alinhada com os valores definidos. move_random (hsnap, vsnap) Move a instncia de uma posio livre aleatria alinhada, como a ao correspondente. move_snap (hsnap , vSnap) Alinha a instncia, como a ao correspondente. move_wrap (hor, vert, margem) Envolve a instncia, quando ela sair do room para o outro lado. hor indica que se envolve horizontalmente e vert indica que se envolve na vertical. margem indica o quanto a origem da instncia deve estar fora da room antes do envolvimento que acontece. Por isso, ele uma margem em torno do room. Voc geralmente usa esta funo no evento lado de fora. move_towards_point (x, y, sp) Move a instncia com uma velocidade sp em direo a posio (x, y). move_bounce_solid (adv) Ricochete contra instncias slidas, como a ao correspondente. adv indica se deseja usar ricochete avanado, que tambm leva em conta as paredes inclinadas. move_bounce_all (adv) Ricochete contra todas as instncias, ao invs de apenas as slidas. move_contact_solid (dir, maxdist) Move a instncia na direo at uma posio de contato com um objeto slido atingido. Se houver coliso com a posio atual, a instncia colocada logo antes da coliso. Se j existe uma coliso a instncia no movida. Voc pode especificar a distncia mxima para mover (use um nmero negativo para uma distncia arbitrria). move_contact_all (dir, maxdist) Mesmo que a funo anterior, mas desta vez voc parar em um contato com qualquer objeto, no apenas com objetos slidos. move_outside_solid (dir, maxdist) Move a instncia na direo at que ele no esteja dentro de um objeto slido. Se no houver coliso com a posio atual da instncia no movido. Voc pode especificar a distncia mxima para mover (use um nmero negativo para uma distncia arbitrria). move_outside_all (dir, maxdist) Mesmo que a funo anterior, mas desta vez at que voc se mova fora de qualquer objeto, no apenas objetos slidos. distance_to_point (x, y) Retorna a distncia da caixa delimitadora da instncia atual para (x, y). (Se a instncia no tem um sprite ou mscara, o resultado da funo indefinido.) distance_to_object (obj) Retorna a distncia entre a instncia para a prxima instncia de objeto obj. (Se a instncia ou objeto no tem um sprite ou mscara, o resultado da funo indefinida.) position_empty (x, y) Retorna se no h nada na posio (x, y). position_meeting (x, y, obj) Retorna se na posio (x, y), existe uma instncia obj. obj pode ser um objeto, uma id da instncia, ou a palavra chave self, other, ou all. Caminhos No Game Maker voc pode definir caminhos e ordenar instncias a seguir esses caminhos. Embora voc possa usar as aes para isso, h funes e variveis que lhe do mais flexibilidade: path_start(caminho, velocidade, endaction, absoluto) Inicia um caminho para a instncia atual. O caminho o nome do caminho que voc pretende iniciar. A velocidade a velocidade com que o caminho deve ser seguido. Uma velocidade negativa significa que a instncia move para trs ao longo do caminho. O endaction indica o que deve acontecer, quando o fim do caminho atingido. Os valores a

seguir podem ser usados: 0: parar o caminho 1: continuar a partir da posio inicial (se o caminho no est fechado ela ir saltar para a posio inicial 2: continuar a partir da posio atual 3: o caminho inverso, que mudar o sinal da velocidade O argumento de absoluto deve ser true ou false. Quando true as coordenadas absolutas caminho so utilizados. Quando est false o caminho relativo posio atual da instncia. Para ser mais preciso, se a velocidade for positiva, o ponto de partida do percurso ser colocada sobre a posio atual e o caminho seguido de l. Quando a velocidade o ponto negativo no final do caminho ser colocada sobre a posio atual e o caminho seguido para trs a partir da. path_end () Termina a seguir de um caminho para a instncia atual. path_index* ndice do caminho atual a instncia seguinte. Voc no pode mudar isso diretamente, mas deve usar a funo acima. path_position Posio no caminho atual. 0 o comeo do caminho. 1 o fim do caminho. O valor deve estar entre 0 e 1. path_positionprevious posio anterior no caminho atual. Isso pode ser usado por exemplo, em eventos de coliso para definir a posio sobre o caminho de volta posio anterior. path_speed (em pixels por etapa) Velocidade em que o caminho deve ser seguido. Use uma velocidade negativa para retroceder. path_orientation (sentido anti-horrio) Orientao em que o trajeto realizado. 0 a orientao normal do caminho. path_scale Escala o caminho. Aumentar deixando o caminho numa dimenso maior. 1 o valor padro. path_endaction A ao que deve ser realizada no final do caminho. Voc pode usar os valores indicados acima. Planejamento de Movimento Planejamento de movimento ajuda a mover certas instncias, a partir de um determinada posio para uma posio diferente, evitando colises com algumas outras instncias (por exemplo, paredes). Planejamento de movimento um problema difcil. impossvel dar funes gerais que iro funcionar corretamente em todas as situaes. Alm disso, o calculo de movimentos livres de coliso uma operao demorada. Ento voc tem que ter cuidado como e quando voc vai aplic-la. Por favor, mantenha estas observaes em mente quando voc usar qualquer uma das seguintes funes. Diferentes formas de resoluo de planejamento so fornecidos pelo Game Maker. A forma mais simples permite que uma instncia de dar um passo rumo a uma posio determinada meta, tentando ir em linha reta, se possvel, mas toma uma direo diferente, se necessrio. Estas funes devem ser utilizadas no evento passo de uma instncia. Eles correspondem a aes de planejamento de movimento que tambm esto disponveis: mp_linear_step (x, y, stepsize, checkall) Esta funo permite que a instncia de dar um passo em frente em linha reta para a posio indicada (x, y). O tamanho do passo indicado pelo stepsize. Se a instncia j est na posio ela no ir se mover mais. Se checkall verdade a instncia ir parar quando ela atingir uma instncia de qualquer objeto. Se falso ela s pra quando bate numa instncia

slida. Observe que esta funo no tenta fazer desvios de rota, se encontra um obstculo. Ele simplesmente falha nesse caso. A funo retorna se foi ou no alcanado o objetivo. mp_linear_step_object (x, y, stepsize, obj) Mesmo que a funo anterior, mas desta vez apenas as instncias de obj so consideradas como obstculos. obj pode ser um objeto ou uma identificao de instncia. mp_potential_step (x, y, stepsize, checkall) Como a funo anterior, esta funo permite que a instncia d um passo rumo a uma posio particular. Mas neste caso, ela tenta evitar obstculos. Quando a instncia seria executado em uma instncia slida (ou em qualquer instncia, quando checkall verdade) e vai mudar a direo do movimento para tentar evitar a instncia e mover-se em torno dela. A abordagem no garantido que funcione, mas na maioria dos casos fcil efetivamente mover a instncia para o objetivo. A funo retorna ou no se a meta foi alcanada. mp_potential_step_object (x, y, stepsize, obj) Mesmo que a funo anterior, mas desta vez apenas as instncias de obj so considerados como obstculos. obj pode ser um objeto ou uma identificao de instncia. mp_potential_settings (maxrot, rotstep, ahead, onspot) A funo anterior, faz o seu trabalho usando um nmero de parmetros que pode ser alterado utilizando esta funo. Globalmente o mtodo funciona da seguinte forma. Ele primeiro tenta mover em linha reta em direo ao objetivo. Ele checa um nmero de passos frente, que pode ser definido com o parmetro ahead (padro 3). Reduzir este valor significa que a instncia comear a mudar de direo mais tarde. Aumentando significa que ele vai comear a mudar de direo antes. Se esta verificao leva a uma coliso, ele comea a olhar para as direes mais esquerda e direita da melhor direo. Ele faz isso em passos de tamanho rotstep (padro 10). Reduzir isto d a instncia mais possibilidades de movimento, mas ser mais lento. O maxrot parmetro um pouco mais difcil de explicar. A instncia tem uma direo atual. maxrot (padro 30) indica o quanto permitido alterar a sua direo atual em uma etapa. Portanto, mesmo se ela pode se mover por exemplo, em linha reta para o objetivo ela s o far se no violar essa mudana de direo mxima. Se voc colocar maxrot grande, a instncia pode mudar muita coisa em cada etapa. Isto tornar mais fcil encontrar um caminho curto, mas o caminho ser mais feio. Se voc colocar o valor menor o caminho ser mais suave, mas pode ter desvios mais longos (e s vezes at no conseguir encontrar o objetivo). Quando nenhum passo pode ser dado o comportamento depende do valor do parmetro onspot. Se Onspot verdade (o valor padro), a instncia vai rodar no seu lugar pela quantidade indicada por maxrot. Se falso ela no ir se mover. Defini-lo como falso por exemplo, til para carros, mas reduz a chance de encontrar um caminho. Por favor, observe que a abordagem potencial utiliza apenas informaes locais. Por isso, s vai encontrar um caminho, se esta informao local suficiente para determinar a direo do movimento. Por exemplo, ele falhar em encontrar um caminho para sair de um labirinto (a maior parte do tempo). O segundo tipo de funes calcula uma coliso caminho livre para a instncia. Uma vez que este caminho foi calculado voc pode atribu-lo instncia de avanar para ao objetivo. O clculo do caminho levar algum tempo, mas depois disso a execuo do caminho ser fcil. Claro que isto s vlido se a situao no mudou no decorrer. Por exemplo, se os obstculos mudam voc possivelmente ter de recalcular o trajeto. Novamente aviso que essas funes podem falhar. Estas funes esto disponveis

apenas na edio de Pro Game Maker. As duas primeiras funes usar o movimento linear e uma abordagem de campo potencial que tambm foram utilizados para as funes de passo. mp_linear_path (caminho, xg, yg, stepsize, checkall) Esta funo calcula um caminho em linha reta para a instncia de sua posio atual para a posio (xg, yg), utilizando o tamanho do passo indicado. Ele usa os passos como na funo mp_linear_step (). O caminho indicado j deve existir e sero substitudos pelo novo caminho. (Veja mais um captulo sobre como criar e destruir caminhos.) A funo ir retornar se um caminho foi encontrado. A funo ir parar e relatar falha se no existe caminho direto entre o incio e o fim. Se falhar um caminho ainda criado que vai at a posio onde a instncia foi bloqueado. mp_linear_path_object (caminho, xg, yg, stepsize, obj) Mesmo que a funo anterior, mas desta vez apenas as instncias do obj so consideradas como obstculos. obj pode ser um objeto ou uma identificao de instncia. mp_potential_path (caminho, xg, yg, stepsize, factor, checkall) Esta funo calcula um caminho para a instncia da sua posio atual e orientao para a posio (xg, yg), utilizando o tamanho do passo indicado tentando evitar coliso com obstculos. Ele usa as passos de campo potencial, como no mp_potential_step function () e tambm os parmetros que podem ser definidos com mp_potential_settings (). O caminho indicado j deve existir e sero substitudos pelo novo caminho. (Veja mais um captulo sobre como criar e destruir caminhos.) A funo ir retornar se um caminho foi encontrado. Para evitar a continuidade de funcionamento para calcular sempre voc precisa fornecer um fator de comprimento maior que 1. A funo ir parar e relatar falha, se no puder encontrar um caminho mais curto do que este fator vezes a distncia entre o incio e o fim. Um fator 4 normalmente suficiente mas se voc espera desvios longos voc poderia torn-lo mais longo. Se falhar, um caminho ainda criado que corre na direo do objetivo, mas no vai alcan-lo. mp_potential_path_object (caminho, xg, yg, stepsize, factor, obj) mesmo que a funo anterior, mas desta vez apenas as instncias do obj so consideradas como obstculos. obj pode ser um objeto ou uma identificao de instncia. As outras funes usam um mecanismo muito mais complexo usando uma abordagem baseada em rede (algumas vezes chamado de algoritmo A*). Ser mais bem sucedido em encontrar caminhos (embora ainda pode falhar) e vai encontrar os caminhos mais curtos, mas exigiu mais trabalho do seu lado. A ideia global a seguinte. Primeiro de tudo, colocar uma grade sobre (a parte relevante) da room. Voc pode optar por utilizar uma grade detalhada (que ser mais lento) ou uma grade grosseira. Em seguida, para todos os objetos relevantes ns determinamos que as clulas da grade se sobrepem (usando caixas delimitadoras ou checagem precisa) e marcar estas clulas como sendo proibidas. Assim, uma clula ser marcada totalmente proibida, mesmo que apenas parcialmente se sobrepe com um obstculo. Finalmente, especificar um comeo e uma posio objetivo (que deve situar-se em clulas livres) e a funo calcula o caminho mais curto (na verdade foca no mais curto) entre estes. O caminho ser executado entre centros de clulas livres. Portanto, se as clulas so grandes o suficiente para que a instncia seja colocada em seu centro vai estar completamente dentro, isto ser bem sucedido. Esse caminho voc agora pode dar para uma instncia a seguir. A abordagem grade muito poderosa (e usado em muitos jogos profissionais), mas ele exige que voc faa uma reflexo cuidadosa. Voc deve determinar qual a rea e

tamanho das clulas so bons o suficiente para resolver no jogo. Alm disso, voc deve determinar quais objetos devem ser evitados e se checagem precisa importante. Todos estes parmetros influenciam fortemente a eficcia da proposta. Em particular, o tamanho das clulas crucial. Lembre-se que as clulas devem ser grandes o suficiente para que o objeto em movimento colocado na sua origem no centro de uma clula deve estar completamente dentro da clula. (Tenha cuidado com a posio da origem do objeto. Tambm percebemos que voc pode mudar o caminho, se a origem do objeto no est no seu centro!) Por outro lado, quanto menor as clulas mais caminhos mais podem existir. Se voc fizer as clulas muito grandes, as aberturas entre os obstculos podem ficar fechadas porque todas as clulas se cruzam com um obstculo. As funes reais para a grade de abordagem so os seguintes: mp_grid_create (esquerda, topo, hcells, vcells, cellwidth, cellheight) Esta funo cria a grade. Ele retorna um ndice que deve ser utilizado em todas as outras chamadas. Voc pode criar e manter estruturas de grade mltiplas no mesmo momento. esquerda e topo indicam a posio do canto superior esquerdo da grade. hcells e vcells indicam o nmero de clulas horizontais e verticais. Finalmente cellwidth e cellheight indicam o tamanho das clulas. mp_grid_destroy (id) destri a estrutura da grade indicada e libera sua memria. No se esquea de chamar isso se voc no precisa mais desta estrutura. mp_grid_clear_all (id) Marcar todas as clulas na grade como livre. mp_grid_clear_cell (id, h, v) Limpa a clula indicada. Clula 0,0 a clula superior esquerda. mp_grid_clear_rectangle (id, esquerda, topo, direita e inferior) Limpa todas as clulas que interceptam o retngulo indicado (nas coordenadas da room). mp_grid_add_cell (id, h, v) Marca a clula indicada como sendo proibida. Clula 0,0 a clula superior esquerda. mp_grid_add_rectangle (id, esquerda, topo, direita e inferior) Marca todas as clulas que interceptam o retngulo indicado como sendo proibidas. mp_grid_add_instances (id, obj, prec) Marca todas as clulas que interceptam uma instncia do objeto indicado como sendo proibidas. Voc tambm pode usar uma instncia individual, colocando o id do obj da instncia. Tambm voc pode usar a palavra-chave all para indicar todas as todas as instncias de todos os objetos. prec indica se a checagem de coliso precisa deve ser utilizada (s ir funcionar se a checagem precisa est habilitada para a sprite usada pela instncia). mp_grid_path (id, caminho, xstart, ystart, xgoal, ygoal, allowdiag) Calcula um caminho atravs da grade. caminho deve indicar um caminho existente que ser substitudo pelo caminho calculado. xstart e ystart indica o incio do caminho e xgoal e ygoal do objetivo. allowdiag indica se mover na diagonal so permitidas ao invs de apenas horizontal ou vertical. A funo retorna se conseguiu encontrar um caminho. (Note que o caminho independente da instncia atual, um caminho atravs da grade, no um caminho para uma instncia especfica.) mp_grid_draw (id) Essa funo desenha a grade com clulas verdes ser livre e clulas vermelhas sendo proibidas. Esta funo lenta e fornecida apenas como uma ferramenta de depurao.

Checagem de coliso Quando utiliza planejamento de movimento ou de decidir sobre determinadas aes, muitas vezes importante ver se h colises com outros objetos em determinados lugares. As rotinas a seguir podem ser usadas para isso. Todos estes trs argumentos tm em comum: O argumento obj pode ser um objeto, a palavra-chave all, ou a id de uma instncia. O argumento prec indica se a verificao deve ser precisa, ou apenas com base na caixa delimitadora da instncia. Checagem precisa s feita quando a sprite da instncia tem a checagem de coliso precisa definida. O notme argumento pode ser definido como true para indicar que a instncia chamada no deve ser marcada. Todas estas funes, retornam o id de uma das instncias que se chocam, ou retornar um valor negativo quando no h coliso. collision_point (x, y, obj, prec, notme) Esta funo testa se no ponto (x, y), h uma coliso com entidades de objeto obj. collision_rectangle (x1, y1, x2, y2, obj, prec, notme) Esta funo testa se houve uma coliso entre o retngulo (preenchido) com os cantos opostos indicados e entidades do objeto obj. Por exemplo, voc pode usar isto para testar se uma rea est livre de obstculos. collision_circle (xc, yc, raio, obj, prec, notme) Esta funo testa se houve uma coliso entre o crculo (preenchido) centrado na posio (xc, yc) com o raio determinado e entidades do objeto obj. Por exemplo, voc pode usar isso para determinar se existe um objeto prximo a um determinado local. collision_ellipse (x1, y1, x2, y2, obj, prec, notme) Esta funo testa se houve uma coliso entre a elipse (preenchida) com os cantos opostos indicados e entidades do objeto obj. collision_line (x1, y1, x2, y2, obj, prec, notme) Esta funo testa se houve uma coliso entre o segmento de linha (x1, y1) para (x2, y2) e entidades do objeto obj. Esta uma poderosa funo. Voc pode por exemplo us-lo para testar se uma instncia pode ver um outro exemplo, verificando se o segmento de linha entre elas cruza uma parede. Instncias No jogo, as unidades bsicas so as instncias de diferentes objetos. Durante a interao com o jogo voc pode mudar uma srie de caractersticas destas instncias. Tambm voc pode criar novas instncias e destruir instncias. Alm de variveis relacionadas com movimento discutidas acima e as variveis relacionadas com desenho discutidas abaixo, cada caso tem as seguintes variveis: object_index* ndice do objeto esta uma instncia. Essa varivel no pode ser mudado. id* O identificador exclusivo para a instncia (> = 100000). (Observe que quando definir nas rooms o ID da instncia embaixo do mouse sempre indicado.) mask_index ndice da sprite usado como mscara para colises. D um valor de -1 para torn-lo o mesmo que o sprite_index. solid Se a instncia um slido. Isso pode ser alterado durante o jogo. persistent Se a instncia persistente ela reaparecer quando se desloca para outra room. Muitas vezes voc quiser mudar a persistncia para desligado em certos momentos. (Por exemplo, se voc voltar para a primeira room.)

H um problema quando se trata de instncias. No to fcil de identificar instncias individuais. Elas no tm um nome. Quando h apenas uma instncia de um objeto especial voc pode usar o nome do objeto, mas caso contrrio, voc precisar obter o ID da instncia. Este um identificador exclusivo para a instncia. voc pode us-lo em instrues with e como identificador de objeto. Felizmente, h um nmero de variveis e rotinas que ajudam a localizar ID de instncia. instance_count* Nmero de casos que existem atualmente na room. instance_id [0 .. n-1]* A id de uma instncia particular. Aqui, n o nmero de instncia. Observe que a atribuio das instncias para alterar a id da instncia a cada passo para que voc no possa usar valores nos passos anteriores. Por favor observe tambm que as instncias que so excludas permanecer na lista at o final do passo. Portanto, se voc tambm est suprimindo instncias preciso verificar se a instncia ainda existe. Deixe-me dar um exemplo. Suponha que cada unidade em seu jogo tem um poder especial e voc quer localizar o mais forte, voc pode usar o seguinte cdigo: { maxid = -1; maxpower = 0; for (i = 0; i < instance_count; i += 1) { iii = instance_id[i]; if (instance_exists(iii)) if (iii.object_index == unit) { if (iii.power > maxpower) {maxid = iii; maxpower = iii.power;} } } } Aps o loop, maxid ir conter a id da unidade com maior potncia. Claro que, para esta situao em particular o seguinte cdigo poderia ser melhor: { maxid = -1; maxpower = 0; with (unit) do { if (power > maxpower) {maxid = self; maxpower = potncia;} } } instance_find (obj, n) Retorna o ID do (n+1) instncia do tipo obj. obj pode ser um objeto ou a palavra-chave all. Se ela no existir, o objeto em particular, no retorna. Observe que a atribuio das instncias altera a identificao da instncia a cada passo ento voc no pode usar valores dos passos anteriores. instance_exists (obj) Retorna se uma instncia do tipo obj existe. obj pode ser um

objeto, uma identificao da instncia, ou a palavra-chave all. instance_number (obj) Retorna o nmero de instncias do tipo obj. obj pode ser um objeto ou a palavra-chave all. instance_position (x, y, obj) Retorna o ID da instncia do tipo obj na posio (x, y). Quando vrias instncias esto nesta posio o primeiro retornado. obj pode ser um objeto ou a palavra-chave all. Se ela no existir, o objeto em particular, no retornado. instance_nearest (x, y, obj) Retorna o ID da instncia do tipo obj mais prximo de (x, y). obj pode ser um objeto ou a palavra-chave all. instance_furthest (x, y, obj) Retorna o ID da instncia do tipo obj mais distncia (x, y). obj pode ser um objeto ou a palavra-chave all. instance_place (x, y, obj) Retorna o ID da instncia do tipo obj encontrada quando a instncia atual colocada na posio (x, y). obj pode ser um objeto ou a palavrachave all. Se ela no existir, o objeto particular, no retornado. As seguintes funes podem ser usadas para criar e destruir instncias. instance_create (x, y, obj) Cria uma instncia obj na posio (x, y). A funo retorna a identificao da nova instncia. instance_copy (performevent) Cria uma cpia da instncia atual. O argumento indica se o evento de criao deve ser executado para a cpia. A funo retorna a identificao da nova cpia. instance_destroy () Destri a instncia atual. instance_change (obj, perf) Altera a instncia no obj. perf indica se a executar os eventos de destruio a criao. position_destroy (x, y) Destri todas as instncias, cujo a sprite est na posio (x, y). position_change (x, y, obj, perf) Altera todas as instncias em (x, y) no obj. perf indica se a executar os eventos de destruio a criao. Desativando instncias Esteja ciente de que a desativao e ativao de instncias podem levar a problemas inesperados. Ento voc fortemente aconselhado a no usar esse recurso, exceto para a situao muito simples como os descritos abaixo. O recurso principalmente na deixar a verses anteriores compatveis. Quando voc criar uma room grande, por exemplo, em jogos de plataforma, com uma vista pequena, muitas instncias se encontram fora da vista. Tais instncias ainda esto ativas e executam os seus eventos. Alm disso, ao executar verificaes de coliso dessas instncias so levadas em conta. Isso pode gastar muito tempo, que muitas vezes no necessrio. (Por exemplo, muitas vezes no importante se as instncias movem fora da vista.) Para resolver este problema o Game Maker contm algumas funes para desativar e ativar instncias. Antes de us-las voc deve se entender claramente como elas funcionam. Ao desativar as instncias elas foram de alguma forma removidas do jogo. Elas no so mais visveis, nem todos os eventos so executadas por elas. Portanto, para todas as aes e funes elas no existem mais. Isso economiza muito tempo, mas voc tem que ter cuidado. Por exemplo, quando voc excluir todas as instncias de um tipo particular, instncias desativada no so excludas (porque elas no existem). Portanto, no acho

que um jogador que pega uma chave pode desbloquear uma porta desativada. Tambm instncias persistentes desativadas no so movidas para a prxima room (mesmo que sejam persistentes). Certifique-se tambm que depois que voc desativar uma instncia no execute cdigo para ela. Isso pode acontecer em especial quando uma instncia desativa-se. Em geral, melhor voc nunca ter uma instncia que se desative. O erro mais importante que voc pode fazer desativar a instncia que responsvel pela ativao. Para evitar isso algumas das rotinas abaixo permitem que voc insista que a instncia chamada no deve se desativar. Aqui esto as rotinas disponveis: instance_deactivate_all (notme) Desativa todas as instncias na room. Se Notme est true a chamanda da instncia no est desativada (que normalmente o que voc quiser). instance_deactivate_object (obj) Desativa todas as instncias na room de determinado objeto. Voc tambm pode usar all para indicar que todas as instncias devem ser desativadas ou a id de uma instncia para desativar uma instncia individual. instance_deactivate_region (esquerda, topo, largura, altura, dentro, notme) Desativa todas as instncias na regio indicada (isto , quando a caixa delimitadora est parcialmente dentro da regio). Se dentro false as instncias completamente fora da regio sero desativadas. Se Notme true a chamada da instncia no desativada (que normalmente o que voc quer). instance_activate_all () Ativa todas as instncias na room. instance_activate_object (obj) Ativa todas as instncias na room de um determinado objeto. Voc tambm pode usar all para indicar que todas as instncias devem ser ativadas ou a id de uma instncia para ativar uma instncia individual. instance_activate_region (esquerda, topo, largura, altura, dentro) Ativa todas as instncias na regio indicada. Se dentro false as instncias completamente fora da regio so ativadas. Por exemplo, para desativar todas as instncias fora da vista e ativar as dentro da da vista, voc poderia colocar o seguinte cdigo no evento passo do personagem em movimento: { instance_activate_all (); instance_deactivate_region (view_xview[0], view_yview [0], view_wview[0], view_hview [0], false, true); } Na prtica, voc pode querer usar uma regio um pouco maior que a vista. Sincronismo Bons jogos exigem sincronismo cuidadoso das coisas que acontecem. Felizmente o Game Maker faz a maioria do sincronismo para voc. Ele garante que as coisas acontecem a uma taxa constante. Esta taxa definida quando definimos as rooms. Mas voc pode alter-la usando a varivel global room_speed. Assim, por exemplo, pode aumentar lentamente a velocidade do jogo, tornando-o mais difcil, pela adio de uma quantidade muito pequena (como 0,001) para room_speed em cada passo. Se a sua

mquina lenta a velocidade do jogo pode no ser alcanada. Isto pode ser verificado usando o fps varivel que monitora constantemente o nmero real de quadros por segundo. Finalmente, h algum tempo avanado voc pode usar o current_time varivel que fornece o nmero de milissegundos desde que o computador foi iniciado. Aqui est o conjunto total de variveis disponveis (apenas o primeiro pode ser alterado): room_speed Velocidade do jogo na room atual (em graus por segundo). fps * nmero de quadros que so realmente desenhados por segundo. current_time * Nmero em milissegundos que se passaram desde que o sistema foi iniciado. current_year * O ano em curso. current_month * O ms atual. current_day * O dia atual. current_weekday * O dia da semana atual (1 = domingo, ..., 7 = sbado). current_hour * A hora atual. current_minute * O minuto atual. current_second * O segundo atual. s vezes voc pode querer parar o jogo por um tempo curto. Para isso, use a funo sleep. sleep (numb) Sleeps numb em milissegundos. Como voc deve saber, cada instncia tem 12 alarmes diferentes que voc pode definir. Para alterar os valores (ou obter os valores) dos diferentes alarmes usam a seguinte varivel: alarm [0 .. 11] Valor do alarme indicado. (Observe que os alarmes s so atualizados quando o evento alarme para o objeto contm aes!) Vimos que para questes de sincronismo complexo voc pode usar o recurso linha do tempo. Cada instncia pode ter um recurso de linha de tempo a ele associado. O acordo com a presente as seguintes variveis: timeline_index ndice da linha do tempo associado com a instncia. Voc pode definir isto para uma determinada linha do tempo para usar uma. Defina como -1 para parar de usar uma linha do tempo para a instncia. Observe que isto no inicia a linha do tempo. Para isto use a varivel timeline_running. timeline_position Posio atual dentro da linha do tempo. Voc pode mudar isto para pular determinadas partes ou a repetio de partes. timeline_speed Normalmente, em cada passo a posio na linha do tempo aumentado em 1. Voc pode alterar esse valor atravs desta varivel para um valor diferente. Voc pode usar nmeros reais como 0,5. Se o valor for maior que um, vrios momentos pode acontecer no passo ao mesmo tempo. Elas sero realizadas na ordem correta, assim nenhuma ao ser ignorada. Voc tambm pode usar um valor negativo para deixar a linha do tempo tocando para trs. timeline_running Indica se a linha do tempo est tocando (true) ou pausado ou parada (false). Voc pode mudar esta varivel para executar ou parar a linha do tempo.

timeline_looping Indicado se a linha do tempo repetida (true) ou no (false). Voc pode mudar esta varivel para alternar entre repetio ligado ou desligado. Rooms O jogos funcionam em rooms. Cada room tem um ndice que indicado pelo nome da room. A room atual guardada varivel room. Voc no pode presumir que as rooms so numeradas em ordem consecutiva. Portanto, nunca adicione ou subtraia um nmero da varivel de ambiente. Ao invs disso use as funes e variveis abaixo indicado. Assim, uma pea tpica de cdigo que voc ir usar : { if (room != room_last) { room_goto_next (); } else { game_end (); } } As seguintes variveis e funes existentes que tratam de quartos. room ndice da room atual; pode ser alterado para ir para uma room diferente, mas melhor usar as rotinas abaixo. room_first * ndice da primeira room no jogo. room_last * ndice do ltimo room no jogo. room_goto (numb) Ir para a room com o ndice numb. room_goto_previous () V para a room anterior. room_goto_next () Ir para a prxima room. room_restart () Reinicie a room atual. room_previous (numb) Retorna o ndice da room anteriror numb (-1 = nenhum), mas no vai para l. room_next (numb) Retorna o ndice da prxima room numb (-1 = nenhum). game_end () Fim do jogo. game_restart () Reinicia o jogo. Ao chamar uma das funes acima para alterar a room ou no fim ou reiniciar o jogo, por favor, perceba que essa mudana no ocorre naquele momento preciso. Isso s acontece depois que a ao atual totalmente executada. Assim, o restante do script continua a ser executado, e o mesmo se aplica a eventuais chamadas de scripts. No entanto, nenhum evento executado mais. Isso pode levar a um comportamento inesperado que fortemente aconselhado a no colocar qualquer cdigo mais aps o uso de tais funes. As rooms tm um nmero de propriedades adicionais: room_width * Largura do room em pixels. room_height * Altura da room em pixels. room_caption Legenda em string para a room que exibida na legenda da janela.

room_persistent Se a room atual persistente. Muitos jogos oferecem ao jogador a possibilidade de salvar o jogo e carregar um jogo salvo. No Game Maker isto acontece automaticamente, quando o jogador pressiona <F5> para salvar e <F6> para carregar. Voc tambm pode salvar e carregar jogos a partir de um pedao de cdigo (observe que a carga s ocorre no final do passo atual). game_save (string) Salva o jogo para o arquivo com o nome da string. game_load (string) Carrega o jogo a partir do arquivo com o nome da string. Por favor, percebemos que apenas os dados bsicos do jogo est sendo salvo. Se, por exemplo, voc jogar uma determinada pea de msica, a posio exata na msica no guardado. Recursos mudados no so salvas. Outras coisas que no so salvas o contedo de estruturas de dados, partculas, e as configuraes multiplayer. Transies Quando voc se move de uma room para outra, voc pode selecionar uma transio. Para definir a transio para o prximo quadro voc deve definir a varivel chamada transition_kind. Se voc atribuir um valor maior que 0 e que a transio correspondente usado para a transio da prxima room. Isso s afeta a prxima transio. Aps este valor retorna a 0, o que indica que no h transio. transition_kind Indica a transio da prxima room. Voc pode usar os seguintes valores embutidos 0 = sem efeito 1 = Criar a partir da esquerda 2 = Criar da direita 3 = Criar de cima 4 = Criar do fundo 5 = Criar do center 6 = Mover da esquerda 7 = Mover da direita 8 = Mover de cima 9 = Mover do fundo 10 = Entrelaado da esquerda 11 = Entrelaado da direita 12 = entrelaado de cima 13 = entrelaado de baixo 14 = Empurra para esquerda 15 = Empurra para direita 16 = Empurra para cima 17 = Empurra para baixo 18 = Girar para a esquerda 19 = Girar para a direita 20 = Mistura as rooms 21 = Fade out e in transition_steps Indica o nmero de passos no processo de transio. Mais passos mais, quanto maior a transio. O padro 80.

transition_define (kind, name) Voc pode realmente criar suas prprias transies. Para esse efeito necessrio definir um script (possivelmente em um pacote de extenso) para fazer a transio. Com esta funo voc pode adicionar a transio para o sistema. kind o ndice da transio (ou um novo ou um transies existentes). name o nome do script. Observe que o nome do script uma string! Portanto, deve haver aspas em torno dele. Observe que isto realmente muito avanado. O script deve ter cinco argumentos: uma superfcie com a imagem da room anterior, uma superfcie com a imagem da prxima room, a largura das superfcies, a altura das superfcies, e a frao da transio (entre 0 e 1 ). Em seguida, deve desenhar a imagem usando as duas superfcies. transition_exists (kind) Essa funo retorna se uma transio do tipo indicado existe. Por favor, note que as transies no funcionam quando utilizando grficos 3D. Alm disso, transies da room, em geral, no funcionam corretamente quando o tamanho das rooms (ou para ser mais preciso da regio na tela) no so os mesmos. Pontuao Outros aspectos importantes de muitos jogos so a pontuao, a sade, bem como o nmero de vidas. Game Maker mantm o controle da pontuao em uma pontuao varivel global e do nmero de vidas em uma vida varivel global. Voc pode alterar a pontuao, basta alterar o valor desta varivel. O mesmo se aplica sade e vida. Se a vida maior que 0 e torna-se menor ou igual a 0, o no-mais-vidas evento realizado em todas as instncias. Se voc no quer mostrar a pontuao e vive na legenda, defina a varivel show_score, etc, para falso. Tambm pode alterar a legenda. Para obter melhores jogos complicados mostrar a partitura mesmo. score A pontuao atual. lives Nmero de vidas. Health A sade atual (0-100). show_score Mostra a pontuao no ttulo da janela. show_lives Mostra o nmero de vidas no ttulo da janela. show_health Mostra a sade no ttulo da janela. caption_score A legenda utilizada para a pontuao. caption_lives A legenda utilizada para o nmero de vidas. caption_health A legenda utilizada para a sade. Gerando eventos Como voc sabe, o Game Maker completamente orientado a eventos. Todas as aes acontecem como resultado de eventos. H uma srie de eventos diferentes. Eventos de criao e destruio acontecem quando uma instncia criada ou destruda. Em cada passo, o sistema primeiro processa o evento inicio de passo. Em seguida ele lida com os eventos de alarme, teclado e mouse e depois o evento passo. Depois disto, as instncias esto definidas para suas novas posies aps o qual o evento de coliso tratado. Finalmente os eventos de fim de passo so tratados aps o qual o evento desenha usado para desenhar as instncias (note que quando existem mltiplas vistas o evento desenha chamado vrias vezes em cada passo). Voc tambm pode aplicar um evento para a instncia atual de dentro de um pedao de cdigo. As funes seguintes existem:

event_perform (type, numb) Executa evento numb do tipo indicado para a instncia atual. Os tipos de eventos que se seguem podem ser indicados: ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_keypress ev_keyrelease ev_trigger Quando existem vrios eventos do tipo dado, numb pode ser usado para especificar o evento preciso. Para o tipo de evento ev_alarm, numb pode variar de 0 a 11. Para os tipos de eventos ev_keyboard, ev_keypress e ev_keyrelease voc tem que usar o codigo chave para a tecla. Para eventos ev_mouse voc pode usar para numb as seguintes constantes: ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1

ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 Para o evento de coliso voc d o ndice do outro objeto. Para o tipo de evento ev_other voc pode usar para numb as seguintes constantes: ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_no_more_health ev_animation_end ev_end_of_path ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 Para o tipo de evento ev_step voc pode usar o seguinte constantes para numb:

ev_step_normal

ev_step_begin ev_step_end Finalmente, para o tipo de evento ev_trigger voc deve usar as constantes que voc pode especificar quando da definio desses eventos. event_perform_object (obj, type, numb) Esta funo funciona da mesma forma que a funo acima, exceto que desta vez voc pode especificar os eventos em outro objeto. Observe que as aes nestes eventos so aplicadas para a instncia atual, e no a instncias do objeto dado! event_user (numb) Em outros eventos, voc tambm pode definir 16 eventos do usurio. Estes so apenas realizadas se voc chamar esta funo. numb deve situar-se no intervalo de 0 a 15. event_inherited () Execute o evento herdado. Isso s funciona se a instncia tem um objeto pai. Voc pode obter informaes sobre o evento atual que est sendo executado atravs das seguintes variveis somente leitura: event_type * Tipo do evento atual inicial executado. event_number * Nmero do atual evento inicial executado. event_object * O ndice de objeto para o qual o evento atual est sendo executado. event_action * O ndice da ao que est sendo executado atualmente (0 o primeiro no evento, etc.) Diversas variveis e funes Aqui esto algumas variveis e funes que lidam com os erros. error_occurred Indica se um erro ocorreu. error_last String indicando a ltima mensagem de erro. show_debug_message (STR) Mostra a string no modo de depurao. debug_mode Esta varivel somente leitura indica se o jogo est sendo executado em modo de depurao. As seguintes variveis podem ser usadas para fazer o seu cdigo funcionar para a verso apropriada e edio do Game Maker. gamemaker_pro Indica se o jogo criado com a edio Pro. gamemaker_registered Mesmo que o gamemaker_pro gamemaker_version A verso do Game Maker. Este um nmero inteiro. Para a verso 8.0, esse pode ser qualquer coisa entre 800 e 809. Para a verso 8.1 isso vai ser algo entre 810 e 819, etc Ento, nunca verifique uma verso em particular, mas melhor procurar um intervalo. Esta varivel no est disponvel na verso anterior 800. As seguintes funes existentes permitem verificar se certas variveis existem e com o qual voc pode definir variveis e obter seus valores. Em todas estas funes, o nome da varivel passada como uma string! variable_global_exists (nome) Retorna se uma varivel global com o nome dado

(uma string) existe. variable_local_exists (nome) Retorna se uma varivel local com o nome dado (uma seqncia) existe para a instncia atual. variable_global_get (nome) Retorna o valor da varivel global com o nome dado (uma string). variable_global_array_get (nome, ind) Retorna o valor do ndice de ind de matriz a varivel global com o nome dado (uma string). variable_global_array2_get (nome, ind1, ind2) Retorna o valor do ndice ind1, IND2 do 2 global varivel matriz bidimensional com o nome dado (uma string). variable_local_get (nome) Retorna o valor da varivel local com o nome dado (uma string). variable_local_array_get (nome, ind) Retorna o valor do ndice de ind de matriz a varivel local com o nome dado (uma string). variable_local_array2_get (nome, ind1, ind2) Retorna o valor do ndice ind1, IND2 do local 2-dimensional array varivel com o nome dado (uma string). variable_global_set (nome, valor) Define a varivel global com o nome dado (uma string) para o valor especificado. variable_global_array_set (nome, ind, valor) Define o ndice ind na varivel de matriz global com o nome dado (uma string) para o valor especificado. variable_global_array2_set (nome, ind1, ind2, valor) Define o ndice ind1, ind2 no 2 global varivel matriz bidimensional com o nome dado (uma string) para o valor especificado. variable_local_set (nome, valor) Define a varivel local com o nome dado (uma string) para o valor especificado. variable_local_array_set (nome, ind, valor) Define o ndice ind na varivel de matriz local, com o nome dado (uma string) para o valor especificado. variable_local_array2_set (nome, ind1, ind2, valor) Define o ndice ind1, ind2 no local 2-dimensional array varivel com o nome dado (uma string) para o valor especificado. Por exemplo, voc pode escrever: { if variable_global_exists ('ammunition') global.ammunition + = 1 else global.ammunition = 0 } Voc tambm pode usar essas funes para passar variveis para um script em uma espcie de forma de referncia, passando os seus nomes como strings e usando as funes para mud-los. Voc pode mudar a prioridade do programa usando a seguinte funo: set_program_priority (priority) Define a prioridade para o programa. Voc pode indicar um valor entre -3 e +3. Um valor de -3 significa que o programa ser executado somente se nenhum outro processo no computador requer tempo de processamento, ou modo diferente, quando todos os outros processos esto ociosos. Valores de -2 e -1 esto abaixo do normal, para que outros processos tero prioridade. 0 o valor normal. +1 e +2 d uma prioridade maior, resultando

possivelmente em maior velocidade e fluxo mais suave jogo. Mas outros processos, ter o tempo de processamento muito menor. +3 indica o modo em tempo real. No modo tempo real basicamente de todos os tempos atribudo ao jogo. Isso pode levar a srios problemas com outros aplicativos em execuo no computador. Tambm os eventos de teclado e por exemplo, o pressionamento da caixa perto poderia deixar de ser gravado pelo Windows. Portanto, s use isso se voc quer todo o tempo do processador. Tambm melhor verificar cuidadosamente antes de us-lo e salvar antes de executar o jogo. Finalmente, voc pode usar a seguinte funo para definir o ttulo da aplicao: set_application_title (ttulo) Define o ttulo da aplicao para a string dada. O ttulo , por exemplo, mostrado na barra de tarefas.

Interao do usurio
No h jogo sem interao com o usurio. A maneira padro de fazer isso no Game Maker colocar aes em eventos de mouse ou teclado. Mas s vezes voc precisa de mais controle. De dentro de um pedao de cdigo voc pode verificar se certas teclas do teclado foram pressionadas e voc pode verificar a posio do mouse e se o boto for pressionado. Normalmente voc verifica esses aspectos no evento passo de algum objeto controlador e agir em conformidade. O teclado Para a interao do teclado, as seguintes variveis e funes existentes: keyboard_lastkey O cdigo de tecla da ltima tecla pressionada. Veja abaixo para constantes do cdigo de tecla. Voc pode mud-lo, por exemplo, configur-lo para 0 se voc trat-lo. keyboard_key Codigo de tecla da tecla atual pressionada (veja abaixo; 0 se nenhuma). keyboard_lastchar ltimo carcter pressionado (como string). keyboard_string String contendo os ltimos no mximo 1024 caracteres digitados. Essa sequncia s ir conter os caracteres imprimveis digitado. Ele tambm responde corretamente ao pressionar a tecla backspace, apagando o ltimo caractere. s vezes til para mapear uma tecla para outra. Por exemplo, voc pode querer permitir que o jogador use ambas, as setas e as teclas do teclado numrico. Em vez de duplicar as aes voc pode mapear as teclas do teclado numrico para as setas. Tambm voc pode querer implementar um mecanismo em que o jogador possa definir as teclas para usar. Para isso as funes disponveis so as seguintes: keyboard_set_map (key1, key2) Mapeia a tecla com o codigo de tecla key1 para key2. keyboard_get_map (key) Retorna o mapeamento atual para a tecla. keyboard_unset_map () Redefine todas as chaves para mapear a si mesmos. Para verificar se uma determinada tecla ou boto do mouse pressionado voc pode use as seguintes funes. Este aspecto particularmente til quando vrias teclas so pressionadas simultaneamente.

keyboard_check (key) Retorna se a tecla com o cdigo de tecla particular est pressionada. keyboard_check_pressed (key) Retorna se a tecla com o keycode especial foi pressionado desde o ltimo passo. keyboard_check_released (key) Retorna se a tecla com o keycode especial foi liberado desde o ltimo passo. keyboard_check_direct (key) Retorna se a tecla com o keycode particular pressionado, verificando o hardware diretamente. O resultado independente do que a aplicao tem o foco. Ela permite um controlo mais alguns. Em particular, voc pode usar cdigos de tecla vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol e vk_ralt para verificar se o desvio esquerda ou direita, o controle ou a tecla Alt est pressionado. As rotinas a seguir podem ser usadas para manipular o estado do teclado: keyboard_get_numlock () Retorna se o numlock est definido. keyboard_set_numlock (on) Liga (true) ou desliga (falso) o numlock. keyboard_key_press (key) Simula uma tecla pressiona com o cdigo de tecla indicado. keyboard_key_release (key) Simula uma tecla liberada com a senha indicada. As seguintes constantes de cdigos de teclas virtuais existem: vk_nokey cdigo de tecla que representam nenhuma tecla for pressionada vk_anykey cdigo de tecla representa que qualquer tecla seja pressionada vk_left cdigo de tecla da seta para a esquerda vk_right cdigo de tecla da seta para a direita vk_up cdigo de tecla da seta para cima vk_down cdigo de tecla da seta para baixo vk_enter tecla enter vk_escape tecla escape vk_space tecla de espao vk_shift tecla shift vk_control tecla control vk_alt tecla alt tecla de retrocesso vk_backspace vk_tab tecla TAB vk_home tecla home vk_end tecla end vk_delete tecla delete vk_insert tecla Insert vk_pageup tecla PageUp vk_pagedown tecla PageDown vk_pause tecla pause/break vk_printscreen tecla PrintScreen / SysRq vk_f1 ... vk_f12 cdigo de tecla para as teclas F1 a F12 vk_numpad0 ... vk_numpad9 teclas numricas no teclado numrico vk_multiply tecla de multiplicao no teclado numrico vk_divide tecla de diviso no teclado numrico vk_add tecla de soma no teclado numrico

vk_subtract tecla de subtrao no teclado numrico vk_decimal tecla decimal ponto do teclado numrico Para as tecla de utilizao por exemplo, ord ( 'A'). (As letras maisculas.) Para utilizar as teclas numricas por exemplo ord ('5 ') para obter a tecla <5>. As seguintes constantes podem ser utilizados apenas em keyboard_check_direct: vk_lshift tecla shift da esquerda vk_lcontrol tecla control da esquerda vk_lalt tecla alt da esquerda vk_rshift tecla shift da direita vk_rcontrol tecla de control da direita vk_ralt tecla alt da direita Por exemplo, suponha que voc tem um objeto que o usurio pode controlar com as setas voc pode colocar o seguinte pedao de cdigo na etapa de evento do objeto: { if (keyboard_check (vk_left)) x -= 4; if (keyboard_check (vk_right)) x += 4; if (keyboard_check (vk_up)) y -= 4; if (keyboard_check (vk_down)) y += 4; } Claro que muito mais fcil simplesmente colocar isso em eventos de teclado. Existem algumas funes adicionais relacionadas com a interao do teclado. keyboard_clear (key) Limpa o estado da tecla. Isso significa que ela deixar de gerar eventos de teclado at que ela comea a repetir. io_clear () Limpa todos os estados do teclado e mouse. io_handle () io usurio manipulao, atualizao dos estados de teclado e mouse. keyboard_wait () espera at o usurio pressionar uma tecla no teclado. O mouse Para a interao do mouse, as seguintes variveis e funes existentes: mouse_x * Coordenada x do mouse na room. No pode ser alterado. mouse_y * Coordenada y do mouse na room. No pode ser alterado. mouse_button Atualmente o boto do mouse pressionado. Como valor use mb_none, mb_any, mb_left, mb_middle, ou mb_right. mouse_lastbutton ltimo boto do mouse pressionado. Para verificar se um determinado boto do mouse pressionado voc pode usar as seguintes funes. Este aspecto particularmente til quando vrias teclas so pressionadas simultaneamente. mouse_check_button (numb) Retorna se o boto do mouse est atualmente pressionado (utilizar como valores mb_none, mb_left, mb_middle, ou mb_right). mouse_check_button_pressed (numb) Retorna se o boto do mouse foi pressionado desde o ltimo passo.

mouse_check_button_released (numb) Retorna se o boto do mouse foi liberado desde o ltimo passo. As seguintes funes podem ser utilizadas para verificar se a roda do mouse foi usada. mouse_wheel_up () Retorna se a roda do mouse foi movida para cima desde o ltimo passo. mouse_wheel_down () Retorna se a roda do mouse foi movida para baixo desde o ltimo passo. Existem algumas funes adicionais relacionadas com a interao do mouse. mouse_clear (button) Limpa o estado do boto do mouse. Isso significa que ela deixar de gerar eventos do mouse at que o jogador libera-lo e aperta-lo novamente. io_clear () Limpa todos os estados do teclado e mouse. io_handle () Manipulao usurio io, atualizao de teclado e mouse status. mouse_wait () Espera at o usurio pressionar um boto do mouse. Voc pode mudar a maneira como o cursor do mouse se parece. Voc pode escolher qualquer sprite para isso. Para esse fim, voc pode usar a seguinte varivel: cursor_sprite Indica o sprite que usado para representar o cursor (padro no utilizada sprite, representada por um valor de -1). Voc pode atribuir uma das sprites para essa varivel para t-lo sido elaborado automaticamente na posio do cursor do mouse. (Voc tambm pode desligar o cursor do mouse do Windows no Global Game Settings.) O joystick Existem alguns eventos associados com joysticks. Mas, para ter total controle sobre os joysticks h todo um conjunto de funes para lidar com joysticks. Game Maker suporta at dois joysticks. Ento, todas essas funes, tem um joystick id como argumento. joystick_exists (id) Retorna se joystick id (1 ou 2) existe. joystick_name (id) Retorna o nome do joystick joystick_axes (id) Retorna o nmero de eixos do joystick. joystick_buttons (id) Retorna o nmero de botes do joystick. joystick_has_pov (id) Retorna se o joystick tem ponto de vista capacidades. joystick_direction (id) Retorna o cdigo de acesso (vk_numpad1 para vk_numpad9) correspondente direo do joystick id (1 ou 2). joystick_check_button (id, numb) Retorna se o boto do joystick pressionado (numb no intervalo 1-32). joystick_xpos (id) Retorna a posio (-1 a 1) do eixo x do joystick id. joystick_ypos (id) Retorna a posio y dos joysticks. joystick_zpos (id) Retorna a posio z joysticks (se tiver um eixo z). joystick_rpos (id) Retorna a posio do leme joysticks (ou quarto eixo). joystick_upos (id) Retorna a posio de u joysticks (ou eixo quinta). joystick_vpos (id) Retorna a posio de v joysticks (ou eixo sexta). joystick_pov (id) Retorna o ponto de joysticks de posio de exibio. Este um ngulo entre 0 e 360 graus. 0 para a frente, 90 para a direita, 180 atrs e 270 para a esquerda. Quando nenhum ponto-de-vista pressionado pelo usurio -1

retornado.

Grficos do jogo
Uma parte importante de um jogo so os grficos. Game Maker normalmente toma conta da maioria presente e para jogos simples no h necessidade de se preocupar com isso. Mas s vezes voc quer ter mais controle. Para alguns aspectos h aes, mas a partir do cdigo voc pode controlar muitos aspectos muito mais. Este captulo descreve todas as variveis e funes disponveis para isso e d mais algumas informaes sobre o que est realmente acontecendo. Sprites e imagens Cada objeto tem um sprite a ela associados. Isto tanto uma nica imagem ou ela consiste de vrias imagens. Para cada instncia do objeto o programa desenha a imagem correspondente na tela, com a sua origem (como definido nas propriedades do sprite) na posio (x, y) da instncia. Quando h vrias imagens, que percorre todas as imagens para obter um efeito de animao. H uma srie de variveis que afetam a maneira como a imagem desenhada. Estes podem ser usados para alterar os efeitos. Cada instncia tem as seguintes variveis: visible Se visvel est true (1) a imagem desenhada, caso contrrio no desenhada. Instncias invisveis ainda esto ativos e cria eventos de coliso, s voc no v. Definir a visibilidade para false til por exemplo para objetos controladores (torne-os no-slido a fim de evitar eventos de coliso) ou switches ocultadas. sprite_index Este o ndice da Sprite atual para a instncia. Voc pode mud-lo para dar a instncia, uma sprite diferente. Como valor, voc pode usar os nomes das sprites diferentes das que voc definiu. Mudar a sprite no altera o ndice da subimage visvel no momento. sprite_width * Indica a largura da sprite. Este valor no pode ser mudado, mas voc pode querer us-lo. sprite_height * Indica a altura da sprite. Este valor no pode ser mudado, mas voc pode querer us-lo. sprite_xoffset * Indica o deslocamento horizontal da sprite, tal como definido nas propriedades da sprite. Este valor no pode ser mudado, mas voc pode querer us-lo. sprite_yoffset * Indica o deslocamento vertical da sprite, tal como definido nas propriedades do sprite. Este valor no pode ser mudado, mas voc pode querer us-lo. image_number * O nmero de sub-imagens para o objeto atual da instncia (no pode ser alterado). image_index Quando a imagem tem sub-imagens vrios ciclos de programa por eles. Esta varivel indica a sub-imagem atualmente estabelecida (so numeradas a partir de 0). Voc pode mudar a imagem atual, alterando essa varivel. O programa vai continuar o loop, com incio neste novo ndice. (O valor pode ter uma parte fracionria. Nesse caso, sempre arredondado para obter o sub-imagem que desenhada.) image_speed A velocidade com que percorre as sub-imagens. Um valor de 1 indica que a cada passo temos a imagem seguinte. Os menores valores passaro as sub-imagens mais lento, desenhando cada subimage vrias vezes. Os maiores valores pularo sub-imagens para fazer o movimento mais rpido. s vezes voc

quer uma sub-imagem em particular para ser visvel e no deseja que o programa percorra todos elas. Isto pode ser conseguido estabelecendo a velocidade para 0 e escolhendo a sub-imagem correta. Por exemplo, suponha que voc tem um objeto que pode girar e voc cria uma sprite que tem sub-imagens para uma srie de orientaes (sentido anti-horrio). Em seguida, na etapa de evento do objeto voc pode definir { image_index = direction * image_number/360; image_speed = 0; } depth Normalmente as imagens so desenhadas na ordem em que as instncias so criadas. Voc pode mudar este ajuste usando a profundidade da imagem. O valor padro 0, se voc defini-la para um valor diferente nas propriedades do objeto. Quanto maior o valor da instncia mais afastada ser. (Voc tambm pode usar valores negativos). Instncias com maior profundidade ficam por trs das instncias com menor profundidade. Definir a profundidade vai garantir que as instncias so desenhados na ordem desejada (por exemplo, o avio na frente da nuvem). Instncias de fundo deve ter uma profundidade alta (positivo), e as instncias de primeiro plano devem ter uma profundidade baixa (negativo). image_xscale Um fator de escala para fazer com que as imagens fiquem maiores ou menores. Um valor de 1 indica tamanho normal. Voc deve definir separadamente escale x horizontal e escala y vertical. Alterando a escala tambm muda os valores para a largura e altura da imagem e influncia eventos de coliso como voc poderia esperar. Alterando a escala pode ser usado para obter um efeito 3-D. Voc pode usar um valor de -1 para espelhar a sprite horizontalmente. image_yscale A escala y vertical. 1 no escalada. Voc pode usar um valor de -1 para virar a sprite verticalmente. image_angle O ngulo com que a sprite girada. Voc especificar esta em graus, sentido anti-horrio. Um valor de 0 indica que no h rotao. Essa varivel pode ser definida apenas na edio Pro! image_alpha Valor de transparncia (alfa) a ser usado na elaborao da imagem. Um valor de 1 a configurao normal opaco; um valor de 0 completamente transparente. image_blend Misturando cores utilizadas na elaborao da sprite. Um valor de c_white o padro. Quando voc especificar um valor diferente da imagem misturado com esta cor. Isso pode ser usado para colorir a sprite na mosca. Essa varivel pode ser definida apenas na edio Pro! bbox_left * Lado esquerdo da caixa delimitadora da instncia na room, tal como definida pela sua imagem (tendo em conta a escala). bbox_right * Lado direito da caixa delimitadora da instncia na room. bbox_top * Lado de cima da caixa delimitadora da instncia na room . bbox_bottom * Lado inferior da caixa delimitadora da instncia na room.

Planos de Fundo Cada room pode ter at 8 fundos. Tambm tem uma cor de fundo. Todos os aspectos

destes planos de fundos podem ser mudados em um pedao de cdigo utilizando as seguintes variveis (note que alguns so matrizes que variam de 0 a 7, indicando as diferentes origens): background_color Cor de fundo para a room. background_showcolor Quer limpar a janela com a cor de fundo. background_visible [0 .. 7] Se a imagem de fundo em particular, visvel. background_foreground [0 .. 7] Se o plano de fundo na verdade um primeiro plano. background_index [0 .. 7] Antecedentes ndice de imagem para o plano de fundo. background_x [0 .. 7] Posio x da imagem do plano de fundo. background_y [0 ... 7] Posio y da imagem do plano de fundo. background_width [0 ... 7] * Largura da imagem do plano de fundo. background_height [0 ... 7] * Altura da imagem do plano de fundo. background_htiled [0 .. 7] Se horizontalmente lado a lado. background_vtiled [0 .. 7] Se verticalmente lado a lado. background_xscale [0 .. 7] Horizontal fator de escala para o plano de fundo. (Isso deve ser positivo, voc no pode usar um valor negativo para o plano de fundo espelhar.) background_yscale [0 .. 7] Fator de escala vertical para o plano de fundo. (Isso deve ser positivo, voc no pode usar um valor negativo para virar o plano de fundo.) background_hspeed [0 .. 7]A velocidade de rolagem horizontal do plano de fundo (pixels por passo). background_vspeed [0 .. 7]A velocidade de rolagem vertical do plano de fundo (pixels por passo). background_blend [0 .. 7] A mistura de cores para usar na elaborao do plano de fundo. Um valor de c_white o padro. Apenas disponvel na verso Pro! valor background_alpha [0 .. 7] Transparncia (alfa) para utilizao na elaborao do plano de fundo. Um valor de 1 a configurao normal, um valor de 0 completamente transparente. Desenhando sprites e planos de fundo Objetos tm normalmente uma sprite associada a ele que desenhada. Mas voc pode usar o evento desenha para desenhar outras coisas. Esta seo e as prximas dar-lhe informaes sobre o que possvel. Primeiramente, existem funes para desenhar sprites e planos de fundo de diferentes maneiras. Estes do a voc mais controle sobre a aparncia do objeto. Tambm voc pode desenhar (partes de) planos de fundo. draw_sprite (sprite, subimg, x, y) Desenha a sub-imagem subimg (-1 = atual) da sprite com sua origem na posio (x, y). (Sem mistura de cor e sem transparncia alfa). draw_sprite_stretched (sprite,subimg, x, y, w, h) Desenha a sprite esticada para que ela preencher a regio com o canto superior esquerdo (x, y) e largura w e altura h. draw_sprite_tiled (sprite, subimg, x, y) Desenha a sprite tiles para que ela preencha toda a room. (x, y) o local onde uma das sprites desenhada. draw_sprite_part (sprite, subimg, left, top, width, height, x, y) Desenha a parte indicada da subimagem subimg (-1 = atual) da sprite com o canto superior esquerdo da parte na posio (x, y) . draw_background (back, x, y) Desenha o plano de na posio (x, y). (Sem

mistura de cor e sem transparncia alfa). draw_background_stretched (back, x, y, w, h) Desenha o plano de fundo esticado at a regio indicada. draw_background_tiled (back, x, y) Desenha o plano de fundo lado a lado para que ele preenche toda a room. draw_background_part (back, left, top, width, height, x, y) Desenha a parte indicada do plano de fundo com o canto superior esquerdo da parte na posio (x, y). As seguintes funes so funes estendidas das indicadas acima. Estas verses estendida s pode ser usado na edio Pro! draw_sprite_ext (sprite, subimg, x, y, sxcale, yscale, rot, color, alpha) Desenha a sprite escalada com fatores xscale e yscale e rodado no sentido anti horrio sobre rot graus. O color a cor de mistura (use c_white sem mistura) e alpha indica o fator de transparncia com que as imagens so mesclados com o fundo. Um valor de 0 faz com que a sprite fique completamente transparente. Um valor de 1 faz com que seja completamente slida. Esta funo pode criar um grande efeito (por exemplo, exploses parcialmente transparentes). draw_sprite_stretched_ext (sprite, subimg, x, y, w, h, cor, alpha) Desenha a sprite esticado para que ela preencha a regio com o canto superior esquerdo (x, y) e largura w e altura h. A cor a mistura de cores e alpha indica a configurao de transparncia. draw_sprite_tiled_ext (sprite, subimg, x, y, xscale, yscale, color, alpha) Desenha a sprite tile para que ela preenche toda a room, mas agora com os fatores de escala e de uma cor e configurao de transparncia. draw_sprite_part_ext (sprite, subimg, left, top, width, height, x, y, xscale, yscale, color, alfa) Desenha a parte indicada da sub-imagem subimg (-1 = atual) da sprite com o canto superior esquerdo do parte na posio (x, y), mas agora com os fatores de escala e de uma cor e configurao de transparncia. draw_sprite_general (sprite, subimg, left, top, width, height, x, y, xscale, yscale, rot, c1, c2, c3, c4, alfa) A funo de desenho mais geral. Inspira-se na parte indicada da sub-imagem subimg (-1 = atual) da sprite com o canto superior esquerdo da parte na posio (x, y), mas agora com os fatores de escala, um ngulo de rotao, uma cor para cada um dos quatro vrtices (superior esquerdo, superior direito, inferior direito, inferior e esquerda), e um valor de transparncia alpha. Observe que a rotao ocorre em torno do canto superior esquerdo da pea. draw_background_ext (back, x, y, xscale, yscale, rot, color, alpha) Desenha o plano de fundo dimensionados e rodados com mistura de cores (uso c_white sem mistura) e transparncia alfa (0-1). draw_background_stretched_ext (back, x, y, w, h, color, alpha) Desenha o plano de fundo esticado at a regio indicada. A cor a mistura de cores e alfa indica a configurao de transparncia. draw_background_tiled_ext (back, x, y, xscale, yscale, color, alfa) Desenha o plano de fundo lado a lado para que ele preenche toda a rooom, mas agora com os fatores de escala e de uma cor e configurao de transparncia. draw_background_part_ext (back, left, top, width, height, x, y, xscale, yscale, color, alpha) Desenha a parte indicada do fundo com o canto superior esquerdo da parte na posio (x, y), mas agora com fatores de escala e uma cor e configurao de transparncia. draw_background_general (back, left, top, height, altura, x, y, xscale, yscale, rot, C1, C2, C3, C4, alpha) A funo de desenho mais geral. Inspira-se na parte

indicada do fundo com o canto superior esquerdo da parte na posio (x, y), mas agora com os fatores de escala, um ngulo de rotao, uma cor para cada um dos quatro vrtices (superior esquerdo, superior direito, canto inferior direito, inferior e esquerda), e um valor de transparncia alpha. Observe que a rotao ocorre em torno do canto superior esquerdo da pea. Desenhando formas H toda uma coleo de funes disponveis para desenhar formas diferentes. Tambm h funes para desenhar texto (ver seo seguinte). Voc s pode usar estes no evento de desenho de um objeto; essas funes em geral, no fazem qualquer sentido em qualquer outra parte do cdigo. Perceba que as colises entre instncias so determinadas pela suas sprites (ou mscaras) e no pelo que voc realmente desenhar. O desenho existem as seguintes funes que podem ser usados para desenhar formas bsicas. draw_clear (col) Limpa a room inteira com a cor dada (sem mistura alfa). draw_clear_alpha (col, alpha) Limpa a room inteira com a cor dada e valor de alfa (especialmente til para superfcies). draw_point (x, y) Desenha um ponto (x, y) na cor atual. draw_line (x1, y1, x2, y2) desenha uma linha de (x1, y1) para (x2, y2). draw_line_width (x1, y1, x2, y2, w) Desenha uma linha de (x1, y1) para (x2, y2), com largura w. draw_rectangle (x1, y1, x2, y2, outline) Desenha um retngulo. outline indica se apenas o contorno deve ser elaborado (true) ou deve ser preenchido (falso). draw_roundrect (x1, y1, x2, y2, outline) Desenha um retngulo arredondado. outline indica se apenas o contorno deve ser desenhado (true) ou deve ser preenchido (falso). draw_triangle (x1, y1, x2, y2, x3, y3, outline) Desenha um tringulo. outline indica se apenas o contorno deve ser desenhado (true) ou deve ser preenchido (falso). draw_circle (x, y, r, outline) Desenha um crculo em (x, y) com raio r. contorno indica se apenas o contorno deve ser elaborado (true) ou deve ser preenchido (falso). draw_ellipse (x1, y1, x2, y2, outline) Desenha uma elipse. contorno indica se apenas o contorno deve ser elaborado (true) ou deve ser preenchido (falso). draw_set_circle_precision (precision) define a preciso com que os crculos so desenhados, ou seja, o nmero de segmentos que os compem. A preciso deve estar entre 4 e 64 e deve ser divisvel por 4. Este tambm usado para desenhar elipses e retngulos arredondados. draw_arrow (x1, y1, x2, y2, size) Desenha uma seta de (x1, y1) para (x2, y2). Tamanho indica o tamanho da seta em pixels. draw_button (x1, y1, x2, y2, up) Desenha um boto, at indica se para cima (1) ou baixo (0). draw_path (path, x, y, absolute) Com esta funo voc pode desenhar o caminho indicado na room com o seu incio na posio (x, y). Se absolute est true o caminho desenhado na posio em que foi definido e os valores de X e Y so ignorados. draw_healthbar (x1, y1, x2, y2, amount, backcol, mincol, maxcol, direction, showback, showborder) Com esta funo voc pode desenhar uma barra de sade (ou qualquer outra barra que indique algum valor, como por exemplo, o dano). Os argumentos x1, y1, x2 e y2 indicar a rea total para a barra. valor indica a porcentagem da barra que deve ser preenchida (deve estar entre 0 e 100).

backcol a cor de fundo para a barra. mincol e maxcol indicam a cor quando o valor 0 e 100, respectivamente. Uma quantidade intermediria a cor interpolado. Assim, voc pode facilmente fazer uma barra que vai por exemplo, de verde para vermelho. O direction a direo em que a barra desenhada. 0 indica que a barra est ancorado esquerda, direita 1, 2 em cima e 3 no fundo. Finalmente showback indica se uma caixa de fundo deve ser mostrada e showBorder indicado se a caixa e barra deve ter uma linha de borda preta. A maioria das funes acima usam a cor e configurao alfa que pode ser alterado com as seguintes funes. draw_set_color (col) Define a cor de desenho para ser usado a partir de agora para a desenho de primitivas. draw_set_alpha (alpha) Define o valor da transferncia a ser utilizada a partir de agora para a elaborao primitivas. Deve caber no intervalo 0-1. 0 totalmente transparente, 1 totalmente opaco. draw_get_color () Retorna a cor de desenho utilizado para desenhar primitivas. draw_get_alpha () Retorna o valor de alfa usados para desenhar primitivas. A gama de cores predefinidas est disponvel: c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_orange c_purple c_red c_silver c_teal c_white c_yellow As seguintes funes podem ajud-lo a criar as cores que voc quer. make_color_rgb (red, green, blue) Retorna uma cor com o vermelho, verde, azul indicado as componetes red, green e blue devem ter valores entre 0 e 255. make_color_hsv (hue , saturation, value) Retorna uma cor com as componentes hue, saturation e value indicados (cada um entre 0 e 255). color_get_red (col) Retorna o componente vermelho da cor. color_get_green (col) Retorna a componente verde da cor. color_get_blue (col) Retorna o componente azul da cor. color_get_hue (col) Retorna o componente matiz da cor. color_get_saturation (col) Retorna a componente de saturao da cor. color_get_value (col) Retorna o valor da componente de cor. merge_color (col1, col2, amount) Retorna uma cor mesclada de col1 e col2. A fuso

determinada pela quantidade. Um valor de 0 corresponde ao col1, um valor de 1 para col2, e valores intermedirios os valores de concentrao. As seguintes funes diversas existem. draw_getpixel (x, y) Retorna a cor do pixel correspondente posio (x, y) na room. Isso no muito rpido, por isso use com cuidado. screen_save (fname) Grava uma imagem PNG da tela no nome de arquivo dado. til para fazer capturas de tela. screen_save_part (fname , x, y, w, h) Guarda parte da tela no nome do arquivo PNG dado. Fontes e texto Nos jogos algumas vezes necessrio desenhar textos. Para desenhar um texto tem de especificar o tipo da letra que vai utilizar. Fontes podem ser definidas atravs da criao de recursos de fonte (ou no programa Game Maker ou usando as funes para criar recursos). Existem diversas funes para desenhar textos de uma maneira diferente. Em cada funo voc tem que especificar a posio do texto na tela. Existem duas funes para definir o alinhamento horizontal e vertical do texto em relao a essa posio. Para o texto de desenho existem as seguintes funes: draw_set_font (font) Define a fonte que ser usada na elaborao do texto. Use -1 para definir a fonte padro (Arial 12). draw_set_halign (halign) define o alinhamento horizontal para a elaborao do texto. Escolha uma das seguintes constantes como valores: fa_left fa_center fa_right draw_set_valign (valign) Define o alinhamento vertical para a elaborao do texto. Escolha uma das seguintes constantes como valores: fa_top fa_middle fa_bottom draw_text (x, y, string) Desenha a string na posio (x, y), usando a cor de desenho e alfa. Um smbolo # ou retorno de carro Chr (13) ou avano de linha chr(10) so interpretados como caracteres de nova linha. Desta forma, voc pode desenhar textos multi-linha. (Use \ # para obter o smbolo # em si.) draw_text_ext (x, y, string, sep, w) Semelhante rotina anterior, mas voc pode especificar mais duas coisas. Primeiro de tudo, sep indica a distncia de separao entre as linhas de texto em um texto de vrias linhas. Use -1 para obter a distncia padro. Use w para indicar a largura do texto em pixels. Linhas que so mais do que essa largura so divididas-se no espao - ou sinais. Use -1 para no dividir linhas. string_width (string) Largura da string na fonte atual, pois seria desenhado com a funo draw_text (). Pode ser usado para grficos de preciso de posicionamento. string_height (string) Altura da string na fonte atual, pois seria desenhado com a

draw_text () function. string_width_ext (string, sep, w) Largura da string na fonte atual, pois seria desenhado com a draw_text_ext () function. Pode ser usado para grficos de preciso de posicionamento. string_height_ext (string, sep, w) Altura da string na fonte atual, pois seria desenhado com a draw_text_ext () function. As rotinas a seguir permitem desenhar em escala e rotao de texto e tambm usar cores degrad em textos. Estas funes esto disponveis apenas na edio Pro! draw_text_transformed (x, y, string, xscale, yscale, angle) Desenha a string na posio (x, y) da mesma maneira que acima, mas a escala horizontal e vertical, com os fatores indicados e gir-lo anti-horrio ao longo do angle em graus . draw_text_ext_transformed (x, y, string, sep, w, xscale, yscale angle) Combina as draw_text_ext funo e draw_text_transformed. Isso torna possvel desenhar um texto multi-linha rotacionado e escalado. draw_text_color (x, y, string, c1, c2, c3, c4, alpha) Desenha a string na posio (x, y) como acima. As quatro cores especificam as cores do arco superior esquerdo, superior direito, inferior direito e canto inferior esquerdo do texto. alpha a transparncia alfa a ser utilizada (0-1). draw_text_ext_color (x, y, string, sep, w, c1, c2, c3, c4, alpha) Similar a draw_text_ext (), mas com vrtices coloridos. draw_text_transformed_color (x, y, string, xscale, yscale, angle, c1, c2, c3, c4, alpha) Similar a draw_text_transformed (), mas com vrtices coloridos. draw_text_ext_transformed_color (x, y, string, sep, w, angle xscale, yscale, c1, c2, c3, c4, alpha) Similar a draw_text_ext_transformed (), mas com vrtices coloridos. Funes avanadas de desenho Esta funcionalidade s est disponvel na verso Pro do Game Maker. Acima, uma srie de funes bsicas de desenho foram descritas. Aqui voc encontrar uma srie de funes adicionais que lhe oferecem muito mais possibilidades. Primeiramente, h funes para desenhar formas com as cores do gradiente. Em segundo lugar, h funes para desenhar polgonos mais geral e, finalmente, h a possibilidade de chamar a textura de polgonos mapeados. As seguintes verses estendidas das funes bsicas de desenho existem cada uma delas recebe os parmetros de cor extra que so usados para determinar a cor nos vrtices diferentes. A cor do desenho padro no utilizada nestas funes. draw_point_color (x, y, col1) Desenha um ponto (x, y) na cor determinada. draw_line_color (x1, y1, x2, y2, col1, col2) Desenha uma linha de (x1, y1) para (x2, y2), a interpolao de cores entre col1 e col2. draw_line_width_color (x1, y1, x2, y2, w, col1, col2) Desenha uma linha de (x1, y1) para (x2, y2), com largura w interpolao da cor entre col1 e col2. draw_rectangle_color (x1, y1, x2, y2, col1, col2, col3, col4, outline) Desenha um retngulo. As quatro cores indicadas as cores no canto superior esquerdo, superior direito, inferior direita, e vrtice inferior esquerdo. outline indica se apenas o contorno deve ser desenhado (true) ou deve ser preenchido (falso). draw_roundrect_color (x1, y1, x2, y2, col1, col2, outline) Desenha um retngulo

arredondado. col1 a cor no meio e col2 a cor na fronteira. outline indica se apenas o contorno deve ser elaborado (true) ou deve ser preenchido (falso). draw_triangle_color (x1, y1, x2, y2, x3, y3, col1, col2, col3, outline) Desenha um tringulo. As trs cores so as cores dos trs vrtices, que interpolado sobre o tringulo. outline indica se apenas o contorno deve ser desenhado (true) ou deve ser preenchido (falso). draw_circle_color (x, y, r, col1, col2, outline) Desenha um crculo em (x, y) com raio r. col1 a cor no meio e col2 a cor na fronteira. outline indica se apenas o contorno deve ser desenhado (true) ou deve ser preenchido (falso). draw_ellipse_color (x1, y1, x2, y2, col1, col2, outline) Desenha uma elipse. col1 a cor no meio e col2 a cor na fronteira. outline indica se apenas o contorno deve ser elaborado (true) ou deve ser preenchido (false). Voc tambm pode desenhar primitivas maiores. Isso funciona um pouco diferente. Voc comea especificando a primitiva que voc deseja desenhar. Em seguida, voc especifica os vrtices para ele, e finalmente termina a primitiva, que no momento em que desenhada. Existem seis tipos de primitivas: pr_pointlist Os vrtices so um conjunto de pontos. pr_linelist Os vrtices so um conjunto de segmentos de linha. Cada par de vrtices formam um segmento de linha. Portanto, deve haver um mesmo conjunto de vrtices. pr_linestrip Os vrtices formam um polgono com o primeiro ligado ao segundo do segundo para o terceiro, etc, o ltimo no est ligado ao primeiro. Voc precisa especificar uma cpia extra do primeiro vrtice para isso. pr_trianglelist Os vrtices so um conjunto de tringulos. Cada tripla formas de vrtices de um tringulo. Portanto, o nmero de vrtices deve ser um mltiplo de 3. pr_trianglestrip Os vrtices formam tringulos novamente, mas desta vez ele funciona um pouco diferente. Os trs formam o primeiro tringulo primeiro. Os dois ltimos desses vrtices, juntamente com o prximo vrtice, formam o segundo tringulo, etc Assim, cada novo vrtice especifica um novo tringulo, ligado ao anterior. pr_trianglefan Semelhante a uma lista de tringulo, mas desta vez o primeiro vrtice parte de todos os tringulos. Novamente, cada novo vrtice especifica um novo tringulo, ligado ao vrtice anterior e do primeiro vrtice. As funes a seguir existem para desenhar primitivas draw_primitive_begin (kind) Iniciar uma primitiva do tipo indicada. draw_vertex (x, y) Adicionar vrtice (x, y) para a primitiva, usando a cor e o valor de alfa definido antes. draw_vertex_color (x, y, col, alpha) Adiciona vrtice (x, y) para a primitiva, com a sua prpria cor e valor alfa. Isto permite-lhe criar primitivas com bom mudando de cor e valores de alfa. draw_primitive_end () Fim da descrio da primitiva. Esta funo realmente a desenha. Finalmente, possvel desenhar primitivas usando sprites ou fundos como texturas. Ao usar uma textura a imagem colocada sobre a primitiva, ajustando-o para encaixar a primitiva. Texturas so utilizados para acrescentar detalhes as primitivas, por exemplo, uma parede de tijolos. Para usar texturas primeiro voc deve obter o ID da textura que voc deseja usar. Para isso existem as seguintes funes:

sprite_get_texture (spr, subimg) retorna o ID da textura correspondente a subimage subimg do sprite indicado. background_get_texture (back) retorna o ID da textura correspondente ao fundo indicado. Uma textura selecionada pode ainda no estar na memria de vdeo. O sistema ir coloc-lo l quando voc precisar dela, mas s vezes voc quer decidir isso sozinho. Para isso as duas funes existem: texture_preload (texid) Coloca a textura de imediato a memria de vdeo. texture_set_priority (texid, prio) Quando no h memria de vdeo muito pouco alguns vo ser removidas temporariamente para dar lugar a outros que so necessrios. Aqueles com menor prioridade so removidos primeiro. Padro, todos tm prioridade 0, mas voc pode alterar a prioridade aqui. (Use valores positivos!) Para adicionar texturas para primitivas voc deve especificar quais partes das texturas devem ser colocadas em quais lugares na primitiva. Posies na textura so indicadas com valores entre 0 e 1, mas h um problema aqui. Tamanhos de texturas devem ser potncias de 2 (assim, por exemplo 32x32 ou 64x64). Se voc quiser usar sprites ou fundo como texturas melhor voc ter certeza de que tem uma dimenso correta. Se no, o teste ser em branco. Para descobrir qual parte da textura realmente usada voc pode usar as seguintes duas funes. Elas retornam um valor entre 0 e 1 que indica a largura ou altura da parte real da textura a ser utilizada. Especificando esse valor como coordenada de textura vai indicar o lado direito ou inferior da textura. texture_get_width (texid) Retorna a largura da textura com o ID dado. A largura est no intervalo 0-1. texture_get_height (texid) Retorna a altura da textura com o ID dado. A altura situa-se no intervalo 0-1. Para desenhar primitivas texturizadas voc usa as seguintes funes: draw_primitive_begin_texture (kind, texid) Iniciar uma primitiva do tipo indicado com a textura dada. draw_vertex_texture (x, y, xtex, ytex) Adiciona vrtice (x, y) a primitiva com a posio (xtex, ytex) na textura, combinando com a cor e valor de alfa definido antes. xtex e ytex normalmente deve estar entre 0 e 1, mas tambm valores maiores podem ser usados, levando a uma repetio da textura (veja abaixo). draw_vertex_texture_color (x, y, xtex, ytex, col, alpha) Adiciona vrtice (x, y) a primitiva com a posio (xtex, ytex) na textura, misturando-se com sua prpria cor e valor alfa. draw_primitive_end () Fim da descrio da primitiva. Esta funo realmente a desenha. Existem trs funes que influenciam a forma como as texturas so extradas: texture_set_interpolation (linear) Indica se utiliza interpolao linear (true) ou escolher o pixel mais prximo (false). Interpolao linear deixa as texturas mais suaves, mas tambm podem ficar um pouco desfocadas e s vezes gasta mais tempo. Esta configurao tambm influenciam o desenho das sprites e planos de fundo. O padro falso. (Isso tambm pode ser alterado nas configuraes global

do jogo.) texture_set_blending (blend) Indica se utiliza mistura de cores e valores de alfa. Deixando desligado esta poderia ser mais rpida em hardware antigo. Esta configurao tambm influenciam o desenho de sprites e planos de fundo. O padro true. texture_set_repeat(repeat) Indica se usa repetio de textura. Isso funciona da seguinte forma. Como indicado acima coordenadas de textura mentira no intervalo 0-1. Se voc especificar um valor maior que 1, por padro o resto no desenhado. Ao definir repetir a textura para true ela ser repetida. Observe que sprites e planos so sempre desenhadas sem repetio. Assim, uma vez que voc desenhar uma sprite de plano de fundo esse valor redefinir para false. O padro false. H mais duas funo que no s so teis para a elaborao das texturas. Normalmente primitivas so misturadas com o fundo usando o valor de alfa. Voc pode realmente indicar a forma como isso deve acontecer. Alm do modo normal, possvel indicar que a nova cor deve ser adicionada cor existente ou subtrada da cor existente. Isso pode ser usado para criar exemplo spot de luzes ou sombras. Tambm possvel classificar de tomar o mximo de cores novas e existentes. Isso pode evitar a saturao de certos efeitos que voc pode obter com a adio. Note que ambos subtraindo e mxima no toma o valor alfa plenamente em conta. (DirectX no permite isso.) Portanto, melhor certificar-se da rea externa preta. Existem duas funes. O primeiro d-lhe somente as quatro opes descritas acima. A segunda funo lhe d muito mais possibilidades. Voc deveria experimentar um pouco com as configuraes. Se utilizada de forma eficaz que pode ser usado para criar, por exemplo exploso interessante ou efeitos de halo. draw_set_blend_mode (mode) Indica o modo de mesclagem para usar. Os seguintes valores so possveis: bm_normal, bm_add, bm_subtract e bm_max. No se esquea de redefinir o modo para normal aps o uso, porque caso contrrio sprites tambm outros e at mesmo os cenrios so elaborados com o modo de mistura nova. draw_set_blend_mode_ext (src, dest) Indica o modo de mesclagem para usar a fonte e cor de destino. A nova cor algumas vezes o fator de origem e um outras vezes fator de destino. Esses fatores so definidos com essa funo. Para compreender isto, a origem e o destino ambos tm componentes vermelho, verde, azul e alfa. Assim, a fonte (Rs, Gs, Bs, As) e o destino (Rd, Gd, Bd, Ad). Todas so consideradas estar entre 0 e 1. Os fatores de mistura voc pode escolher a origem e o destino so: bm_zero: fator Blend (0, 0, 0, 0). bm_one: Blend fator (1, 1, 1, 1). bm_src_color: fator Blend (Rs, Gs, Bs, As). bm_inv_src_color: fator Blend (1-Rs, 1-G, 1-B, 1-As). bm_src_alpha: fator Blend (como, No, No, No). bm_inv_src_alpha: fator Blend (1-No, 1-No, 1-No, 1-As). bm_dest_alpha: fator Blend (Ad, Ad, Ad, Ad). bm_inv_dest_alpha: fator Blend (1-Ad, 1-Ad, 1-Ad, 1-Ad). bm_dest_color: fator Blend (Rd, Gd, Bd, Ad). bm_inv_dest_color: fator Blend (1-Rd, 1-D-us, 1-Bd, 1-Ad). bm_src_alpha_sat: fator Blend (f, f, f, 1); f = min (As, 1-Ad). Por exemplo, o modo de mistura normal define a fonte de mistura para

bm_src_alpha e o destino de mistura para bm_inv_src_alpha. No se esquea de redefinir o modo para normal aps o uso, porque caso contrrio outras sprites tambm e at mesmo os cenrios so desenhados com o modo de mistura nova. Desenhar texturas primitivas um pouco de trabalhoso mas pode levar a grande resultados. Voc pode at us-lo para fazer jogos 3D fake. Desenhar Superfcies Esta funcionalidade s est disponvel na verso Pro do Game Maker. Em certas situaes voc pode querer pintar no diretamente na tela, mas em uma tela que pode ser usada posteriormente para pintar as coisas na tela. Essa tela chamada de superfcie. Por exemplo, voc quer deixar o usurio desenhar na tela. A pintura no deve ser desenhada na tela (porque ser removido cada passo seguinte), mas ao invs disso voc quiser desenh-la sobre uma superfcie separada que copiado para a tela em cada passo. Ou voc quer usar uma textura que muda com o tempo. Superfcies tornam tudo isso possvel. Eles so realmente bastante simples de usar. Primeiro voc cria uma superfcie. Em seguida, voc indica que o desenho ainda deve acontecer nesta superfcie. Daquele momento em diante todas as funes de desenho operar na superfcie. Assim que estiver feito voc redefinir o lugar de desenho e depois disso o desenho aparece na tela novamente. Voc pode desenhar na superfcie da tela de muitas maneiras diferentes, ou us-lo como uma textura. H ainda algumas coisas que voc deve estar ciente. Veja os comentrios no final. As seguintes funes existentes para lidar com superfcies surface_create (w, h) Cria uma superfcie de largura e altura indicada. Retorna o ID da superfcie, o que deve ser utilizado em todas as chamadas complementares. Observe que a superfcie no ser apagada. Esta a responsabilidade do usurio. (Defini-la como um alvo e chamar a funo adequada claro.) surface_free (id) Libera a memria usada pela superfcie. surface_exists (id) Retorna se a superfcie com o id indicado existe. surface_get_width (id) Retorna a largura da superfcie. surface_get_height (id) Retorna a altura da superfcie. surface_get_texture (id) Retorna a textura correspondente superfcie. Isso pode ser usada para desenhar os objetos de textura com a imagem da superfcie. surface_set_target (id) Define a superfcie indicada como lugar de desenho. Todos os desenhos subsequentes aparece nesta superfcie. Ela redefine a projeo simplesmente para cobrir a superfcie. surface_reset_target () Redefine o lugar de desenho para a tela normal. surface_getpixel (id, x, y) Retorna a cor do pixel correspondente posio (x, y) na superfcie. Isso no muito rpido, por isso use com cuidado. surface_save (id, fname) Grava uma imagem png da superfcie em nome de arquivo dado. til para fazer capturas de tela. surface_save_part (id, fname, x, y, w, h) Guarda parte da superfcie no nome do arquivo PNG dado. draw_surface (id, x, y) Desenha a superfcie na posio (x, y). (Sem mistura de

cor e sem transparncia alfa). draw_surface_stretched (id, x, y, w, h) Desenha a superfcie esticada at a regio indicada. draw_surface_tiled (id, x, y) Desenha a superfcie em tile para que ela preenche toda a sala. draw_surface_part (id, left, top, height, width, x, y) Desenha a parte indicada da superfcie com a sua origem na posio (x, y). draw_surface_ext (id, x, y, xscale, yscale, rot, color, alpha) Desenha a superfcie dimensionados e rodados com mistura de cores (uso c_white sem mistura) e transparncia alfa (0-1). draw_surface_stretched_ext (id, x, y, w, h, color, alpha) Desenha a superfcie esticada at a regio indicada. A cor a mistura de cores e alfa indica a configurao de transparncia. draw_surface_tiled_ext (id, x, y, xscale, yscale, color, alpha) Desenha a superfcie em tile para que ela preencha toda a sala, mas agora com os fatores de escala e de uma cor e configurao de transparncia. draw_surface_part_ext (id, left, top, width, height, x, y, cor xscale, yscale, alpha) Desenha a parte indicada da superfcie com a sua origem na posio (x, y), mas agora com os fatores de escala e de uma cor e configurao de transparncia. draw_surface_general (id, left, top, width, height, x, y, rot, xscale, yscale, c1, c2, c3, c4, alpha) A funo de desenho mais geral. Inspira-se na parte indicada da superfcie com a sua origem na posio (x, y), mas agora com os fatores de escala, um ngulo de rotao, uma cor para cada um dos quatro vrtices (superior esquerdo, superior direito, inferior-direito e inferior esquerdo), e um valor de transparncia alpha. surface_copy (destination, x, y, source) Cpias da superfcie de origem na posio (x, y) na superfcie de destino. (Sem qualquer tipo de mistura.) surface_copy_part (destination, x, y, source, xs, ys, ws, hs) Copia a parte indicada da superfcie de origem na posio (x, y) na superfcie de destino. (Sem qualquer tipo de mistura.) Observe que no h funes para cpia de parte da tela a uma superfcie. (Isso impossvel, devido s diferenas de formato possveis entre a tela e as superfcies.) Se isso for necessrio voc deve definir uma superfcie como render alvo e chamar a prxima room. Voc pode usar as rotinas de superfcie para obter a cpia de partes dela. Observe que voc tambm pode criar sprites e planos de fundo de superfcies. Veja a seo sobre a mudana de recursos para mais informaes. Alguns cuidados devem ser tomados ao usar essas funes. Em particular, por favor o seguinte aviso: Voc nunca deve alterar o destino de desenho quando voc estiver realmente desenhando na tela, ou seja, nunca us-lo na elaborao de eventos. Isto vai causar problemas srios com a projeo e visualizao. Superfcies no funcionam corretamente no modo 3D. Voc pode us-los, embora no no modo 3D (chamando d3d_end () antes de us-los), mas quando voc comear o modo 3D novamente as superfcies sero destrudas. Por motivos de velocidade, a superfcie mantida apenas na Memria de Video. Como resultado, voc pode perder a superfcie quando, por exemplo as alteraes resoluo de tela ou protetor de tela aparecer. Superfcies no sero salvas quando salvar um jogo.

Tiles Como voc deve saber que voc pode adicionar telhas para os quartos. Um azulejo uma parte de um recurso do fundo. As telhas so apenas imagens visveis. Eles no reagem aos acontecimentos e no geram colises. Como resultado, as telhas so tratadas de maneira muito mais rpida do que objetos. Qualquer coisa que no precisa de eventos ou colises melhor pode ser feito atravs de telhas. Alm disso, muitas vezes um melhor usa uma pedra para os grficos so agradveis, enquanto um simples objeto utilizado para gerar os eventos de coliso. Voc realmente tem mais controle sobre as telhas do que voc imagina. Voc pode adicion-los ao projetar a sala, mas voc tambm pode adicion-los durante a execuo do jogo. Voc pode alterar a sua posio, e mesmo escala-los ou torn-las parcialmente transparente. Um azulejo tem as seguintes propriedades: background. O recurso do fundo de que o azulejo tomada. left, top, width, height. A parte do fundo que usado. x, y. A posio do canto superior esquerdo do azulejo na sala. depth. A profundidade da tile. Voc pode escolher qualquer profundidade que quiser, fazer tiles aparecem entre as instncias de objeto. visible. Se o azulejo visvel. xscale, yscale. Cada telha pode ser elaborado em escala (o padro 1). mistura. Uma mistura de cores utilizadas na elaborao do azulejo. alfa. Um valor que indica transparncia alfa telha. 1 = no transparente, 0 = totalmente transparente.

Para alterar as propriedades de uma tile em particular voc precisa saber sua id. Quando voc adicionar tiles na criao de rooms quando a id mostrada na barra de informaes na parte inferior. H tambm uma funo para encontrar a id de uma tile em uma posio particular. As seguintes funes existentes que tratam de peas: tile_add (background, left, top, width, height, x, y, depth) Adiciona um novo ladrilho para o quarto com os valores indicados (ver em cima de seus significados). A funo retorna a id da tile que podem ser utilizados mais tarde. tile_delete (id) Exclui a tile com o id dada. tile_exists (id) Retorna se uma tile com a id dada existe. tile_get_x (id) Retorna a posio x da telha com a id dada. tile_get_y (id) Retorna a posio y da telha com a id dada. tile_get_left (id) Retorna o valor do lado esquerdo da tile com a id dada. tile_get_top (id) Devolve o valor superior da tile com a id dada. tile_get_width (id) Retorna a largura da tile com a id dada. tile_get_height (id) Retorna a altura da tile com a id dada. tile_get_depth (id) Retorna a profundidade da tile com a id dada. tile_get_visible (id) Retorna se o tile com a id dada visvel. tile_get_xscale (id) Retorna o xscale da tile com a id dada. tile_get_yscale (id) Retorna o yscale da tile com a id dada. tile_get_background (id) Retorna o plano de fundo com a id dada. tile_get_blend (id) Retorna a cor de mistura da tile com a id dada.

tile_get_alpha (id) Retorna o valor alfa da tile com a id dada. tile_set_position (id, x, y) Define a posio da tile com a id dada. tile_set_region (id, left, top, width, height) Define a regio da tile com a id constante do seu plano de fundo. tile_set_background (id, background) Define o plano de fundo para a tile com a id dada. tile_set_visible (id, visible) Define se a tile com a id dada visvel. tile_set_depth (id, depth) Define a profundidade da tile com a ID dada. tile_set_scale (id, xscale, yscale) Define o dimensionamento da tile com a id dada. tile_set_blend (id, color) Define a cor de mistura da tile com a ID dada. Apenas disponvel na verso Pro! tile_set_alpha (id, alpha) Define o valor alfa da tile com a ID dada. As seguintes funes de acordo com as camadas de tiles, isto , colees de tiles na mesma profundidade. tile_layer_hide (depth) Oculta todas as tiles na camada de profundidade indicada. tile_layer_show (depth) Mostra todas as tiles na camada de profundidade indicada. tile_layer_delete (depth) Exclui todas as tiles na camada de profundidade indicada. tile_layer_shift (depth, x, y) Muda todas as tiles na camada de profundidade indicada sobre o vetor x, y. Pode ser usado para criar camadas deslocamento de tiles. tile_layer_find (depth, x, y) Retorna a id da tile com a profundidade dada na posio (x, y). Quando no existe a tile na posio -1 retornado. Quando vrias tiles com a profundidade dada existem na primeira posio retornada. tile_layer_delete_at (depth, x, y) Exclui a tile com a profundidade dada na posio (x, y). Quando vrios tiles com a profundidade dada existem na posio de todos elas so excludas. tile_layer_depth(depth, newdepth) Altera a profundidade de todas as tiles na profundidade indicada para a nova profundidade. Com esta funo voc pode mover camadas de tiles inteiras para uma nova profundidade. O Display O display representa toda a rea do monitor. Tem um tamanho (tipicamente 1024x768, ou 1280x1024), uma profundidade de cor, ou seja, o nmero de bits que so usados para representar um nico pixel (normalmente 16 = High Color ou 32 = Full Color) e uma frequncia de atualizao, que , o nmero de vezes por segundo a tela atualizada (normalmente entre 60 e 120). Essas configuraes podem ser alteradas normalmente, atravs das propriedades do display. Para jogos, porm, em especial, quando executado em modo de tela cheia, importante ser capaz de alterar estas definies. Todas estas definies podem ser inicializadas para o jogo nas configuraes de jogo. Para usar durante o jogo as seguintes funes existem. Observe ainda que mudar as configuraes durante o jogo ir resultar em um atraso de tempo porque as coisas devem ser reconstrudas. As funes para definir o modo s esto disponveis no Pro Edition. display_get_width () Retorna a largura da tela em pixels. display_get_height () Retorna a altura da tela em pixels.

display_get_colordepth () Retorna a profundidade de cores em bits. display_get_frequency () retorna a frequncia de atualizao da tela. display_set_size (w, h) Define a largura e altura da tela em pixels. Retorna se foi bem sucedido. (Perceba que somente certas combinaes so permitidos.) display_set_colordepth (coldepth) Define a profundidade de cor. Em geral, apenas 16 e 32 so os valores permitidos. Retorna se bem sucedido. display_set_frequency (frequency) Define a frequncia de atualizao do display. Apenas poucas frequncias so permitidas. Normalmente, voc pode definir isso para 60, com a mesma velocidade da room para obter de 60 quadros por segundo de movimento. Retorna se bem sucedido. display_set_all (w, h, frequency, coldepth) Define de uma s vez. Use -1 para valores que no querem mudar. Retorna se bem sucedido. display_test_all (w, h, frequency, coldepth) Testa se as configuraes indicadas so permitidas. No alterar as configuraes. Use -1 para valores que no querem mudar. Retorna se as configuraes so permitidos. display_reset () redefine as configuraes de vdeo para os mais quando o programa foi iniciado. s vezes til para obter informaes sobre a posio do mouse sobre a tela ou para alterar esta posio. Para isso existem as seguintes funes: display_mouse_get_x () Retorna a coordenada x do mouse sobre a tela. display_mouse_get_y () Retorna a coordenada y do mouse sobre a tela. display_mouse_set (x, y) Define a posio do mouse sobre a tela com os valores indicados. A janela O jogo acontece em uma janela. Esta janela tem muitas propriedades, como se tem uma borda, se tela cheia, etc Normalmente estes so definidos nas configuraes do jogo. Mas voc pode mudar depois, durante o jogo. As funes a seguir existem para isso: window_set_visible (visible) Define se a janela do jogo visvel. claro que voc normalmente quer a janela para permanecem visveis durante todo o jogo. O programa no vai recebe eventos de teclado quando a janela invisvel. window_get_visible () Retorna se a janela do jogo est visvel. window_set_fullscreen (full) Define se a janela mostrada no modo de tela cheia. window_get_fullscreen () Retorna se a janela mostrada no modo de tela cheia. window_set_showborder (show) Define se a borda ao redor da janela mostrada. (No modo de tela cheia, nunca mostrado.) window_get_showborder () Retorna se a borda ao redor da janela mostrado no modo de janela. window_set_showicons (show) Define se a borda dos cones (iconize, maximizar, fechar) so mostrados. (No modo de tela cheia eles nunca so mostrados.) window_get_showicons () Retorna se a borda dos cones so mostrados no modo de janela. window_set_stayontop (stay) Define se a janela deve ficar sempre em cima de outras janelas. window_get_stayontop () Retorna se a janela fica sempre em cima das outras

janelas. window_set_sizeable (sizeable) Define se a janela dimensionvel pelo jogador. (O jogador s pode redimensionar quando a borda mostrada a janela e no est em modo de tela cheia). window_get_sizeable () Retorna se a janela importante pelo jogador. window_set_caption (caption) Define a sequncia de legenda para a janela. Normalmente voc especificar isso na definio do quarto e ele pode ser alterado usando o room_caption varivel. Ento, essa funo no normalmente til, a menos que voc chamar a si mesmo quarto em vez de deixar Game Maker faz-lo. A legenda s visvel quando a janela tem uma borda e quando ele no est em modo de tela cheia. window_get_caption () Retorna o ttulo da janela. window_set_cursor (curs) Define o cursor do mouse usado na janela. Voc pode usar a constante a seguir: cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_nodrop cr_hsplit cr_vsplit cr_multidrag cr_sqlwait cr_no cr_appstart cr_help cr_handpoint cr_size_all Em particular, para ocultar o cursor do mouse, cr_none usar como valor. window_get_cursor () Retorna o cursor usado na janela. window_set_color (color) Define a cor da parte da janela que no usado para exibir o quarto. window_get_color () Retorna a cor da janela. window_set_region_scale (scale, adaptwindow) Se a janela maior que o espao real da sala normalmente exibido em uma regio centrada na janela. ainda possvel indicar que ele deve ser escalado para preencher a totalidade ou parte da janela. Um valor de 1 no de escala. Se voc usar um valor de 0 a regio ser dimensionada para preencher a janela inteira. Se voc configur-lo para um valor negativo, ser dimensionado para o tamanho mximo dentro da janela, mantendo a relao de aspecto (isto muitas vezes o que voc quiser). adaptwindow indica se o tamanho da janela deve ser adaptada se o quarto escalados no caber dentro Adaptar a janela s eficaz quando o fator de escala

positivo. window_get_region_scale () Retorna o fator de escala para a regio do desenho. A janela tem uma posio na tela e um tamanho. (Quando falamos de posio e tamanho ns sempre falamos da parte cliente da janela sem as bordas.) Voc pode alterar isso apesar de que dificilmente voc de dentro de seu jogo. Normalmente elas so feitas automaticamente ou pelo jogador. As seguintes funes podem ser usadas para alterar a posio da janela e tamanho. Observe que essas funes de acordo com o modo janela. Se a janela estiver no modo de tela cheia eles ainda podem ser usados, mas s ter efeito quando se muda o modo de tela cheia para desligado. window_set_position (x, y) Define a posio da parte do cliente (da janela) para a posio indicada. window_set_size (w, h) Define o tamanho da parte do cliente (da janela) para o tamanho indicado. Observe que o tamanho indicado deve ser pequeno demais para caber na regio de desenho e ser grande o suficiente para manter a regio a se encaixar. window_set_rectangle (x, y, w, h) Define a posio eo tamanho do retngulo da janela. (Ser que as rotinas anteriores em uma nica etapa.) window_center () Centralizar a janela na tela. window_default () D a janela de tamanho padro e posio (centralizada) no ecr. window_get_x () retorna o atual coordenada x da janela. window_get_y () Retorna a coordenada y atual da janela. window_get_width () Retorna a largura atual da janela. window_get_height () Retorna a altura atual da janela. Novamente, voc provavelmente nunca quer usar qualquer uma das funes posicionamento posicionamento como Game Maker cuida dessas automaticamente. Em raros casos voc pode querer saber a posio do mouse com relao janela. (Normalmente voc use sempre a posio do mouse em relao a room ou em relao a uma vista.) As funes a seguir existem para isso. window_mouse_get_x () Retorna a coordenada x do mouse na janela. window_mouse_get_y () Retorna a coordenada y do mouse na janela. window_mouse_set (x, y) Define a posio do mouse na janela para os valores indicados. Vistas Como voc deve saber que voc pode definir at oito pontos de vista diferentes na concepo das rooms. Uma vista definida pela sua rea de exibio na room e sua exibio na tela (ou mais precisamente na regio do desenho dentro da janela). Usando vistas voc pode mostrar as diferentes partes da room em lugares diferentes na tela. Alm disso, voc pode ter certeza que um determinado objeto permanece sempre visvel. Voc pode controlar os pontos de vista de dentro do cdigo. Voc pode fazer vistas visveis e invisveis e alterar o local ou o tamanho das vista na regio de desenho ou a posio e o tamanho da exibio na room (o que particularmente til quando voc

indicar nenhum objeto para ser visvel). Voc pode alterar o tamanho da borda horizontal e vertical em torno do objeto visvel, e voc pode indicar qual objeto deve permanecer visvel nas vistas. Este ltimo muito importante quando as importantes mudanas objeto durante o jogo. Por exemplo, voc pode alterar o objeto personagem principal com base em seu status atual. Infelizmente, isso no significa que ele no mais o objeto que deve permanecer visvel. Isso pode ser sanado por uma linha de cdigo no evento de criao de todos os possveis objetos principais (supondo que isso deve acontecer na primeira vista): { view_object [0] = object_index; } As seguintes variveis que influenciam a existir o ponto de vista. Todos, com exceo das duas primeiras matrizes esto variando de 0 (a primeira vista) a 7 (a ltima vista). view_enabled Quais exibies esto habilitadas ou no. view_current * A vista atualmente desenhada (0-7). Use isto apenas no caso de desenho. Voc pode por exemplo buscar essa varivel para tirar algumas coisas em uma nica perspectiva. Varivel no pode ser mudado. view_visible [0 .. 7] Se o ponto de vista particular, visvel na tela. view_xview [0 .. 7] X posio da exibio na sala. view_yview [0 .. 7] Y posio da exibio na sala. view_wview [0 .. 7] Largura da exibio na sala. view_hview [0 .. 7] Altura da exibio na sala. view_xport [0 .. 7] Posio x da janela de exibio na regio de desenho. view_yport [0 .. 7] Posio y da janela de exibio na regio de desenho. view_wport [0 .. 7] Largura da janela de exibio na regio de desenho. view_hport [0 .. 7] Altura da janela de exibio na regio de desenho. view_angle [0 .. 7] ngulo de rotao utilizado para a vista na room (sentido antihorrio em graus). view_hborder [0 .. 7] Tamanho da borda horizontal em torno do objeto visvel (em pixels). view_vborder [0 .. 7] Tamanho da borda vertical em torno de objetos visveis (em pixels). view_hspeed [0 .. 7] Velocidade mxima horizontal do ponto de vista. view_vspeed [0 .. 7] Velocidade mxima vertical do ponto de vista. view_object [0 .. 7] Objeto cuja instncia deve permanecer visvel na vista. Se houver vrias instncias deste objeto apenas o primeiro seguido. Voc tambm pode atribuir um ID de instncia para esta varivel. Nesse caso, a instncia em particular seguida. Observe que o tamanho da imagem na tela decidido com base nas vistas visveis no incio da room. Se voc alterar as vistas durante o jogo, elas no podem caber na tela. O tamanho da tela no adaptada automaticamente. Portanto, se voc precisar voc tem que faz-lo manualmente, utilizando as seguintes funes: window_set_region_size (w, h, adaptwindow) Defina a largura e altura da regio de desenho na janela. adaptwindow indica se o tamanho da janela deve ser adaptada caso a regio no se encaixa dentro. O tamanho da janela ser sempre adaptada se voc usar dimensionamento fixo. (Veja a funo window_set_region_scale ()).

window_get_region_width () Retorna a largura atual da regio de desenho. window_get_region_height () Retorna a altura atual da regio de desenho. Em um jogo voc precisa frequentemente da posio do cursor do mouse. Normalmente voc usa para isso as variveis mouse_x e mouse_y. Quando h vrios modos de exibio, essas variveis indicam a posio do mouse em relao vista em que o mouse est dentro s vezes, porm, talvez seja a posio do mouse em relao a uma viso particular, tambm quando ele est fora dessa vista. Para isso existem as seguintes funes. window_view_mouse_get_x (id) Retorna a coordenada x do mouse em relao vista com id ndice. window_view_mouse_get_y (id) Retorna a coordenada y do mouse em relao vista com id ndice. window_view_mouse_set (id, x, y) Define a posio do mouse em relao a vista com o ndice id. window_views_mouse_get_x () Retorna a coordenada x do mouse com relao vista que (como o mouse_x). window_views_mouse_get_y () Retorna a coordenada y do mouse com relao vista que (como o mouse_y). window_views_mouse_set (x, y) Define a posio do mouse em relao primeira vista, que visvel. Redesenha a tela Normalmente no final de cada etapa a room redesenhada na tela. Mas em raras circunstncias, voc precisa redesenhar a room em outros momentos. Isso acontece quando o programa assume o controle. Por exemplo, antes de dormir por um longo perodo de tempo pode ser redesenhada se queira. Alm disso, quando seu cdigo exibe uma mensagem e quer esperar para que o jogador pressione uma tecla, voc precisa de um redesenhar no meio. H duas rotinas diferentes para fazer isso. screen_redraw () redesenha a room chamando todos os eventos de desenho. screen_refresh () Atualiza a tela usando a imagem da room (no realizar eventos de desenho). Para entender a segunda funo, voc precisa entender mais plenamente como o desenho funciona internamente. Existe internamente uma imagem em que todo o desenho acontece. Esta imagem no est visvel na tela. Somente no final de uma etapa, depois que todo o desenho tenha sido posicionado, a imagem da tela passa a ter essa imagem interna. (Isso chamado de buffer duplo.) A primeira funo redesenha a imagem interna e, em seguida, atualiza a imagem na tela. A segunda funo apenas atualiza a imagem na tela. Agora voc tambm deve perceber que voc no pode usar o desenho aes ou funes em outros eventos que no seja eventos de desenho. Eles iro desenhar coisas na imagem interna, mas estes no sero visveis na tela. E quando os eventos de desenho so executados, primeiro o plano de fundo da room desenhada, apagando tudo o que voc desenhou na imagem interna. Mas quando voc usa screen_refresh () depois de seu desenho, a imagem atualizada se tornaro visveis na tela. Assim, por exemplo, um script pode tirar algum texto na tela, chamar a funo refresh e aguarde para que o jogador pressionar uma tecla, como no seguinte pedao de cdigo.

{ draw_text (room_width / 2, 100, "Pressione qualquer tecla para continuar."); screen_refresh (); keyboard_wait (); } Por favor, perceba que, quando voc desenha em um outro evento do que no evento desenho, voc simplesmente desenha sobre a imagem, no em uma vista! Assim, as coordenadas que voc usa so os mesmos se no existisse vistas. Tenha cuidado ao utilizar esta tcnica. Certifique-se de compreend-la primeiro e perceber que atualizar a tela leva algum tempo. Quando voc est desenhando a room si prpria ela pode ser til para NO deixar ela ser desenhada automticamente em tudo. Por exemplo, voc pode querer chamar a room s a cada 5 passos. Voc pode usar as seguintes funes para isso: set_automatic_draw (value) Indica se automaticamente para redesenhar a room (true, padro) ou no (false). Finalmente, existe uma funo com a qual voc pode definir se deseja sincronizar o desenho com a frequncia de atualizao do monitor: set_synchronization valor () Indica se para sincronizar o desenho com a frequncia de atualizao do monitor. Voc tambm pode forar uma espera para a prxima sincronizao vertical, utilizando a seguinte funo: screen_wait_vsync () Espera para a prxima sincronizao vertical do monitor.

Som e msica
Som desempenha um papel crucial em jogos de computador. Os sons so adicionados ao seu jogo na forma de recursos de som. Certifique-se que os nomes que voc usa so nomes de variveis vlidas. Como voc ir ver voc pode indicar quatro tipos diferentes de som: sons normais, msica de fundo, sons 3D, e sons que devem ser tocadas atravs do media player. Sons normais so utilizadas para efeitos de som. Em arquivos wave em geral so usados para isso. Muitos deles podem a tocar ao mesmo tempo (inclusive mltiplas instncias do mesmo som normal). Voc pode aplicar todos os tipos de efeitos para eles. A msica de fundo tipicamente consistem de arquivos MIDI, mas s vezes tambm so usados arquivos wave. Os efeitos sonoros podem ser aplicadas a ele. A nica diferena dos sons normais que apenas uma msica de fundo pode tocar a qualquer momento. Se voc comear uma a uma corrente interrompido. Sons 3D permite efeitos de som 3D, que descrito abaixo. Eles so mono sons (wave ou MIDI). Finalmente, se voc quiser usar outro tipo de som, em especial, mp3, estes no podem ser reproduzidos atravs do DirectX. Como resultado, o media player normal deve ser

usado para isso. Isso muito mais limitado. S pode reproduzir um som ao mesmo tempo. Nenhum efeito pode ser aplicado (no pode mudar o volume) e o tempo, por exemplo sons em loop so pobres. Tambm pode haver atrasos quando tocar estes sons. Voc fortemente encorajado a no us-los. (Alguns computadores tambm no poderia suport-los) Funes bsicas de som Existem cinco funes bsicas relacionadas com sons, dois para tocar um som, um para verificar se um som est tocando, e dois para parar de sons. A maioria de toma o ndice do som como argumento. O nome do som representa o seu ndice. Mas voc tambm pode armazenar o ndice em uma varivel e us-la. sound_play (index) Reproduz o som indica uma vez. Se o som a msica de fundo a msica de fundo atual est interrompido. sound_loop (index) Reproduz o som indica, repetio contnuo. Se o som a msica de fundo a msica de fundo atual est interrompido. sound_stop(index) Pra os sons indicados. Se houver vrios sons com este ndice a tocar ao mesmo tempo, tudo ficar parado. sound_stop_all () Pra todos os sons. sound_isplaying (index) Retorna se (uma cpia) o som indicado est tocando. Note que esta funo retorna verdadeiro quando o som realmente toca atravs dos alto-falantes. Depois de chamar a funo para tocar um som que no atingir imediatamente os alto-falantes ento a funo pode ainda retornar false por um tempo. Semelhante, quando o som interrompido ainda ouvi-lo por um tempo (por exemplo, por causa do eco) e ainda a funo retornar true. possvel usar mais efeitos sonoros. Em particular, voc pode alterar o volume e os pan, ou seja, se o som vem do alto-falante esquerdo ou direito. Em todos estes casos, o volume s pode ser reduzida. Essas funes no trabalham para os arquivos que tocam atravs do media player (como aquivos mp3). sound_volume (index, value) Muda o volume do som indicado (0 = baixo, 1 = alta). sound_global_volume (value) Variao do volume global de todos os sons (0 = baixo, 1 = alta). sound_fade (index, value, time) Altera o volume do som indicado para o novo valor (0 = baixo, 1 = alta) durante o perodo indicado (em milissegundos). Isto pode ser usado para fade out ou fade in na msica. sound_pan (index, value) Altera o pan para o som indicado (-1 = esquerda, centro = 0, 1 = direita). sound_background_tempo (factor) Muda o ritmo da msica de fundo (se um arquivo midi). factor indica o fator com o qual se multiplicar o tempo. Assim, um valor de 1 corresponde ao ritmo normal. Os maiores valores correspondem a um tempo mais rpido, menores valores para um andamento mais lento. Deve situarse entre 0,01 e 100. Alm de MIDI e arquivos wave (e arquivo mp3) h realmente um quarto tipo de arquivo que pode ser tocado: arquivos de msica direta. Estes tm a extenso .sgt. Tais arquivos embora muitas vezes se referem a outros arquivos, por exemplo, descrevendo informaes da banda ou estilo. Para encontrar esses arquivos, o sistema de som deve saber onde eles esto localizados. Para este fim, poder utilizar as seguintes funes

para definir o diretrio de busca de arquivos. Note tambm que voc deve adicionar os arquivos de si mesmo. Game Maker no inclui automaticamente como arquivos adicionais. sound_set_search_directory (dir) Define o diretrio onde os arquivos de msica direto podem ser encontrados. A string dir no deve incluir a barra no final. Efeitos sonoros Esta funcionalidade s est disponvel na verso Pro do Game Maker. Os efeitos sonoros podem ser usados para alterar a forma dos sons e a sons da msica de fundo. Perceba que os efeitos sonoros s se aplicam aos arquivos wave e midi, e no para arquivos MP3. Esta seo descreve as funes que existem para usar e alterar os efeitos sonoros. Perceba que para usar estas funes voc precisa ter uma boa compreenso de como o trabalho de som e sintetizadores. Nenhuma explicao dos diferentes parmetros dada aqui. Pesquise na web ou em livros para mais informaes. Para aplicar um efeito sonoro em um som particular, voc pode indic-lo quando definido o recurso de som ou voc pode usar a seguinte funo sound_effect_set (snd, effect) Define uma (combinao de) efeito(s) sonoro(s) para o som indicado. efeito pode ser qualquer um dos seguintes valores: se_none se_chorus se_echo se_flanger se_gargle se_reverb se_compressor se_equalizer Voc pode definir uma combinao de efeitos somando os valores. Assim, por exemplo, voc pode usar sound_effect_set (snd, se_echo + se_reverb); para obter uma combinao de efeitos de eco e reverberao. Todos os efeitos tm algumas configuraes padro. Voc pode alterar essas configuraes, uma vez que um efeito foi aplicado a um som. A ordem aqui fundamental. Voc primeiro aplicar o efeito para o conjunto de sons e em seguida os parmetros para ela. Uma vez que voc reaplicar efeitos ao som, as configuraes se vo e voc tem que coloc-las novamente. Observe que todos os parmetros devem estar em um determinado intervalo, que indicado abaixo. As seguintes funes existentes para alterar parmetros do efeito: sound_effect_chorus (snd, wetdry, depth, feedback, frequncy, wave, delay, phase) Define os parmetros para o efeito de coro para o som indicado. Os

seguintes parmetros podem ser definidos: wetdry Relao de sinal molhado (processado) para sinal seco (no processado) . (intervalo: 0 a 100, padro 50) depth Percentagem atravs da qual o tempo de atraso modulado pelo oscilador de baixa freqncia, em centsimos de ponto percentual. (intervalo: 0 a 100, padro 25) feedback Percentagem do sinal de sada para respota da entrada do efeito. (intervalo: -99 a 99, padro 0) frequncy Freqncia do LFO. (intervalo: 0 a 10, padro 0) wave Forma da onda do LFO. (0 = tringulo, 1 = onda, padro 1) delay Nmero em milissegundos de atraso que a entrada atrasada antes que ele seja reproduzido. (intervalo: 0 a 20, padro 0) phase Fase diferencial entre LFOs esquerda e direita. (intervalo: 0 a 4, padro 2) sound_effect_echo (snd, wetdry, feedback, leftdelay, rightdelay, pandelay) Define os parmetros para o efeito de eco para o som indicado. Os seguintes parmetros podem ser definidos: wetdry Relao de sinal molhado (processado) para sinal seco (no processado) . (intervalo: 0 a 100, padro 50) feedback Percentagem do sinal de sada para resposta da entrada do efeito. (intervalo: -99 a 99, padro 0) leftdelay Atraso para o canal esquerdo, em milissegundos. (intervalo: 1-2000, padro 333) rightdelay Atraso para o canal direito, em milissegundos. (intervalo: 1-2000, padro 333) pandelay Se troca esquerda e direita, com atrasos sucessivos cada eco. (0 = no troca, troca = 1, padrot 0) sound_effect_flanger (snd, wetdry, profundidade, feedback, frequency, wave, delay, phase) Define os parmetros para o efeito flanger para o som indicado. Os seguintes parmetros podem ser definidos: wetdry Relao de sinal molhado (processado) para sinal seco (no processado) . (intervalo: 0 a 100, padro 50) depth Percentagem atravs da qual o tempo de atraso modulado pelo oscilador de baixa freqncia, em centsimos de ponto percentual. (intervalo: 0 a 100, padro 25) feedback Percentagem do sinal de sada para respota da entrada do efeito. (intervalo: -99 a 99, padro 0) frequncy Freqncia do LFO. (intervalo: 0 a 10, padro 0) wave Forma da onda do LFO. (0 = tringulo, 1 = onda, padro 1) delay Nmero em milissegundos de atraso que a entrada atrasada antes que ele seja reproduzido. (intervalo: 0 a 20, padro 0) sound_effect_gargle (snd, frequency, wave) Define os parmetros para o efeito para o som de gargarejo indicado. Os seguintes parmetros podem ser definidos: rate Taxa de modulao, em Hertz. (intervalo: 1-1000, padro 1) wave Forma da modulao da onda . (0 = tringulo, quadrado = 1, default 0) sound_effect_reverb (snd, gain, mix, time, ratio) Define os parmetros para o efeito de reverberao do som indicado. Os seguintes parmetros podem ser definidos: gain Ganho de entrada de sinal, em decibis (dB). (intervalo: -96 a 0, default 0) mix Mistura Reverberao, em dB. (intervalo: -96 a 0, default 0) time Tempo de reverberao, em milissegundos. (faixa: 0,001 a 3000, padro 1000) ratio Razo de frequncia. (faixa: 0,001 a 0,999, padro 0,001) sound_effect_compressor (snd, gain, attack, release, threshold, ratio, delay)

Define os parmetros para o efeito compressor para o som indicado. Os seguintes parmetros podem ser definidos: gain Ganho de sada do sinal aps a compresso. (intervalo: -60 a 60, default 0) attack Tempo antes da compresso atinge o seu pleno valor. (intervalo: 0,01-500, padro 0,01) release Velocidade em que a compresso interrompida aps cair abaixo do limiar de entrada. (intervalo: 50 a 3000, padro 50) threshold Ponto em que comea a compresso, em decibis. (intervalo: -60 a 0, default -10) ratio Taxa de compresso. (intervalo: 1 a 100, padro 10) delay Tempo aps que o limiar seja atingido antes da fase de ataque ser iniciada, em milissegundos. (intervalo: 0 a 4, padro 0) sound_effect_equalizer (snd, centro, bandwidth, gain) Define os parmetros para o efeito equalizador para o som indicado. Os seguintes parmetros podem ser definidos: center Frequncia central, em hertz. (intervalo: 80 a 16000) bandwidth Largura de banda, em semitons. (intervalo: 1 a 36). gain Ganho (intervalo: -15 a 15) Som 3D Esta funcionalidade s est disponvel na verso Pro do Game Maker. Sons 3D refere-se ao som que tem uma posio (e velocidade) com respeito ao ouvinte. Embora seu uso mais proeminente em jogos 3D tambm possvel utiliz-lo efetivamente em 2D. A idia que um som tem uma posio no espao. Em todas as funes o ouvinte est pressupe-se na posio (0,0,0). O sistema calcula quanto o ouvinte poderia ouvir o som e adapt-lo adequadamente. O efeito especialmente bom quando voc tem um bom sistema de alto-falantes, mas funciona bem em pequenos altofalantes. Alm de uma posio, o som tambm tem uma velocidade. Isto leva a efeito Doppler bem conhecido que modelado corretamente. Finalmente, o som pode ter uma orientao e, novamente, o som adaptado em conformidade. Game Maker suporta opes de som 3D atravs das funes abaixo. Eles s funcionam para os recursos de som que estavam indicados para ser 3D. (A desvantagem que os sons 3D ser sons mono e no estreo.) sound_3d_set_sound_position (snd, x, y, z) Define a posio do som indicados em relao ao ouvinte a posio indicada no espao. Valores no eixo x aumenta da esquerda para a direita, sobre o eixo y de baixo para cima, e sobre o eixo z de perto para longe. Os valores so medidos em metros. O volume com que o som seja ouvido desta medida depende da mesma forma como no mundo real. sound_3d_set_sound_velocity (snd, x, y, z) Define a velocidade do som indicado ao vetor indicado no espao. Por favor, note que a configurao da velocidade no significa que as mudanas de posio. A velocidade s usado para calcular os efeitos doppler. Portanto, se voc quiser mover o som deve-se mudar a posio do som. sound_3d_set_sound_distance (snd, mindist, maxdist) Define a distncia mnima em que o som no faz mais aumento no volume e a distncia mxima em

que o som no pode mais ser ouvida. Assim, quando a distncia fica entre 0 e a distncia mnima, o som a amplitude mxima. Quando a distncia entre a mnima e a distncia mxima a amplitude diminui lentamente at que a distncia mxima atingida ou o som assim mesmo j no audvel. O padro de distncia mnima de 1 metro e a distncia mxima de 1 bilho de metros. sound_3d_set_sound_cone (snd, x, y, z, anglein, angleout, voloutside) Normalmente o som tem a mesma amplitude a uma determinada distncia em todas as direes. Voc pode definir o cone de som para mudar isto e fazer som direcional. x, y, z especificar a direo do cone de som. anglein especifica o ngulo para dentro. Se o ouvinte est dentro desse ngulo ele ouve o som no seu volume normal. angleout especifica o ngulo de fora. Quando o ouvinte est fora deste volume, foi indicado no voloutside. Para ser preciso, voloutside um nmero negativo que indica o nmero de centenas de decibis que deve ser subtrado do volume interior. Entre o ngulo de dentro e fora do volume diminui gradualmente. CD de msica Esta funcionalidade s est disponvel na verso Pro do Game Maker. H tambm uma srie de funes para lidar com a reproduo de msica de um CD. cd_init () Deve ser chamada antes de usar as outras funes. Tambm deve ser chamado quando um CD alterado (ou, simplesmente, de vez em quando). cd_present () Retorna se um CD est na unidade de CD padro. cd_number () Retorna o nmero de faixas do CD. cd_playing () Retorna se o CD est tocando. cd_paused () Retorna se o CD est em pausa ou parado. cd_track () Retorna o nmero da faixa atual (1 = o primeiro). cd_length () Retorna o tamanho total do CD em milissegundos. cd_track_length (n) Retorna o comprimento de n faixa do CD em milissegundos. cd_position () Retorna a posio atual no CD em milissegundos. cd_track_position () Retorna a posio atual na faixa que est sendo jogado em milissegundos. cd_play (first, last) Informa o CD para reproduzir faixas de primeira at a ltima. Se voc quiser tocar o CD completo dar 1 e 1000 como argumentos. cd_stop () Pra a reproduo. cd_pause () Interrompe a reproduo. cd_resume () Termina o jogo. cd_set_position (pos) Define a posio do CD em milissegundos. cd_set_track_position (pos) Define a posio na faixa atual em milisegundos. cd_open_door () Abre a porta do CD player. cd_close_door () Fecha a porta do CD player. Existe uma funo muito geral para acessar a funcionalidade multimdia do Windows. MCI_command str () Esta funo envia o comando string para o sistema multimdia do Windows usando o Media Control Interface (MCI). Ele retorna a string de retorno. Voc pode usar isso para controlar todos os tipos de dispositivos multimdia. Consulte a documentao do Windows para obter informaes sobre como utilizar este comando. Por exemplo MCI_command ('play cdaudio from 1') toca um CD (depois de ter inicializado corretamente usando outros comandos). Esta funo apenas para uso avanado!

Telas de apresentao, recordes, e outras pop-ups


Nesta seo iremos descrever uma srie de funes que podem ser usadas para mostrar telas de apresentao com vdeos, imagens, etc, para exibir mensagens e fazer perguntas ao jogador, e para mostrar a lista de recordes. Telas de Apresentao Esta funcionalidade s est disponvel na verso Pro do Game Maker. Muitos jogos tm as chamadas telas de apresentao. Estas telas mostram um vdeo, uma imagem ou um texto. Muitas vezes eles so utilizados no incio do jogo (como uma introduo), o incio de um nvel, ou no final do jogo (por exemplo, os crditos). No Game Maker telas de apresentao, tais como texto, imagem ou vdeo pode ser mostrado em qualquer momento durante o jogo. O padro das telas de apresentao so mostrados dentro da janela do jogo, mas tambm possvel mostr-los em uma janela separada. O jogo interrompido quando a tela mostrada. O jogador pode retornar ao jogo, pressionando a tecla Escape ou clicando com o mouse na janela. (Estas configuraes podem ser alteradas, veja abaixo). As seguintes funes podem ser utilizadas para mostrar as telas de apresentao: splash_show_video (fname, loop) Mostra uma tela de vdeo. fname o nome do arquivo de vdeo. Se um arquivo de filme em particular suportada depende dos drivers no computador. Normalmente voc pode usar. avi, .mpg, e arquivos. wmv mas evite codecs especiais. melhor colocar esse arquivo na pasta do jogo sozinho ou em uma subpasta. loop indica se o video repete. splash_show_text (fname, delay) Mostra uma tela de texto. fname o nome do arquivo de texto. Voc pode exibir arquivos de texto padro (txt.) Ou arquivos de texto rico (.rtf). Apenas parte dos recursos de rich text so levados em conta. Por exemplo imagens e outros objetos incorporados no so apresentados. delay indica o atraso em milissegundos antes de retornar ao jogo. Use 0 ou um valor negativo de esperar at que o jogador pressiona a tecla ESC ou clicar com o mouse na janela. (Note que a barra de rolagem no ser mostrada, nem h outra maneira de percorrer o texto. Portanto, o texto deve se ajustar janela.) splash_show_image (fname, delay) Mostra uma tela de imagem. fname o nome do arquivo de imagem. Muitos tipos de imagem so suportados (por exemplo .bmp, .jpg, .tif e .wmf), mas sem imagens animadas. delay o atraso em milisegundos antes de retornar ao The Game. splash_show_web (url, delay) Mostra uma tela de pgina web. url o URL da pgina web (comeando com http://) ou o nome do arquivo para um arquivo HTML local. Note no entanto que necessrio fornecer o caminho completo para este trabalho. Ento, o melhor exemplo como usar algo como working_directory url + "\ index.html". Delay o atraso em milisegundos antes de retornar ao jogo. Voc pode mudar a maneira como as telas de apresentao so exibidos utilizando as funes abaixo: splash_set_main (main) Indica se a tela deve ser mostrada na janela principal do jogo (true, padro) ou em uma janela separada (false). splash_set_scale (scale) Define o fator de escala para ser usada ao exibir um

vdeo splash ou imagem. Ao utilizar um valor de 0, o fator de escala escolhido de forma que a janela preenchida (padro). splash_set_cursor (vis) Define se o cursor deve estar visvel na tela inicial. Padro visvel. Para filmes o cursor no pode ser desligado. splash_set_color (col) Define a cor da rea ao redor da imagem ou vdeo. splash_set_caption (pac) Define a legenda para a janela de apresentao. Isto s tem efeito quando uma janela de apresentao separada utilizada. Por padro a string vazia usada. splash_set_fullscreen (full) Indica se usar uma janela em tela cheia ou no. Isto s tem efeito quando uma janela de apresentao separada utilizada. Por padro uma janela normal usada. splash_set_border (border) Indica se a janela deve ter uma borda. Isto s tem efeito quando uma janela de apresentao normal separada usada. Por padro uma borda usada. splash_set_size (w, h) Define o tamanho da janela de apresentao. Isto s tem efeito quando uma janela de apresentao normal separada usada. Tamanho padro 640x480. splash_set_position (x, y) Define o tamanho da janela de apresentao. Isto s tem efeito quando uma janela de apresentao normal separada usada. Padro do Windows determina a posio. splash_set_adapt (adapt) Indica se o tamanho da janela deve ser adaptado para o tamanho em escala do vdeo ou imagem. Isto s tem efeito quando uma janela de apresentao separada utilizada. Por padro adapt true. splash_set_top (top) Indica se a janela deve ficar em cima de outras janelas. Isto s tem efeito quando uma janela de apresentao separada utilizada. Valor padro true. splash_set_interrupt (interrupt) Indica se o jogo deve ser interrompido enquanto mostra a janela de apresentao. Isto s tem efeito quando uma janela de apresentao separada utilizada. Valor padro true. splash_set_stop_key (stop) Indica se para a exibio da tela quando o jogador pressionar a tecla Escape. Valor padro true. splash_set_stop_mouse (stop) Indica se para a exibio da tela quando o jogador pressionar o mouse dentro da tela inicial. Valor padro true. splash_set_close_button (show) Indica se para mostrar um boto Fechar no canto superior direito da tela de apresentao. Isso til ao executar jogos no modo de tela cheia ou sem uma borda. Valor padro true. Existe um tipo particular de informao inicial, que o jogo de informaes que o usurio pode entrar no Game Maker. Voc pode exibi-la usando a seguinte funo. Voc tambm pode carregar um arquivo de informaes em separado. Esta questo est intimamente relacionada com a exibio da tela de texto, mas a exibio regida pelas definies fornecidas ao definir as informaes do jogo e no pelas definies acima. Ele tambm exibido em uma janela diferente, por isso, possvel visualizar tanto as informaes The Game e uma tela no mesmo momento. Essas funes tambm trabalhar na edio Lite. show_info () Exibe a janela de informaes do jogo. load_info (fname) Carrega as informaes do jogo a partir do arquivo chamado fname. Este deve ser um arquivo de texto rico (.rtf). Isto torna possvel para mostrar arquivos de ajuda em diferentes momentos. Note que, ao contrrio das telas de apresentao, estes arquivos RTF no podem conter imagens.

Mensagens pop-up e questes Uma srie de outras funes existem para aparecer mensagens, perguntas, um menu com opes, ou uma caixa de dilogo no qual o jogador pode inserir um nmero, uma string, ou indicar o nome de uma cor ou file: show_message (str) Exibe uma caixa de dilogo com a string como uma mensagem. show_message_ext (str, but1, but2, but3) Exibe uma caixa de dilogo com a string como uma mensagem e at trs botes. But1, but2 e but3 conter o texto do boto. Uma string vazia significa que o boto no mostrado. Nos textos que voc pode usar o smbolo & para indicar que o caractere seguinte deve ser usada como atalho de teclado para esse boto. A funo retorna o nmero do boto pressionado (0 se o usurio pressiona a tecla ESC). show_question (str) Apresenta uma questo; retorna true quando o usurio seleciona sim e false caso contrrio. get_integer (str, def) Solicita ao jogador em uma caixa de dilogo um nmero. str a mensagem. def o nmero padro mostrado. get_string (str, def) Solicita ao jogador em uma caixa de dilogo uma string. str a mensagem. def o valor padro mostrado. message_background (back) Define a imagem de fundo para a caixa pop-up de qualquer uma das funes acima. back deve ser uma das origens definida no jogo. Infelizmente, os valores de alfa no so levados em conta. No entanto, se o pixel esquerdo inferior tem um valor alfa de 0, todos os pixels com a cor ser considerada transparente. message_alpha (alpha) Define a transparncia alfa para o caixa pop-up de qualquer uma das funes acima. alpha deve estar entre 0 (totalmente transparente) e 1 (no transparente) (apenas para Windows 2000 ou posterior). message_button (spr) Define o sprite usado para os botes na caixa pop-up. spr deve ser uma sprite composto por trs imagens, o primeiro indica o boto quando no pressionado e o mouse fora, o segundo indica o boto quando o mouse estiver sobre ele, mas no pressionando e o terceiro o boto quando ele pressionado. Infelizmente, os valores de alfa no so levados em conta. No entanto, se o pixel esquerdo inferior tem um valor alfa de 0, todos os pixels com a cor ser considerada transparente. message_text_font (name, size, color, style) Define a fonte para o texto na caixa pop-up. (Esta uma fonte normal do Windows, e no uma fonte dos recursos que tem no seu jogo!) Estilo indica o estilo de fonte (0 = normal, 1 = negrito, itlico = 2, e 3 = negrito, itlico). message_button_font (name, size, color, style) Define a fonte para os botes na caixa pop-up. estilo indica o estilo de fonte (0 = normal, 1 = negrito, 2 = itlico, e 3 = negrito, itlico). message_input_font (name, size, color, style) Define a fonte para o campo de entrada na caixa pop-up. estilo indica o estilo de fonte (0 = normal, 1 = negrito, 2 = itlico, e 3 = negrito, itlico). message_mouse_color (col) Define a cor da fonte para os botes na caixa popup quando o mouse est acima dele. message_input_color (col) Define a cor para o fundo da entrada arquivada na caixa pop-up. message_caption (show, str) Define a legenda para a caixa pop-up. show indica se uma borda deve ser mostrada (1) ou no (0) e str indica a legenda quando a borda mostrada.

message_position (x, y) Define a posio da caixa pop-up na tela. Use -1, -1 para centralizar a caixa. message_size (w, h) Corrige o tamanho da caixa pop-up na tela. Se voc escolher -1 para a largura a largura da imagem usada. Se voc escolher -1 para a altura a altura calculada com base no nmero de linhas da mensagem. show_menu (str, def) Mostra um menu de contexto. str indica o texto do menu. Este composto por diferentes itens de menu, com uma barra vertical entre eles. Por exemplo, str = 'menu0 | Menu1 | menu2'. Quando o primeiro item selecionado um 0 retornado, etc. Quando o jogador escolhe nenhum item, o def valor padro retornado. show_menu_pos (x, y, str, def) Mostra um menu como na funo anterior, mas na posio x, y na tela. get_color (defcol) Pede ao jogador uma cor. defcol a cor padro. Se o usurio pressionar Cancelar o valor -1 retornado. get_open_file (filter, name, fname) Pede ao jogador para um arquivo para abrir com o filtro dado. O filtro tem a forma 'nome1 | mask1 | nome2 | mask2 |...'. A mscara contm as diversas opes com um ponto e vrgula entre eles. * Significa qualquer string. Por exemplo: "bitmaps | *. bmp, *. wmf. Se o usurio pressionar Cancelar uma string vazia retornada. get_save_file (filter, name, fname) Solicita um nome de arquivo para salvar com o filtro dado. Se o usurio pressionar Cancelar uma string vazia retornada. get_directory (dname) Pede para um diretrio. dname o nome padro. Se o usurio pressionar Cancelar uma string vazia retornada. get_directory_alt (capt, root) Uma forma alternativa de pedir um diretrio. capt a legenda para se mostrar. root a raiz da rvore de diretrio para ser mostrado. Use a string vazia para mostrar toda a rvore. Se o usurio pressionar Cancelar uma string vazia retornada. show_error (str, abort) Exibe uma mensagem de erro padro (e / ou grava o arquivo de log). Abort indica se o jogo dever ser abortado. Lista de Recordes Um pop-up especial a lista de recordes, que mantido para cada jogo. As seguintes funes existem: highscore_show (numb) Mostra a tabela de recordes. numb a nova pontuao. Se este resultado bom o suficiente para ser adicionado lista, o jogador pode introduzir um nome. Use -1 para exibio simples na lista atual. highscore_set_background (back) Define a imagem de fundo a ser usado. back deve ser o ndice de um dos recursos de plano de fundo. highscore_set_border (show) Define se o formulrio de recordes deve ter uma borda ou no. highscore_set_font (name, size, style) Define a fonte usada para o texto na tabela. (Esta uma fonte do Windows normal, no um dos recursos da fonte.) Voc especificar o nome, tamanho e estilo (0 = normal, 1 = negrito, 2 = itlico, 3 = negrito, itlico). highscore_set_colors (back, new, other) Define as cores usadas para o fundo, a nova entrada na tabela, e as outras entradas. highscore_set_strings (caption, nobody, escape) Alteraes das strings padres diferente quando usadas com a tabela de pontuao. caption a legenda do formulrio. nobody a string usada quando no h ningum no posto especfico. escape a string na parte inferior, indicando que pressionou a tecla de escape.

Voc pode em particular utilizar isto quando o seu jogo deve usar uma linguagem diferente. highscore_show_ext (numb, back, border, col1, col2, name, size) Mostra a tabela de recordes com um nmero de opes (tambm pode ser conseguido atravs de vrias funes anteriores). numb a nova pontuao. Se este resultado bom o suficiente para ser adicionado lista, o jogador pode introduzir um nome. Use -1 para exibio simples na lista atual. back a imagem de fundo a ser usado, border indica se ou no mostra a borda. col1 a cor para a nova entrada, col2 a cor para as outras entradas. name o nome da fonte a usar, e size o tamanho da fonte. highscore_clear () Limpa a lista de recordes. highscore_add (str, numb) Adiciona um jogador com str nome e pontuao numb para a lista. highscore_add_current () Adiciona a pontuao atual para a lista de recordes. O jogador solicitado a fornecer um nome. highscore_value (place) Retorna a pontuao da pessoa em um dado lugar (110). Isto pode ser usado para desenhar a sua prpria lista de recordes. highscore_name (place) Retorna o nome da pessoa em um dado lugar (1-10). draw_highscore (x1, y1, x2, y2) Desenha a tabela de recordes na sala na caixa indicada, usando a fonte atual.

Recursos
No Game Maker voc pode definir vrios tipos de recursos, como sprites, sons, fontes, objetos, etc Neste captulo voc vai encontrar uma srie de funes que do informaes sobre os recursos. No prximo captulo, voc encontrar informaes sobre como modificar e criar recursos precisamente. Sprites As funes a seguir lhe dar informaes sobre um Sprite: sprite_exists (ind) Retorna se uma sprite com o ndice dado existe. sprite_get_name (ind) Retorna o nome da sprite com o ndice dado. sprite_get_number (ind) Retorna o nmero de sub-imagens da sprite com o ndice dado. sprite_get_width (ind) Retorna a largura da sprite com o ndice dado. sprite_get_height (ind) Retorna a altura da sprite com o ndice dado. sprite_get_xoffset (ind) Retorna a distncia x da sprite com o ndice dado. sprite_get_yoffset (ind) Retorna a distncia y da sprite com o ndice dado. sprite_get_bbox_left (ind) Retorna o lado esquerdo da caixa delimitadora da sprite com o ndice dado. sprite_get_bbox_right (ind) Retorna o lado direito da caixa delimitadora da sprite com o ndice dado. sprite_get_bbox_top (ind) Retorna a parte de cima da caixa delimitadora da sprite com o ndice dado. sprite_get_bbox_bottom (ind) Retorna a parte inferior da caixa delimitadora da sprite com o ndice dado. Em certas situaes voc pode querer salvar o bitmap correspondente a uma subimagem particular da sprite para um arquivo. Para isso as seguintes funes podem ser utilizadas:

sprite_save (ind, subimg, fname) Grava subimage subimg da sprite ind para o arquivo com o nome fname. Este deve ser um .png. Apenas disponvel na verso Pro. sprite_save_strip (ind, fname) Salva todos as sub-imagens de ind sprite como uma tira para o arquivo com o nome fname. Este deve ser um .png. Apenas disponvel na verso Pro. Sons As funes a seguir lhe dar informaes sobre um som: sound_exists (ind) Retorna se um som com o ndice determinado existe. sound_get_name (ind) Retorna o nome do som com o ndice dado. sound_get_kind (ind) Retorna o tipo de som com o ndice determinado (0 = normal, 1 = de fundo, 2 = 3D, 3 = mmplayer). sound_get_preload (ind) Retorna se o som com o ndice determinado foi prcarregado. Sons usam muitos recursos e a maioria dos sistemas pode armazenar e reproduzir apenas um nmero limitado de sons. Se voc fizer um grande jogo que voc gostaria de ter mais controle sobre quais sons so carregados na memria de udio e em que ocasies. Voc pode usar a opo de pr-carregamento desligada para sons para se certificar de sons so carregadas apenas quando utilizadas. Esta embora tenha o problema que voc pode obter um pequeno soluo quando o som usado na primeira vez. Alm disso, os sons no so automaticamente descarregados quando voc no precisa mais deles. Para obter mais controle voc pode utilizar as seguintes funes. sound_discard (index) Libera a memria de som utilizados para o som indicado. sound_restore (index) Restaura o som indicado na memria de udio para reproduo imediata. Planos de Fundo As funes a seguir lhe dar informaes sobre um plano de fundo: background_exists (ind) Retorna se um plano de fundo com o ndice determinado existe. background_get_name (ind) Retorna o nome do plano de fundo com o ndice determinado. background_get_width (ind) Retorna a largura do plano de fundo com o ndice determinado. background_get_height (ind) Retorna a altura do plano de fundo com o ndice determinado. Em certas situaes voc pode querer salvar o bitmap correspondente ao plano de fundo em um arquivo. Para esta funo a seguir podem ser usados: background_save (ind, fname) Salva o plano de fundo ind para o arquivo com o nome fname. Este deve ser um .png. Apenas disponvel na verso Pro. Fontes

As funes a seguir lhe dar informaes sobre uma fonte: font_exists (ind) Retorna se uma fonte com o ndice determinado existe. font_get_name (ind) Retorna o nome da fonte com o ndice dado. font_get_fontname (ind) Retorna o nome da fonte com o ndice dado. font_get_bold (ind) Retorna se a fonte com o ndice fornecido est em negrito. font_get_italic (ind) Retorna se a fonte com o ndice fornecido est em itlico. font_get_first (ind) Retorna o ndice do primeiro caractere da fonte com o ndice determinado. font_get_last (ind) Retorna o ndice do ltimo caractere da fonte com o ndice determinado. Caminhos As funes a seguir lhe dar informaes sobre um caminho: path_exists (ind) Retorna se um caminho com o ndice determinado existe. path_get_name (ind) Retorna o nome do caminho com o ndice determinado. path_get_length (ind) Retorna o comprimento do caminho com o ndice dado. path_get_kind (ind) Devolve o tipo de conexes do caminho com o ndice determinado (0 = reto, 1 = suave). path_get_closed (ind) Retorna se o caminho fechado ou no. path_get_precision (ind) Retorna a preciso utilizada para a criao de caminhos suavizados. path_get_number (ind) Retorna o nmero de pontos definido para o caminho. path_get_point_x (ind, n) Retorna a coordenada x do ponto n definido para o caminho. 0 o primeiro ponto. path_get_point_y (ind, n) Retorna a coordenada y do ponto n definida para o caminho. 0 o primeiro ponto. path_get_point_speed (ind, n) Retorna o fator de velocidade no ponto n definido para o caminho. 0 o primeiro ponto. path_get_x (ind, pos) Retorna a coordenada x na posio pos para o caminho. pos devem estar entre 0 e 1. path_get_y (ind, pos) Retorna a coordenada y na posio pos para o caminho. pos devem estar entre 0 e 1. path_get_speed (ind, pos) Retorna o fator de velocidade na posio pos para o caminho. pos devem estar entre 0 e 1. Scripts As funes a seguir lhe dar informaes sobre um script: script_exists (ind) Retorna se um script com o ndice determinado existe. script_get_name (ind) Retorna o nome do script com o ndice dado. script_get_text (ind) Retorna a string de texto do script com o ndice dado. Linhas de Tempo As funes a seguir lhe dar informaes sobre um cronograma: timeline_exists (ind) Retorna se uma linha do tempo com o ndice dado existe.

timeline_get_name (ind) Retorna o nome da linha do tempo com o ndice dado. Objetos As funes a seguir lhe dar informaes sobre um objeto: object_exists (ind) Retorna se um objeto com o ndice determinado existe. object_get_name (ind) Retorna o nome do objeto com o ndice determinado. object_get_sprite (ind) Retorna o ndice da Sprite padro do objeto com o ndice dado. object_get_solid (ind) Retorna se o objeto com o ndice determinado padro slido. object_get_visible (ind) Retorna se o objeto com o ndice determinado padro visvel. object_get_depth (ind) Retorna a profundidade do objeto com o ndice determinado. object_get_persistent (ind) Retorna se o objeto com o ndice determinado persistente. object_get_mask (ind) Retorna o ndice da mscara do objeto com o ndice determinado (-1 se for no tem mscara especial). object_get_parent (ind) Retorna o ndice do objeto pai de objeto ind (um valor negativo retornado se ele no tem pai). object_is_ancestor (ind1, ind2) Retorna se o objeto ind2 herda do objeto ind1. Room As funes a seguir lhe dar informaes sobre um quarto: room_exists (ind) Retorna se uma room com o ndice determinado existe. room_get_name (ind) Retorna o nome da room com o ndice dado. Note que, por causa de alteraes nas rooms durante a execuo do jogo, existem outras rotinas para obter informaes sobre o contedo da room atual.

Alterando os recursos
Esta funcionalidade s est disponvel na verso Pro do Game Maker. possvel criar novos recursos durante o The Game. Tambm pode alterar os recursos existentes. Este captulo descreve as possibilidades. Seja advertido though. Recursos Mudando facilmente conduz a erros graves em seus jogos! Voc deve seguir as seguintes regras quando se muda de recursos: No altere os recursos que esto sendo usados. Isto vai levar a erros! Por exemplo, no mudar uma sprite que est sendo usado por uma instncia. Quando voc salvar The Game durante o jogo, e adicionou recursos alterados no esto armazenados com o jogo salvo. Portanto, se voc carregar The Game salvos depois, estes podem no estar mais l. Em geral, quando voc manipula os recursos que voc no pode mais usar o sistema embutido para carregar e salvar os jogos. Quando voc reiniciar The Game durante o jogo, os recursos no so restauradas mudaram a sua forma original. Em geral, quando voc manipula os recursos que voc no pode usar a ao ou a funo de reiniciar The Game. manipulao de recursos pode ser lento. Por exemplo, mudar sprites ou fundos relativamente lento. Portanto, no us-lo durante o jogo.

Criao de recursos durante o jogo (em especial, sprites e fundo) facilmente utiliza grande quantidade de memria. Ento, seja extremamente cuidadoso com isso. Por exemplo, se voc tem um quadro de 32 128x128 sprite animado e voc decidir criar 36 rodados cpias dele que voc ir usar at 36x32x128x128x4 = 72 MB de memria! Certifique-se de apagar os recursos que voc no precisa mais. Caso contrrio, o sistema logo fica sem memria. Em geral, voc no deve alterar quaisquer recursos durante o jogo. Melhor criar e alterar os recursos no incio de The Game ou talvez no incio de um quarto. Sprites As rotinas a seguir esto disponveis para alterar as propriedades Sprite: sprite_set_offset (IND, XOFF, yoff) Define o deslocamento do sprite com o ndice dado. As rotinas a seguir pode ser usada para criar sprites novos e para os eliminar. sprite_duplicate (IND) Cria um duplicado do sprite com o ndice dado. Ele retorna o ndice do Sprite novo. Quando ocorre um erro retornado -1. sprite_assign (IND, SPR) Atribui o sprite sprite indicado para ind. Portanto, esta faz uma cpia do objeto. Desta forma voc pode facilmente configurar uma sprite existente para uma diferente, por exemplo, sprite novo. sprite_merge (ind1, IND2) funde as imagens da IND2 sprite em ind1 sprite, adicionandoos no final. Se os tamanhos no coincidem com os sprites so esticadas para caber. Sprite IND2 no excludo! sprite_add (fname, imgnumb, removeback, liso, xorig, yorig) Adiciona a imagem armazenada no fname arquivo para o conjunto de recursos sprite. Muitos tipos diferentes de arquivos de imagem pode ser tratada. Quando a imagem no uma imagem gif pode ser uma faixa contendo um nmero de subimages para o objeto ao lado do outro. Use imgnumb para indicar o seu nmero (1 para uma nica imagem). Para (animado) imagens gif, este argumento no utilizado, o nmero de imagens no arquivo GIF utilizado. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar as bordas. xorig e yorig indicar a posio da origem do sprite. A funo retorna o ndice do sprite novo que voc pode usar para desenh-la ou a remet-la ao sprite_index varivel de uma instncia. Quando ocorre um erro retornado -1. sprite_replace (IND, fname, imgnumb, removeback, liso, xorig, yorig) Idem, mas neste caso o sprite com ind ndice substitudo. A funo retorna se bem sucedido. sprite_add_sprite (fname) Adiciona o sprite armazenados fname o arquivo para o conjunto de recursos sprite. O arquivo deve ser um arquivo. Gmspr que guardada sob a forma de propriedade sprite no Game Maker. Como este arquivo contm todas as configuraes de sprite, sem argumentos ainda so necessrias. A funo retorna o ndice do sprite novo que voc pode usar para desenh-la ou a remet-la ao sprite_index varivel de uma instncia. Quando ocorre um erro retornado -1. sprite_replace_sprite (IND, fname) Idem, mas neste caso o sprite com ind ndice substitudo. A funo retorna se bem sucedido. sprite_create_from_screen (x, y, w, h, removeback, liso, xorig, yorig) Cria um Sprite, copiando a determinada rea da tela. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar os limites. Isto torna possvel criar qualquer sprite que voc quer. Desenhar a imagem na tela usando as funes de desenho e em seguida criar uma sprite dele. (Se voc no fizer isso, no caso de desenho voc pode mesmo faz-lo de tal forma que no visvel na tela, no atualizar a tela.) Os outros parmetros so como acima. A funo retorna o ndice do

Sprite novo. Um trabalho de cautela necessria aqui. Apesar de falar sobre a tela, ele na verdade a regio de desenho que importa. O fato de que h uma janela na tela e que a imagem pode ser escalado nesta janela no importa. ind (sprite_add_from_screen, x, y, w, h, removeback, liso) Adiciona uma rea da tela como um subimage ao lado do sprite com ndice de ind. sprite_create_from_surface (id, x, y, w, h, removeback, liso, xorig, yorig) Cria um Sprite, copiando a determinada rea da superfcie com o id do dado. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar os limites. Isto torna possvel criar qualquer sprite que voc quer. Desenhe a imagem da superfcie usando as funes de desenho e em seguida criar uma sprite dele. A funo retorna o ndice do Sprite novo. Note-se que os valores alpha so mantidas no sprite. sprite_add_from_surface (IND, id, x, y, w, h, removeback, liso) Adiciona uma rea da superfcie id como um subimage ao lado do sprite com ndice de ind. sprite_delete (IND) Exclui o sprite da memria, liberando a memria utilizada. A rotina segue existe para alterar a aparncia de um objeto. sprite_set_alpha_from_sprite (IND, SPR) Muda o Alpha (transparancy) valores no sprite com o ndice de ind usando os valores de intensidade na spr Sprite. Isso no pode ser desfeita. Finalmente, voc pode mudar a mscara de coliso para verificar o sprite com a seguinte rotina. Por favor, perceber que isso no funciona corretamente quando uma instncia com sprite que j est presente na sala. sprite_collision_mask (IND, sepmasks, bboxmode, bbleft, bbright, bbtop, bbbottom, tipo, tolerncia) Altera a mscara de coliso para o sprite com ndice de ind. sepmasks indica se deve haver mscaras de coliso separado para todos os subimages. bboxmode o modo de caixa delimitadora (0 = automtico, 1 = imagem completa, 2 = definido pelo usurio). bbleft, bbright, bbtop, bbbottom indicar a caixa delimitadora em caso de usurio definido caixa delimitadora. Voc pode usar 0 para todos estes valores, como nos outros casos. tipo o tipo de mscara (0 = precisos, 1 = caixa delimitadora, disk = 2, 3 Diamond =). tolerncia indica a tolerncia em relao ao valor de transparncia (0 = sem tolerncia, tolerncia = 255 total). Sons As rotinas a seguir podem ser usadas para criar novos sons e remov-los. espcie (fname, sound_add, pr-carga) Adiciona um recurso de som para The Game. fname o nome do arquivo de som. tipo indica o tipo de som (0 = normal, 1 de fundo, 2 = 3-D, 3 mmplayer =) pr-carga indica se o som deve ser imediatamente armazenados na memria de udio (verdadeiro ou falso). A funo retorna o ndice do novo som, que pode ser usado para reproduzir o som. (-1 Se ocorreu um erro, por exemplo, o arquivo no existe). ndice sound_replace (, fname, tipo, pr-carga) que a funo anterior, mas desta vez um novo som no criada, mas o ndice de som existente substitudo, livrando do som antigo. Retorna se corrigir. sound_delete (index) Exclui o som indicado, liberando toda a memria a ele associado. Ela no pode mais ser restaurada. Planos de Fundo

As rotinas a seguir podem ser usadas para criar novos horizontes e para remov-los. background_duplicate (IND) Cria um duplicado do fundo com o ndice determinado. Ele retorna o ndice do novo fundo. Quando ocorre um erro retornado -1. background_assign (IND, costas) Atribui o plano indicado para ind de fundo. Portanto, esta faz uma cpia do plano de fundo. background_add (fname, removeback, liso) Adiciona a imagem armazenada no fname arquivo para o conjunto de recursos do fundo. Muitos tipos diferentes de imagens podem ser tratadas. Quando a imagem tem um canal alfa, isto usado para a transparncia. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar os limites. A funo retorna o ndice do novo fundo, que voc pode usar para desenh-la ou a remet-la ao background_index varivel [0] para torn-la visvel na sala atual. Quando ocorre um erro retornado -1. background_replace (IND, fname, removeback, liso) Idem, mas neste caso o fundo com ind ndice substitudo. A funo retorna se bem sucedido. Quando o fundo est visvel na sala de wil-lo a ter tambm. background_add_background (fname) Adiciona o fundo armazenados fname o arquivo para o conjunto de recursos do fundo. O arquivo deve ser um arquivo. Gmbck que guardada sob a forma de propriedade de fundo no Game Maker. Como este arquivo contm todas as configuraes de fundo, sem argumentos ainda so necessrias. A funo retorna o ndice do novo fundo, que voc pode usar para desenh-la ou a remetla ao background_index varivel [0] para torn-la visvel na sala atual. Quando ocorre um erro retornado -1. background_replace_background (IND, fname) Idem, mas neste caso o fundo com ind ndice substitudo. A funo retorna se bem sucedido. Quando o fundo est visvel na sala de wil-lo a ter tambm. background_create_color (w, h, col) Cria um fundo do tamanho determinado e com a determinada cor. Ele retorna o ndice do novo fundo. Quando ocorre um erro retornado -1. background_create_gradient (w, h, col1, col2, tipo) Cria um fundo gradiente cheia de determinado tamanho. col1 e col2 indicar as duas cores. tipo um nmero entre 0 e 5, indicando o tipo de gradiente: 0 = 1 = horizontal, vertical, 2 = retngulo, elipse = 3, 4 = duplo horizontal, 5 = dupla verticais. Ele retorna o ndice do novo fundo. Quando ocorre um erro retornado -1. background_create_from_screen (x, y, w, h, removeback, liso) Cria um fundo copiando a determinada rea da tela. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar os limites. Esta funo torna possvel a criao de qualquer fundo que voc quer. Desenhar a imagem na tela usando as funes de desenho e em seguida criar um fundo com ele. (Se voc no fizer isso, no caso de desenho voc pode mesmo faz-lo de tal forma que no visvel na tela, no atualizar a tela.) A funo retorna o ndice do novo fundo. Um trabalho de cautela necessria aqui. Apesar de falar sobre a tela, ele na verdade a regio de desenho que importa. O fato de que h uma janela na tela e que a imagem pode ser escalado nesta janela no importa. background_create_from_surface (id, x, y, w, h, removeback, liso) Cria um fundo copiando a determinada rea da superfcie com o id do dado. removeback indica se a envidar todos os pixels com a cor de fundo (esquerda-pixel de fundo) transparente. liso indica se para suavizar os limites. Esta funo torna possvel a criao de qualquer fundo que voc quer. Desenhe a imagem da superfcie usando as funes de desenho e em seguida criar um fundo com ele. Note-se que os valores alpha so mantidos no fundo. background_delete (IND) Elimina o fundo da memria, liberando a memria utilizada. A rotina segue existe para alterar a aparncia de um fundo.

background_set_alpha_from_background (IND, costas) Altera a (alfa de transparncias) valores em segundo plano com o ndice de ind usando os valores de intensidade no fundo de volta. Isso no pode ser desfeita. Fontes possvel criar, substituir e excluir fontes no The Game utilizando as seguintes funes. (No substituir uma fonte que est definida como a fonte atual, ou pelo menos defini-la novamente mais tarde.) (nome font_add, tamanho, negrito, itlico, primeiro, ltimo) adiciona uma nova fonte e retorna o seu ndice, indicando o nome, tamanho, se negrito ou itlico, sendo o primeiro e ltimo personagem que deve ser criado. font_add_sprite (SPR, em primeiro lugar, prop, setembro) adiciona uma nova fonte e retorna seu ndice. A fonte criado a partir de um objeto. O sprite deve conter uma subimage para cada personagem. primeiro indicar o ndice do primeiro caractere na sprite. Por exemplo, utilize ord ('0 ') se o seu sprite contm apenas os dgitos. prop indica se a fonte proporcional. Em uma fonte proporcional, para cada personagem a largura da caixa delimitadora usado como a largura de carcter. Finalmente, setembro indica a quantidade de espao em branco que deve separar os personagens horizontalmente. Um valor tpico seria situar-se entre 2 e 8, dependendo do tamanho da fonte. font_replace (IND, nome, tamanho, negrito, itlico, primeiro, ltimo) Substitui o ind fonte com uma nova fonte, indicando o nome, tamanho, se negrito ou itlico, sendo o primeiro e ltimo personagem que deve ser criado. font_replace_sprite (IND, SPR, em primeiro lugar, prop, setembro) Substitui o ind fonte com uma sprite nova base de fonte. font_delete (IND) Exclui a fonte com o ndice determinado, liberar a memria que ele usa. Caminhos possvel criar caminhos e para acrescentar pontos aos caminhos. No entanto, nunca mudar um caminho que est sendo usado por uma instncia. Isso pode levar a resultados inesperados. As funes seguintes condies: path_set_kind (IND, val) Define o tipo de conexes do caminho com o ndice determinado (0 = reto, 1 = bom). path_set_closed (IND, fechado) Define se o caminho deve ser fechada (verdadeiro) ou aberto (falso). path_set_precision (IND, prec) define a preciso com que o caminho suave calculado (dever situar-se entre 1 e 8). path_add () Adiciona um caminho novo e vazio. O ndice do caminho devolvido. path_delete (IND) Exclui o caminho com o ndice determinado. path_duplicate (IND) Cria uma cpia duplicada do caminho com o ndice dado. Retorna o ndice da cpia. path_assign (IND, path) Atribui o caminho indicado para ind caminho. Portanto, esta faz uma cpia do caminho. Desta forma voc pode facilmente configurar um caminho existente para uma diferente, por exemplo, novo caminho. path_append (IND, path) Acrescenta o caminho indicado para ind caminho. ind (path_add_point, x, y, velocidade) Adiciona um ponto para o caminho com o ndice determinado, na posio (x, y) e com o fator de velocidade dada. Lembre-se que um fator de 100 corresponde velocidade real. Os valores mais baixos significam desacelerao e maior mdia de velocidade.

n (IND, path_insert_point, x, y, velocidade) Insere um ponto no caminho com o ndice determinado antes da alnea n, na posio (x, y) e com o fator de velocidade dada. n (IND, path_change_point, x, y, velocidade) Altera a alnea n do caminho com o ndice determinado para a posio (x, y) eo fator de determinada velocidade. path_delete_point (IND, n) Exclui a alnea n do caminho com o ndice determinado. path_clear_points (IND) Limpa todos os pontos do caminho, transformando-o em um caminho vazio. path_reverse (IND) Inverte a caminho. path_mirror (IND) Reflete a caminho horizontalmente (com relao ao seu centro). path_flip (IND) Inverte a caminho verticalmente (em relao ao seu centro). path_rotate (IND, ngulo) Gira o caminho do contador no sentido horrio mais graus de ngulo (em torno de seu centro). path_scale (IND, XScale yscale) Balanas o caminho com os factores referidos (a partir do seu centro). path_shift (IND, xshift, yshift) Desloca o caminho sobre o valor dado. Scripts Scripts no podem ser alterados durante a execuo de The Game. Os roteiros fazem parte da lgica do jogo. Alterando scripts levaria auto-reescrever cdigo que facilmente conduz a erros. Alm disso, existem outras maneiras de conseguir isso. Se voc realmente precisa para executar um pedao de cdigo que no conhecido no momento da concepo (por exemplo de um arquivo) pode utilizar as seguintes funes: execute_string (str, arg0, arg1 ,...) Execute o pedao de cdigo na string str com os argumentos indicados. execute_file (fname, arg0, arg1 ,...) Execute o pedao de cdigo no arquivo com os argumentos indicados. s vezes voc desejar para armazenar um ndice de script em uma varivel e execut-lo. Para isso, voc pode usar a seguinte funo script_execute (SCR, arg0, arg1 ,...) Execute o script com scr ndice com os argumentos dados. Linhas de Tempo As rotinas a seguir esto disponveis para criao e alterao de linhas de tempo. No altere as linhas do tempo que esto em uso! timeline_add () Adiciona uma nova linha de tempo. Ele retorna o ndice da linha do tempo. timeline_delete (IND) Exclui a linha do tempo com o ndice dado. Certifique-se de casos no utiliza a linha do tempo em qualquer sala. timeline_clear (IND) Limpa a linha do tempo com o ndice determinado removendo todos os seus momentos. Certifique-se de casos no utiliza a linha do tempo no momento. etapa (IND, timeline_moment_add, codestr) Adiciona uma aco de cdigo para a linha do tempo no momento passo. codestr contm o cdigo para as aes. Se a etapa no existe ele criado. Assim, voc pode adicionar o cdigo vrias aes para o mesmo momento. etapa (IND, timeline_moment_clear) Voc pode usar esta funo para limpar todas as aes de um determinado momento. Objetos

Tambm os objetos podem ser manipuladas e criadas durante o jogo. NUNCA alterar ou excluir um objeto para o qual existem instncias. Isso pode levar a efeitos inesperados como certas propriedades do objeto so armazenadas com a instncia e, portanto, mudlos no objeto no ter o efeito desejado. object_set_sprite (IND, SPR) Define o sprite do objeto com o ndice dado. Use -1 para remover o sprite atual do objeto. object_set_solid (IND, slido) Define se as instncias criadas do objeto deve ser padro slido (verdadeiro ou falso). ind (object_set_visible, vis) Define se as instncias criadas do objeto deve ser visvel padro (verdadeiro ou falso). object_set_depth (IND, profundidade) Define a profundidade padro de instncias criadas do objeto. object_set_persistent (IND, pers) Define se as instncias criadas do objeto deve ser padro persistente (verdadeiro ou falso). object_set_mask (IND, SPR) Define a mscara sprite do objeto com o ndice dado. Use -1 para definir a mscara de ser o sprite do objeto. object_set_parent (IND, obj) Define o pai do objeto. Use -1 para no ter um pai. Alterando o pai muda o comportamento das instncias do objeto. As rotinas a seguir so teis para criar objetos na mosca. Como com todos os recursos alterando rotinas, ter muito cuidado para que voc no cria novos objetos o tempo todo. object_add () adiciona um novo objeto. Ele retorna o ndice do objeto. Agora voc pode usar este ndice nas rotinas acima para definir determinadas propriedades do objeto e ento voc pode usar o ndice para criar instncias do objeto. object_delete (IND) Exclui o objeto com o ndice dado. Certifique-se de nenhuma instncia do objeto existir em qualquer um dos quartos. object_event_add (IND, evType, evnumb, codestr) Para dar o objeto de um comportamento que deve definir eventos para o objeto. Voc s pode adicionar aes cdigo para eventos. Voc precisa especificar o objeto, o tipo de evento, o nmero do evento (usar as constantes que foram especificados antes da event_perform funo ()). Finalmente voc fornecer a seqncia de cdigo que deve ser executado. Voc pode adicionar o cdigo vrias aes para cada evento. object_event_clear (IND, evType, evnumb) Voc pode usar esta funo para limpar todas as aes de um determinado evento. Criao de objetos especialmente til quando voc est projetando scripts ou bibliotecas ao. Por exemplo, um script de inicializao pode criar um objeto para exibir um texto e outro script pode adicionar tal objeto com um determinado texto. Desta forma voc tem um mecanismo simples para mostrar textos sem a necessidade de criar objetos usando a interface padro. Rooms Manipulando quartos na mosca uma coisa perigosa para fazer. Voc tem que perceber que as salas de mudar o tempo todo devido ao que est acontecendo em The Game. Isso normalmente envolve apenas o quarto ativo atualmente e h muitos rotinas descritas nas sees anteriores para manipular as instncias, fundos, e azulejos na sala de ativos. Mas as mudanas na sala de ativos vai durar se o quarto persistente. Assim, voc nunca deve manipular aspectos da sala actualmente activa ou a qualquer sala que persistente e que j foi visto antes. Tais mudanas, em geral, no ser notado, mas s vezes pode

at levar a erros inesperados. Devido ao fato de que as salas esto ligadas de uma maneira complicada tambm no existe uma rotina para apagar um quarto. As rotinas a seguir esto disponveis room_set_width (IND, w) Define a largura da sala com o ndice indicado. room_set_height (IND, h) Define a altura para a sala com o ndice indicado. room_set_caption (IND, str) Define a legenda para o quarto com o ndice indicado. room_set_persistent (IND, val) Define se o quarto com o ndice indicado persistente ou no. room_set_code (IND, str) Define a seqncia de cdigo de inicializao para o quarto com o ndice indicado. room_set_background_color (IND, col show) Define as propriedades de cor para o quarto com o ndice indicado se no tem uma imagem de fundo. col indica a cor e mostrar a cor indica se deve ser mostrado ou no. bind (IND, room_set_background, vis, frente, trs, x, y, htiled, vtiled, hspeed, vspeed, alfa) Cenrio de fundo com efeito de ndice (0-7) para a sala com o ndice indicado. vis indica se o fundo visvel e frente se realmente um plano. de volta o ndice da imagem de fundo. x, y indicam a posio da imagem e htiled e vtiled indicar se a imagem deve estar lado a lado. hspeed vspeed rpido e indicam a velocidade com que as jogadas de fundo e alpha indica um valor de translucncia alfa (1 = slido e). room_set_view (IND, vind, vis, xview, yview, wview, hView, xport, Yport, wPort, hport, hborder, vborder, hspeed, vspeed, obj) Define a ver com vind ndice (0-7) para a sala com o ndice indicado. vis indica se o ponto de vista visvel. xview, yview, wview e hView indicar a posio da exibio na sala. xport, Yport, wPort e hport indicar a posio na tela. Quando a viso deve seguir um objeto hborder e vborder indicam a fronteira visvel mnima que deve ser mantido ao redor do objeto. hspeed vspeed e indicam a velocidade mxima com que a viso pode se mover. obj o ndice do objeto ou o ndice da instncia. room_set_view_enabled (IND, val) Define se vistas deve estar habilitado para o quarto com o ndice indicado. room_add () Adiciona uma nova sala. Ele retorna o ndice do quarto. Note-se que a sala no far parte da ordem do quarto. Assim, a nova sala no tem um precedente ou um quarto ao lado. Se voc deseja mover para uma sala adicionou voc deve fornecer o ndice do quarto. room_duplicate (IND) Adiciona uma cpia da sala com o ndice determinado. Ele retorna o ndice do quarto. room_assign (IND, quarto) Atribui o espao indicado para ind quarto. Portanto, esta faz uma cpia da sala. ind (room_instance_add, x, y, obj) adiciona uma nova instncia do objeto obj para o quarto, colocando-a indicar a posio. Ele retorna o ndice da instncia. room_instance_clear (IND) Remove todas as instncias a partir do quarto indicado. room_tile_add (IND, costas, esquerda, topo, largura, altura, x, y, depth) Adiciona uma nova telha para a sala ao indicar a posio. Ele retorna o ndice do azulejo. de volta o fundo de que o azulejo tomada. esquerda, topo, largura e altura indicam a parte do fundo que faz a telha. x, y a posio do lado da sala e profundidade a profundidade do ladrilho. room_tile_add_ext (IND, costas, esquerda, topo, largura, altura, x, y, profundidade, XScale, yscale alfa) Mesmo que a rotina anterior, mas desta vez voc tambm pode especificar um fator de escala em X e Y e uma transparncia alfa para a telha. room_tile_clear (IND) Remove todas as telhas do quarto indicado.

Arquivos, registro e execuo de programas

Em jogos mais avanados que voc provavelmente vai querer ler dados de um arquivo que voc fornece com o jogo. Ou voc pode desejar armazenar as informaes entre as execues do jogo. E em algumas situaes pode ser necessrio executar programas externos. Arquivos til usar arquivos externos nos jogos. Por exemplo, voc poderia fazer um arquivo que descreve momentos em que certas coisas devem acontecer. Alm disso, voc provavelmente vai querer salvar as informaes para a prxima vez que for executado (por exemplo, a room atual). As funes a seguir existem para ler e gravar dados em arquivos de texto: file_text_open_read (fname) Abre o arquivo com o nome indicado para a leitura. A funo retorna o id do arquivo que deve ser utilizado em outras funes. Voc pode abrir vrios arquivos ao mesmo tempo (mximo 32). No se esquea de fech-los quando voc tiver terminado com eles. file_text_open_write (fname) Abre o arquivo indicado para a escrita, criando-o se ele no existe. A funo retorna o id do arquivo que deve ser utilizado em outras funes. file_text_open_append (fname) Abre o arquivo indicado para acrescentar dados ao final, criando-o se ele no existe. A funo retorna o id do arquivo que deve ser utilizado em outras funes. file_text_close (fileid) Fecha o arquivo com o id determinado arquivo. file_text_write_string (fileid, str) Grava a string para o arquivo com o id de um arquivo determinado. file_text_write_real (fileid, x) Escreve o valor real para o arquivo com a id de uma aquivo determinado. (Como separador entre a parte decimal, inteiro sempre um ponto utilizado. file_text_writeln (fileid) Escreve um caractere de nova linha para o arquivo. file_text_read_string (fileid) L uma string do arquivo com a id do arquivos dado e retorna esta string. A string termina no final da linha. file_text_read_real (fileid) L um valor real a partir do arquivo e devolve esse valor. file_text_readln (fileid) Ignora o resto da linha no arquivo e comea no incio da prxima linha. file_text_eof (fileid) Retorna se chegou ao final do arquivo. file_text_eoln (fileid) Retorna se chegou ao final de uma linha no arquivo. Para manipular arquivos no sistema de arquivos voc pode usar as seguintes funes: file_exists (fname) Retorna se o arquivo com o nome dado existe (true) ou no (false). file_delete (fname) Exclui o arquivo com o nome indicado. file_rename (oldname, newname) Renomeia o arquivo com o nome oldname para newname. file_copy (fname, newname) Copia o arquivo fname ao newname. directory_exists (dname) Retorna se o diretrio indicado existe. O nome deve incluir o caminho completo, no um caminho relativo. directory_create (dname) Cria um diretrio com o nome dado (incluindo o caminho para ele) se ele no existe. O nome deve incluir o caminho completo, no

um caminho relativo. file_find_first (mask, attr) Retorna o nome do primeiro arquivo que satisfaa a mscara e os atributos. Se no existe tal arquivo, uma string vazia retornada. A mscara pode conter um caminho e pode conter curinga, por exemplo 'C':\ temp\*. doc ". Os atributos do os arquivos adicionais que voc deseja ver. (Ento os arquivos normais sempre so devolvidos quando satisfazer a mscara.) Voc pode adicionar o seguinte constantes para ver o tipo de arquivos que voc quer: fa_readonly arquivos somente leitura fa_hidden arquivos ocultos fa_sysfile arquivos de sistema fa_volumeid arquivos id volume fa_directory diretrios fa_archive arquivos arquivados file_find_next () Retorna o nome do prximo arquivo que satisfaa a mscara previamente determinado e os atributos. Se no existe tal arquivo, uma string vazia retornada. file_find_close () Deve ser chamado depois de manipular todos os arquivos para liberar memria. file_attributes (fname, attr) Retorna se o arquivo tem todos os atributos constantes attr. Utilize uma combinao das constantes acima indicado. As seguintes funes podem ser usadas para alterar nomes de arquivos. Note que estas funes no trabalham com os arquivos atuais lidam apenas com as strings. filename_name (fname) Retorna a parte do nome do nome do arquivo indicado, com a extenso, mas sem o caminho. filename_path (fname) Retorna a parte do caminho do nome do arquivo indicado, incluindo a barra invertida final. filename_dir (fname) Retorna a parte do diretrio do nome do arquivo indicado, que normalmente o mesmo que o caminho, exceto para a barra invertida final. filename_drive (fname) Retorna as informaes da unidade de arquivo. filename_ext (fname) Retorna a parte da extenso do nome do arquivo indicado, incluindo o ponto inicial. filename_change_ext (fname, newext) Retorna o nome do arquivo indicado, com a extenso (incluindo o ponto) mudou para a nova extenso. Usando uma string vazia como a nova extenso voc pode remover a extenso. Em raras situaes pode ser necessrio ler dados de arquivos binrios. A seguir rotinas de baixo nvel existem para isso: file_bin_open (fname, mod) Abre o arquivo com o nome indicado. O modo indica o que pode ser feito com o arquivo: 0 = leitura, 1 = escrita, 2 = ambos leitura e escrita). Quando o arquivo no existir ele criado. A funo retorna o id do arquivo que deve ser utilizado em outras funes. Voc pode abrir vrios arquivos ao mesmo tempo (mximo 32). No se esquea de fech-los quando voc tiver terminado com eles. file_bin_rewrite (fileid) Reescreve o arquivo com o id de um determinado arquivo, ou seja, limpa-lo e comea a escrever no incio. file_bin_close (fileid) Fecha o arquivo com o id de um determinado arquivo. file_bin_size (fileid) Retorna o tamanho (em bytes) do arquivo com a id de um determinado arquivo. file_bin_position (fileid) Retorna a posio atual (em bytes, 0 a primeira

posio) do arquivo com a id de um determinado arquivo. file_bin_seek (fileid, pos) Move a posio atual do arquivo para a posio indicada. Para anexar um arquivo para mover a posio para o tamanho do arquivo antes de escrever. file_bin_write_byte (fileid, byte) Grava um byte de dados para o arquivo com a id de um determinado arquivo. file_bin_read_byte (fileid) L um byte de dados do arquivo e devolve isso. Se o jogador tiver marcado modo seguro em suas preferncias, para um nmero destas rotinas, voc no tem permisso de especificar um caminho, e apenas os arquivos na pasta do aplicativo pode, por exemplo ser escrita. Se os voc incluiu arquivos no executvel do jogo e no exportou automaticamente no incio do jogo, voc pode usar as seguintes funes para fazer isso. export_include_file (fname) Exporta o arquivo includo com o nome fname. Esta deve ser uma varivel de string, por isso no esquea as aspas. export_include_file_location (fname, location) Exporta o arquivo includo com o nome fname ao local determinado. Location deve conter o caminho e nome do arquivo. discard_include_file (fname) Descartar o arquivo includo com o nome fname, liberando a memria utilizada. Esta deve ser uma varivel string, por isso no esquea as aspas. As quatro variveis seguintes somente leitura podem ser til: game_id* identificador exclusivo para o jogo. Voc pode usar esta opo se voc precisa de um nome de arquivo exclusivo. working_directory * Diretrio de trabalho do jogo. (No inclui a barra invertida final.) program_directory * Diretrio em que o jogo executvel armazenado. (No inclui a barra invertida final.) Quando voc executar um jogo indepetedente este normalmente o mesmo que o diretrio de trabalho a menos que o exemplo do jogo abre um arquivo usando o seletor de arquivos. Observe que ao testar um jogo que voc est criando o programa e o diretrio de trabalho ser diferente. Nesse caso, o diretrio de trabalho o local onde a verso editvel armazenado enquanto o diretrio do programa um diretrio temporrio para testes. temp_Directory * diretrio temporrio criado pelo jogo. (No inclui a barra invertida final.) Voc pode armazenar arquivos temporrios aqui. Eles sero removidos no final do jogo. Em determinadas situaes, voc talvez queira dar aos jogadores a possibilidade de fornecer argumentos de linha de comando para o jogo que est em execuo (por exemplo para criar cheats ou modos especiais). Para obter esses argumentos que voc pode usar o seguinte duas rotinas. parameter_count () Retorna o nmero de linha de comando parmetros. Os parmetros reais podem ser recuperados com a seguinte funo. parameter_string (n) comando retorna os parmetros da linha n. O primeiro parmetro tem ndice 1. O ltimo tem ndice parameter_count (). ndice 0 especial. o nome do arquivo executvel do jogo (incluindo o caminho). Voc pode ler o valor de variveis de ambiente usando a seguinte funo:

environment_get_variable (name) Retorna o valor (uma string) da varivel de ambiente com o nome indicado. Finalmente, se voc est interessado no tamanho do disco e o espao livre, voc pode usar as seguintes funes: disk_size (drive) Retorna o tamanho da unidade indicada em bytes. unidade deve ser uma letra maiscula, por exemplo, 'C'. Se voc no fornecer a unidade, a unidade do diretrio de trabalho atual usado. disk_free (drive) Retorna a quantidade de espao livre no disco indicado em bytes. unidade deve ser uma letra maiscula, por exemplo, 'C'. Se voc no fornecer a unidade, a unidade do diretrio de trabalho atual usado. Registros Se voc quiser armazenar uma pequena quantidade de informao entre as execues do jogo no existe um mecanismo mais simples do que usar um arquivo. Voc pode usar o Registro. O registro um grande banco de dados que o Windows mantm a par de todos os tipos de configuraes para programas. Uma entrada tem um nome, e um valor. Voc pode usar as duas strings e valores reais. As funes seguintes existem: registry_write_string (name, str) Cria uma entrada no registro com o nome e valor de string. registry_write_real(name, x) Cria uma entrada no registro com o nome e valor real. registry_read_string (name) Retorna a string que contm o nome dado. (O nome deve existir. Caso contrrio, uma string vazia retornada.) registry_read_real (name) Retorna o valor real que o nome dado detm. (O nome deve existir. Caso contrrio, o nmero 0 retornado.) registry_exists (name) Retorna se o nome dado existe. Na verdade, os valores no registro so agrupados em chaves. As rotinas de trabalho, sobretudo em valores dentro da chave que criado especialmente para o seu jogo. Seu programa pode usar isso para obter determinadas informaes sobre o sistema de jogo est sendo executado. Voc tambm pode ler os valores de outras chaves. Voc pode escrev-los, mas tambm tenha muito cuidado. VOC PODE FACILMENTE DESTRUIR SEU SISTEMA desta forma. (Escrever no permitido no modo seguro.) Note que as chaves so novamente colocados em grupos. O trabalho padro a seguir rotinas em HKEY_CURRENT_USER grupo. Mas voc pode mudar o grupo de raiz. Assim, por exemplo, se voc quiser saber o dir temp atual, use path = registry_read_string_ext ( '\Environment', 'TEMP'); As funes seguintes condies: registry_write_string_ext (key, name, str) Cria uma entrada na chave no Registro com o nome e valor de cadeia. registry_write_real_ext (key, name, x) Cria uma entrada na chave no Registro com o nome e valor real. registry_read_string_ext (key, name) Retorna a string que o nome dado na chave indicada detm. (O nome deve existir. Caso contrrio, uma string vazia

retornada.) registry_read_real_ext (key, name) Retorna o valor real que o nome dado na chave indicada detm. (O nome deve existir. Caso contrrio, o nmero 0 retornado.) registry_exists_ext (key, name) Retorna se o nome dado existe na chave indicada. registry_set_root (root) Define a raiz para as outras rotinas. Use os seguintes valores: 0 = HKEY_CURRENT_USER 1 = HKEY_LOCAL_MACHINE 2 = HKEY_CLASSES_ROOT 3 = HKEY_USERS Arquivos INI Para passar definies de parmetros determinados programas de um mecanismo padro a utilizao de arquivos INI. Arquivos INI contm sees e cada seo contm um nmero de pares nome-valor. Por exemplo, aqui est um tpico arquivo INI: [Form] Top = 100 Left = 100 Caption = O melhor jogo de sempre [Game] MaxScore = 12324 Este arquivo contm duas sees, um chamado Form e outro chamado Gane. A primeira seo contm trs pares. Os dois primeiros tm um valor real, enquanto o terceiro tem um valor string. Tais arquivos INI so fceis de criar e alterar. As funes a seguir existem no Game Maker para ler e alterar os dados em si. ini_open (name) Abre o arquivo INI com o nome indicado. A ini devem ser armazenados na mesma pasta do jogo! ini_close () Fecha o atualmente aberto arquivo INI. ini_read_string (section, key, default) L o valor string da chave indicada na seo indicada. Quando a chave ou seco no existir o valor padro retornado. ini_read_real(section, key, default) L o valor real da chave indicados na seo indicada. Quando a chave ou seco no existir o valor padro retornado. ini_write_string (section, key, value) Grava o valor da string para a chave indicada na seco indicada. ini_write_real (section, key, value) Grava o valor real para a chave indicada na seo indicada. ini_key_exists (section, key) Retorna se a tecla indicada existe na seco indicada. ini_section_exists (section) Retorna se o ponto indicado existe. ini_key_delete (section, key) Exclui a chave indicada a partir da seo indicada. ini_section_delete (section) Exclui o ponto indicado. Executando programas Game Maker tem tambm a possibilidade de iniciar programas externos. Existem duas funes disponveis para isso: execute_program e execute_ shell. A funo

execute_program inicia um programa, possivelmente com alguns argumentos. Pode esperar o programa terminar (pausando o jogo) ou continuar o jogo. A funo execute_shell abre um arquivo. Isso pode ser qualquer arquivo para o qual uma associao definida, por exemplo, um ficheiro HTML, um arquivo do Word, etc Ou pode ser um programa. No se pode aguardar a concluso ento o jogo vai continuar. execute_program (prog, arg, wait) Executa o programa prog com argumentos arg. Wait indica se esperar que espera finalizar. execute_shell (prog, arg) Executa o programa (ou arquivo) no sheel. Ambas as funes no funcionaro se o jogador define o modo de segurana nas preferncias. Voc pode verificar isso usando a varivel somente leitura: secure_mode * Se The Game est sendo executado em modo seguro.

As estruturas de dados
Esta funcionalidade s est disponvel na verso Pro do Game Maker. Em jogos voc precisa frequentemente de armazenar informaes. Por exemplo, voc precisa armazenar listas de itens que uma pessoa carrega ou deseja armazenar os lugares que ainda precisam ser visitados. Voc pode usar as matrizes para isso. Mas se voc quer fazer as operaes mais complicadas, como a triagem dos dados ou procura de um determinado item, voc precisa escrever grandes pedaos de cdigo GML que pode ser lento para executar. Para remediar esta situao, Game Maker tem vrias estruturas de dados embutidas que podem ser acessados atravs de funes. No momento, existem seis tipos diferentes de estrutura de dados disponveis: pilhas, filas, listas, mapas, filas de prioridade, e grades. Cada uma dessas estruturas de dados ajustada para um determinado tipo de utilizao (ver abaixo). Todas as estruturas de dados de trabalho geralmente da mesma maneira. Voc pode criar uma estrutura de dados com uma funo que retorna uma id para as estruturas. Voc usa este id para realizar operaes sobre as estruturas de dados. Assim que estiver feito voc destruir a estrutura de dados novamente para salvar o armazenamento. Voc pode usar tantas estruturas no mesmo momento quanto voc quiser. Toda a estrutura pode armazenar ambos string e valores reais. Por favor, note que as estruturas de dados e seu contedo no so salvas quando voc salvar o jogo usando as aes ou funes para isso. Se voc usar estruturas de dados e desejar para permitir salvar voc tem que criar seu prprio mecanismo para isso. Ao comparar os valores, por exemplo, ao pesquisar em um mapa ou ordenar uma lista, Game Maker deve decidir quando dois valores so iguais. Para strings de valores inteiros isso claro, mas para nmeros reais, devido a erros de arredondamento, nmero igual pode facilmente tornar-se desigual. Por exemplo (5 / 3) * 3 no ser igual a 5. Para evitar isso, a preciso utilizada. Quando a diferena entre dois nmeros menor do que essa preciso so considerados iguais. Por padro uma preciso de 0.0000001 usado. Voc pode alterar essa preciso usando a seguinte funo:

ds_set_precision (prec) define a preciso utilizada para comparaes. Esta preciso utilizada em todas as estruturas de dados, mas no em outras comparaes em GML! Pilhas Uma pilha uma estrutura de dados chamada LIFO (Last-In First-Out) de estruturas. Voc pode empurrar os valores em uma pilha e retir-los novamente, puxando os da pilha. O valor que foi empurrado na pilha, mais recentemente o primeiro a ser exibido novamente. Pilhas so frequentemente utilizados quando h interrupes para tratar, ou quando, com funo recursiva. As funes a seguir existem para pilhas: ds_stack_create () Cria uma nova pilha. A funo retorna um nmero inteiro como uma identificao que deve ser utilizado em todas as outras funes para acessar a pilha particular. Voc pode criar vrias pilhas. ds_stack_destroy (id) Destri a pilha com o id dado, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver pronto com a estrutura. ds_stack_clear (id) Limpa a pilha com a id dada, eliminando todos os dados dela, mas no a destruindo. ds_stack_copy (id, source) Cpias da pilha source para a pilha com o id dado. ds_stack_size (id) Retorna o nmero de valores armazenados na pilha. ds_stack_empty (id) Retorna se a pilha estiver vazia. Este o mesmo que testar se o tamanho 0. ds_stack_push (id, val) Coloca o valor na pilha. ds_stack_pop (id) Retorna o valor no topo da pilha e retira-o da pilha. ds_stack_top (id) Retorna o valor no topo da pilha, mas no o remove da pilha. ds_stack_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salv-lo em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_stack_read (id, str) L a estrutura de dados da string dada (como as criadas pela chamada anterior). Filas Uma fila algo semelhante a uma pilha, mas ele funciona em um FIFO (First-In First-Outbase). O valor que colocado primeiro na fila tambm o primeiro a ser retirado. Ela funciona como uma fila em uma loja. A pessoa que primeiro na fila servido primeiro. As filas so normalmente utilizadas para guardar as coisas que ainda precisa ser feito, mas existem muitos outros usos. As funes seguintes (note que os cinco primeiros so equivalentes s funes para as pilhas, todas as estruturas de dados tm estas cinco funes): ds_queue_create () Cria uma nova fila. A funo retorna um nmero inteiro como uma identificao que deve ser utilizado em todas as outras funes para acesso a fila particular. Voc pode criar vrias filas. ds_queue_destroy id () Destri a fila com a id dada, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver com a estrutura pronta. ds_queue_clear (id) Limpa a fila com a id dada, removendo todos os dados dela, mas no a destruindo.

ds_queue_copy (id, source) Copia a fila source em uma fila com a id dada. ds_queue_size (id) Retorna o nmero de valores armazenados na fila. ds_queue_empty (id) Retorna se a fila est vazia. Isto o mesmo que testar se o tamanho 0. ds_queue_enqueue (id, val) Introduz o valor na fila. ds_queue_dequeue (id) Retorna o maior valor que est na fila e a remove da fila. ds_queue_head (id) Devolve o valor na frente da fila, ou seja, o valor que foi o mais longo na fila. (Ele no o remove da fila.) ds_queue_tail (id) Devolve o valor no fim da fila, ou seja, o valor que foi recentemente adicionado fila. (Ele no remov-lo da fila.) ds_queue_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salv-la em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_queue_read (id, str) L a estrutura de dados da string dada (como as criadas pela chamada anterior). Listas Um lista armazena um conjunto de valores em uma ordem especfica. Voc pode adicionar valores no final ou inseri-los em algum lugar no meio da lista. Voc pode encontrar os valores utilizando um ndice. Tambm voc pode classificar os elementos, quer em ordem crescente ou decrescente. As listas podem ser usadas de vrias maneiras, por exemplo, para armazenar colees valores mudados. Eles so implementados usando vetores simples, mas, como isso feito no cdigo compilado muito mais rpido do que usar um vetor em si mesmo. As funes disponveis so as seguintes: ds_list_create () Cria uma nova lista. A funo retorna um nmero inteiro como uma identificao que deve ser utilizado em todas as outras funes para aceder lista particular. ds_list_destroy (id) Destri a lista com a id dada, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver com a estrutura pronta. ds_list_clear (id) Limpa a lista com a identificao dada, removendo todos os dados dela, mas no a destruindo. ds_list_copy (id, source) Cpia da lista source para a lista com a identificao dada. ds_list_size (id) Retorna o nmero de valores armazenados na lista. ds_list_empty (id) Retorna se a lista est vazia. Isto o mesmo que testar se o tamanho 0. ds_list_add (id, val) Adiciona o valor no final da lista. ds_list_insert (id, pos, val) Insere o valor na posio pos da lista. A primeira posio 0, a ltima posio o tamanho da lista menos 1. pos ds_list_replace (id, val) Substitui o valor na posio pos da lista com o novo valor. ds_list_delete (id, pos) Exclui o valor na posio pos da lista. (Posio 0 o primeiro elemento.) ds_list_find_index (id, val) Encontra a posio que armazena o valor indicado. Se o valor no est na lista -1 retornado. ds_list_find_value (id, pos) Retorna o valor armazenado na posio indicada na lista. ds_list_sort (id, ascend) Classifica os valores na lista. Quando ascent true os valores so classificados em ordem crescente, caso contrrio, em ordem

decrescente. ds_list_shuffle (id) Embaralha os valores na lista de tal forma que acabam por ordem aleatria. ds_list_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salva em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_list_read (id, str) L a estrutura de dados da string de dada (como as criadas pela chamada anterior). Mapas Em muito poucas situaes em que voc precisa armazenar pares consistindo de uma chave e um valor. Por exemplo, um personagem pode ter um nmero de itens diferentes e para cada item tem um determinado nmero desses. Neste caso, o item a chave e o nmero o valor. Mapas mantem tais pares, classificados por chave. Voc pode adicionar pares para o mapa e procurar o valor correspondente a determinadas chaves. Como as chaves so classificadas voc tambm pode encontrar as chaves anteriores e seguintes. s vezes tambm til usar um mapa para apenas armazenar chaves sem um valor correspondente. Nesse caso, voc pode simplesmente usar um valor de 0. As funes seguintes existem: ds_map_create () Cria um novo mapa. A funo retorna um nmero inteiro como uma id que deve ser utilizado em todas as outras funes para acessar o mapa especfico. ds_map_destroy id () Destri o mapa com a identificao dada, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver com a estrutura pronta. ds_map_clear (id) Limpa o mapa com a identificao dada, removendo todos os dados dele, mas no o destruindo. ds_map_copy (id, source) Copia o mapa source para o mapa com a id dada. ds_map_size (id) Retorna o nmero de pares chave-valor armazenados no mapa. ds_map_empty (id) Retorna se o mapa est vazio. Isto o mesmo que testar se o tamanho 0. ds_map_add (id, key, val) Adiciona o par chave-valor para o mapa. ds_map_replace (id, key, val) Substitui o valor correspondente com a chave com um novo valor. ds_map_delete (id, key) Exclui a chave e o valor correspondente do mapa. (Se existirem entradas mltiplas com a mesma chave, apenas um removido). ds_map_exists (id, key) Retorna se a chave existe no mapa. ds_map_find_value (id, key) Retorna o valor correspondente chave. ds_map_find_previous (id, key) Retorna o maior chave para o mapa menor que a indicada. (Note que a tecla for devolvido, no o valor. Voc pode usar a rotina anterior de encontrar o valor.) ds_map_find_next (id, key) Retorna a menor chave no mapa maior do que a tecla indicada. ds_map_find_first (id) Retorna a menor chave no mapa. ds_map_find_last (id) Retorna o maior chave do mapa. ds_map_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salvar em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_map_read (id, str) L a estrutura de dados da string dadas (como as criadas pela chamada anterior).

Filas de prioridades Em uma fila de prioridade um certo nmero de valores so armazenados, cada um com uma prioridade. Voc pode rapidamente encontrar os valores com prioridade mxima e mnima. Utilizando esta estrutura de dados que voc pode lidar com certas coisas em ordem de prioridade. As funes seguintes condies: ds_priority_create () Cria uma nova fila de prioridade. A funo retorna um nmero inteiro como uma id que deve ser utilizado em todas as outras funes para acesso a fila de prioridade. ds_priority_destroy id () Destri a fila de prioridade com o id dado, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver pronto com a estrutura. ds_priority_clear (id) Limpa a fila de prioridade com o id dado, removendo todos os dados dele, mas no destru-lo. ds_priority_copy (id, source) Copia a fila de prioridade source na fila de prioridade com o id dado. ds_priority_size (id) Retorna o nmero de valores armazenados na fila de prioridade. ds_priority_empty (id) Retorna se a prioridade fila est vazia. Este o mesmo que testar se o tamanho 0. ds_priority_add (id, val, prio) Adiciona o valor com a prioridade dada para a fila de prioridade. ds_priority_change_priority (id, val, prio) Muda a prioridade do valor fornecido na fila de prioridade. ds_priority_find_priority (id, val) Retorna a prioridade do valor indicado na fila de prioridade. ds_priority_delete_value (id, val) Exclui o valor dado (com a sua prioridade) da fila de prioridade. ds_priority_delete_min (id) Devolve o valor com a menor prioridade e o exclui da fila de prioridade. ds_priority_find_min (id) Devolve o valor com a menor prioridade, mas no o exclui da fila de prioridade. ds_priority_delete_max (id) Retorna o valor com a maior prioridade e o exclui da fila de prioridade. ds_priority_find_max (id) Devolve o valor de maior prioridade, mas no o exclui da fila de prioridade. ds_priority_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salvar em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_priority_read (id, str) L a estrutura de dados da string dada (como as criadas pela chamada anterior). Grades A grade simplesmente uma matriz bidimensional. A grade tem uma largura e altura inteira. A estrutura permite definir e recuperar o valor das clulas da grade, dando o ndice (o que comea com 0 em ambos as direes x e y). Mas voc tambm pode definir o valor em regies, adicione os valores, e recuperar a quantia, max, min, e o valor mdio ao longo de uma regio. A estrutura til para representar por exemplo, um campo de jogo. Apesar de toda a funcionalidade tambm pode ser alcanado usando matrizes

bidimensionais, as operaes nas regies que so muito mais rpido. As funes seguintes condies: ds_grid_create (w, h) Cria uma nova grade com a largura e altura indicada. A funo retorna um nmero inteiro como uma identificao que deve ser utilizado em todas as outras funes de acesso rede particular. ds_grid_destroy id () destri a grade com o id dado, liberando a memria utilizada. No se esquea de chamar esta funo quando estiver com a estrutura pronta. ds_grid_copy (id, source) Copia a grade source para a grade com a identificao dada. ds_grid_resize (id, w, h) Redimensiona a grelha para a nova largura e altura. Clulas existentes manter o seu valor original. ds_grid_width (id) Retorna a largura da grade com a identificao indicado. ds_grid_height (id) Retorna a altura da rede com a identificao indicado. ds_grid_clear (id, val) Limpa a grade com a id dada, ao value indicado (tanto pode ser um nmero ou uma string). ds_grid_set (id, x, y, value) Define a clula indicada na grade com o id dado para o valor indicado (tanto pode ser um nmero ou uma string). ds_grid_add (id, x, y, val) Adiciona o valor para a clula indicada na grade com a id dada. Para strings isso corresponde a concatenao. ds_grid_multiply (id, x, y, val) Multiplica o valor para a clula indicada na grade com o ID dado. S vlida para os nmeros. ds_grid_set_region (id, x1, y1, x2, y2, val) Define a todas as clulas na regio da grade com o id dado para o valor indicado (tanto pode ser um nmero ou uma string). ds_grid_add_region (id, x1, y1, x2, y2, val) Adiciona o valor para a clula na regio na grade com a id dada. Para strings isso corresponde a concatenao. ds_grid_multiply_region (id, x1, y1, x2, y2, val) Multiplica o valor para as clulas da regio na grade com a id dado. S vlida para os nmeros. ds_grid_set_disk (id, xm, ym, r, val) Define todas as clulas do disco com o centro (xm, ym) e raio r. ds_grid_add_disk (id, xm, ym, r, val) Adiciona o valor de todas as clulas do disco com o centro (xm, ym) e raio r. ds_grid_multiply_disk (id, xm, ym, r, val) Multiplica o valor de todas as clulas do disco com o centro (xm, ym) e raio r. ds_grid_set_grid_region (id, source, x1, y1, x2, y2, xpos, ypos) Copia o contedo das clulas na regio em fonte de grade para id grade. xpos ypos e indicar o local onde a regio deve ser colocado na grade. (Tambm pode ser usado para copiar os valores de um lugar em uma rede para outra.) ds_grid_add_grid_region (id, source, x1, y1, x2, y2, xpos, ypos) Adiciona o contedo das clulas na regio em fonte de grade para id grade. xpos ypos e indicar o local onde a regio deve ser adicionado na grade. (id ea fonte pode ser o mesmo.) ds_grid_multiply_grid_region (id, source, x1, y1, x2, y2, xpos, ypos) Multiplica o contedo das clulas na regio em fonte de grade para id grade. xpos ypos e indicar o local onde a regio deve ser multiplicado na grade. (id ea fonte pode ser o mesmo.) Vlido apenas para nmeros. ds_grid_get (id, x, y) Retorna o valor da clula indicada na grade com a id dada. ds_grid_get_sum (id, x1, y1, x2, y2) Retorna a soma dos valores das clulas na regio da grade com a id dada. Ser que s funcionam quando as clulas contm nmeros. ds_grid_get_max (id, x1, y1, x2, y2) Retorna o valor mximo dos

valores das clulas na regio da grade com a id dada. Somente funciona quando as clulas que contm nmeros. ds_grid_get_min (id, x1, y1, x2, y2) Devolve o mnimo dos valores das clulas na regio da grade com a id dada. Somente funciona quando as clulas contm nmeros. ds_grid_get_mean (id, x1, y1, x2, y2) Retorna a mdia dos valores das clulas na regio da grade com a id dada. Somente funciona quando as clulas contm nmeros. ds_grid_get_disk_sum (id, xm, ym, r) Retorna a soma dos valores das clulas no disco. ds_grid_get_disk_min (id, xm, ym, r) Retorna min dos valores das clulas no disco. ds_grid_get_disk_max (id, xm, ym, r) Retorna o mximo dos valores das clulas no disco. ds_grid_get_disk_mean (id, xm, ym, r) Retorna a mdia dos valores das clulas no disco. ds_grid_value_exists (id, x1, y1, x2, y2, val) Retorna se o valor aparece em algum lugar na regio. ds_grid_value_x (id, x1, y1, x2, y2, val) Retorna a coordenada x da clula na qual o valor aparece na regio. ds_grid_value_y (id, x1, y1, x2, y2, val) Retorna a coordenada y da clula na qual o valor aparece na regio. ds_grid_value_disk_exists (id, xm, ym, r, val) Retorna se o valor aparece em algum lugar do disco. ds_grid_value_disk_x (id, xm, ym, r, val) Retorna a coordenada x da clula na qual o valor aparece no disco. ds_grid_value_disk_y (id, xm, ym, r, val) Retorna a coordenada y da clula na qual o valor aparece no disco. ds_grid_shuffle (id) Embaralha os valores na grade de tal forma que acabam por ordem aleatria. ds_grid_write (id) Torna a estrutura de dados em uma string e retorna ela. A string pode ento ser usada para por exemplo, salv-lo em um arquivo. Isto fornece um mecanismo fcil para guardar estruturas de dados. ds_grid_read (id, str) L a estrutura de dados da string dada (como as criadas pela chamada anterior).

Criao de partculas
Esta funcionalidade s est disponvel na verso Pro do Game Maker. Sistemas de partculas so destinadas a criar efeitos especiais. Partculas so pequenos elementos, representado por uma sprite pequena. Essas partculas se movimentam de acordo com regras pr-definidas e pode alterar o tamanho, orientao, cor, etc, enquanto elas se movem. Muitas dessas partculas em conjunto podem criar por exemplo, fogos de artifcio, fogo, exploses, chuva, neve, campos de estrelas, destroos, etc Game Maker contm um extenso sistema de partculas que pode ser usado para criar grandes efeitos. Por causa de sua generalidade, ela no simples de usar ento melhor que voc leia esta seo cuidadosamente antes de tentar. Se isso for muito complicado para voc, h tambm um mecanismo muito simples de criar diferentes tipos de exploses, fumaa, chuva e at fogos de artifcio.

Sistemas de partculas tm muitos parmetros e nem sempre fcil de entender como criar os efeitos desejados. Primeiramente, existem tipos de partculas. Um tipo de partcula define um tipo especfico de partculas. Esses tipos tm muitos parmetros que descrevem a forma, tamanho, cor e movimento das partculas. Tipos de partculas devem ser definidos apenas uma vez e pode ser usado em todos os lugares do jogo. Em segundo lugar, existem sistemas de partculas. No pode haver sistemas de partculas diferentes no jogo. Um sistema de partculas pode ter partculas de tipos diferentes. Um sistema de emissores de partcula tem que criar as partculas, de forma contnua ou em rajadas. Ele tambm pode ter atrativos que atraem partculas. Finalmente, ele pode ter destruidores que destroem as partculas. Uma vez que as partculas so criadas em um sistema de partculas, eles so automaticamente manipuladas (atualizada e elaborada) pelo sistema. Efeitos Simples A maneira mais fcil de criar partculas usar o mecanismo de efeitos. Os efeitos so criados utilizando o sistema de partculas, mas voc no precisa se preocupar com todos os detalhes. Basta especificar o tipo de efeito, a posio em que deve ser criado, o seu tamanho e sua cor. Isso tudo. H um nmero de diferentes tipos de efeitos: ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow

Alguns voc quer criar apenas uma vez (como a exploso) e alguns que pretende criar em cada passo (como a fumaa ou a chuva). Observe que a chuva e a neve so sempre criados na parte superior da room para a posio irrelevante neste caso. Mesmo que isto pode parecer limitado, eles realmente podem ser usadas para criar grandes efeitos. Por exemplo, criando uma pequena nuvem de fumaa vermelha, abaixo de uma nave espacial movendo-se em cada passo, uma cauda de fogo criada. As duas funes seguintes existem para criar os efeitos: effect_create_below tipo (x, y, size, color) Cria um efeito do tipo dado (veja acima) na posio indicada. Tamanho dar o tamanho da seguinte forma: 0 = pequeno, 1 = mdio, 2 = grande. color indica a cor para ser usada. O efeito criado abaixo das instncias, ou seja, a uma profundidade de 100000. effect_create_above (kind, x, y, size, color) Semelhante funo anterior, mas desta vez o efeito criado em cima dos casos, isto , a uma profundidade de

-100000. Se voc quiser remover todos os efeitos, chamar a seguinte funo: effect_clear () Limpa todos os efeitos. Tipos de partculas Um tipo de partcula descreve a forma, cor, movimento, etc, de um tipo especfico de partcula. Voc precisa definir um tipo de partcula somente uma vez no jogo. Aps isso, pode ser utilizado em qualquer sistema de partculas no jogo. Tipos de partculas, um grande nmero de parmetros que podem ser usados para alterar todos os aspectos. Com a configurao correta destas voc pode criar praticamente qualquer efeito que voc queira. Iremos discutir as definies abaixo. Uma srie de rotinas esto disponveis para criar novos tipos de partculas e destru-los novamente: part_type_create () Cria um novo tipo de partculas. Ele retorna o ndice do tipo. Este ndice deve ser usado em todas as chamadas abaixo para definir as propriedades do tipo de partcula. Ento muitas vezes voc vai armazen-lo em uma varivel global. part_type_destroy (ind) Destri ind tipo de partcula. Chame isso se no mais necessrio para economizar espao. part_type_exists (ind) Retorna se o tipo de partculas indicado existe. part_type_clear (ind) Limpa o tipo de partcula ind s suas configuraes padro. A forma de uma partcula Uma partcula tem uma forma. Esta forma indicada por um objeto. Voc pode usar qualquer sprite que voc queira para suas partculas, mas h 15 sprites embutidas. Estas so todas em tamanho 64x64 e tem valores de alfa estabelecido de modo que eles combinam muito bem com o fundo. Eles so indicados pelas seguintes constantes: pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow

Voc definir a forma usando a seguinte funo:

part_type_shape (ind, shape) Define a forma do tipo de partcula para qualquer uma das constantes acima (o padro pt_shape_pixel). Voc tambm pode usar sua prpria sprite para a partcula. Se a sprite tem mltiplas subimagens voc pode indicar o que deve ser feito com eles. Voc pode escolher um acaso, animar a sprite, comeam no incio da animao ou em local aleatrio, etc Voc pode usar a seguinte funo para isso. part_type_sprite (ind, sprite, animat, stretch, random) Define a sua prprio sprite para o tipo de partcula. Com animar voc indicar se o sprite deve ser animado (1) ou no (0). Com stretch (1 ou 0) que indica se a animao deve ser esticada sobre a vida da partcula. E com random (1 ou 0) que voc pode indicar se uma sub-imagem aleatria deve ser escolhida a partir da imagem. Uma vez que voc escolheu a sprite para o tipo de partcula (ou forma um padro ou a sua prpria), poder indicar o tamanho dela. Um tamanho de 1 indica o tamanho normal do sprite. Um tipo de partcula pode ser definida de tal forma que todas as partculas tm o mesmo tamanho ou que tenham tamanhos diferentes. Voc pode indicar uma variedade de tamanhos. Alm disso, voc pode indicar se o tamanho deve mudar com o tempo de vida da partcula e se alguma coisas mexendo no tamanho vai acontecer, dando um efeito de piscar. part_type_size (ind, size_min, size_max, size_incr, size_wiggle) Define os parmetros de tamanho para o tipo de partcula. Voc especifica o tamanho mnimo de partida, o tamanho mximo de partida, o aumento de tamanho em cada passo (use um nmero negativo para uma diminuio no tamanho) e a quantidade de wiggling. (O tamanho padro 1 e padro o tamanho no alterado.) Part_type_scale (ind, xscale yscale) Define a escala horizontal e vertical. Este fator multiplicado pelo tamanho. Isso particularmente til quando voc precisa de escala diferente na direo x e y. As partculas tm tambm uma orientao. Novamente a orientao pode ser a mesma para todas as partculas, pode ser diferente, e pode mudar durante a vida til do objeto. Os ngulos de especificar rotao no sentido anti-horrio, em graus. part_type_orientation (IND, ang_min, ang_max, ang_incr, ang_wiggle, ang_relative) Define as propriedades ngulo de orientao para o tipo de partcula. Voc especifica o ngulo mnimo, o ngulo mximo, o aumento em cada passo e da quantidade de wiggling no ngulo. (Por padro todos os valores so 0.) Voc tambm pode indicar se um determinado ngulo deve ser parente (1) para a direo relativo do movimento ou absoluto (0). Por exemplo por definio de todos os valores a 0, mas ang_relative a 1, a orientao das partculas ser justamente seguir o caminho da partcula. Cor e mistura Partculas ter uma cor. H diferentes maneiras nas quais voc pode especificar cores para uma partcula. A maneira mais simples a de indicar uma nica cor. Voc tambm pode especificar duas ou trs cores, entre as quais a cor da partcula interpolada durante o seu tempo de vida. Por exemplo, a partcula pode iniciar branco e cada vez mais negra sobre sua vida. Outra possibilidade que voc indicar que a cor de cada partcula deve ser diferente, escolhido entre uma gama de cores. Voc pode dar uma

escala em vermelho, azul e verde, ou um intervalo de matiz, saturao e valor. Por padro a cor branca. Quando voc usa uma sprite com suas prprias cores, isto normalmente o que voc quer e sem cor precisa ser especificado. part_type_color1 (ind, color1) Indica uma nica cor a ser utilizada para a partcula. part_type_color2 (ind, color1, color2) Especifica duas cores entre a cor que interpolada. part_type_color3 (ind, color1, color2, color3) Similar, mas desta vez a cor interpolada entre trs cores que representam as cores, no incio, no meio, e no final. part_type_color_mix (ind, color1, color2) Com esta funo pode indicar que a partcula deve obter uma cor que uma mistura aleatria de duas cores indicadas. Esta cor permanecer fixa durante a vida da partcula. part_type_color_rgb (ind, rmin, rmax, gmin, gmax, bmin, bmax) Pode ser usado para indicar que cada partcula tem de ter uma cor fixa, mas escolhidos a partir de um intervalo. Voc especifica um intervalo no componente vermelho, verde e azul da cor (cada uma entre 0 e 255). part_type_color_hsv (ind, hmin, hmax, smin, smax, vmin, vmax) Pode ser usado para indicar que cada partcula tem de ter uma cor fixa, mas escolhidos a partir de um intervalo. Voc especificar um intervalo na componente matiz e saturao valor da cor (cada uma entre 0 e 255). Alm da cor que voc tambm pode dar um valor de transparncia alfa. A formas de partculas embutidas j tm alguma transparncia alfa, mas voc pode usar essas configuraes, por exemplo, fazer desaparecer a partcula em seu tempo de vida. part_type_alpha1 (ind, alpha1) Define um parmetro nico de transparncia alfa (0-1) para o tipo de partcula. part_type_alpha2 (ind, alpha1, alpha2) Similar, mas desta vez um valor inicial e final so dadas e do valor de alfa interpolada entre eles. part_type_alpha3 (ind, alpha1, alpha2, alpha3) Desta vez so dados trs valores entre os quais a transparncia alfa interpolada. Normalmente, as partculas so misturadas com o fundo da mesma forma como sprites. Mas tambm possvel usar a mistura aditiva. Isso d, em particular um grande efeito de exploso. part_type_blend (ind, additivo) Define se usar mistura aditiva (1) ou de uma mistura normal (0) para o tipo de partcula. Vida e morte Partculas vivem por um perodo limitado de tempo, seu tempo de vida. Aps isso, elas desaparecem. Tempo de vida medido em passo. Voc pode indicar o tempo de vida (ou um intervalo de vida) para cada tipo de partcula. Partculas podem criar novas partculas de tipos diferentes. Existem duas formas para isso. Elas podem criar novas partculas em cada passo, ou elas podem criar partculas quando morrem. Tenha cuidado para que o nmero total de partculas no fiquem muito alto. part_type_life (ind, life_min, life_max) Define o limite do tempo de vida para o

tipo de partculas. (Padro ambos so 100.) part_type_step (ind, step_number, step_type) Define o nmero e o tipo de partculas que devem ser gerados em cada passo para o tipo de partcula indicado. Se voc usar um valor negativo, em cada passo uma partcula gerada com uma chance -1/numero. Assim, por exemplo, com um valor de -5 uma partcula gerada em mdia uma vez a cada 5 passos. part_type_death (IND, death_number, death_type) Define o nmero e o tipo de partculas que deve ser gerada quando uma partcula do tipo indicado morre. Novamente voc pode usar nmeros negativos para criar uma partcula com uma oportunidade em particular. Observe que estas partculas so criadas apenas quando a partcula morre no final da sua vida, no quando ela morre por causa de um destruidor (veja abaixo). Movimento de partculas Partculas podem mover-se durante sua vida. Eles podem obter uma velocidade inicial (ou intervalo de velocidades) e direo e a velocidade e direo pode mudar ao longo do tempo. Tambm pode ser definida a gravidade que puxa as partculas em uma determinada direo. As funes a seguir existem para isso: part_type_speed (ind, speed_min, speed_max, speed_incr, speed_wiggle) Define as propriedades de velocidade para o tipo de partcula. (Por padro todos os valores so 0.) Voc especifica uma velocidade mnima e mxima. Um valor aleatrio entre os limites dados escolhido quando a partcula criada. Voc pode indicar um aumento de velocidade em cada passo. Use um nmero negativo para retardar a partcula para baixo (a velocidade nunca vai se tornar menor do que 0). Finalmente, voc pode indicar uma certa quantidade de wiggling da velocidade. part_type_direction (ind, dir_min, dir_max, dir_incr, dir_wiggle) Define as propriedades de direo para o tipo de partculas. (Por padro todos os valores so 0.) Novamente voc especificar um intervalo de instrues (em graus no sentido contrrio; 0 indicaram um movimento para a direita). Por exemplo, para permitir a passagem de partculas em uma direo aleatria escolher 0 e 360 como valores. Voc pode especificar um aumento de direo para cada passo, e uma quantidade de wiggle. part_type_gravity (ind, grav_amount, grav_dir) Define as propriedades da gravidade para o tipo de partcula. (Padro no h gravidade.) Voc especifica o valor da gravidade para ser adicionado em cada etapa e da direo. Por exemplo 270 para usar uma direo para baixo. Sistemas de partculas Partculas vivas nos sistemas de partculas. Ento, para ter partculas em seu jogo voc precisa criar um ou mais sistemas de partculas. No pode haver sistemas de partculas diferentes (mas de preferncia, manter o seu nmero pequeno). Por exemplo, se seu jogo tem um nmero de bolas e cada bola deve ter uma cauda de partculas, mais provavelmente cada bola tem seu sistema prprio de partculas. A maneira mais fcil de lidar com sistemas de partculas criar uma e depois criar partculas nela, usando os tipos de partculas que voc especificou anteriormente. Mas, como veremos a seguir, sistemas de partculas podem conter emissores que automaticamente produzem partculas, atratores para atra-los e destruidores para destru-los. Uma vez que as partculas sejam adicionados a um sistema de partculas que so

atualizadas automaticamente a cada passo e desenhado. Nenhuma outra ao necessria. Para tornar possvel que as partculas sejam desenhadas, por trs, na frente, ou entre instncias de objetos, cada partcula tem um sistema de profundidade, semelhantes s instncias e tiles. Sistemas de partculas vai viver para sempre depois que eles so criados. Assim mesmo se voc mudar de room ou reiniciar o jogo, os sistemas e as partculas permanecem. Ento melhor voc ter certeza que voc destruiu eles, uma vez que j no precisa deles. As seguintes funes bsicas lidam com sistemas de partculas: part_system_create () Cria um novo sistema de partculas. Ele retorna o ndice do sistema. Este ndice deve ser usado em todas as ligaes abaixo para definir as propriedades do sistema de partculas. part_system_destroy (ind) Destri o sistema de partculas ind. Chame isso se voc no precisa mais economizar espao. part_system_exists (ind) Retorna se o sistema de partculas indicado existe. part_system_clear (ind) Limpa o sistema de partculas ind s configuraes padro, removendo todas as partculas e emissor e atratores no mesmo. part_system_draw_order (ind, oldtonew) Define a ordem em que o sistema de partculas atrai as partculas. Quando oldtonew verdade a partcula mais antiga so desenhadas primeiro e as partculas mais recentes uma posio em cima deles (padro). Caso contrrio, o mais novo partculas so elaborados primeiro. Isto pode dar efeitos muito diferentes. part_system_depth (ind, depth) Define a profundidade do sistema de partculas. Isso pode ser usado para permitir que as partculas apaream atrs, na frente, ou entre instncias. part_system_position (ind, x, y) Define a posio onde o sistema de partculas desenhado. Isto normalmente no necessrio, mas se voc quiser ter partculas em uma posio em relao a um objeto em movimento, voc pode definir a posio por exemplo para esse objeto. Como indicado acima, o sistema de partculas automaticamente atualizado e desenhado. Mas s vezes no isso que voc quer. Para facilitar esta tarefa, voc pode desligar a atualizao automtica ou de desenhar e, depois, decidir-se quando atualizar ou desenhar o sistema de partculas. Para isso, voc pode usar as seguintes funes: part_system_automatic_update (ind, automatic) Indica se o sistema de partculas deve ser atualizado automaticamente (1) ou no (0). O padro 1. part_system_automatic_draw (ind, automatic) Indica se o sistema de partculas deve ser desenhado automaticamente (1) ou no (0). O padro 1. part_system_update (ind) Isso atualiza as funes da posio de todas as partculas no sistema e permite que aos emissores criar partculas. Voc s tem que chamar esta atualizao quando no automtica. (Embora s vezes tambm til para chamar esta funo de um par de tempo para que o sistema comear.) part_system_drawit (ind) Esta funo tira as partculas no sistema. Voc s tem que chamar esse desenho quando no automtica. Ele deve ser chamado em caso de empate de algum objeto. O negcio seguintes funes com partculas em sistemas de partculas:

part_particles_create (ind, x, y, parttype, number) Esta funo cria nmero de partculas do tipo indicado na posio (x, y) no sistema. part_particles_create_color (ind, X, Y, parttype, cor, number) Esta funo cria nmero de partculas do tipo indicado na posio (x, y) no sistema com a cor indicada. Isto s til quando o tipo de partcula define uma nica cor (ou no definir uma cor em todos). part_particles_clear (ind) Esta funo remove todas as partculas no sistema. part_particles_count (ind) Esta funo retorna o nmero de partculas no sistema. Emissores Emissores criam partculas. Eles podem criar um fluxo contnuo de partculas ou pode explodir um nmero de partculas ao usar a funo adequada. Um sistema de partculas pode ter um nmero arbitrrio de emissores. Um emissor tem as seguintes propriedades: xmin, xmax, ymin, ymax indica a extenso da regio na qual as partculas so geradas. shape indica a forma da regio. Ela pode ter os seguintes valores: ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line distribution indica a distribuio utilizada para gerar as partculas. Ela pode ter os seguintes valores: ps_distr_linear indica uma distribuio linear, ou seja, em toda a regio a chance igual ps_distr_gaussian indica uma distribuio de Gauss em que mais partculas so geradas no centro do que nas laterais da regio ps_distr_invgaussian indica uma distribuio gaussiana inversa em que mais partculas so geradas nos lados da regio do que no centro particle type indica o tipo de partculas que est sendo gerado number indica o nmero de partculas geradas em cada etapa. Se inferior a 0, em cada passo de uma partcula gerado com um -1/number de chance. Assim, por exemplo com o valor de -5 uma partcula gerado em mdia uma vez a cada 5 passos.

As seguintes funes esto disponveis para definir os emissores e deix-los criar partculas. Note que cada um deles recebe o ndice do sistema de partculas a que pertence, como um primeiro argumento. part_emitter_create (ps) Cria um emissor de novo no sistema de partcula. Ele retorna o ndice do emissor. Este ndice deve ser usado em todas as chamadas abaixo para definir as propriedades do emissor. part_emitter_destroy (ps, ind) Destri emissor ind no sistema de partculas. Chame isso se voc no mais necessrio para economizar espao. part_emitter_destroy_all (ps) Destri todos os emissores no sistema de partculas que foram criados. part_emitter_exists (ps, ind) Retorna se o emissor indicado existe no sistema de partculas.

part_emitter_clear (ps, ind) Limpa o emissor ind s suas configuraes padro. part_emitter_region (ps, ind, xmin, xmax, ymin, ymax, forma, distribution) Define a regio e distribuio para o emissor. part_emitter_burst (ps, ind, parttype, number) Estoura uma vez que o nmero de partculas do tipo indicado a partir do emissor. part_emitter_stream (ps, ind, PartType, number) A partir deste momento criam o nmero de partculas do tipo indicado do emissor em cada etapa. Se voc indicar um nmero menor que 0, em cada passo de uma partcula gerado com a possibilidade de -1/number. Assim, por exemplo, com um valor de -5 uma partcula gerado em mdia uma vez a cada 5 passos. Atratores Alm de emissores de um sistema de partculas tambm pode conter atratores. Um atrator atrai as partculas (ou as empurra). Um sistema de partculas pode ter atratores mltiplos. Est embora recomendado usar alguns destes, porque eles vo retardar a transformao das partculas. Um atrator tem as seguintes propriedades: x, y indica a posio do atrator. force indica a fora de atrao do atrator. Como a fora age sobre as partculas depende dos seguintes parmetros. dist indica a distncia mxima em que o atrator tem efeito. S as partculas mais que essa distncia para o atrator sero atrados. kind indica o tipo de atrator. Os valores existem as seguintes ps_force_constant indica que a fora constante, independente da distncia. ps_force_linear indica uma fora linearmente crescente. A distncia mxima a fora 0, enquanto na posio do atrator que atinge o valor determinado. ps_force_quadratic indica que a fora cresce quadrtica. additive indica se a fora adicionado velocidade e direo em cada passo (true) ou apenas aplicado posio da partcula (false). Aditivo, quando a partcula vai acelerar em direo ao atrator, enquanto com uma fora no-aditiva que vai se mudar para l com velocidade constante.

As funes a seguir existem para definir atratores. Note que cada um deles recebe o ndice do sistema de partculas a que pertence, como um primeiro argumento. part_attractor_create (ps) Cria um novo atrator no sistema de partcula. Ele retorna o ndice do atrator. Este ndice deve ser usado em todas as ligaes abaixo para definir as propriedades do atrator. part_attractor_destroy (ps, ind) atrator Destri ind no sistema de partculas. Chame isso se voc no mais necessrio para economizar espao. part_attractor_destroy_all (ps) Destri todos os atratores no sistema de partculas que foram criados. part_attractor_exists (ps, ind) Retorna se o atrator indicado existe no sistema de partculas. part_attractor_clear (ps, ind) Limpa o atrator ind s suas configuraes padro. part_attractor_position (ps, ind, x, y) Define a posio do atrator de ind (x, y). part_attractor_force (ps, force ind, dist, kind, aditive) Define os parmetros force do atrator ind.

Destruidores Destruidores destroem partculas quando aparecem em sua regio. Um sistema de partculas pode ter um nmero arbitrrio de destruidores. Um destruidor tem as seguintes propriedades: xmin, xmax, ymin, ymax indica a extenso da regio na qual as partculas so destrudas. shape indica a forma da regio. Ela pode ter os seguintes valores: ps_shape_rectangle ps_shape_ellipse ps_shape_diamond

As seguintes funes esto disponveis para definir as propriedades dos destruidores. Note que cada um deles recebe o ndice do sistema de partculas a que pertence, como um primeiro argumento. part_destroyer_create (ps) Cria um destruidor novo no sistema de partcula. Ele retorna o ndice do destruidor. Este ndice deve ser usado em todas as ligaes abaixo para definir as propriedades do destruidor. part_destroyer_destroy (ps, ind) Destri o destruidor ind no sistema de partculas. Chame isso se voc no mais necessrio para economizar espao. part_destroyer_destroy_all (ps) Destri todos os destruidores do sistema de partculas que foram criados. part_destroyer_exists (ps, ind) Retorna se o destruidor indicado existe no sistema de partculas. part_destroyer_clear (ps, ind) Limpa o destruidor ind s suas configuraes padro. part_destroyer_region (ps, ind, xmin, xmax, ymin, ymax, shape) Define a regio para o destruidor. Defletores Defletores desviam partculas quando aparecem em sua regio. Observe que apenas a posio da partcula levada em considerao a sua sprite ou tamanho. Um sistema de partculas pode ter um nmero arbitrrio de defletores. Um defletor tem as seguintes propriedades: xmin, xmax, ymin, ymax indica a extenso da regio em que as partculas so desviadas. kind indica o tipo de defletor. Ela pode ter os seguintes valores: ps_deflect_horizontal deflete a partcula horizontalmente; normalmente utilizados para paredes verticais ps_deflect_vertical deflete a partcula verticalmente; normalmente utilizados para paredes horizontais friction a quantidade de frico, como resultado do impacto com o defletor. Quanto maior for este valor, mais a partcula retardado com o impacto.

As seguintes funes esto disponveis para definir as propriedades do defletor. Note que cada um deles recebe o ndice do sistema de partculas a que pertence, como um

primeiro argumento. part_deflector_create (ps) Cria um defletor de novo no sistema de partcula. Ele retorna o ndice do defletor. Este ndice deve ser usado em todas as ligaes abaixo para definir as propriedades do defletor. part_deflector_destroy (ps, ind) Destri defletor ind no sistema de partculas. Chame isso se voc no mais necessrio para economizar espao. part_deflector_destroy_all (ps) Destri todos os defletores no sistema de partculas que foram criados. part_deflector_exists (ps, ind) Retorna se o defletor indicado existe no sistema de partculas. part_deflector_clear (ps, ind) Limpa o defletor ind s suas configuraes padro. part_deflector_region (ps, ind, xmin, xmax, ymin, ymax) Define a regio para o defletor. part_deflector_kind (ps, tipo, ind) Define o tipo de defletor. part_deflector_friction (ps, friction, ind) Define o atrito para o defletor. Modificadores Modificadores mudam certas partculas quando aparecem em sua regio. Um sistema de partculas pode ter um nmero arbitrrio de modificadores. Um modificador tem as seguintes propriedades: xmin, xmax, ymin, ymax indica a extenso da regio na qual as partculas so alteradas. shape indica a forma da regio. Ela pode ter os seguintes valores: ps_shape_rectangle ps_shape_ellipse ps_shape_diamond parttype1 indica o tipo de partculas que est mudado. parttype2 indica o tipo de partcula em que ela mudou. kind indica o tipo de modificador. Ela pode ter os seguintes valores: ps_change_motion Apenas altera os parmetros de movimento da partcula, e no a cor ea forma ou configuraes de vida. ps_change_shape S muda a forma de parmetros como tamanho e cor e forma. ps_change_all Muda todos os parmetros, isto significa basicamente que a partcula destruda e uma nova do tipo novo criado.

As seguintes funes esto disponveis para definir as propriedades do modificador. Note que cada um deles recebe o ndice do sistema de partculas a que pertence, como um primeiro argumento. part_changer_create (ps) Cria um trocador de novo no sistema de partcula. Ele retorna o ndice do trocador. Este ndice deve ser usado em todas as ligaes abaixo para definir as propriedades do trocador. part_changer_destroy (ps, ind) Destri modificador ind no sistema de partculas. Chame isso se voc no mais necessrio economizar espao. part_changer_destroy_all (ps) Destri todos os modificadores no sistema de partculas que foram criados. part_changer_exists (ps, ind) Retorna se o carregador indicado existe no sistema de partculas.

part_changer_clear (ps, ind) Limpa o modificador ind para suas configuraes padro. part_changer_region (ps, ind, xmin, xmax, ymin, ymax, shape) Define a regio para o trocador. part_changer_types (ps, ind, parttype1, parttype2) Define o tipo de partcula o modificador deve mudar para que o outro tipo. part_changer_kind (ps, kind, ind) Define o tipo de modificador. Exemplo de fogos de artifcio Aqui est um exemplo de um sistema de partculas que cria fogos de artifcio. O fogo de artifcio usa dois tipos de partculas: um que faz o foguete e uma forma que realmente os fogos reais. O foguete gera as partculas de fogos de artifcio quando morre. Ns tambm geramos um emissor no sistema de partculas que regularmente gera partculas para fora do foguete na parte inferior da tela. Para fazer isso funcionar voc precisa de um objeto. No seu evento de criao ns colocamos o seguinte cdigo que cria os tipos de partculas, sistema de partculas, e o emissor: { / / Cria o sistema de partculas ps = part_system_create (); / / As partculas de fogos de artifcio pt1 = part_type_create (); part_type_shape (pt1, pt_shape_flare); part_type_size (pt1, 0.1,0.2,0,0); part_type_speed (pt1, 0.5,4,0,0); part_type_direction (pt1, 0,360,0,0); part_type_color1 (pt1, c_red); part_type_alpha2 (pt1, 1,0.4); part_type_life (pt1, 20,30); part_type_gravity (pt1, 0.2,270); / / Foguete pt2 = part_type_create (); part_type_shape (pt2 pt_shape_sphere); part_type_size (pt2, 0.2,0.2,0,0); part_type_speed (pt2, 10,14,0,0); part_type_direction (pt2, 80,100,0,0); part_type_color2 (pt2, c_white, c_gray); part_type_life (pt2, 30,60); part_type_gravity (pt2, 0.2,270); part_type_death (pt2, 150, pt1); / / cria o fogo de artifcio sobre a morte / / Cria o emissor em = part_emitter_create (ps); part_emitter_region (ps, em, 100.540.480.490, ps_shape_rectangle, ps_distr_linear); part_emitter_stream (ps, em, pt2, -4); / / cria um de quatro em quatro passos } Isso vai fazer o truque. Voc pode querer certificar-se do sistema de partculas (e talvez os tipos de partculas) so destrudos quando se deslocam para outra sala, caso contrrio, o fogo de artifcio vai continuar para sempre.

Jogos Multiplayer
Esta funcionalidade s est disponvel na verso Pro do Game Maker. Jogar jogos contra o computador divertido. Mas os jogos divertido jogar contra outros jogadores humanos podem ser ainda mais. Tambm relativamente fcil de fazer esses jogos, porque voc no tem que implementar IA complicada no computador adversrio. Pode, claro, sentar-se com dois jogadores atrs do mesmo monitor e uso de chaves diferentes ou outros dispositivos de entrada, mas muito mais interessante quando cada jogador pode sentar-se atrs de seu prprio computador. Ou melhor ainda, quando um jogador fica no outro lado do oceano. Game Maker tem suporte multiplayer. Por favor perceba que a criao efetiva de jogos multiplayer que sincronizam bem e no ter latncia uma tarefa difcil. Este captulo apresenta uma breve descrio das possibilidades. No site est disponvel um tutorial com mais informaes. Configurao de uma conexo Para dois computador se comunicarem voc vai precisar de algum protocolo de conexo. Como a maioria dos jogos, Game Maker oferece quatro diferentes tipos de conexes: IPX, TCP/IP, modem e Serial. A conexo IPX (para ser mais preciso, um protocolo) quase totalmente transparente. Ela pode ser usada para brincar com outras pessoas na mesma rede de rea local. Ele precisa ser instalado no seu computador para ser utilizado. (Se no funcionar, consulte a documentao do Windows. Ou v para o item Rede no Painel de Controle do Windows e adicionar o protocolo IPX.) TCP / IP o protocolo de internet. Ele pode ser usado para jogar com outros jogadores em qualquer lugar na internet, supondo que voc conhece os seus endereos de IP. Em uma rede local, voc pode uslo sem fornecer endereos. A conexo do modem feita atravs do modem. Voc tem que fornecer algumas configuraes do modem (uma sequncia de inicializao e um nmero de telefone) para us-lo. Finalmente, quando usando um cabo serial (conexo direta entre os computadores) voc precisa fornecer um nmero de configuraes de porta. H quatro funes GML que pode ser usada para inicializar estas ligaes: mplay_init_ipx () inicializa uma ligao IPX. mplay_init_tcpip (addr) inicia uma conexo TCP / IP. addr uma string contendo o endereo da web ou endereo de IP, por exemplo, 'www.gameplay.com' ou '123.123.123.12', possivelmente seguido de um nmero de porta (por exemplo,': 12 '). Somente quando aderir a uma sesso (ver abaixo) que voc precisa fornecer um endereo. Em uma rede de rea local nenhum endereo necessrio. mplay_init_modem (initstr, phonenr) inicializa uma conexo de modem. initstr a seqncia de inicializao do modem (pode ser vazia). phonenr uma cadeia que contm o nmero do telefone para tocar (por exemplo, '0201234567 '). Somente quando aderir a uma sesso (ver abaixo) que voc precisa fornecer um nmero de telefone. mplay_init_serial (portno, baudrate, stopbits, parity, flow) inicializa uma ligao srie. portno o nmero da porta (1-4). baudrate a velocidade de transmisso a ser utilizado (100-256K). stopbits indica o nmero de stopbits (bit 0 = 1, 1 = 1,5 bit, 2 = 2 bits). parity indica a paridade (0 = nenhum, 1 = mpar, 2 = even, 3 = marcar). Fluxo e indica o tipo do controle de fluxo (0 = nenhum, 1 = XON / XOFF, RTS 2 =, 3 = dtr, 4 = RTS e DTR). Retorna se bem sucedido. Um convite tpico mplay_init_serial (1,57600,0,0,4). D 0 como um primeiro argumento para abrir um dilogo para que o usurio mude as configuraes.

Seu jogo deve chamar uma dessas funes exatamente uma vez. Todas as funes de relatrio se foram bem sucedidas. Eles no so bem sucedidas se o protocolo particular no est instalado ou apoiados pela sua mquina. Para verificar se h uma ligao com xito disponvel voc pode usar a seguinte funo mplay_connect_status () retorna o status da conexo atual. 0 = sem conexo, 1 = conexo IPX, 2 = conexo TCP / IP, modem = 3, e 4 = conexo serial. Para terminar a chamada conexo mplay_end () termina a conexo atual. Ao usar uma conexo TCP / IP que voc pode querer dizer a pessoa que voc quer jogar com o jogo o endereo IP do seu computador. A funo a seguir ajuda-lo aqui: mplay_ipaddress () retorna o endereo de IP da sua mquina (por exemplo, '123 . 123.123.12 ') como uma sequncia. Voc pode por exemplo mostrar este lugar na tela. Note que esta rotina lento por isso no cham-lo o tempo todo. Criando e juntando sesses Quando voc conectar a uma rede, pode haver mltiplos jogos mltiplos acontecendo na mesma rede. Chamamos a estas de sesses. Essas sesses diferentes podem corresponder a diferentes jogos ou para mesmo do jogo. Um jogo deve identificar-se na rede. Por sorte, o Game Maker faz isso para voc. A nica coisa que voc tem que saber que quando voc alterar a id do jogo na janela de opes essa identificao muda. Desta maneira voc pode evitar que pessoas com verses antigas de seu jogo vai jogar contra as pessoas com novas verses. Se voc quer comear um novo jogo multiplayer voc precisa criar uma nova sesso. Para isso voc pode usar a seguinte rotina: mplay_session_create (sesname, playnumb, playername) cria uma nova sesso sobre a conexo atual. sesname uma string indicando o nome da sesso. playnumb o nmero que indica o nmero mximo de jogadores permitidos no jogo (use 0 para um nmero arbitrrio). playname o seu nome como jogador. Retorna se bem sucedido. Uma instncia do jogo deve criar a sesso. A instncia de outro(s) jogo(s) se associem a esta sesso. Isto um pouco mais complicado. Primeiro voc precisa olhar para as sesses que esto disponveis e, em seguida, escolher uma e aderir. H trs rotinas importante para isso: mplay_session_find () procura por todas as sesses que ainda aceita jogadores e retorna o nmero de sesses encontrado. mplay_session_name (numb) retorna o nome do nmero de sesso Numb (0 a primeira sesso). Essa rotina s pode ser chamado depois de chamar a rotina anterior. mplay_session_join (numb, playername) faz com que voc se junta nmero de sesso Numb (0 o primeira sesso). playername o seu nome como jogador. Retorna se bem sucedido.

H mais uma rotina que pode mudar o modo de sesso. Deve ser chamada antes de criar uma sesso: mover mplay_session_mode () define se deve ou no mover da sesso host para outro computador quando o host termina. move deve ser verdadeiro ou falso (o padro). Para verificar o status da sesso atual voc pode usar a seguinte funo mplay_session_status () retorna o status da sesso atual. 0 = sem sesso, 1 = criado sesso, 2 = se juntou a sesso. O jogador pode parar uma sesso usando a seguinte rotina: mplay_session_end () termina a sesso deste jogador. Jogadores Cada instncia do jogo, que se junta a uma sesso um jogador. Como referido anteriormente, os jogadores tm nomes. H trs rotinas que lidam com os jogadores. mplay_player_find () procura por todos os jogadores na sesso atual e retorna o nmero de jogadores encontrado. mplay_player_name (numb) retorna o nome do jogador nmero numb (0 o primeiro jogador, que sempre voc mesmo). Essa rotina s pode ser chamada depois de chamar a rotina anterior. mplay_player_id (numb) retorna a identificao exclusiva do jogador nmero numb (0 o primeiro jogador, que sempre voc mesmo). Essa rotina s pode ser chamado depois de chamar a primeira rotina. Esta identificao usada no envio e recebimento de mensagens para e de jogadores individuais. Dados compartilhados Compartilhados de comunicao de dados provavelmente a maneira mais fcil de sincronizar The Game. Toda a comunicao est protegida contra voc. Existe um conjunto de 1000000 de valores que so comuns a todas as entidades de The Game (de preferncia usar somente o primeiro poucos para economizar memria). Cada entidade pode definir valores e ler valores. Game Maker torna-se que cada entidade v os mesmos valores. Um valor pode ser real ou uma corda. H apenas duas rotinas: mplay_data_write (ind, val) escrever o valor val (string ou reais) em ind localizao (ind entre 0 e 1000000). mplay_data_read (ind) retorna o valor na localizao ind (ind entre 0 e 1000000). Inicialmente, todos os valores so de 0. Para sincronizar os dados em mquinas diferentes voc pode usar o modo garantido que garante que chega a mudana na outra mquina (mas que lento) ou no-garantido. Para alterar este uso a seguinte rotina: mplay_data_mode (guar) define se deve ou no usar transmisso garantida de dados compartilhados. guar deve ser true (o padro) ou falso. Mensagens

O segundo mecanismo de comunicao que Game Maker suporta o envio e recebimento de mensagem. Um jogador pode enviar mensagens para um ou todos os outros jogadores. Os jogadores podem ver se as mensagens chegaram e agir em conformidade. As mensagens podem ser enviadas em um modo garantidos na qual voc tem certeza que chegam (mas isso pode ser lento) ou em um modo no-garantido, o que mais rpido. As rotinas existem as seguintes mensagens: mplay_message_send (player, id, val) envia a mensagem ao jogador indicado (seja um identificador ou um nome, use 0 para enviar a mensagem para todos os jogadores). id um identificador de mensagem inteiro e val o valor (um real ou uma string). A mensagem enviada em modo no-garantido. Se val contm uma sequncia de caracteres o comprimento mximo permitido da sequncia de 30.000 caracteres. mplay_message_send_guaranteed (player, id, val) emite uma mensagem ao jogador indicado (seja um identificador ou um nome, use 0 para enviar a mensagem para todos os jogadores). id um identificador de mensagem inteiro e val o valor (um real ou uma string). Esta uma garantia de enviar. Se val contm uma sequncia de comprimento mximo permitido de sequncia de 30.000 caracteres. mplay_message_receive (player) receba a mensagem seguinte da fila de mensagem que veio do jogador indicado (seja um identificador ou um nome). Use 0 para mensagens de qualquer jogador. A rotina retorna se houve de fato uma nova mensagem. Se assim que voc pode usar as rotinas a seguir para obter o respectivo contedo: mplay_message_id () Retorna o identificador da ltima mensagem recebidas. mplay_message_value () Retorna o valor da ltima mensagem recebidas. mplay_message_player () Retorna o jogador que enviou a ltima mensagem recebida. mplay_message_name () Retorna o nome do jogador que enviou a ltima mensagem recebida. mplay_message_count (player) Retorna o nmero de mensagens deixadas em fila ao jogador (use 0 para contar todas as mensagens). mplay_message_clear (player) Remove todas as mensagens deixadas na fila do jogador (use 0 para eliminar todas as mensagens). A algumas observaes aqui so pertinentes. Primeiramente, se voc quiser enviar uma mensagem para um determinado jogador somente, voc vai precisar saber o id exclusivo do jogador. Como indicado anteriormente, voc pode obter isso com a funo mplay_player_id (). Esse identificador do jogador tambm usado quando recebe mensagens de um determinado jogador. Alternativamente, voc pode dar o nome do jogador como uma sequncia. Caso vrios jogadores tm o mesmo nome, apenas o primeiro vai receber a mensagem. Em segundo lugar, voc pode perguntar por cada mensagem que tem um identificador inteiro. A razo que isso ajuda seu aplicativo a enviar tipos diferentes de mensagens. O destinatrio pode verificar o tipo de mensagem usando o id e tomar medidas apropriadas. (Porque as mensagens no tem garantia de chegar, o envio de id e valor, em mensagens diferentes poderia causar srios problemas.) Utilizando DLLs

Esta funcionalidade s est disponvel na verso Pro do Game Maker. Por favor note que desde a verso 7, h um novo mecanismo de extenso para o Game Maker. Est fortemente encorajado a utilizar esse mecanismo de extenso, ao invs de as funes descritas nesta seo. Veja http://www.yoyogames.com/extensions obter detalhes. Estas funes so, principalmente deixada para a compatibilidade com o passado. Em alguns casos a funcionalidade do GML no suficiente para os seus desejos, voc pode realmente ampliar as possibilidades usando plug-ins. Um plug-in vem na forma de um arquivo DLL (Dynamic Link Library). Em tal um arquivo DLL que voc pode definir as funes. Tais funes podem ser programadas em qualquer linguagem de programao que suporta a criao de DLL (por exemplo, em Delphi, C, C + +, etc) Voc ainda precisa ter alguns conhecimentos de programao para fazer isso. Funes plug-in devem ter um formato especfico. Eles podem ter de 0 a 16 argumentos, cada um dos quais pode ser um nmero real (double em C) ou uma string terminada em null. (Para mais de 4 argumentos, s argumentos reais so suportados no momento). Devem retornar um real ou uma string terminada em null. Em Delphi voc cria uma DLL, primeiro escolhendo New no menu File e escolhendo DLL. Aqui est um exemplo de uma DLL que voc pode usar com o Game Maker escrito em Delphi. (Note que este o cdigo Delphi, no o cdigo GML!) library MyDLL; uses SysUtils, Classes; function MyMin (x, y: double): double; cdecl; begin se x <y then Result : = x eles Result : Y =; end; var res: array [0 .. 1.024] of char; function DoubleString (str: PChar): Pchar; cdecl; begin StrCopy (res, str); StrCat (res, str); Result : = res; end; export MyMin, DoubleString; begin end. Esta DLL define duas funes: MyMin que toma dois argumentos reais e retorna o mnimo dos dois, e DoubleString que duplica a string. Note que voc tem que ter cuidado com o gerenciamento de memria. por isso que eu declarei a string resultante global. Observe tambm o uso da conveno da chamada cdecl. Voc pode usar cdecl ou stdcall que so convenes de chamada. Depois de criar a DLL em Delphi voc ter MyDLL.DLL um

arquivo. Este arquivo deve ser colocado no diretrio de funcionamento de seu jogo. (Ou qualquer outro local onde o Windows pode encontr-lo.) Para utilizar esta DLL no Game Maker primeiro voc precisa especificar as funes externas que deseja usar e que tipo de argumentos elas recebem. Por isso, h a seguinte funo em GML: external_define (dll, name, calltype, restype, argnumb, arg1type, arg2type ...) Define uma funo externa .dll o nome do arquivo DLL. o nome das funes. calltype utilizada a conveno de chamada. Para isso use um dll_cdecl e dll_stdcall. restype o tipo do resultado. Para tanto ty_real esta utilizao ou ty_string. argnumb o nmero de argumentos (0-16). Em seguida, para cada argumento voc deve especificar o seu tipo. Para este novo ty_real qualquer uso ou ty_string. Quando h mais de 4 argumentos todos eles devem ser do tipo ty_real. Essa funo retorna a identificao da funo externa que deve ser utilizado para chamla. Assim, no exemplo acima, no incio do jogo voc usaria o cdigo GML seguinte: { global.mmm = external_define ( 'MyDLL.DLL', 'mymin', dll_cdecl, ty_real, 2, ty_real, ty_real); global.ddd = external_define ( 'MyDLL.DLL', 'DoubleString', dll_cdecl, ty_string, 1, ty_string); } Agora sempre que voc precisar chamar as funes, voc usa a funo a seguir: external_call (id, arg1, arg2 ,...) Solicita a funo externa com o id dado, e os argumentos dados. Voc precisa fornecer o nmero correto de argumentos do tipo correto (real ou string). A funo retorna o resultado da funo externa. Assim, por exemplo, voc escreveria: { aaa = external_call (global.mmm, x, y); sss = external_call (global.ddd, 'Ol'); } Se voc no precisa usar a DLL mais melhor voc liber-la. external_free (dll) Libera a DLL com o nome indicado. Isto particularmente necessrio se The Game deve remover a DLL. Enquanto a DLL no liberado, no pode ser removido. Melhor fazer isso por exemplo em um evento de fim de jogo. Voc pode perguntar como fazer uma funo de uma DLL que faz algo no jogo. Por exemplo, voc pode querer criar uma DLL que adiciona instncias de objetos para seu jogo. A maneira mais fcil deixar sua funo de DLL retorne uma string que contm um pedao de cdigo GML. Esta sequncia de caracteres que contm o pedao de GML pode ser executado usando a funo GML execute_string (str, arg0, arg1 ,...) Execute o pedao de cdigo na string str com os argumentos indicados.

Alternativamente voc pode deixar a dll criar um arquivo com um script que pode ser executado (esta funo pode tambm ser usada para mais tarde modificar o comportamento de um jogo). execute_file (fname) Execute o pedao de cdigo no arquivo. Agora voc pode chamar uma funo externa e, em seguida, executar a sequncia resultante, por exemplo, como segue: { ccc = external_call (global.ddd x, y); execute_string (CCC); } Em alguns casos raros, a DLL seja necessrio conhecer o identificador da janela principal para grficos do jogo. Isto pode ser obtido com a seguinte funo e pode ento ser passado para a DLL: window_handle () Retorna o identificador da janela para a janela principal. Observe que DLLs no podem ser usados no modo de segurana. Usar DLL externa um mecanismo extremamente poderoso. Mas por favor, s use se voc sabe o que est fazendo.

Grficos 3D
Esta funcionalidade s est disponvel na verso Pro do Game Maker. Game Maker um programa destinado fazer jogos de 2 dimenses e isomtrico. Ainda h algumas funcionalidades para criar grficos de 3 dimenses. Antes de comear com isto, existem algumas coisas que voc deve entender. A funcionalidade 3D no Game Maker limitado na parte grfica. No h suporte para outras funcionalidades 3D outra. Uma vez que voc comear a usar grficos 3D voc pode ter problemas com outros aspectos do Game Maker, como os pontos de vista, a classificao de profundidade, etc A funcionalidade limitada e tem baixa prioridade para ser prorrogada. Ento, no espere suporte para os modelos de objetos 3D, etc. Quando voc usar a funcionalidade 3D, h uma srie de outras coisas que no podem mais ser usadas. Voc no pode usar de fundo e primeiro plano em suas rooms mais. (A razo que eles esto lado a lado para preencher a imagem, mas com projees perspectiva isto j no funciona corretamente). Voc no pode usar mais a posio do mouse. O mouse no ir ser transformada para as coordenadas 3D. Voc ainda pode obter a posio do mouse na tela (no modo de exibio), mas voc ter que fazer o clculo por conta prpria (ou no usar o mouse em tudo). Voc no pode usar tiles mais. Tiles provavelmente j no correspondem corretamente. Verificao da coliso ainda usa posies 2D das instncias na room. Portanto, no h deteco de coliso em 3D. s vezes, voc ainda pode usar este (se voc usar a room como uma representao de um mundo

plano (por exemplo, para corridas ou jogos FPS), mas em outras situaes, voc tem que fazer as coisas sozinho. Todas as funcionalidades 3D atravs de cdigo. Voc deve ser bastante fluente com a linguagem GML. Tambm voc deve realmente entender muita coisa sobre como funciona Game Maker caso contrrio voc ter problemas. necessrio ter alguns conhecimentos bsicos sobre grficos 3D. Em especial, vou usar termos como projees perspectiva, a remoo de superfcie escondida, iluminao e de nevoeiro, sem muita explicao. No h nenhuma modelagem 3D no Game Maker. Eu tambm no planejo adicionar suporte para carregamento de modelos 3D. Voc deve trabalhar com cuidado para manter uma velocidade razovel. Alm disso, as coisas no so realmente otimizadas para alta velocidade.

Se isso no te desanima, continue a ler. Indo para o modo 3D Se voc deseja usar o modo 3D voc primeiro precisa definir para modo 3D no Game Maker. Mais tarde voc pode voltar para o modo 2D, se quiser. A duas funes existem para isso. d3d_start () Comece a usar o modo 3D. Retorna se bem sucedido. d3d_end () Pare de usar modo 3D. Retorna se bem sucedido. Observe que todas as funes relacionadas ao iniciar modo 3D com d3d_. Iniciando o modo 3D vai resultar em alteraes a seguir. Primeiramente remoo de superfcie escondida est ligado (usando um z-buffer 16-bit). Isto significa que para cada pixel na tela apenas o desenho que tiver com menor z-value (= valor de profundidade) desenhado. Se as instncias tm a mesma profundidade no est claro o que vai acontecer e voc pode obter efeitos estranhos. Certifique-se de instncias que podem se sobrepor no tm o mesmo valor de profundidade! Em segundo lugar, a projeo normal ortogrfica substituda por uma perspectiva. Isso significa o seguinte. Normalmente o tamanho de ocorrncias na tela independente em sua profundidade. Com uma perspectiva de projeo instncias que tm uma maior profundidade ir parecer menor. Quando a profundidade de 0 ela igual ao tamanho antigo (a menos que altere a projeo; veja abaixo). O ponto de vista da cmera colocada a uma distncia acima da room. (Essa distncia igual largura da sala, que d uma projeo padro razovel.) Apenas as instncias em frente da cmera so desenhadas. Portanto, no usar instncias com uma profundidade menor do que 0 (ou pelo menos no inferior a -w onde w a largura da room ou a vista). Em terceiro lugar, a coordenada vertical y invertida. Embora normalmente os (0,0) posio no canto superior esquerdo da janela, no modo 3D o (0,0) posio encontra-se no canto inferior esquerdo de posio, como normal na vistas 3D. Voc pode realmente mudar remover superfcie escondida e projeo perspectiva ou desligar utilizando as seguintes funes. d3d_set_hidden (enable) permite a remoo de superfcie escondida (true) ou desativ-la (false).

d3d_set_perspective (enable) Permite o uso da projeo perspectiva (true) ou desativ-la (false). Desenho Fcil Uma vez que o modo 3D foi ligado, poder utilizar o Game Maker como voc est acostumado (exceto pelas observaes feitas no incio). Somente os objetos que aparecem em diferentes tamanhos com base em sua configurao de profundidade. Voc ainda pode usar vistas. Uma funo adicional pode ser til. Se voc desenhar uma srie de coisas em um pedao de cdigo que voc pode querer alterar o valor da profundidade entre as primitivas que voc desenhar. Para isso, voc usar: d3d_set_depth (depth) Define a profundidade usado para desenho. Observe que no momento em que uma nova instncia desenhada a profundidade novamente ajustado para a profundidade dessa instncia. Desenhando polgonos em 3D O problema com o desenho da maneira antiga que uma sprite ou polgono sempre reside no plano xy, ou seja, todos os cantos tm a mesma profundidade. Para o 3D de verdade voc quer ser capaz de ter vrtices em diferentes profundidades. A partir deste momento vamos falar sobre coordenada z, em vez de profundidade. Ento ns queremos especificar as coordenadas tuplas (x, y, z). Para isso h verso especial das funes avanadas de desenho: d3d_primitive_begin (kind) Iniciar uma primitiva 3D do tipo indicado: pr_pointlist, pr_linelist, pr_linestrip, pr_trianglelist, pr_trianglestrip ou pr_trianglefan. d3d_vertex (x, y, z) Adiciona vrtices (x, y, z) para a primitiva, usando a cor e o valor de alfa definido antes. d3d_vertex_color (x, y, z, col, alfa) Adicionar vrtice (x, y, z) para a primitiva, com a sua prpria cor e valor alfa. Isto permite-lhe criar primitivas com suavizao mudando de cor e valores de alfa. d3d_primitive_end () Fim da descrio da primitiva. Esta funo realmente desenha-o. Por exemplo, para desenhar um tetraedro (pirmide de trs lados) em p sobre o plano z = 0 com o seu incio em z = 200, voc pode usar o seguinte cdigo: { d3d_primitive_begin (pr_trianglelist); d3d_vertex (100,100,0); d3d_vertex (100,200,0); d3d_vertex (150.150.200); d3d_vertex (100,200,0); d3d_vertex (200,200,0); d3d_vertex (150.150.200); d3d_vertex (200,200,0); d3d_vertex (100,100,0); d3d_vertex (150.150.200); d3d_vertex (100,100,0); d3d_vertex (100,200,0); d3d_vertex (200,200,0); d3d_primitive_end ();

} Agora, se voc iria usar isso, mais provvel que voc s v um tringulo na tela porque o topo do tetraedro estar atrs do ponto de vista. Alm disso, usando apenas uma cor, seria difcil de ver as faces diferentes. Abaixo veremos maneiras de mudar o ponto de vista. Atribuio de cores pode ser feita como antes por adicionar draw_set_color (col) funes chamadas entre os vrtices. Voc tambm pode usar poygons texturizados em 3D. Ele funciona exatamente igual ao descrito nas funes avanadas de desenho na documentao. Mas dessa vez voc precisa 3D variantes das funes bsicas. Uma coisa que voc deve realizar. Em uma textura a posio (0,0) o canto superior esquerdo. Mas, muitas vezes, quando se utiliza projees (conforme abaixo), o canto inferior esquerdo (0,0). Nesse caso, talvez voc precise virar a textura verticalmente. d3d_primitive_begin_texture (kind, texid) Iniciar um 3D primitivo do tipo indicado com a textura dada. d3d_vertex_texture (x, y, z xtex, ytex) Adiciona vrtice (x, y, z) a primitiva com a posio (xtex, ytex) na textura, combinando com a cor e valor de alfa definido antes. d3d_vertex_texture_color (x, y, z, xtex, ytex, col, alpha) Adiciona vrtice (x, y, z) a primitiva com a posio (xtex, ytex) na textura, misturando-se com sua prpria cor e valor alfa. d3d_primitive_end () Fim da descrio da primitiva. Esta funo realmente a desenha. Assim, por exemplo, voc pode utilizar o seguinte cdigo para desenhar uma imagem de fundo que desaparece na distncia { var ttt; background_get_texture ttt = (back); d3d_primitive_begin_texture (pr_trianglefan, ttt); d3d_vertex_texture (0,480,0,0,0); d3d_vertex_texture (640,480,0,1,0); d3d_vertex_texture (640,480,1000,1,1); d3d_vertex_texture (0,480,1000,0,1); d3d_primitive_end (); } Um tringulo tem uma frente e um verso. A frente definida para ser o lado onde os vrtices so definidos em ordem anti-horrio. Normalmente, ambos os lados so desenhados. Mas se voc fizer uma forma fechada este um desperdcio, porque o lado de trs do tringulo jamais poder ser visto. Neste caso voc pode ligar backface culling. Isso economiza cerca de metade da quantidade de tempo de desenho, mas ele deixa voc com a tarefa de definir o seu polgonos no caminho certo. A funo a seguir existir: d3d_set_culling (cull) Indica para iniciar backface culling (true) ou parar backface culling (false). Desenhando formas bsicas

Um nmero de funes existem para desenhar formas bsicas, como blocos e paredes. Observe que estas formas tambm funcionam corretamente com backface culling ligado. d3d_draw_block (x1, y1, z1, x2, y2, z2, texid, hrepeat, vrepeat) Desenha um bloco na cor atual com os cantos opostos indicados usando a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. d3d_draw_cylinder (x1, y1 z1, x2, y2, z2, texid, hrepeat, vrepeat, closed, steps) Desenha um cilindro vertical com a cor corrente indicada na caixa delimitadora com a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. closed indica se para fechar a parte superior e inferior do cilindro. steps indica quantos passos de rotao devem ser tomadas. Um valor tpico de 24. d3d_draw_cone (x1, y1 z1, x2, y2, z2, texid, hrepeat, vrepeat, closed, steps) Desenha um cone vertical na cor corrente indicada na caixa delimitadora com a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. closed indica se para fechar a parte superior e inferior do cilindro. steps indica quantos passos de rotao devem ser tomadas. Um valor tpico de 24. d3d_draw_ellipsoid (x1, y1 z1, x2, y2, z2, texid, hrepeat, vrepeat, steps) Desenha um elipsoide com a cor corrente indicada na caixa delimitadora com a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. steps indica quantos passos de rotao devem ser tomadas. Um valor tpico de 24. d3d_draw_wall (x1, y1, z1, x2, y2, z2, texid, hrepeat, vrepeat) Desenha uma parede vertical na cor atual com os cantos dada usando a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. d3d_draw_floor (x1, y1, z1, x2, y2, z2, texid, hrepeat, vrepeat) Desenha um cho (inclinado) na cor atual com os cantos dados usando a textura indicada. Use -1 para no usar uma textura. hrepeat indica quantas vezes a textura deve ser repetida ao longo da borda horizontal de cada face. vrepeat faz o mesmo para a borda vertical. O seguinte pedao de cdigo desenha dois blocos: { var ttt; background_get_texture ttt = (back); d3d_draw_block (20,20,20,80,40,200, ttt, 1,1); d3d_draw_block (200.300, -10240340100, ttt, 1,1); } Visualizando o mundo Por padro voc olha ao longo do eixo z negativo para o meio da room. Muitas vezes, em

jogos 3D voc pretende alterar a forma como voc olha para o mundo. Por exemplo, em um jogo de tiro em primeira pessoa que voc provavelmente vai querer ter o olhar da cmera em uma posio um pouco acima do plano xy ao longo do plano xy. Em termos grficos est definindo a projeo correta. Para alterar a maneira de olhar as duas funes existe. d3d_set_projection (xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup) Define como olhar no mundo. Voc especificar o ponto de vista, o ponto e olhar para o vetor. Esta funo requer alguma explicao. Para definir a projeo voc precisa primeiro a posio que voc olha a partir de algum lugar. Isto indicado pelos parmetros (xfrom, yfrom, zfrom). Em seguida, voc deve especificar a direo que voc deve olha. Isso feito mediante um segundo ponto para olhar adiante. Este o ponto (xto, yto, zto). Finalmente, voc ainda pode girar a cmera em torno da linha do ponto de vista ao ponto de olhar. Para especificar isto devemos dar um up vector, isto , a direo que est em cima da cmera. Esta dada pelos trs ltimos parmetros (xup, yup, zup). Deixe-me dado um exemplo. Para olhar ao longo do plano xy como em um jogo de tiro em primeira pessoa que voc pode usar { d3d_set_projection (100,100,10,200,100,10,0,0,1); } Ento voc olhar do ponto (100.100) e 10 acima do plano no sentido (200.100). Os pontos do vetor up a direo z, conforme necessrio. Para tornar isso um pouco mais complicado, suponha que voc tem uma instncia na sua room, que especifica a posio da cmera. Ela ter uma posio atual (x, y) e uma direo (e talvez at uma velocidade). Agora voc pode especificar isto como a sua cmera usando o seguinte cdigo: { with (obj_camera) d3d_set_projection (x, y, 10, x + cos (direction * pi/180), y sin (direction * pi/180), 10, 0,0,1); } Isto pode parecer um pouco complicado. Ns olhamos a partir da posio da cmera (x, y), 10 acima do solo. Para determinar um ponto na direo correta precisamos fazer um pouco de aritmtica. Este ponto indicado pelas prximas trs parmetros. Finalmente podemos usar o vetor up como acima. Uma observao importante! Quando Game Maker comea desenhando uma room ele ir definir o ponto de vista de volta para a posio padro. Ento a primeira coisa que voc deve fazer ao desenhar a cena definir a projeo que voc deseja. Isso deve ser feito em um evento de desenho! Existe tambm uma verso estendida da funo acima:

d3d_set_projection_ext (xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup, angle, aspect, znear, zfar) Uma verso alargada desta funo em que voc tambm especificar o ngulo que define o campo de viso, a proporo entre o tamanho horizontal e vertical do ponto de vista, e ao perto e de longe os planos de corte. Os parmetros adicionais funcionam da seguinte forma. Se voc especificou a posio da cmera, ponto de vista, e at do vetor up, voc ainda pode alterar a largura da lente da cmera. Isto chamado de campo de viso (field of view). Um valor razovel algo entre 40 e 45 graus. Mas voc pode mudar isso se quiser. Em seguida, voc pode especificar a proporo entre a projeo horizontal e vertical. Normalmente, voc quer usar a mesma razo de aspecto da room, ou vista, por exemplo, 640/480. Finalmente, voc pode indicar os planos de corte. Os objetos que esto mais prximos do znear da cmara no so desenhados. Similares para objetos mais longe do que zfar. Pode ser importante definir estes parmetros para valores razoveis, porque eles tambm influenciam a preciso do z-comparisons. Se voc fizer um intervalo muito grande preciso pode piorar. Por padro usamos 1 e 32000. znear deve ser superior a 0! s vezes voc precisa temporariamente uma projeo normal ortogrfica, que utilizada quando no h 3D. Ou voc quer voltar projeo perspectiva padro. Para isso, voc pode usar as seguintes funes: d3d_set_projection_ortho (x, y, w, h, angle) Define uma projeo normal ortogrficas da rea indicada na room, sobre o ngulo de rotao indicada. d3d_set_projection_perspective (x, y, w, h, angle) Define uma projeo perspectiva normal da rea indicada na room, sobre o ngulo de rotao indicada. A utilizao padro para isso para tirar uma sobreposio, por exemplo, mostram a pontuao ou outros aspectos. Para isso, definir uma projeo ortogrfica. Ns tambm devemos desligar temporariamente remoo superfcie escondida porque ns queremos a informao a ser elaborada, independentemente do valor da profundidade atual. O exemplo a seguir mostra como criar uma sobreposio com a pontuao. { draw_set_color (c_black); d3d_set_projection_ortho (0,0, room_width, room_height, 0); d3d_set_hidden (false); draw_text (10,10, 'Pontuao:' + string (pontuao)); d3d_set_hidden (true); } Transformaes Transformao permitem que voc altere o local onde as coisas so desenhadas em todo o mundo. Por exemplo, a funo para desenhar os blocos podem apenas chamar eixo blocos de eixos paralelos. Pela primeira definio uma transformao de rotao possvel criar blocos rotacionados. Sprites tambm so sempre paralelas ao plano xy. Ao estabelecer uma transformao que voc pode mudar isso. Existem dois tipos de funes: funes que defina a transformao e as funes que agregam transformaes.

d3d_transform_set_identity () Define a transformao para a id (sem transformao). d3d_transform_set_translation (xt, yt, zt) Define a transformao de uma translao sobre o vetor indicado. d3d_transform_set_scaling (xs, ys, zs) Define a transformao de uma escala com os montantes indicados. d3d_transform_set_rotation_x (angle) Define a transformao para uma rotao em torno do eixo x com a quantidade indicada. d3d_transform_set_rotation_y ngulo () Define a transformao para uma rotao em torno do eixo y com a quantidade indicada. d3d_transform_set_rotation_z (angle) Define a transformao para uma rotao em torno do eixo z com a quantidade indicado. d3d_transform_set_rotation_axis (xa, ya, za, angle) Define a transformao de uma rotao em torno do eixo indicado pelo vetor com o quantidade indicado. d3d_transform_add_translation (xt, yt, zt) Adiciona uma translao sobre o vetor indicado. d3d_transform_add_scaling (xs, ys, zs) Adiciona uma escala com as quantidades indicadas. d3d_transform_add_rotation_x (angle) Adiciona uma rotao em torno do eixo x com a quantidade indicada. d3d_transform_add_rotation_y (angle) Adiciona a rotao em torno do eixo y com o quantidade indicada. d3d_transform_add_rotation_z (angle) Adiciona uma rotao em torno do eixo z com a quantidade indicada. d3d_transform_add_rotation_axis (xa, ya, za, angle) Adiciona uma rotao em torno do eixo indicado pelo vetor com a quantidade indicado. Perceba que a rotao e escala so com relao origem do mundo, no em relao ao objeto que est a ser desenhado. Se o objeto no est na origem que tambm ir se deslocar para um lugar diferente, que no o que queremos. Assim, por exemplo, a girar um objeto sobre seu prprio eixo x, temos que primeiro translad-lo para a origem, a prxima gir-lo e, finalmente, translad-lo de volta sua posio. Isto o que as funes para adicionar transformaes esto a fazer. Os exemplos a seguir pode explicar isso melhor. Suponha que temos um spr Sprite que queremos chamar a posio (100,100,10). Podemos usar o seguinte cdigo para fazer isso { d3d_transform_set_translation (100,100,10); draw_sprite (spr, 0,0,0); d3d_transform_set_identity (); } Observe que, como ns usamos uma translao que agora deve desenhar a sprite na posio (0,0). (Isso pressupe a instncia atual tem uma profundidade de 0! Se voc no tem certeza, primeiro defina a profundidade.) Se quisermos usar isso em nosso jogo de tiro em primeira pessoa no veramos o objeto. O motivo que ainda est paralelo ao plano xy. Queremos gir-lo acima de 90 graus ao longo do eixo x (ou eixo y). Ento, ns precisamos adicionar uma rotao. Lembre-se a ordem: primeiro preciso girar a sprite e depois translad-los. Assim, podemos usar o seguinte cdigo.

{ d3d_transform_set_identity (); d3d_transform_add_rotation_x (90); d3d_transform_add_translation (100,100,10); draw_sprite (spr, 0,0,0); d3d_transform_set_identity (); } s vezes voc deseja salvar temporariamente a transformao em curso, por exemplo, para adicionar uma transformao suplementar e, em seguida, restaurar o antigo (isso acontece muitas vezes no desenho de modelos hierrquicos). Para esse fim, voc pode empurrar a transformao em curso sobre uma pilha e mais tir-los da pilha para fazer a transformao atual novamente. As funes a seguir existem para isso: d3d_transform_stack_clear () Limpa a pilha de transformaes. d3d_transform_stack_empty () Retorna se a transformao da pilha est vazia. d3d_transform_stack_push () Passa a transformao em curso na pilha. Retorna se havia espao na pilha para empurr-lo l (se voc esquecer popping transformao que em algum momento vai ficar sem espao na pilha). d3d_transform_stack_pop () Retira do topo da pilha de transformao e faz com a atual. Retorna se houve uma transformao na pilha. d3d_transform_stack_top () Faz com que o incio da transformao de uma atual, mas no remov-lo da pilha. Retorna se houve uma transformao na pilha. d3d_transform_stack_discard () Remove a transformao do topo da pilha, mas no torn ela a uma corrente. Retorna se houve uma transformao na pilha. Usando a transformao um mecanismo poderoso. Mas tenha cuidado e sempre definir a transformao de volta para a identidade, uma vez que so feitas. Nevoeiro Nevoeiro pode ser utilizado em jogos 3D para fazer objetos na distncia de viso turva ou mesmo desaparecer. Isso ajuda na criao de atmosfera e torna-se possvel para no tirar os objetos que esto longe. Para ativar ou desativar a utilizao de nevoeiro a seguinte funo: d3d_set_fog (enable, color, start, end) Ativa ou desativa o uso de nevoeiro. color indica a cor da neblina. start indica a distncia em que a neblina deve comear. end indica a distncia em que a neblina mxima e nada pode ser mais visto. Para entender melhor o que est acontecendo, na verdade existem dois tipos de neblina, tabela baseana em nvoa e nevoeiro baseado em vrtice. O primeiro tipo calcula valores de nevoeiro em uma base de pixel. O segundo tipo calcula o valor de nevoeiro para cada vrtice e, em seguida, interpola estes. O primeiro tipo melhor, mas nem sempre apoiada. Game Maker tenta usar a tabela com nevoeiro quando apoiou e outra usa vrtice com nvoa (menos sem nvoa no suportada). Observe que certas placas grficas indicam que eles podem lidar com tabela baseada em nevoeiro, mas oferecer ao usurio

a possibilidade de mudar este fora nas configuraes avanadas de vdeo. Neste caso, o resultado pode ser uma tela preta! Iluminao Cenas que voc desenhar com as funes acima so bastante chapadas, porque no h luz. A cor se as faces igual, independente de sua orientao. Para criar mais realista procurando cenas que voc deve ativar as luzes de iluminao e colocar nos locais corretos. Criando cenas iluminadas corretamente no fcil, mas o efeito muito bom. Para habilitar a iluminao que voc pode usar a seguinte funo; d3d_set_lighting (enable) Habilita ou desabilita o uso de iluminao. Quando usando a iluminao, para cada vrtice de um polgono a cor determinada. Em seguida, a cor do pixel interno baseia-se na cor desses vrtices. H duas maneiras que isto pode ser feito: ou o polgono inteiro recebe a mesma cor, ou a cor suave interpolados sobre o polgono. Sombreamento suave padro usado. Isso pode ser mudado usando a seguinte funo: d3d_set_shading (smooth) Definir se usar sombreamento suave ou no. Para utilizar iluminao obviamente voc precisa definir as luzes. Duas luzes diferentes: luzes direcionais (como o sol), e as luzes de posio. Luz tem uma cor. (Ns s suportamos a luz difusa, no reflexo especular.) As funes a seguir existem para definir e usar luzes: d3d_light_define_direction (ind, dx, dy, dz, col) Define uma luz dirigida. ind o ndice da luz (usar um pequeno nmero positivo). (dx, dy, dz) a direo da luz. col a cor da luz (muitas vezes voc quer usar c_white). Esta funo no acender a luz. d3d_light_define_point (ind, x, y, z, range, col) Define um ponto de luz. ind o ndice do uso de luz de um pequeno nmero positivo). (x, y, z) a posio da luz. intervalo at que indica o quanto a luz brilha. A intensidade da luz ir diminuir ao longo desta faixa. col a cor da luz. Esta funo no acender a luz. d3d_light_enable (ind, enable) Ativada (true) ou desabilitada (false) ind nmero da luz. A maneira como um objeto reflete a luz depende do ngulo entre a direo da luz e a normal da superfcie, ou seja, apontando o vetor de distncia da superfcie. Assim, para criar objetos iluminados voc no precisa apenas fornecer a posio dos vrtices, mas tambm as suas normais. Para este quatro funes adicionais esto disponveis para definir os vrtices das primitivas: d3d_vertex_normal (x, y, z, nx, ny, nz) Adicionar vrtice (x, y, z) para a primitiva, com vetor normal (nx, ny, nz). d3d_vertex_normal_color (x, y, z, nx, ny, nz, col, alfa) Adicionar vrtice (x, y, z) para a primitiva, com vetor normal (nx, ny, nz), e com sua prpria cor e valor de alfa . d3d_vertex_normal_texture (x, y, z, nx, ny, nz, xtex, ytex) Adicionar vrtice (x, y, z) para o primitivo, com vetor normal (nx, ny, nz), e com a posio (xtex, ytex) na textura, combinando com a cor e valor de alfa definido antes.

d3d_vertex_normal_texture_color (x, y, z, nx, ny, nz, xtex, ytex, col, alpha) Adicionar vrtice (x, y, z) para o primitivo, com vetor normal (nx, ny, nz), e com a posio (xtex, ytex) na textura, misturando-se com sua prpria cor e valor alfa. Note que para as formas bsicas que voc pode desenhar as normais so automaticamente definidas corretamente. Criao de modelos Quando voc precisar desenhar modelos grandes bastante caro para chamar todas as funes de desenho diferente uma e outra vez em cada etapa. Para evitar isso, voc pode criar modelos. Um modelo consiste em uma srie de desenho primitivos e formas. Uma vez que um modelo criado, voc pode desenh-lo em lugares diferentes, com apenas uma chamada de funo. Os modelos tambm podem ser carregados a partir de um arquivo ou salvos em um arquivo. Antes de dar as diferentes funes disponveis, h um ponto importante: a manipulao de texturas. Conforme descrito anteriormente, a textura so sprites e planos de fundo extradas. Os ndices de texturas podem ser diferentes em momentos diferentes. Como resultado de modelos no contm qualquer informao de textura. Somente quando voc desenhar um modelo que voc fornece a textura. Assim, voc s pode usar uma textura em um modelo. Se voc precisa de texturas mas voc deve combin-los em uma (e lidar cuidadosamente com as coordenadas de textura) ou voc deve usar vrios modelos. A vantagem disso que voc pode desenhar o mesmo modelo facilmente com diferentes texturas. Para criar, carregar, salvar e desenhar modelos, existem as seguintes funes: d3d_model_create () Cria um novo modelo e retorna seu ndice. Esse ndice usado em todas as outras funes lidar com modelos. d3d_model_destroy ind () Destri o modelo com o ndice determinado, liberando sua memria. d3d_model_clear (ind) Limpa o modelo com o ndice determinado, a remoo de todos os seus primitivos. d3d_model_save (ind, fname) Grava o modelo para o nome do arquivo indicado. d3d_model_load (ind, fname) Carrega o modelo do nome do arquivo indicado. d3d_model_draw (ind, x, y, z, texid) Desenha o modelo na posio (x, y, z). texid a textura que deve ser usada. Use -1 se voc no quiser usar uma textura. Se voc deseja girar ou dimensionar o modelo que voc pode usar as rotinas de transformao descrito anteriormente. Para cada funo primitiva existe um equivalente para adicion-la a um modelo. As funes tm os mesmos argumentos de antes, exceto que cada um tem um primeiro argumento o ndice do modelo, e nenhuma informao de textura fornecida. d3d_model_primitive_begin (ind, kind) Adiciona uma primitiva 3D com o modelo do tipo indicado: pr_pointlist, pr_linelist, pr_linestrip, pr_trianglelist, pr_trianglestrip ou pr_trianglefan. d3d_model_vertex (ind, x, y, z) Adiciona vrtice (x, y, z) para o modelo. d3d_model_vertex_color (ind, x, y, z, col, alpha) Adiciona vrtice (x, y, z) do modelo, com sua prpria cor e valor alpha. d3d_model_vertex_texture (ind, x, y, z, xtex, ytex) Adicionaa vrtice (x, y, z) para

o modelo com a posio (xtex, ytex) na textura. d3d_model_vertex_texture_color (ind, x, y, z, xtex, ytex, col, alpha) Adiciona vrtice (x, y, z) para o modelo com os valores de textura e cor. d3d_model_vertex_normal (ind, x, y, z, nx, ny, nz) Adiciona vrtice (x, y, z) ao modelo, com vetor normal (nx, ny, nz). d3d_model_vertex_normal_color (ind, x, y, z, nx, ny, nz, col, alpha) Adiciona vrtice (x, y, z) ao modelo, com vetor normal (nx, ny, nz), e com sua prpria cor e valor de alfa. d3d_model_vertex_normal_texture (ind, x, y, z, nx, ny, nz, xtex, ytex) Adiciona vrtice (x, y, z) ao modelo, com vetor normal (nx, ny, nz), com a posio da textura. d3d_model_vertex_normal_texture_color (ind, x, y, z, nx, ny, nz, xtex, ytex, col, alpha) Adiciona vrtice (x, y, z) ao modelo, com vetor normal (nx, ny, nz), com textura e os valores de cor. d3d_model_primitive_end (ind) Finaliza a descrio da primitiva no modelo. Alm de primitivas voc tambm pode adicionar formas de base para os modelos. Novamente as funes parecem quase os mesmos, mas com um ndice modelo e sem informao de textura: d3d_model_block (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat) Adiciona uma forma de bloco para o modelo. d3d_model_cylinder (ind, x1, y1 z1, x2, y2, z2, hrepeat, vrepeat, closed, steps) Adiciona uma forma de cilindro para o modelo. d3d_model_cone (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat, closed, steps) Adiciona uma forma de cone para o modelo. d3d_model_ellipsoid (IND, x1, y1 z1, x2, y2, z2, hrepeat, vrepeat, steps) Adiciona uma forma elipside para o modelo. d3d_model_wall (ind, x1, y1 z1, x2, y2, z2, hrepeat, vrepeat) Adiciona uma forma de parede para o modelo. d3d_model_floor (ind, x1, y1, z1, x2, y2, z2, hrepeat, vrepeat) Adiciona uma forma de cho para o modelo. Usando modelos podem aumentar a velocidade do grfico consideravelmente em seus jogos 3D e voc deve us-los sempre que puder. Palavras finais As funes 3D no Game Maker pode ser usada para fazer algumas jogos 3D bacanas. No entanto, eles so limitados na funcionalidade e ainda deixam bastante trabalho para voc. No espere que voc pode fazer seu prprio Quake com ele. Game Maker e continua sendo basicamente um pacote para fazer jogos 2D.