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.