
A comunidade brasileira de desenvolvimento e programação de jogos. |

|
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
| Speeder Moderador
 | | Registrado em: Sábado, 24 de Junho de 2006 | | Mensagens: 360 | |
|
Enviada: Qua Mai 05, 2010 10:58 am Assunto: Suas melhores técnicas! |
|
|
Oi pessoal!
Resolvi propor aqui, para podermos reativar o fórum, que digam quais são suas melhores técnicas de programação...
Exemplo:
Como você faz para controlar todas as milhões de balas na tela em um bullet hell?
Ou... como você faz a sua IA?
Ou, como fazer o efeito especial "x" muito legal que tem no seu jogo?
Bom, eu vou citar a minha técnica que tenho orgulho...
Eu precisava de uma estrutura de dados para organizar os objetos na tela. Criei o seguinte:
Tenho um array de ponteiros, esse array aponta para os objetos reais.
Portanto, eu tenho acesso randômico, rápido, pois posso invocar qualquer objeto do array sem dificuldade.
Além disso, objetos novos, são colocados no fim do array (a é... acompanhando o array, tem um contador de tamanho). Para não ter dificuldade nenhuma. usa o mínimo de ciclos possíveis do processador.
E quando qualquer objeto é deletado (mesmo no meio do array), o último elemento é copiado para o local do objeto deletado. Novamente, economizando ciclos (só preciso copiar o ponteiro, e diminuir o contador...)
A desvantagem, é que por usar um array, e não outra estrutura redimensionável, eu tenho que estar com ele sempre alocado, e no tamanho necessário.
Para isso, tenho no código uma lista de constantes (exemplo: número máximo de naves inimigas: 100). Todos os objetos antes de serem criados, primeiro verificam se tem espaço no array, caso não tenha, eles cancelam a criação (para não gastar ciclos criando e deletando em seguida) e notificam o programa.
A é, eu fiz isso usando templates do C++, não preciso guardar só ponteiros posso guardar qualquer coisa que caiba em um array (inclusive objetos inteiros, mas fazer isso é inútil e desnecessário...), toda vez que preciso de um array "pseudo-redimensionável" eu uso esse template, a maior utilidade é na hora de usar laços (eu simplesmente olho se o contador é menor que a variável do template que diz o tamanho atual do array... assim não tenho que fazer comparações estranhas para saber se o array acabou).
Graças a esse array, também posso contar memory leaks (eu carrego todos os arquivos de imagme e som, e registro no array, usando uma classe especial de organização de memória... ai na hora de fechar o programa, eu vejo se algum array tem contador acima de 0, e retorno o valor dos contadores, assim eu sei que tem memory leak nos recursos do jogo). _________________ Membro do IGDA São Paulo
Designer do Dominoze (www.gamieon.com)
Contribuinte da PDJZine
Meu site: www.gamedesigner.co.nr
Meu blog: criadordejogos.wordpress.com |
|
| Voltar ao Topo |
|
 |
| Speeder Moderador
 | | Registrado em: Sábado, 24 de Junho de 2006 | | Mensagens: 360 | |
|
Enviada: Ter Mai 11, 2010 10:47 pm Assunto: |
|
|
Que isso gente? Só eu sei programar aqui?
Que decepcionante hein?
Assim num tem assunto mesmo... nem dando o assunto de mão beijada a galera fala algo... _________________ Membro do IGDA São Paulo
Designer do Dominoze (www.gamieon.com)
Contribuinte da PDJZine
Meu site: www.gamedesigner.co.nr
Meu blog: criadordejogos.wordpress.com |
|
| Voltar ao Topo |
|
 |
| Tydres Moderador
 | | Registrado em: Domingo, 20 de Mai de 2007 | | Mensagens: 1041 | | Localização: Em algum código fonte... |
|
Enviada: Qua Mai 12, 2010 12:23 pm Assunto: |
|
|
Fala Speeder. Curti seu post cara. vou ver oque posso colaborar aqui. qualquer coisa da um toque. otima tequinica a sua. parabens _________________
 |
|
| Voltar ao Topo |
|
 |
| mestreoelze Membro novo
 | | Registrado em: Quarta-Feira, 14 de Janeiro de 2009 | | Mensagens: 19 | | Localização: BH -MG |
|
Enviada: Qua Mai 12, 2010 4:20 pm Assunto: |
|
|
Eu gostei da idéia também, mas ainda não sou "programador", esotu começando a caminhar na área e vim pegar técnicas né.
Realmente, dá o assunto mas ninguém rende, o fórum ta morrendo? O.O"
VAMOS FALAR GENTE, POSTEM!!!!!!!! |
|
| Voltar ao Topo |
|
 |
| c++master Membro júnior
 | | Registrado em: Terça-Feira, 16 de Junho de 2009 | | Mensagens: 41 | |
|
Enviada: Sáb Jun 26, 2010 6:38 pm Assunto: |
|
|
O tópico tem apenas 2 meses, acho que isso não é tão velho...
Speeder, o que você fez é totalmente desnecessário. A C++ Standard Library, a biblioteca padrão do C++, que já vem inclusa na linguagem, tem um template que faz exatamente a mesma coisa.
Um exemplo do uso desse template:
| Código: |
#include <list> // Vamos usar o template list da C++ Standard Library. Note que não é um arquivo (não tem o .h) já que a C++ Standard Library está no compilador
using namespace std;
int main()
{
list<int> numeros; //declara uma lista de variaveis do tipo int
//o loop abaixo coloca os numeros de 1 a 100 na lista
for(int i = 0; i <= 100; i++)
{
numeros.push_back(i); // a função pushback do template adiciona um elemento no fim da lista
}
//o loop abaixo retira os numeros de 50 a 100 da lista
for(int i = 50; i <= 100; i++)
{
mumeros.remove(i); // a função remove retira da lista os elementos cujo valor seja igual ao valor passado como argumento
}
return 0;
}
|
Note que eu poderia ter usado ponteiros para inteiros (int *) na inicialização do template, mas não usei para melhorar o exemplo.
Mais informções:
C++ Standard Template Library (parte da C++ Standard Library, contém o template list)
list
Ambos em inglês, num ótimo site sobre C++ _________________
 |
|
| Voltar ao Topo |
|
 |
| Speeder Moderador
 | | Registrado em: Sábado, 24 de Junho de 2006 | | Mensagens: 360 | |
|
Enviada: Ter Jun 29, 2010 3:09 pm Assunto: |
|
|
Eu sei que o STL tem
Mas eu fiz para aprender...
Alías, ainda não usei o STL (até agora não precisei, tudo o que eu precisei, e tem no STL, eu resolvi fazer para aprender...)
Essa estrutura de dados, foi meu primeiro contato com Templates (eu não sei como usei C e C++ por 10 anos antes de ver template Oo) _________________ Membro do IGDA São Paulo
Designer do Dominoze (www.gamieon.com)
Contribuinte da PDJZine
Meu site: www.gamedesigner.co.nr
Meu blog: criadordejogos.wordpress.com |
|
| Voltar ao Topo |
|
 |
| rogeriob2br Membro intermediário
 | | Registrado em: Terça-Feira, 14 de Julho de 2009 | | Mensagens: 117 | |
|
Enviada: Ter Jun 29, 2010 6:25 pm Assunto: |
|
|
kkkk...
TRIPLE FLOOD MODERATOR MASTER!!!
nem sempre vale apena chamar funções externas(isso foi minha prof de Alg. e Prog. que disse) e esta solução dele as vezes pode ser usada em casos onde não se tem acesso as mesmas funções que vc usou... |
|
| Voltar ao Topo |
|
 |
| Tydres Moderador
 | | Registrado em: Domingo, 20 de Mai de 2007 | | Mensagens: 1041 | | Localização: Em algum código fonte... |
|
Enviada: Qua Jun 30, 2010 11:04 am Assunto: |
|
|
Bom a chamada de funções externas depende da necessidade e disponibilidade. e se vale a pena ou não implementação de tal recurso. No caso da STL por exemplo. ter uma classe generica de desenvolvimento proprio pode ajudar no desenvolvimento em outras plataformas como para iPhone. Que depende de conversões na STL para se adaptar as especificações de compilação do mesmo. Tudo depende de Custo-x-Benefício.
Um exmplo e o uso de DLL's. Não se tem a necessidade de construção de uma DLL para executar funções simples e de facil implementação.
Ao invez de criar uma dll para fazer (Ex):
DLL_EXTERN_SET
| Código: |
extern "C" __declspec float _SET_VALUE ( float value, float inc )
{ reutrn (value+inc); }
|
vale mais a pena usar no proprio codigo:
| Código: |
| float setValue( float value, float inc ) { return (value+inc); } |
Tudo é questão do foco do desenvolvimento. e se compensa ou não a chamada externa. e vale lembrar que criar e bom para o aprendizado. _________________
 |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibído. Responder Tópicos Proibído Editar Mensagens: Proibído. Excluir Mensagens: Proibído. Votar em Enquetes: Proibído.
|
|