Desenvolvimento de Jogos com Corona SDK
UniversidadeCruzeiro do Sul -WICA 2013
Bruno Cicanci
Conteúdo
 Por onde começar
 Protótipos
 Programação
 Corona SDK
 Bonus Level
Por onde começar
Do conceito...
... ao jogo!
Game Design
http://catavento.art.br/ppt/15semcomp.pdf
Gameplay jogando
Programação sem ter a arte final
Art Of Game Design (Aplicativo)
https://play.google.com/store/apps/details?id=com.schellgames.deckoflenses
Protótipos
Objetivo do protótipo:Validar a mecânica do jogo
Protótipo de papel
Protótipo Digital
Playground
Bioshock Infinity: http://www.youtube.com/watch?v=5OAj5JBMvBo
Programação
Jogue fora o protótipo!
Controle de versão
Boas práticas de programação
 Variáveis:
 mVariavel (private)
 sVariavel (static)
 pVariavel (param)
 VARIAVEL (constant)
 Funções:
 Get()
 Set(Param pParam)
 Comentários:
 No início da classe com exemplo de utilização e autor
 Explicações em partes complexas
 Justificativas de código temporário
Game Loop
Toda LÓGICA do jogo é
processada de acordo com o
INPUT do jogador, e o
resultado é exibido
GRAFICAMENTE na tela
Game Loop - Exemplo
Finite State Machine (FSM)
Corona SDK
Corona SDK
Programação com script Lua
Plataformas: iOS, Android, Kindle e
Nook
Desenvolvimento mais rápido de
jogos 2D e aplicativos
Diversos plugins
Gratuito (para Android e iOS)!
Jogos em 2D
Storyboard
local storyboard = require "storyboard”
storyboard.gotoScene( ”menu" )
…
storyboard.removeScene( ”intro" )
Scene
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
scene:addEventListener( "createScene", scene )
scene:addEventListener( "enterScene", scene )
scene:addEventListener( "exitScene", scene )
scene:addEventListener( "destroyScene", scene )
Scene
function scene:createScene( event )
end
function scene:enterScene( event )
end
function scene:exitScene( event )
end
function scene:destroyScene( event )
end
return scene
Display
localWIDTH = display.contentWidth
local HEIGHT = display.contentHeight
Image
local player = display.newImage( ”player.png" )
player:setReferencePoint( display.BottomLeftReferencePoint )
player.x = 0
player.y = 0
Text
local scoreText = display.newText(”SCORE: ".. score, 0, 0,
native.systemFontBold, 16)
scoreText:setTextColor(0, 255, 255)
…
scoreText:removeSelf()
Group
function scene:createScene( event )
group = self.view
...
group:insert( background )
group:insert( forest )
group:insert( collider )
group:insert( scoreText )
end
Touch
function onTouch(event)
if(event.phase == "began") then
elseif (event.phase == "moved") then
elseif (event.phase == "ended") then
end
return true
end
Events
player:addEventListener("touch", onTouch)
…
Runtime:addEventListener("accelerometer", onTilt)
Runtime:addEventListener( "system", onSystemEvent)
Physics
local physics = require "physics"
physics.start();
physics.setGravity(0, 9.8)
local leftside = display.newImage("img/side.png")
physics.addBody(leftside, {friction=0.5})
leftside.bodyType = "static”
Sound
local backgroundMusic = audio.loadStream("backgroundMusic.m4a")
local narrationSpeech = audio.loadStream("narrationSpeech.wav")
local backgroundMusicChannel = audio.play( backgroundMusic, {
channel=1, loops=-1, fadein=5000 } )
local narrationChannel = audio.play( narrationSpeech, {
duration=30000, onComplete=NarrationFinished } )
Tiled (Editor de nível)
Tiled (Implementação com Lime)
lime = require("lime.lime”)
local map = lime.loadMap("mapa.tmx”)
local visual = lime.createVisual(map)
TexturePacker (Sprite sheet)
TexturePacker (Implementação)
local sheetInfo = require("player”)
local myImageSheet = graphics.newImageSheet( "player.png",
sheetInfo:getSheet() )
local player = display.newSprite( myImageSheet ,
sheetInfo:getSequenceData() )
player:setSequence( "walk" )
player:play()
Fórum, documentação, wiki, tutoriais
http://www.coronalabs.com/
Bonus Level
Modelos de Negócio
 Funciona bem com jogos de iOS,
porém desde que tenha uma
versão de demonstração para o
jogador testar
 Jogos indie geralmente tem
preços entre $0.99 e $2.99
 A versão de demonstração pode
ser limitada ou uma versão do
jogo usando o modelo de
negócio gratuito
 Funciona bem com jogos de
Android, pois a pirataria neste OS
é maior
 Anúncios, quando colocados em
locais corretos e com uma
freqüência adequada, podem dar
um bom retorno
 Jogos Freemium são muito
comuns no Android OS e iOS
Pago Gratuito
Arte 2D para programadores
http://2dgameartforprogrammers.blogspot.com.br/
Concursos
Social
Publicidade no Jogo
Links interessantes
Mecânicas de jogo
http://www.squidi.net/three/index.php
Então, você quer ser um game designer?
http://www.youtube.com/watch?v=zQvWMdWhFCc
Então, você quer trabalhar na indústria de games?
http://www.youtube.com/watch?v=u_fr8tEQSGE
Gerador de personages em 2D (pixelart)
http://charas-project.net/charas2/index.php
Artigos sobre gamefication
http://www.gamification.co/2013/01/04/top-articles-by-gamification-experts-in-2012/
10 livros sobre games que você precisa ler
http://arena.ig.com.br/2012-06-28/dez-livros-de-games-que-voce-precisa-ler.html
Livros
 Desenvolvimento de Jogos e Programação:
 Code Complete - http://amzn.to/oqrBeP
 Effective C++ - http://amzn.to/NJ2ed2
 More Effective C++ - http://amzn.to/qQSksw
 Desenvolvimento de Jogos Eletrônicos - http://novatec.com.br/livros/jogos2/
 Software Engineering for Game Developers - http://amzn.to/qrY571
 Game Engine Architecture - http://amzn.to/pgnZFR
 Game Coding Complete - http://amzn.to/qA0Nz4
 Programming Game AI by Example - http://amzn.to/nQ5SdY
 Real-time Rendering - http://amzn.to/pbHDTp
 Game Programming All in One - http://amzn.to/p2S05M
 Beginning C++ through Game Programming - http://amzn.to/q0X1fV
 XNA Game Studio Creators Guide - http://amzn.to/nmSlFf
 iPhone Programming The Big Nerd Ranch Guide - http://amzn.to/p6kUkJ
 Head First iPhone and iPad Development - http://amzn.to/p0qXOo
 Agile Game Development with Scrum - http://amzn.to/nfp3T3
 Game Design:
 Game Design Workshop - http://amzn.to/pVvJE0
 Rules of Play: Game Design Fundamentals -
http://amzn.to/oHmOZ8
 The Game Design Reader: A Rules of Play Anthology -
http://amzn.to/pTjOd7
 Half-Real: Video Games between Real Rules and Fictional
Worlds - http://amzn.to/qA7yd6
 A Theory of Fun for Game Design - http://amzn.to/nmR1Ya
 The Art of Game Design: A book of lenses -
http://amzn.to/p0Z5xr
Sites e revistas
 Sites:
 Gamasutra - http://www.gamasutra.com/
 Gamesindustry - http://www.gamesindustry.biz/
 AppData - http://www.appdata.com/
 Ars Technica - http://arstechnica.com/gaming/
 GameCareerGuide -
http://www.gamecareerguide.com/
 Fóruns
 GameDev - http://www.gamedev.com.br/
 PDJ - http://www.programadoresdejogos.com/
 UniDev - http://www.unidev.com.br/
 Blogs:
 AltDevBlogADay - http://altdevblogaday.com/
 Game Developer – http://gamedeveloper.com.br
 Game Producer - http://www.gameproducer.net/
 Indie Games - http://indiegames.com/index.html
 Revistas:
 Casual Connect - http://casualconnect.org/magazine-
archive/
 Develop - http://www.develop-online.net/
 EDGE - http://www.next-gen.biz/
 Game Developer Magazine -
http://www.gdmag.com/homepage.htm
 Game Sauce - http://gamesauce.org/news/
 Wired - http://www.wired.com/gaming
Obrigado!
http://gamedeveloper.com.br
bruno@gamedeveloper.com.br

Desenvolvimento de Jogos com Corona SDK

  • 1.
    Desenvolvimento de Jogoscom Corona SDK UniversidadeCruzeiro do Sul -WICA 2013 Bruno Cicanci
  • 2.
    Conteúdo  Por ondecomeçar  Protótipos  Programação  Corona SDK  Bonus Level
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    Art Of GameDesign (Aplicativo) https://play.google.com/store/apps/details?id=com.schellgames.deckoflenses
  • 10.
  • 11.
    Objetivo do protótipo:Validara mecânica do jogo
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Jogue fora oprotótipo!
  • 17.
  • 18.
    Boas práticas deprogramação  Variáveis:  mVariavel (private)  sVariavel (static)  pVariavel (param)  VARIAVEL (constant)  Funções:  Get()  Set(Param pParam)  Comentários:  No início da classe com exemplo de utilização e autor  Explicações em partes complexas  Justificativas de código temporário
  • 19.
    Game Loop Toda LÓGICAdo jogo é processada de acordo com o INPUT do jogador, e o resultado é exibido GRAFICAMENTE na tela
  • 20.
    Game Loop -Exemplo
  • 21.
  • 22.
  • 23.
    Corona SDK Programação comscript Lua Plataformas: iOS, Android, Kindle e Nook Desenvolvimento mais rápido de jogos 2D e aplicativos Diversos plugins Gratuito (para Android e iOS)!
  • 24.
  • 25.
    Storyboard local storyboard =require "storyboard” storyboard.gotoScene( ”menu" ) … storyboard.removeScene( ”intro" )
  • 26.
    Scene local storyboard =require( "storyboard" ) local scene = storyboard.newScene() scene:addEventListener( "createScene", scene ) scene:addEventListener( "enterScene", scene ) scene:addEventListener( "exitScene", scene ) scene:addEventListener( "destroyScene", scene )
  • 27.
    Scene function scene:createScene( event) end function scene:enterScene( event ) end function scene:exitScene( event ) end function scene:destroyScene( event ) end return scene
  • 28.
  • 29.
    Image local player =display.newImage( ”player.png" ) player:setReferencePoint( display.BottomLeftReferencePoint ) player.x = 0 player.y = 0
  • 30.
    Text local scoreText =display.newText(”SCORE: ".. score, 0, 0, native.systemFontBold, 16) scoreText:setTextColor(0, 255, 255) … scoreText:removeSelf()
  • 31.
    Group function scene:createScene( event) group = self.view ... group:insert( background ) group:insert( forest ) group:insert( collider ) group:insert( scoreText ) end
  • 32.
    Touch function onTouch(event) if(event.phase =="began") then elseif (event.phase == "moved") then elseif (event.phase == "ended") then end return true end
  • 33.
  • 34.
    Physics local physics =require "physics" physics.start(); physics.setGravity(0, 9.8) local leftside = display.newImage("img/side.png") physics.addBody(leftside, {friction=0.5}) leftside.bodyType = "static”
  • 35.
    Sound local backgroundMusic =audio.loadStream("backgroundMusic.m4a") local narrationSpeech = audio.loadStream("narrationSpeech.wav") local backgroundMusicChannel = audio.play( backgroundMusic, { channel=1, loops=-1, fadein=5000 } ) local narrationChannel = audio.play( narrationSpeech, { duration=30000, onComplete=NarrationFinished } )
  • 36.
  • 37.
    Tiled (Implementação comLime) lime = require("lime.lime”) local map = lime.loadMap("mapa.tmx”) local visual = lime.createVisual(map)
  • 38.
  • 39.
    TexturePacker (Implementação) local sheetInfo= require("player”) local myImageSheet = graphics.newImageSheet( "player.png", sheetInfo:getSheet() ) local player = display.newSprite( myImageSheet , sheetInfo:getSequenceData() ) player:setSequence( "walk" ) player:play()
  • 40.
    Fórum, documentação, wiki,tutoriais http://www.coronalabs.com/
  • 41.
  • 42.
    Modelos de Negócio Funciona bem com jogos de iOS, porém desde que tenha uma versão de demonstração para o jogador testar  Jogos indie geralmente tem preços entre $0.99 e $2.99  A versão de demonstração pode ser limitada ou uma versão do jogo usando o modelo de negócio gratuito  Funciona bem com jogos de Android, pois a pirataria neste OS é maior  Anúncios, quando colocados em locais corretos e com uma freqüência adequada, podem dar um bom retorno  Jogos Freemium são muito comuns no Android OS e iOS Pago Gratuito
  • 43.
    Arte 2D paraprogramadores http://2dgameartforprogrammers.blogspot.com.br/
  • 44.
  • 45.
  • 46.
  • 47.
    Links interessantes Mecânicas dejogo http://www.squidi.net/three/index.php Então, você quer ser um game designer? http://www.youtube.com/watch?v=zQvWMdWhFCc Então, você quer trabalhar na indústria de games? http://www.youtube.com/watch?v=u_fr8tEQSGE Gerador de personages em 2D (pixelart) http://charas-project.net/charas2/index.php Artigos sobre gamefication http://www.gamification.co/2013/01/04/top-articles-by-gamification-experts-in-2012/ 10 livros sobre games que você precisa ler http://arena.ig.com.br/2012-06-28/dez-livros-de-games-que-voce-precisa-ler.html
  • 48.
    Livros  Desenvolvimento deJogos e Programação:  Code Complete - http://amzn.to/oqrBeP  Effective C++ - http://amzn.to/NJ2ed2  More Effective C++ - http://amzn.to/qQSksw  Desenvolvimento de Jogos Eletrônicos - http://novatec.com.br/livros/jogos2/  Software Engineering for Game Developers - http://amzn.to/qrY571  Game Engine Architecture - http://amzn.to/pgnZFR  Game Coding Complete - http://amzn.to/qA0Nz4  Programming Game AI by Example - http://amzn.to/nQ5SdY  Real-time Rendering - http://amzn.to/pbHDTp  Game Programming All in One - http://amzn.to/p2S05M  Beginning C++ through Game Programming - http://amzn.to/q0X1fV  XNA Game Studio Creators Guide - http://amzn.to/nmSlFf  iPhone Programming The Big Nerd Ranch Guide - http://amzn.to/p6kUkJ  Head First iPhone and iPad Development - http://amzn.to/p0qXOo  Agile Game Development with Scrum - http://amzn.to/nfp3T3  Game Design:  Game Design Workshop - http://amzn.to/pVvJE0  Rules of Play: Game Design Fundamentals - http://amzn.to/oHmOZ8  The Game Design Reader: A Rules of Play Anthology - http://amzn.to/pTjOd7  Half-Real: Video Games between Real Rules and Fictional Worlds - http://amzn.to/qA7yd6  A Theory of Fun for Game Design - http://amzn.to/nmR1Ya  The Art of Game Design: A book of lenses - http://amzn.to/p0Z5xr
  • 49.
    Sites e revistas Sites:  Gamasutra - http://www.gamasutra.com/  Gamesindustry - http://www.gamesindustry.biz/  AppData - http://www.appdata.com/  Ars Technica - http://arstechnica.com/gaming/  GameCareerGuide - http://www.gamecareerguide.com/  Fóruns  GameDev - http://www.gamedev.com.br/  PDJ - http://www.programadoresdejogos.com/  UniDev - http://www.unidev.com.br/  Blogs:  AltDevBlogADay - http://altdevblogaday.com/  Game Developer – http://gamedeveloper.com.br  Game Producer - http://www.gameproducer.net/  Indie Games - http://indiegames.com/index.html  Revistas:  Casual Connect - http://casualconnect.org/magazine- archive/  Develop - http://www.develop-online.net/  EDGE - http://www.next-gen.biz/  Game Developer Magazine - http://www.gdmag.com/homepage.htm  Game Sauce - http://gamesauce.org/news/  Wired - http://www.wired.com/gaming
  • 50.