Desenvolvimento de Jogos com Corona SDK

Preview:

DESCRIPTION

Palestra apresentada no evento WICA na Universidade Cruzeiro do Sul (Unicsul), no campus Anália Franco, em 18/06/2013.

Citation preview

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

Obrigado!

http://gamedeveloper.com.br

bruno@gamedeveloper.com.br