Pesquisar aqui

sábado, 9 de fevereiro de 2019

Motores de Jogo


Motores de Jogo

Motores de Jogo, do inglês “Game Engine”, são plataformas de programação, que contêm uma série de
bibliotecas que abstraem uma série de componentes de jogo e que permitem simplificar o desenvolvimento
de jogos com muito mais facilidade.
As funcionalidades típicas fornecidas por um motor de jogo, passam por um motor gráfico (para renderizar as
imagens 2D/3D), um motor de física (que simula a física do movimento, fluidos, colisões, quedas, etc),
suporte a animação, sons, IA, rede, gestão de memória, gestão de ficheiros, gestão de linha de execução,
suporte a grafos de cena ou entidades e suporte a uma linguagem script (linguagens que suportam scripts,
ou seja automatização de tarefas que poderiam ser executadas por um humano).
Resultado de imagem para game engines
Um elemento muito importante que os motores de jogos fornecem é a chamada abstração de hardware, ou
seja o programador pode desenvolver jogos sem ter que conhecer as características da plataforma onde ele
vai correr.
Resultado de imagem para game engines
Os primeiros motores de jogo foram criados para os jogos 3D de ação na primeira pessoa (first person
shooter). Há diferentes níveis de facilidades que os motores de jogo oferecem, desde APIs para acrescentar
módulos ou cenários para jogos, até IDE (Integrated Development Environment) que inclui ferramentas de
planeamento, scripts pré-programados, e empacotadores de software para o jogo ficar pronto para ser
distribuído.
Resultado de imagem para game engines
Alguns dos principais motores de jogo são: Unity, Blender, CryEngine e o Unreal Engine, entre muitos outros.

Referências:


Redes Neuronais – o que são?


Redes Neuronais – o que são?

Resultado de imagem para redes neuronais
O tema da IA (Inteligência Artificial) cobre um conjunto de tópicos, nomeadamente aprendizagem automática
(Machine Learning - ML). Dentro do ML também se incluem vários tópicos, nomeadamente as redes
neuronais (neural networks) que são usadas em muitas áreas, desde os carros autónomos, até à internet das
coisas (IoT).
Modelos criados inicialmente por McCulloch e Pitts em 1943, baseados em algoritmos matemáticos
designados por lógica limite.
Embora existam vários tipos de redes neuronais, as redes neuronais profundas (Deep Neural Networks –
DNN) são as mais relevantes.
Estas redes consistem de várias camadas, incluindo de input e output, entre as quais existem camadas
“escondidas”. O número de nós depende da aplicação, tendo cada nó um peso associado.
http://www.electronicdesign.com/sites/electronicdesign.com/files/0718TR_Fig1.png
Estas redes são normalmente “treinadas”, ou seja, cria-se/desenha-se uma DNN e depois treina-se.
O treino consiste na alimentação de dados do lado do “input” e fazer corresponder a estes dados, resultados,
de modo a que os “pesos” que existem em cada nó se ajustem de acordo com a informação.
Embora a arquitetura de uma DNN seja simples, o mesmo não se pode dizer do design e da implementação.
O sistema pode ser afetado por um conjunto de fatores como o formato, dimensão e qualidade do input e do
output desejado. O processo de treino assume que existirá uma convergência no tempo à medida que mais
exemplos vão sendo alimentados no sistema.
De um modo geral, depois do treino os pesos resultantes são usados como um sistema de inferência e o
sistema não será alterado a partir daí, a menos que seja novamente treinado para se actualizar.
Existem vários tipos de DNNs, a CNN (Convolutional Neural Network) que é mais usada em reconhecimento
de imagem e as RNN (Recurrent Neural Networks) desenhadas para responder a comportamentos temporais,
para resolver problemas ligados a reconhecimento de fala e escrita.
Spiking Neural Networks (SNN) tem nós que disparam quando um limite é atingido. Os outputs podem ser um
treino resultante de sinais do sistema, sendo uma aproximação de como o cérebro funciona, sendo
consideradas a próxima geração de inteligência artificial, permitindo no futuro, resolver problemas de IA com
uma fração dos recursos usados hoje em dia.

Nenhuma das soluções existente funciona idealmente para todas as solicitações, por isso o desafio é
conseguir conjugar as diversas opções quando isso é necessário.

Referências:


O que é a Inteligência Artificial?


O que é a Inteligência Artificial?

Imagem relacionada

A Inteligência Artificial (IA), é definida em ciências computacionais como o estudo de agentes inteligentes – qualquer dispositivo que se
aperceba e analise o seu ambiente e tome ações/decisões que maximizem as probabilidades de atingir
os seus objectivos.
Há outras definições que incluem a aprendizagem e uma abordagem adaptativa a novas tarefas.
À medida que certas tecnologias ficam dominadas acabam por ser excluídas do âmbito da IA, um exemplo são
as tecnologias de reconhecimento de caracteres, que hoje estão banalizadas e deixaram de ser incluídas na
área da IA.
Algumas das áreas que são consideradas dentro da IA é o reconhecimento de voz, jogar jogos estratégicos,
operar carros autónomos, simulações militares, etc.
Alguns dos problemas principais que a IA pretende resolver:
- Raciocínio e resolução de problemas – embora numa fase inicial tenham sido usados algoritmos para
resolver determinados problemas, nomeadamente usando probabilidades e regras de otimização.
Verificou-se que estas abordagens sistemáticas se tornavam muito lentas quando a dimensão dos problemas aumentava.
- Representação de conhecimento – a representação e organização do conhecimento é central a muitas áreas
de IA. São usadas as ontologias para organizar e relacionar conhecimento dentro de contextos.
- Planeamento – conseguir estabelecer objetivos e atingi-los, o que implica conseguir visualizar o futuro,
bem como adaptar-se a mudanças.
- Aprendizagem – aprenderem de forma contínua processos e regras
- Processamento de linguagem natural – permite às máquinas perceberem a linguagem humana
- Percepção – coisas como reconhecimento facial e de objectos, reconhecimento de voz, visão artificial,
usando um conjunto de sensores como sinais, microfones, câmaras, radar, etc.
- Movimento e manipulação – conseguirem deslocar-se em situações distintas e manipulares toda a espécie
de objectos e equipamentos (nomeadamente cirúrgicos).
- Inteligência social -conseguirem entender emoções humanas e responderem de acordo.
- Inteligência genérica – conseguir de alguma forma replicar a complexidade da inteligência humana,
agregando as diversas áreas focadas atrás. Projectos como o Deep Mind da IBM vão nesse sentido.

As aplicações da IA são as mais diversas, estando neste momento a entrar em áreas como a saúde, a indústria
automóvel, a defesa, área financeira, jogos de computador, publicidade, auditorias e até na arte…
Os benefícios potenciais são muitos, mas os riscos também são significativos. Há utopias e distopias
associadas à IA. Desde cenários de que os sistemas inteligentes autónomos tomam conta do mundo, outros
em que os humanos usam a IA para criar instrumentos de destruição maciça, até aos cenários em que eles
eliminam o esforço do trabalho físico e do trabalho repetitivo, deixando para os humanos as atividades mais
interessantes e compensadoras.
É um tema complexo que merece ser debatido e acompanhado, nas várias questões que levanta.

Referências:


Linguagens de programação que mais cresceram no GitHub!

Sites como o GitHub dependem de todo o tipo de código que é armazenado e publicado, sendo as plataformas ideais para os programadores. Com base nisto, são também o local ideal para avaliar as tendências das linguagens que tem vindo a crescer/evoluir.
Todos os anos o GitHub faz uma avaliação da utilização do seu site, focando-se em áreas como a geografia, as empresas, os projetos mais apoiados e até linguagens de programação mais usadas. Com base nos dados retirados desta análise é interessante avaliar cada um dos pontos referidos.
Um dos principais itens está ligado às linguagens de programação mais usadas, o que revela as tendências e as preferências dos programadores nos últimos anos e como estas vão evoluir.
2018 não foi diferente e os dados revelados mostram que foi o Kotlin a linguagem de programação que mais cresceu. De seguida, quem marcou presença foi a linguagem HCL e a TypeScript.

GitHub linguagens programação cresceram

Alunos do Ensino Básico aprendem a programar com drones

Alunos do quinto ano em Harrisonburg, Vírginia, Estados Unidos da América, iniciam-se em programação aprendendo a programar drones.

Desde que a programação foi introduzida no ensino da escola básica Keister, os professores têm trabalhado para que encontrassem maneiras divertidas e originais de ensinar os seus alunos.
"Queremos que os nosos alunos estejam preparados para o futuro, assim estas aulas são um maneira divertida de fazer com que os alunos aprendam a programar." disse Tara Walters, professora da escola Keister.
Esta ideia surgiu já que os alunos ficavam interessados sempre que o professor Gerry Comer pilotava o seu drone na escola.
Com esta iniciativa os alunos têm a oportunidade de aprender algoritmos e resolver problemas e bugs no código e a escola recebeu um prémio de $1000. A escola tem o objetivo de ajudar outras escolas a introduzirem o ensino de programação utilizando formas interessantes como esta.


Consultei whsv.com no dia 08/02/2019

sexta-feira, 8 de fevereiro de 2019

Kodu

Kodu é uma linguagem de programação visual criada especificamente para criar jogos. É projetado para para ser acessível para crianças e agradavel para qulaquer um. O ambiente de programação é executado na Xbox, permitindo uma interação rápida usando apenas um controlador.
O núcleo do projeto Kodu é a interface de usuário de programação. A linguagem é simples e totalmente baseada em ícones. Os programas são compostos de páginas, que são divididas em regras, que são divididas em condições e ações. As condições são avaliadas simultaneamente. A linguagem é projetada especificamente para desenvolvimento de  comportamento da personagem. Embora não seja o propósito geral como as linguagens de programação clássicas, o Kodu pode expressar conceitos avançados de design de jogos de maneira simples, direta e intuitiva.

Resultado de imagem para kodu

Os 3 primeiros programas em JavaScript

Estes são os 3 exercícios que, pessoalmente, acho serem os mais adequados para principiantes. Também irei incluir uma solução para cada um.


1. Programa para obter a data atual

Output: "mm-dd-yyyy" 

var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; var yyyy = today.getFullYear(); if(dd<10) { dd='0'+dd; } if(mm<10) { mm='0'+mm; } today = mm+'-'+dd+'-'+yyyy; console.log(today); today = mm+'/'+dd+'/'+yyyy; console.log(today); today = dd+'-'+mm+'-'+yyyy; console.log(today); today = dd+'/'+mm+'/'+yyyy; console.log(today);


2. Programa para calcular os dias até ao Natal

Output: "Faltam 349 dias até ao Natal!" 

today=new Date(); var cmas=new Date(today.getFullYear(), 11, 25); if (today.getMonth()==11 && today.getDate()>25) { cmas.setFullYear(cmas.getFullYear()+1); } var one_day=1000*60*60*24; console.log("Faltam " Math.ceil((cmas.getTime()-today.getTime())/(one_day))+ " dias até ao natal!");


2. Programa para multiplicar e dividir










function multiplyBy() { num1 = document.getElementById("firstNumber").value; num2 = document.getElementById("secondNumber").value; document.getElementById("result").innerHTML = num1 * num2; } function divideBy() { num1 = document.getElementById("firstNumber").value; num2 = document.getElementById("secondNumber").value; document.getElementById("result").innerHTML = num1 / num2; }



Consultei os sites w3resource no dia 08/02/2019.