About Pedro Viegas Júnior

Posts by Pedro Viegas Júnior:

Xamarin

O Xamarin é uma plataforma de desenvolvimento mantida pela Microsoft que permite a criação de aplicativos móveis nativos para iOS, Android e Windows Phone utilizando como base a linguagem C# com o framework .NET.

A ideia é que seja possível reutilizar mais de 75% do código entre as plataformas.

Além de ter acesso as APIs nativas de cada plataforma é possível criar interfaces do usuário nativas e compiladas para cada uma delas, o que melhora o tempo de execução da aplicação, principalmente se comparado à aplicativos híbridos.

Quer aprender mais sobre Xamarin? Acesse a documentação oficial: https://docs.microsoft.com/pt-br/xamarin?wt.mc_id=CSE_423359

Um dos cursos que posso recomendar é o da BS Grupo.

Mais informações no link https://cursos.bsgrupo.com

 

Processing

 

1.1    Sobre o Processing

 

Processing é um ambiente de programação simples que foi criado para tornar mais fácil para desenvolver aplicações visualmente orientados, com ênfase na animação.  Originalmente construído como uma extensão específica de domínio para Java voltado para artistas e designers.

O procesing é baseado em Java, mas porque os elementos do programa em processamento são bastante simples, você pode aprender a usá-lo mesmo se você não sabe qualquer Java. Se você estiver familiarizado com Java, é melhor esquecer que Processing tem nada a ver com Java por um tempo, até você pegar o jeito de como a API funciona.

 

 

 

 

1.2    Instalando o Procesing

1- Acessar o site http://processing.org/download

 

2- Clicar em ‘No Donation’ (se não desejar doar) e clicar em Download

3 – Será aberto a página para a seleção do sistema operacional após a seleção se iniciará o download.

 

 

No Windows, você terá um arquivo .zip. Clique duas vezes nele e arraste a pasta dentro para um local no seu disco rígido.

Em seguida, dê um duplo clique para iniciar processing.exe.

 

A versão Linux é um arquivo .tar.gz,. Baixe o arquivo em seu diretório pessoal, em seguida, abra uma janela de terminal e digite: tar xvfz processing-xxxx.tgz. Isto irá criar uma pasta chamada processing. Em seguida, mude para o diretório:

cd processing-xxxx

and run it:

./processing

 

 

A versão Mac OS X também é um arquivo .zip. Clique duas vezes nele e arraste o ícone de processamento para a pasta Aplicativos. Em seguida, dê um duplo clique no ícone para iniciar o processing.

 

1.3    Primeiro desenvolvimento

 

Abrindo o programa podemos perceber uma grande área de editor de texto.

Abaixo do editor é a área da mensagem, e abaixo que é o Console. A área de mensagem é usado para mensagens de uma linha, e o Console é usado para mais detalhes técnicos.

 

No editor, digite o seguinte: ellipse(50, 40, 80, 90);

Esta linha de código significa “desenhar uma elipse, com o centro 50 pixels da esquerda e 40 pixels de cima para baixo, com uma largura 80 e uma altura de 90 pixels.” Clique no botão Run, que se parece com isso:

 

Se você digitar o código com erro, a área da mensagem ficará vermelho e exibindo o erro.

Se isso ocorrer deve verificar se o código está correto os números devem estar contidos entre parênteses e ter vírgulas entre cada um deles, e a linha deve terminar com um ponto e vírgula.

 

Uma das coisas mais difíceis sobre como começar com programação é que você tem que ser muito específico sobre a sintaxe. O software de processamento nem sempre é inteligente o suficiente para saber o que você quer dizer, e pode ser bastante exigente com a colocação de pontuação. Você vai se acostumar com isso com um pouco de prática.

 

 

1.4    Animação

 

 

Este Código cria uma janela que é de 400 pixels de largura e 300 pixels de altura, e depois começa a desenhar círculos vermelhos na posição do mouse.

Quando clica com o botão do mouse, a cor círculo muda para preto.

 

 

void setup()

{size(400, 300);}

void draw()

{if (mousePressed)

{fill(0);}

else

{fill(255,0,0);}  

ellipse

(mouseX, mouseY, 80, 80);}

 

 

 

Analisado o código:

 

 

“void” = Palavra-chave usada indicam que uma função não retorna nenhum valor. Cada função ou deve retornar um valor de um tipo de dados específico ou usar a palavra-chave void para especificar que não retorna nada.

 

“setup()” = é executado uma vez, quando o programa começar.

É usado para definir propriedades iniciais, tais como tamanho da tela e para carregar a mídia, tais como imagens e fontes como o programa é iniciado.

Só pode haver uma função setup () para cada programa e não deve ser chamado novamente após sua execução inicial.

Se o esboço é uma dimensão diferente do que o padrão, o tamanho () função de função ou fullScreen () deve ser a primeira linha no setup ().
“{size(400, 300);}” = Tamanho da tela.

 

“daw” = Chamado diretamente após setup (), a função draw () executa continuamente as linhas de código contido dentro de seu bloco até que o programa está parado ou noLoop () é chamado.

Ele sempre deve ser controlado com noLoop (), redesenhar () e loop ().

Se noLoop () é usado para parar o código em draw () de executar, então redesenhar () fará com que o código dentro de draw () a ser executada uma única vez, e loop () fará com que o código dentro de draw () para retomar a executar continuamente.

O número de vezes desenhar () executa em cada segundo pode ser controlada com a função framerate ().

Só pode haver uma função para cada esboço, e desenhar () deve existir se você deseja que o código seja executado de forma contínua, ou para processar eventos como mousePressed ().

Você pode ter uma chamada vazia para desenhar () em seu programa, como exibido no código acima.

 

“if” = Permite que o programa fazer uma decisão sobre qual código para executar.

Se o código for inserido como “true” (verdadeiro), as declarações fechados dentro do bloco são executados e se o teste for avaliada como falsa as declarações não são executados.

 

“mousePressed” = A função mousePressed () é chamado uma vez depois de cada vez que um botão do mouse é pressionado. A variável MouseButton (ver a entrada de referência relacionado) pode ser usado para determinar qual tecla foi pressionada.
Mouse e eventos de teclado só funcionam quando um programa tem “draw ()”.

Sem “draw ()”, o código é executado apenas uma vez e depois pára o atendimento de eventos.

 

fill” = Define a cor usada para preencher formas.

 

Por exemplo, se você executar fill (204, 102, 0),todas as formas posteriores será preenchido com laranja. Esta cor é ou especificados em termos de RGB ou HSB de cor dependendo do colorMode actual (). (O espaço de cor padrão é RGB, com cada valor no intervalo de 0 a 255.)

Cores básicas:

 

Branco – RGB (255,255,255);

Azul – RGB (0,0,255);

Vermelho – RGB (255,0,0);

Verde – RGB (0,255,0);

Amarelo – RGB (255,255,0);

Rosa – RGB (255,0,255);

Azul Claro – RGB (0,255,255);

Preto – RGB (0,0,0).

 

 

“Else” = Estende a se estrutura permitindo que o programa de escolher entre dois ou mais blocos de código. Ele especifica um bloco de código para executar quando a expressão se é falsa.

 

Elipse” = Desenha uma elipse (oval) para a tela. Uma elipse com igual largura e altura é um círculo. Por padrão, os dois primeiros parâmetros definir o local, e os terceiro e quarto parâmetros definir a largura e a altura da forma.

 

“mouseX” = Coordenada inicial do Mouse

 

“mouseY” = Coordenada final do Mouse

 

 

 

 

 

1.5    Animação de Movimentação de Mouse

 

 

Este Código cria uma janela que é de 700 pixels de largura e 400 pixels de altura, quando o mouse é movimentado ele altera sua seu tamanho.

 

void setup() {

size(700, 400);

noStroke();

rectMode(CENTER);

}

void draw() {

background(0);

fill(255, 0,0);

rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);

fill(0,0,255);

int quadradoX = width-mouseX;

int quadradoY = height-mouseY;

rect(quadradoX, height/2, (quadradoY/2)+10, (quadradoY/2)+10);

}

 

 

 

 

 

 

 

 

1.6    Exemplo de Colisão

 

Abaixo está um código complexo de colisão de objetos com alteração de posição, a ideia é alterar o código colocando \\ para colocar comentários para estudo.

 

 

Carreiras em Jogos Digitais

1.1    Game Design

 

 

Geralmente é o cara que chefia a equipe, e que possui a visão geral do jogo, ou em jogos independentes é o cara que cria a ideia do jogo.  É o game designer quem especifica a mecânica do jogo, estabelece as características para que o jogo esteja bem balanceado e também pensa no roteiro, na história ou ambientação por trás do jogo.

Orienta programadores e artistas.

 

O Design de games passa pelas várias fases de produção de um game, pela

pré-produção cuidando do desenvolvimento do design e regras de um jogo e na produção fazendo o design do próprio gameplay, da ambientação, da trama, e personagens.

 

 

1.2    Desenvolvedor

 

O desenvolvedor de jogos desenvolve o código base do jogo (meio óbvio isso).

É o programador que desenvolve a física do jogo que implementa a mecânica de jogo, o movimento dos personagens, entre outras coisas.

As principais linguagens a serem dominadas são C, C++,HTML 5, JAVA, mas algumas outras também são utilizadas.

 

1.3    Artista

 

O artista gráfico que trabalha com jogos digitais é o profissional responsável pela identidade visual do jogo.

Além de definir os elementos gráficos do jogo ele também é responsável pela comunicação visual.

 

O artista gráfico que trabalha em jogos digitais modernos, como os disponíveis para console, pode trabalhar criando tanto arte 2D (texturas, arte conceitual) quanto 3D (modelos de personagens, animações, leiaute de fase).

 

1.4    Outros caras

 

 

  • Produtor

 

Profissional que supervisiona toda a produção de um jogo, fiscaliza o projeto da desenvolvedora, verificando e analisando o andamento de cada um deles.

 

  • Áudio

 

Cria trilha sonora e sons utilizados para o game.

  • Testador de Jogos

Deve testar o jogo verificando erros e bugs.

 

  • Roteirista

 

Cria e pensa todo o trama de um jogo.

 

  • Marketing

 

Profissional voltado para o Marketing do jogos pós desenvolvimento.

Tipos de jogos

 

1.1    Ação

 

O gênero de ação possui vários tipos de subgêneros como “Aventura de Ação”, que se caracteriza pela resolução de quebra-cabeças e objetivos baseados em uma história longa onde o jogador coleciona itens e os utiliza para conseguir avançar nas fases e na resolução dos quebra-cabeças. Exemplos de jogos nessa linha seriam Resident Evel e God of War. Temos o “Acarde”, “Plataforma”.

 

1.2    Advergames

São jogos publicitários os games possibilita atingir o consumidor durante um período de lazer, em que ele está totalmente imerso no ambiente do jogo e aberto a novas experiências, passando a consumir a propaganda como entretenimento.

 

 

 

 

1.3    Shoter

 

Esse gênero consiste basicamente em atirar projéteis em inimigos, com os subgêneros: First person shooter utilizando a câmera em primeira pessoa, Shot’em ups, estilo arcade onde os jogadores devem atirar em uma grande quantidade de inimigos e evitar uma série de obstáculos, também não necessariamente precisam ser com personagens humanos mas normalmente são veículos como naves espaciais e podem ser apresentados em diferentes ângulos de câmera por exemplo Space Invaders.

Third person shoter (TPS), onde a câmera é posicionada atrás do personagem permitindo que o jogador o veja de forma total ou parcial estilo GTA.

 

1.4    Adventure

 

São caracterizados pela coleta de itens, gerenciamento de inventário e resolução de quebra-cabeças e desafios, os primeiros jogos dessa linha eram puramente baseados em textos. Um exemplo de jogo desse gênero é Devil May Cry.

Um dos subgêneros do adventure é o Role-Playng Game [(RPG) eu não sabia que RPG era esse nome], nesse subgênero os jogadores interpretam personagens escolhendo uma classe e pontuando estatisticamente suas habilidades em combate.

 

 

 

1.5    Simulação de Vida

 

Baseado no desenvolvimento de relações com formas de vida artificiais como por exemplo no jogo World of Zoo e The Sims.

 

 

1.6    Música/Ritmo

 

Basicamente o jogador tenta acertar o ritmo ou a batida de uma música para fazer pontos. Alguns exemplos de jogos nessa linha são Simon e Rock Band.

 

 

1.7    Quebra-cabeças

 

Nos jogos de quebra-cabeça o jogador deve utilizar a lógica para completar padrões estilo de jogo Tetris.

 

 

1.8    Esportes

Baseiam em competições esportivas

Exemplos: FIFA, NFL, Tony Hawk

 

 

1.9    Estratégia

Principal foco desse gênero são pensamento e planejamento. Possui também alguns subgêneros.

 

 

1.10   Serious Game

 

Com o objetivo de transmitir um conteúdo educacional ou de treinamento ao usuário. O termo “sério” (serious) refere-se que o jogo é voltado mais para fins educacionais do que de entretenimento. Eles tem sido amplamente utilizados nas áreas de defesa, educação, exploração científica, serviços de saúde, gestão de emergência, planejamento urbano, engenharia, religião e política

 

1.11    Simulação de veículo

 

Nesse gênero os jogadores simulam a direção e pilotagem de um veículo que pode ser tanto um carro quanto uma espaçonave. Nesse gênero sempre existe a tentativa de tornar a experiência tão “real” quanto possível.

Apertando Start – Início ao desenvolvimentos de jogos

Fiz esse documento quando meu Sobrinho estava querendo começar a desenvolver Jogos.

O conteúdo será dividindo entre Breve Descrição, Tipos de jogos, Carreiras em Jogos Digitais, Processing, Primeiro Jogo.

 

 

Finalmente vamos começar a brincadeira hehe.

Não sou professor e não tenho nenhuma didática mas vou tentar explicar ao máximo que eu sei.

Ferramentas que serão utilizadas inicialmente, Processing para a parte de código, e Fireworks CS5 para a arte.

 

Vou passar um pouco de blabla para saber a diferenças entres jogos e como costuma funcionar uma empresa de desenvolvimento de jogos.

Entrevista para o Drops de Jogos no SPIN

Entrevista cedida para o Drops de Jogos no SPIN, onde foi apresentado o Jogo Zaum City.

 

Pedro fala sobre games educacional que desenvolveu com ex-esposa. Exposto no SPIN de junho de 2017. #spin #indiegames #indie #jogos #sp #brasil

Posted by Drops de Jogos on Wednesday, 7 June 2017

 

 

 

Startup (Tô na moda!)

Há muito tempo, tento criar uma coisa minha, não porque não gosto de chefes ou quero ficar rico e não trabalhar nunca mais, na verdade quero minha empresa para trabalhar ainda mais.

Quando tinha por volta dos 19 anos, comecei a ser um freelancer, corria atrás dos clientes para desenvolvimentos de sites em Flash e desenvolvimento de sistemas não complexos, por falta de experiência de lidar com pessoas comecei a tomar muito calote, acabei desistindo de trabalhar em casa e voltei a ser peão de consultorias.

A última tentativa foi criar uma empresa de jogos com dois sócios, infelizmente eles não estavam na mesma pegada do que eu e não quiseram se privar do sono. Toquei isso por dois anos apenas com o apoio da minha esposa, (com o posto de criticar de uma forma construtiva meus desenhos) e do meu filho, que na época tinha 3 anos já dava seus primeiros passos como analista de teste, reclamando e falando que o jogo dos Heróis Lego é bem mais legal.

Nos últimos meses pensei muito que tipo de projeto criar, pensei no que faço de melhor, e tentei achar um sócio. Minha esposa é professora e gosta disso e eu sou uma pessoa que acha que o método de ensino é uma grande porcaria, que não tem estímulos aos alunos e nem aos professores, a forma de ensinar não evoluiu muito nos últimos tempos.

Uma coisa que percebi com as tentativas anteriores é que eu não sirvo para ser o “CEO” da empresa ou algo do tipo, eu sou tímido tenho dificuldade de falar em público, faço piadas fora de hora, realmente não sirvo para a coisa. Gosto de ter ideias e desenvolvê-las e as vezes minhas ideias não são tão boas assim, e eu não aceitava mudança.

Comecei a frequentar eventos de Startup para conseguir um anjo para minha ideia revolucionaria.

Nesses eventos você vê muuuuuitos empreendedores, muita gente bacana, muitos casos de sucesso e muitas ideias boas… SQN!

O quê você realmente encontra nesses eventos?

  • Aceleradoras sem nenhum caso de sucesso de pessoas, com grande bagagem teórica que não agrega em nada para quem tem uma ideia inovadora.
  • Pessoas sem empatia nenhuma, sempre falando que a ideia dele é melhor, mesmo que seja mais um aplicativo para avaliar uma balada.
  • Ideias repetidas baseada no que deu certo em outros países (xuber, motorista amigo, uberBR)
  • Palestrantes com empresa no Vale do Silício, isso mesmo Vale do Silício, localizado no vale do Silício, onde fica grandes empresas no Vale do Silício, mas o que a startup dele faz? Não interessa ela está no Vale do Silício.
  • Apresentações sobre criatividade no Power Point, não é que eu não goste de Power Point, na verdade eu odeio, acho que nada pode ser menos criativo que aquela apresentação padrão e o pior que a própria apresentação é pegar um exemplo pronto do Microsoft e fazer sua apresentação em cima.

Palavras difíceis, para mostrar que você é um empreendedor e não um turista, ninguém fala vamos trocar uma ideia ou algo do tipo falam vamos fazer uma approach, ou qual é o seu budget.

Uma situação engraçada nesses palavreados, um empreendedor perguntou se eu utilizava boostrapping que seria a não utilização de recurso de investidores, e eu pensei que era sobre desenvolvimento utilizando o Bootstrap ferramenta de front-end, comecei a falar mostrar exemplos, percebi que ele ficou meio confuso e perguntou quem bancava meu projeto, só depois de um tempo percebi, mas sim utilizo bootstrap.

Conheci um pessoal bacana também com ideias boas e produtos bons, mas pelo mais estranho que isso parece são casos raros, como por exemplo o Gustavo Nogueira da Peso 2 Concursos {adicionar link}

Mas o mais legal de tudo no evento são os brindes, olha aqui a minha canequinha.

 

20151015_225202

Ponto de Função – Calculando o Esforço

Trabalho utilizando o ponto de função há mais ou menos 3 anos, não sou o especialista IFPUG que decorou todo manual, mas utilizo como base para saber o tamanho da encrenca que vou me meter e de quantas pessoas vou precisar na equipe para a demanda.

Infelizmente, no mundo corporativo tem muitas pessoas que utilizam o ponto de função como solução mágica, “calcula o ponto de função, faz uns cálculos loucos e pronto! Temos a hora de desenvolvimento, com um desenvolvedor demoramos 1000 horas, com 1000 desenvolvedores demoramos 1 hora”(Nove mulheres não conseguem engravidar e dar a luz a um filho por mês).

Felizmente, a coisa não é tão fácil assim, diversos fatores podem impactar o esforço para o desenvolvimento como por exemplo o tipo de metodologia de desenvolvimento, linguagem de desenvolvimento (muito importante) complexidade da solução, se o UC (caso de uso) está bem detalhado, se possui ou não um protótipo para que o desenvolvedor tenha uma base, conhecimento do negócio pela equipe, utilização de frameworks, uso de bibliotecas, expertise da equipe.

Já ouviu gerentes de projetos, perguntando se não tinha me esquecido de colocar as licenças como não funcional na planilha de APF e insistir que deve ser colocado para “Engordar a planilha”?

Vou desenhar um caso bem bacana para quem defende com unhas e dentes que é só multiplicar o total de APF para conseguir o esforço.

Criar uma tela que tenha 1 campo Text Field, uma imagem fixa em png, e um botão de consultar.

Preenchendo o campo e clicando no botão ‘Consultar’ ele exibe os 9 primeiros resultados.

APF_PVJ

 

Após fazer a contagem mesmo sem os ALIs e AIEs, a resposta que vai ser data é que possui 6 pontos. Multiplicando o ponto por um esforço de 8 horas por ponto chegamos a um esforço de 48 horas.

apf_google

 

Agora é só desenvolver seu próprio buscador em 48 horas.

 

 

Burro e Preguiçoso

Acho que essa frase é bem conhecida por vários programadores, mas hoje relembrei quando estava ouvindo o podcast do Grok sobre carreiras com o Fabio Akita.

Um bom programador é burro e preguiçoso. Burro porque se ele se achar inteligente vai achar também que já sabe tudo, e não vai se aprimorar e preguiçoso porque automatizando seu trabalho diário é possível ficar mais tempo no café, ao invés de ficar fazendo sempre a mesma rotina.

Depois de 10 anos trabalhando com desenvolvimento, cheguei ao ponto de ser muito inteligente e cometi um erro de iniciante, deletei coisas indevidas no banco de dados.

Sempre que escrevo delete no console do banco de dados coloco o  where primeiro.

where campo2 = true

Colocando o select:

SELECT subject FROM coisas WHERE campo2 = true

É exibido o resultado e verifico se é realmente o que desejo excluir, se sim troco select por delete.

DELETE FROM coisas WHERE campo2 = true

Assim, evitaria que eu deletasse a tabela errada.