Tópicos Especiais em  
Linguagens de Programação  
(Jogos I)  
Apresentação da Disciplina  
Edirlei Soares de Lima  
<edirlei@iprj.uerj.br>  
Objetivos da Disciplina  
Apresentar os fundamentos de jogos eletrônicos,  
game design e as técnicas de programação para o  
desenvolvimento de jogos 2D.  
Ao final do curso, o aluno deverá:  
Compreender os conceitos fundamentais para a  
elaboração de projetos de jogos eletrônicos;  
Conhecer e saber aplicar as técnicas fundamentais para o  
desenvolvimento e implementação de jogos eletrônicos.  
Jogos Eletrônicos  
Design de Jogos  
+
Programação de Jogos 2D  
+
Animação 2D  
Ementa da Disciplina  
Parte 1 Jogos Eletrônicos e Game Design  
Fundamentos de jogos eletrônicos;  
Projeto de jogos eletrônicos;  
Concepção e criação;  
Equipe de desenvolvimento;  
A indústria de jogos;  
Game design document;  
Formato;  
Gameplay;  
Personagens;  
Câmeras;  
Interfaces.  
Ementa da Disciplina  
Parte 2 Técnicas para Jogos 2D  
Sprites e animação 2D;  
Introdução à linguagem Lua e ao framework Löve;  
Técnicas de programação de jogos 2D:  
Lógica e estrutura de um jogo;  
Programação para ambientes gráficos;  
Mecanismos de interação;  
Estruturação e representação de dados;  
Detecção de colisão;  
Simulação Física.  
Esquema de Aulas  
Aulas teóricas e praticas:  
Aulas teóricas sobre fundamentos de jogos eletrônicos,  
game design, tecnologias, programação e técnicas de  
desenvolvimento;  
Aulas praticas para a elaboração de projetos de jogos  
eletrônicos, resolução de exercícios e implementação dos  
projetos;  
Critério de Avaliação  
Avaliação Prática:  
Trabalho e exercícios desenvolvidos em grupo ou  
individualmente;  
Apresentação em aula;  
Avaliação Teórica:  
Prova teórica envolvendo o conteúdo teórico e prático  
apresentado durante as aulas;  
Critério de Avaliação  
Trabalho:  
Um único jogo desenvolvido durante todo o semestre  
Três avaliações parciais do projeto (T1, T2 e T3)  
Uma avaliação final do projeto (T4)  
MT = (T1 + T2 + T3 + T4) / 4 (com PESO 5.0 na MP)  
Prova:  
PT: prova teórica individual envolvendo todo o conteúdo  
do curso (com PESO 5.0 na MP)  
MP = (MT + PT)/2  
Critério de Avaliação  
Se a frequência nas aulas for < 75% o aluno será REPROVADO  
POR FALTA;  
Se a frequência nas aulas for ≥ 75%, então:  
Se MP ≥ 7.0, o aluno será aprovado e MF = MP;  
Se MP < 4.0, o aluno será reprovado e MF = MP;  
Se MP < 7.0 e MP ≥ 4.0, o aluno irá para o exame final e então:  
MF = (MP + PF)/2;  
Se MF < 5.0 o aluno será reprovado;  
Se MF ≥ 5.0 o aluno será aprovado;  
Avaliação  
Trabalho desenvolvido em equipe:  
3 alunos por equipe;  
Os grupos serão definidos nas próximas aulas;  
Avaliação individual baseada nos trabalhos desenvolvido e  
na apresentação:  
Desenvolvimento;  
Participação;  
Apresentação;  
Questionamentos;  
Notas individuais;  
Avaliação do Projeto  
1° Avaliação Parcial:  
Projeto do jogo (Game Design Document): ideia, objetivos,  
história, personagens, mecânica do jogo (gameplay),  
universo, inimigos, interface, etc.  
Data: XX/YY  
2° Avaliação Parcial:  
Implementação da mecânica do jogo (gameplay).  
Data: XX/YY  
Avaliação do Projeto  
3° Avaliação Parcial:  
Implementação do universo/fases do jogo;  
Implementação dos personagens/inimigos;  
Data: XX/YY  
Avaliação Final:  
Implementação completa do jogo;  
Data: XX/YY  
Pré-Requisito  
Introdução à Programação  
Gostar de Jogos  
Controle de Turma  
Presença obrigatória!!!  
Chamada em qualquer momento da aula;  
Alunos com menos de 75% de presença serão reprovados  
automaticamente e não poderão fazer prova final (independente da nota);  
Exceção: 50% de presença e média final acima de 7.0 (não é permitido fazer prova final).  
Não será permitido trocar de turma ou frequentar as aulas de outra turma;  
Projetos desenvolvidos em equipe:  
Todos os membros da equipe devem participar ativamente do  
desenvolvimento dos projetos;  
Não participar do desenvolvimento dos projetos resultará em redução  
individual da nota;  
Aulas Praticas  
Nas aulas práticas usar apenas os softwares da disciplina;  
Se for possível, trazer notebook pessoal para as aulas práticas;  
Se for usar os computadores do laboratório, salve os trabalhos  
no pendrive com regularidade;  
Verificar regularmente o site da disciplina;  
Prática extraclasse constante (mínimo de 4h/semana);  
Software  
Os softwares que serão utilizados nesta disciplina são:  
Löve - https://love2d.org/  
ZeroBrane Studio - http://studio.zerobrane.com/  
GIMP - http://www.gimp.org/  
Exemplo 2D  
.
..  
function love.draw()  
for i = 1, config.numStars do  
love.graphics.setColor(255 - stars[i].speed,  
2
55 - stars[i].speed/2,150,  
stars[i].speed*0.9)  
love.graphics.draw(star, stars[i].x, stars[i].y,  
0
, stars[i].speed/255 + 0.55)  
end  
love.graphics.setColor(255, 255, 255)  
if spaceship.isBoosted == false then  
love.graphics.draw(spaceship.images.normal,  
spaceship.x, spaceship.y)  
else  
love.graphics.draw(spaceship.images.boosted,  
spaceship.x, spaceship.y)  
end  
for i = 1, totalLaserBeams do  
love.graphics.draw(laser.images.default,  
lasers[i].x, lasers[i].y)  
end  
end  
...  
Material das Aulas  
Página do Curso:  
www.inf.puc-rio.br/~elima/jogos/  
Contato:  
edirlei.slima@gmail.com  
Bibliografia Principal  
Rogers, S. Level Up!: The Guide to  
Great Video Game Design; Wiley,  
010.  
2
Ierusalimschy, R. Programando em  
Lua, Terceira Edição, LTC, 2015.  
Bibliografia Complementar  
Fullerton, T., Swain, C., Hoffman, S. Game Design Workshop:  
Designing, Prototyping and Playtesting Games, CMP Books,  
2
004.  
Rollings, A., Morris, D. Game Architecture and Design, The  
Coriolis Group, 2000.  
Millington, I., Funge, J. Artificial Intelligence for Games,  
Morgan Kaufmann, 2009.