• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Clint

SPACE MERDOSA - O meu primeiro jogo em C++/SDL

8 mensagens neste tópico

Titulo do Projecto: SPACE MERDOSA

Líder do Projecto: Clint

Descrição do Projecto:

Olá outra vez.

Finalmente criei o meu primeiro jogo em C++/SDL:* SPACE MERDOSA *. É um jogo muito simples baseado no clássico 'SpaceInvaders' com humor à mistura e talvez um tanto monótono (não seesqueçam que é o primeiro jogo que criei). Embora tenha algumas falhasna animação e no som, e só funcione no Windows XP, acho que éminimamente aceitável. Mas isso é algo que só vocês me podem dizer.

Aminha dúvida é: como faço o upload do jogo aí pra vossa base de dados?É demasiado grande para introduzir no Armazém de Código, tem 6,92 MBcom alguns bitmaps, ficheiros MID e WAV à mistura.

Gostava que dessem a resposta...

Peace.  :)

Download: http://rapidshare.com/files/313064985/spaceMerdosa.zip

EDIT: mensagem editada de acordo com as regras desta secção

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá outra vez.

Finalmente criei o meu primeiro jogo em C++/SDL: * SPACE MERDOSA *. É um jogo muito simples baseado no clássico 'Space Invaders' com humor à mistura e talvez um tanto monótono (não se esqueçam que é o primeiro jogo que criei). Embora tenha algumas falhas na animação e no som, e só funcione no Windows XP, acho que é minimamente aceitável. Mas isso é algo que só vocês me podem dizer.

A minha dúvida é: como faço o upload do jogo aí pra vossa base de dados? É demasiado grande para introduzir no Armazém de Código, tem 6,92 MB com alguns bitmaps, ficheiros MID e WAV à mistura.

Gostava que dessem a resposta...

Peace.  :)

Insere num site tipo www.megaupload.com e indica o link no teu tópico...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Insere num site tipo www.megaupload.com e indica o link no teu tópico...

Muito obrigado.

Não consegui inserir no Megaupload, por isso usei o Rapidshare que vai dar ao mesmo. Uma pergunta: Enganei-me, pois queria pôr nos tópicos do C++ e acabei pondo aqui nos tópicos do C. Não há problema por isso pois não?

Aqui vai o link:

http://rapidshare.com/files/313064985/spaceMerdosa.zip

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tua implementação do game loop está meio ranhosa.

Deduzo que não uses um sistema baseado em temporizadores... porque o jogo corre "insanely fast" por aqui.

Lê este artigo: http://dewitters.koonsolo.com/gameloop.html

De resto parece estar porreiro, mas não consigo jogar bem por causa disso. O teu sistema de input também bloqueia quando carregas numa direcção quando ainda tens outra tecla carregada.

Se resolveres esses problemas, parece-me que fica porreirito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tive a ver o código, e tens bué código repetido. Basicamente o Final*.cpp. Podias melhorar isso. :)

Mas o código até está bastante "limpo" e simples. Bom trabalho.

Podias também criar um sistema de estados, para cada "state" do game, como "Title Screen", "Gameplay", "Gameover", etc, e ter uma classe para cada estado. E depois mudavas de estado consoante quisesses e funcionava tudo de forma automática.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tua implementação do game loop está meio ranhosa.

Deduzo que não uses um sistema baseado em temporizadores... porque o jogo corre "insanely fast" por aqui.

Lê este artigo: http://dewitters.koonsolo.com/gameloop.html

De resto parece estar porreiro, mas não consigo jogar bem por causa disso. O teu sistema de input também bloqueia quando carregas numa direcção quando ainda tens outra tecla carregada.

Se resolveres esses problemas, parece-me que fica porreirito.

Sim, tens razão, a implementação está um bocado badalhoca. É mais uma piada do que um jogo  :). Mas quando dizes que o jogo corre demasiado rápido, é em que altura? Logo quando começas a jogar pela primeira vez, ou a velocidade vai aumentando quando voltas a jogar mais vezes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, tens razão, a implementação está um bocado badalhoca. É mais uma piada do que um jogo  :). Mas quando dizes que o jogo corre demasiado rápido, é em que altura? Logo quando começas a jogar pela primeira vez, ou a velocidade vai aumentando quando voltas a jogar mais vezes?

Logo que inicio o jogo, está muito rápido.

		if (gameUpdate)
	{
		Update();

		if (v <= 10.0f)
			v += 1.0f;
	}

Deduzo que seja esse bocado de código. A maneira correcta de fazer o que tu queres é usar um temporizador (o SDL tem funções para isso) e estabelecer um número fixo de updates por frame. O rendering podes fazer o máximo que poderes, não faz diferença na velocidade de jogo. Diz-me se precisares de ajuda com isso. Mas lê o tal artigo que deixei antes que explica tudo muito bem.

Tu até tens a framework quase prepara para usar os delta times, tens lá algum código para isso, mas no fim acabas por não fazer uso desse time.

void Game::Update()
{
...

while (gameRunning)
{
    thisTime  = SDL_GetTicks();
        deltaTime = (float)(thisTime - lastTime) / 1000;
        lastTime  = thisTime;

	...

	SDL_Delay(1);
}
}

PS: Não precisas de testar se um ponteiro é NULL antes de fazer delete. O delete aceite NULL na boa.

		if (laser[i] != NULL)
	{
		delete laser[i];
		laser[i] = NULL;
	}

Epa e retiro um bocado do que disse atrás, tens mesmo muito código de input repetido. Podias melhorar isto bastante! :)

Vá lá, quero ver isso melhorado, sei que consegues fazer melhor. :)

Tens aqui algo semelhante ao que quis dizer com o sistema de estados: http://wiki.gamedev.net/index.php/SDL:Tutorials:Complete_2D_Engine_System_Core#cStateManager

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora