ENG1000 Introdução à Engenharia  
Apresentação da Disciplina  
Edirlei Soares de Lima  
<elima@inf.puc-rio.br>  
Objetivos da Disciplina  
Apresentar os conceitos fundamentais de engenharia ao  
longo do período e aplicá-los em projetos específicos em cada  
sub-área da engenharia ou em projetos interdisciplinares,  
orientados por professores do CTC.  
Ao final do curso o aluno deverá:  
Compreender e ter a vivência do procedimento de tratamento de  
projetos de engenharia;  
Ter noções de como gerenciar um projeto de engenharia;  
Saber redigir um relatório e fazer uma apresentação oral descrevendo  
um projeto de engenharia;  
Tema dos projetos dessa turma: Jogos Digitais  
Introdução à Engenharia  
Fundamentos de Projeto  
+
Design de Jogos  
+
Programação de Jogos  
Introdução à Engenharia  
Turma 33Q e 339  
Prof. Edirlei Soares de Lima <elima@inf.puc-rio.br>  
Horário das Aulas:  
Quarta e Sexta, das 11h às 13h  
Quarta:  
DCMM3  
Sexta:  
L144  
Esquema de Aulas  
Parte 1 Aulas teóricas e praticas:  
Aulas teóricas sobre projeto de software, game design e  
programação;  
Aulas praticas para a definição do projeto e resolução de  
exercícios de programação;  
Parte 2 Desenvolvimento do projeto:  
Todas as aulas serão dedicadas ao desenvolvimento do  
projeto;  
Ementa da Disciplina  
Fundamentos de Game Design  
Introdução a Game Design  
Jogos; Equipe de desenvolvimento; Game design; Roteiro  
Game Design Document  
Formato; Gameplay; Personagens; Câmeras; Controles;  
Interfaces; Áudio  
Ementa da Disciplina  
Programação de Jogos em Lua e Löve  
Introdução a Linguagem Lua  
Variáveis; Operadores Aritméticos; Entrada e Saída; Funções  
Introdução ao Löve  
Ambiente de Desenvolvimento; Estrutura de um programa;  
Callbacks;  
Operadores Condicionais  
If-else; Interação pelo teclado e mouse;  
Operadores de Repetição  
For, while; Imagens;  
Vetores e Matrizes  
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/  
Linguagem Lua  
Lua é uma linguagem de programação projetada para  
dar suporte à programação procedimental em geral.  
Exemplos de empresas que desenvolvem jogos  
usando a linguagem Lua:  
LucasArts, Blizzard, Microsoft, BioWare...  
Lua é inteiramente projetada, implementada e  
desenvolvida na PUC-Rio.  
Nasceu e cresceu no Tecgraf, o Grupo de Tecnologia em  
Computação Gráfica da PUC-Rio.  
Atualmente é desenvolvida no laboratório Lablua.  
Linguagem Lua  
Exemplos de jogos que utilizam Lua:  
Angry Birds  
Civilization V  
Far Cry  
Grim Fandango  
Ragnarok  
Tibia  
World of Warcraft  
Löve  
Löve é um Framework para criação de  
jogos 2D na linguagem de programação  
Lua  
Multiplataforma (Windows, Linux, Mac e  
Android)  
Open Source  
Totalmente gratuito e pode ser usado em  
qualquer tipo de projeto  
Projeto Final  
Tema: Jogos Digitais  
Projeto desenvolvido em equipes:  
3 alunos por equipe;  
Etapas:  
Definição da ideia geral;  
Elaboração de um game design document (GDD);  
Implementação do jogo (arte, programação, testes...);  
Apresentação do produto final.  
Projeto Final  
Eduardo Carvalho  
Felipe Dassa  
Luiz Guilherme Ribeiro  
Rodrigo Sinésio  
Gustavo de Araujo Nunes  
Leonardo Lages de Alencar  
Bruna Moura Bergmann  
Projeto Final  
Bruno D’Almeida Franco  
Andressa Muniz  
Júlia Aleixo  
Rafael Sanfins  
Rodrigo Leite  
João Victor Magalhães Epifânio  
Luís Fernando Teixeira Bicalho  
Luiz Felipe Rodrigues Guimarães  
Exemplo  
.
..  
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  
...  
Critério de Avaliação  
Critério 3:  
Se G2 3.0 MÉDIA = (G1 + G2)/2 5.0  
Se G2 < 3.0 MÉDIA = (G1 + 3xG2)/4 5.0  
Composição dos graus:  
GRAU 1: G1 = 0.5 I + 0.2 AT + 0.3 RP  
GRAU 2: G2 = 0.5 I + 0.2 AT + 0.3 RF  
AT = Atividades Propostas via EAD (Coordenação)  
RP = Relatório Parcial (Professor)  
RF = Relatório e Apresentação Final (Convidados da Coordenação)  
I = Participação Individual (Professor, Monitores e próprios Alunos)  
Critério de Avaliação  
Avaliação baseada no projeto desenvolvido durante o curso:  
Game Design Document;  
Participação;  
Software;  
Apresentação;  
Relatório Final;  
Avaliação final realizada por uma banca composta por  
professores do departamento de informática.  
A exata data ainda será definida (05/12 ou 10/12)  
Controle de Turma  
Presença obrigatória (75%)  
Lista de chamada;  
Projeto desenvolvido em equipe:  
Todos os membros da equipe devem participar ativamente  
do desenvolvimento do projeto;  
Não participar do desenvolvimento do projeto resultará  
em redução individual da nota;  
Premiação  
Alunos com média > 8.5 receberão certificado de destaque  
acadêmico;  
Alunos com média > 9.5 receberão premiação especial;  
O melhor aluno de cada turma concorrerá ao sorteio de um  
super prêmio especial;  
Monitoria  
Monitores da Turma:  
Auxilio nas aulas praticas;  
Auxilio no desenvolvimento dos projetos;  
Monitores:  
Patricia <patty-costa@live.com>  
Leonardo <leonardolages@hotmail.com>  
Luís Fernando <lfernandotexbicalho@hotmail.com>  
Introdução à Engenharia  
Site da disciplina:  
http://www.inf.puc-rio.br/~elima/intro-eng/  
Contato:  
edirlei.slima@gmail.com  
Bibliografia  
Sommerville, I. Engenharia de  
Software; Prentice Hall: Addison-  
wesley, 2003.  
Rogers, S. Level Up!: The Guide to  
Great Video Game Design; Wiley,  
2
010.  
Ierusalimschy, R. Programming in  
Lua, Third Edition; Lua.org, 2013.