Desenvolvimento de Jogos com Corona SDK
Universidade Cruzeiro 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
local WIDTH = 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 jogohttp://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 gameficationhttp://www.gamification.co/2013/01/04/top-articles-by-gamification-experts-in-2012/
10 livros sobre games que você precisa lerhttp://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
Top Related