Postagens

SDL e programação de jogos - forças e movimento genérico em jogos de plataforma - parte 5.1

Imagem
Olá pessoa, let's arrochar o dedo no teclado, vulgo codar? Na aula passa que vc pode conferir aqui: SDL e programação de jogos - movimentação e separação de colisão Vamos pegar o último código que vc pode baixar aqui: Move e separa parte 2 Sigam-me os fodas, porque deles é que é o mundo real! Teoria sobre o novo código Vc viu que no último código a gente usou os valores para adicionar ou subtrair 5 pixels, porém, meu amigo, neste novo tutorial, vamos dar um senhor upgrade geral! Aqui no caso, vamos ter uma base de uma engine 2d de física. É muito código e pode ser que vc se perda um pouco, mas não se preocupe, vc pode se encontrar novamente virando a esquina mais próxima. Mas primeiro, vamos a teoria básica sobre: FìSICA em jogos! Muahaha Teoria: usando física básica em jogos É isso ai meu caro, nesta parte vamos precisar do conhecimento de física clássica, aquela do senhor Newton. Será com ela que vamos fazer um código genérico suficiente para poder ser usado...

SDL e programação de jogos - melhor movimentação e separação da colisão - parte 4

Imagem
Como vimos na última aula ( SDL-e-programação-de-jogos-detecção-de-colisão ) criamos uma função simples de detectar colisão entre dois retângulos SDL_Rect. Neste novo tutorial, vamos ver os procedimentos para separar um retângulo de dentro do outro e também como melhorar a movimentação. Sigam-me os maus porque deles serás o avião de batalha nos céus! Melhorando a movimentação do player Primeiro, pra poder separar os retângulos, devemos desacomplar ainda mais a lógica dos eventos da lógica de movimentação. Veja no código da aula passada tem o seguinte código que faz mover o retângulo do player: //loop principal while (!fim) { //loop de eventos //novo loop de eventos while (SDL_PollEvent(&evento)) { //verifica se clicou em fechar if (evento.type == SDL_QUIT) fim = 1; //verifica se a tecla pra baixo foi apertada if (evento.type == SDL_KEYDOWN) { if (evento.key.keysym.sym == SDLK_DOWN) { //move o player pra...

SDL e programação de jogos - detecção de colisão - parte 3

Imagem
Caso vc não tenha visto a parte 2, aqui o link: SDL-e-programacao-de-jogos-parte-2 Introdução Pra quem não sabe, todo jogo usa algoritmos de detecção de colisão e separação de objetos. Esse é um assunto bem amplo (e complexo!) mas neste post vc aprenderá o básico: vc vai aprender a como detectar colisão entre dois retângulos vc vai aprender a como separar um retângulo de dentro um do outro Algoritmo básico: bounding boxes! O algoritmo de detectar se dois retãngulos estão colidindo é o bounding boxes! É um dos algoritmos mais fáceis de aprender e também um dos mais fáceis de entender! Veja abaixo como ele funciona: pegue um retângulo e chame-o de rectA pegue outro retângulo e chame-o de rectB se a posição da lateral direita do rectA é MAIOR ou igual a posição da lateral ESQUERDA de rectB, então, continue para passo 4, senão, não é colisão se a posição da lateral esquerda do rectA é menor ou igual a posição da lateral DIREITA de rectB, então, contin...

SDL e programação de jogos parte 2

Imagem
Caso vc não tenha visto, aqui o link pra parte 1: SDL e jogos parte 1 Neste post, veremos como mover pela tela um retângulo simples, além de desenhar na janela com o renderer. Para fazer isso, vamos primeiro ver como criar o loop principal e aprender sobre funções de desenhar na tela, veja abaixo: O código acima não faz nada de muito útil, mas podemos melhorar, veja: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); //100 posição horizontal em pixels dentro do seu monitor do canto esquerdo superior para direita //150 posição vertical em pixels dentro do seu monitot do canto esquerdo superior pra baixo //640 é a largura da janela em pixel //480 é a altura da janela em pixel SDL_Window * janela = SDL_CreateWindow("loops e jogos", 100,150,640,480, SDL_WINDOW_OPENGL); SDL_Renderer * renderer = SDL_CreateRenderer(janela, -1, SDL_RENDERER_ACCELERATED); SDL_Event evento; int fim = 0; //loop principal whi...

SDL e programação de jogos parte 1

Imagem
Neste post vc verá um pouco sobre programação de jogos com SDL2. SDL2 como começar programar jogos? Tudo que vc precisa saber no momento é que no SDL2 temos este código básico: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); //resto do seu jogo aqui SDL_Quit(); return 0; } SDL_Init(SDL_INIT_VIDEO); --inicializa o SDL com o subsistema de vídeo (parâmetro SDL_INIT_VIDEO) SDL_Quit(); --finaliza o SDL e libera a memória da lib. Deve ser chamada DEPOIS de fechar tudo do jogo. O código acima não faz nada de muito útil, mas podemos melhorar, veja: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Window * janela = SDL_CreateWindow("Janela de exemplo na posição inicial 100x100 com tamanho 640x480", 100,100,640,480, SDL_WINDOW_OPENGL); SDL_Renderer * renderer = SDL_CreateRenderer(janela, -1, SDL_RENDERER_ACCELERATED); //resto do seu jogo aqui //abaixo faz paralis...

Como criar jogos de nintendinho?

Imagem
 Segue um vídeo sobre como criar um jogo de NES em C: Só um complemento: As ferramentas usadas são essas: --compilador cc65: https://github.com/cc65/cc65 Essa é a versão usada: https://github.com/cc65/cc65/releases/tag/V2.13.3 --neslib: https://github.com/clbr/neslib/ Projeto Usado: https://www.mediafire.com/file/jpcba39hmv1j566/Nes+c.rar/file Como compilar o código no Linux? O compilador usado no vídeo tem um sério problema que ele é uma versão antiga do cc65 (versão 2.13) e por isso, nas versões mais recentes pode dar erro na linkagem mas compilar sem problema. Pra resolver isso siga os passos: Pegando uma versão mais atual do neslib: 1--instale o compilador cc65 (para Debian e derivados) $ sudo apt install cc65 gcc build-essentials Execute no terminal cc65 --version pra mostrar qual versão está instalada. Estou no Ubuntu 20.04 e meu cc65 é a versão 2.18-1 2--baixe o neslib mais atual deste repositório:  https://github.com/nesdoug/01_Hello  esse é um projeto melhorado p...

Tutorial programação de jogos com SDL1.2

  https://www.vivaolinux.com.br/artigo/Programacao-de-Jogos-com-SDL/ Mais um do Old But Gold! Neste tutorial vc aprende a programar alguns pequenos jogos em SDL1.2. A biblioteca hoje em dia tá abandonada essa versão mas ainda dá pra usar pra estudos. Em breve vou lançar um update deste e de outros tutoriais, aguardem!