1 of 46

Como criar um game em Go usando Ebitengine

2 of 46

Carlos Henrique

  • Formado em Ciências da Computação
  • Pós Graduado em Gestão de Projetos
  • 19 anos inserindo bugs em produção
  • 7 anos em Golang
  • Backend Developer na Coinbase
  • Contribuidor em projetos Open Source
  • Organizador Golang SP
  • Palestrante

3 of 46

Agenda

  • Qual engine utilizar?
  • Desafios
  • Como detectar colisão?
  • Criando uma IA para cada fantasma
  • Máquina de estados
  • Demo!

4 of 46

Qual engine utilizar?

  • gen2brain/raylib-go

  • oakmound/oak

  • hajimehoshi/ebiten

5 of 46

  • Ebitengine é uma biblioteca open-source para criação de jogos 2D. Permite criar jogos de forma rápida e simples utilizando sua API.
  • Suporte a Gráficos 2D, Mouse, Teclado, Gamepad, Touch, Áudio.
  • Cross-Platform: Windows, macOS, Linux, Web, Mobile, Nintendo Switch e XBOX experimental.

6 of 46

7 of 46

Ebitengine

8 of 46

Ebitengine

  • 60 FPS por padrão
  • Update
  • Draw
  • Layout

9 of 46

Ebitengine - Animation

10 of 46

Ebitengine - Animation

11 of 46

Ebitengine - Blur

12 of 46

Ebitengine - Camera

13 of 46

Ebitengine - Chipmunk

14 of 46

Ebitengine - Smoke

15 of 46

Estrutura do projeto

16 of 46

Desafios

  • Aprender a mecânica e as funções da Ebitengine.
  • Criar um grafo.
  • Criar um mecanismo de colisão.
  • Criar uma IA para cada fantasma.
  • Interagir com o usuário.

17 of 46

Grafo

  • Um grafo é uma estrutura matemática usada para representar relações entre objetos.

  • Vértices (ou nós): representam os objetos.
  • Arestas (ou ligações): representam as conexões entre os objetos.

18 of 46

Grafo

Tipos de grafos:

  1. Grafo não direcionado: as arestas não têm direção, ou seja, a conexão entre dois vértices é bidirecional.
  2. Grafo direcionado (ou dígrafo): as arestas têm direção, indicando que a conexão vai de um vértice para outro.
  3. Grafo ponderado: as arestas têm pesos ou custos associados, úteis para representar distâncias, tempos ou custos.
  4. Grafo conexo: é possível chegar de qualquer vértice a qualquer outro por um caminho.
  5. Grafo cíclico ou acíclico: um grafo pode conter ciclos (caminhos que voltam ao ponto de partida) ou não.

19 of 46

Grafo

20 of 46

Grafo

21 of 46

Grafo

22 of 46

Grafo

23 of 46

Como detectar colisão?

24 of 46

Como detectar colisão?

25 of 46

Como detectar colisão?

26 of 46

Interagindo com o usuário

27 of 46

Criando uma IA para cada fanstama

28 of 46

Blinky

29 of 46

Pinky

30 of 46

Pinky

31 of 46

Inky

32 of 46

Inky

33 of 46

Inky

34 of 46

Inky

35 of 46

Clyde

36 of 46

Clyde

37 of 46

Clyde

38 of 46

Clyde

39 of 46

State Pattern

Robert Nystrom

40 of 46

Game state

Loading

Playing

Game Over

41 of 46

Game state

42 of 46

Game state

43 of 46

Ghost state

Cage

Scatter

Chase

Frightened

Eyes

44 of 46

Ghost state

45 of 46

46 of 46

Obrigado