Jogos em Perl

29
SDL Perl Breno G. de Oliveira [email protected]

description

Como tirar proveito dos novos bindings de SDL em Perl para criar jogos divertidos rapida e facilmente.

Transcript of Jogos em Perl

Page 1: Jogos em Perl

SDL PerlBreno G. de Oliveira

[email protected]

Page 2: Jogos em Perl

SDL Perl?

Page 3: Jogos em Perl

SDL?

Page 4: Jogos em Perl

Simple DirectMedia Layer

Page 5: Jogos em Perl

● Interface para dispositivos...

... gráficos

... de audio

... de entrada

● Multiplataforma

● FOSS

SDL

Page 6: Jogos em Perl

Usado nas versões Linux de:

Page 7: Jogos em Perl

Unreal Tournament

Page 8: Jogos em Perl

Unreal TournamentCivilization: Call to Power

Doom 3

Soldier of Fortune

Descent³

Page 9: Jogos em Perl

Unreal TournamentCivilization: Call to Power

Descent³

Doom 3FreeSpace 2

Heretic II

Heroes of Might and Magic III

Myth II

Quake 4Shadowgrounds

Sid Meier's Alpha Centauri

Sim City 3000Soldier of Fortune

Page 10: Jogos em Perl

Unreal TournamentCivilization: Call to Power

Descent³

Doom 3

Enemy Territory: Quake Wars

FreeSpace 2

Heavy Metal: F.A.K.K.²

Heretic II

Heroes of Might and Magic III

Majesty: The Fantasy Kingdom Sim

Myth II

Quake 4

Rune

Rune: Halls of Valhalla

Shadowgrounds

Shadowgrounds: Survivor

Shogo: Mobile Armor Division

Sid Meier's Alpha Centauri

Sim City 3000

Simutrans

Soldier of Fortune

Page 11: Jogos em Perl

Usado em:

Page 12: Jogos em Perl

Usado em:

Page 13: Jogos em Perl

Usado em:

Page 14: Jogos em Perl

Usado em:

Page 15: Jogos em Perl

Usado em:

Page 16: Jogos em Perl

Arquitetura

Aplicativo Multimídia

Biblioteca SDL (libSDL)

DirectX GDI

Windows

framebuffer Xlib

Linux

Quartz

OS X

etc.

etc.

Page 17: Jogos em Perl

● Perl bindings para SDL

● API 1:1 com a libSDL (SDL::*)

● API açucarada (SDLx::*)

SDL Perl

Page 18: Jogos em Perl

Instalação

cpan> install SDL

Page 19: Jogos em Perl

Está vivo!use SDLx::App;SDLx::App­>new­>run;

Page 20: Jogos em Perl

Um pouco mais de controle

use SDLx::App;

my $app = SDLx::App­>new(    title  => 'meu jogo',    width  => 200,    height => 100,);

$app­>run;

Page 21: Jogos em Perl

Um pouco mais de controle

Page 22: Jogos em Perl

Manipulando Eventos #1use SDL::Event;

sub on_event {    my $event = shift;    if ($event­>type == SDL_QUIT) {        return 0;    }

    return 1;}

$app­>add_event_handler( \&on_event );

Page 23: Jogos em Perl

Game Loop

Eventos

Atualizações

Exibição

Page 24: Jogos em Perl

Exibindo... algo :)use SDL::Rect;

my $rect = SDL::Rect­>new(10,10,10,10);

$app­>add_show_handler( sub {    $app­>draw_rect([0,0,$app­>w,$app­>h],0xFFFFFFFF);    $app­>draw_rect($rect, 0xFF0000FF);    $app­>update;});

Page 25: Jogos em Perl

Manipulando Eventos #2sub on_event {  my $event = shift;  if ($event­>type == SDL_QUIT) {    return 0;  }

  return 1;}

Page 26: Jogos em Perl

Manipulando Eventos #2sub on_event {  my $event = shift;  if ($event­>type == SDL_QUIT) {    return 0;  }  elsif ($event­>type == SDL_KEYDOWN) {    given ($event­>key_sym) {      when (SDLK_LEFT ) { $rect­>x( $rect­>x ­ 2 ) };      when (SDLK_RIGHT) { $rect­>x( $rect­>x + 2 ) };      when (SDLK_UP   ) { $rect­>y( $rect­>y ­ 2 ) };      when (SDLK_DOWN ) { $rect­>y( $rect­>y + 2 ) };    };  }  return 1;}

Page 27: Jogos em Perl

Exemplos!

● Spinner

● Scroller

● Solitaire

● Zumbis

Page 28: Jogos em Perl

+Goodies● SDLx::Sprite

● SDLx::Sprite::Animated

● SDLx::Controller::Interface

● SDLx::Layers

● SDLx::Widgets::*

● "Jogo"

Page 29: Jogos em Perl

Mais informações

#sdl em irc.perl.org

sdl.perl.org

http://github.com/PerlGameDev/