Category: Videojogos

Oficina de jogos narrativos (em Marvila, Lisboa)

Encontrei este post numa rede social e acho o tema muito interessante:
“Oficina de jogos narrativos na Biblioteca Municipal de Marvila, dias 4, 5 e 11 de agosto!
A segunda na série de oficinas de jogos narrativos programadas pelo Atelier Publidrama com a Forja de Papel e as Bibliotecas de Lisboa vai iniciar-se na próxima semana e conta contigo, desta vez em Marvila.
Objetivos:
Familiarizar os participantes com os jogos narrativos (sessão 1).
Transmitir técnicas para encenar aventuras (sessão 2).
Partilhar os princípios a que obedece a conceção de cenários (sessão 3).
Datas: 4, 5 e 11 de agosto.
Horário: 20h00-21h00 (prolongável até às 22h00).
Lotação: até 10 participantes.
Acesso: livre, mediante inscrição prévia por email para a Biblioteca Municipal de Marvila, bib.marvila@cm-lisboa.pt. (A participação inclui toda a documentação de apoio à oficina, incluindo uma cópia de Ludodrama, O Sistema de Jogo Narrativo.)
Inscreve-te já!
Num jogo narrativo o encenador prepara um cenário com as grandes linhas do enredo em que se envolvem os protagonistas, as personagens jogadas pelos restantes jogadores. Ao longo do jogo o encenador modera a interação dos protagonistas com as personagens secundárias e os obstáculos que se interpõem no seu caminho. Vem explorar a encenação de um jogo narrativo.”

Tags : ,

Game UI Database

Um recurso interessante para conhecer as UI que são usadas noutros jogos, em diferentes géneros..

+infos(oficial): https://www.gameuidatabase.com/

Tags :

Tileset generator

Encontrei mais uma aplicação para a construção de tiles para videojogos!

+infos(oficial): https://yusastudios.itch.io/tileset-generator

Tags : ,

Pixelorama

Encontrei esta ferramenta que permite desenhar no formato de “pixels”. É uma ferramenta de uso gratuito e que foi desenvolvida com a ajuda do software Godot.

Ainda não testei, mas parece ser uma ferramenta bastante simples de se usar, mas com todas as funcionalidades para quem pretende usar a estratégia de “pixéis” para gerar o grafismo/sprites 2D para um videojogo.

+infos(oficial): https://orama-interactive.itch.io/pixelorama

Tags : ,

Developer Interview – WarPlan Pacific with Alvaro Sousa

Mais um texto tão bom que vem do portal strategyandwargaming.com :)
Desta vez é sobre o desenvolvimento de um conjunto de jogos de guerra sobre a sigla de WarPlan e pela empresa Matrix Games :)

É sempre bom ler sobre o desenvolvimento de videojogos!

+infos(oficial): LINK

Tags : , , ,

ABugInTheSystem, um jogo tuga

Fica aqui o registo para mais um videojogo tuga, de nome ABugInTheSystem:
“ABugInTheSystem is an experimental game meant to invoke a somber and bleak atmosphere through cinematic gameplay sections and naturalistic dialog.”

+infos(oficial): https://chronicbite.itch.io/abuginthesystem

Tags : ,

GDScript Fundamentals Tutorial Series

Encontrei este conjunto de vídeos que explicar o uso do GDScript, mais concretamente para saber usar scritps com o motor de videojogos Godot. Começa pelo básico e vai avançando para assuntos mais importantes. Interessante, fica aqui o registo. O canal tem outras listas interessantes, alguns deles abstratos mas servem para explicar algumas das funcionalidades que são implementadas nos videojogos.

+infos(videos): LINK

Tags :

How to Create a Multiplayer Game in Unity (a experimentar)

A malta da Zenva, através do portal https://gamedevacademy.org/ disponibilizou um tutorial onde explicam de forma bastante simples a construção de um jogo 2D multiplayer !!
Parece ser um tutorial simples mas com tudo o que é necessário.
Fica aqui o registo para testar mais tarde.

+infos(site): https://gamedevacademy.org/how-to-create-a-multiplayer-game-in-unity/

Tags : , , ,

Game designer explicado..

A quantidade de trabalhos/tarefas que envolvem o Game designer.. e que eles realmente fazem :)
Um vídeo interessante que explica de forma rápida as tarefas que cada um faz: o game designer, level designer..

as tarefas/qualidades:

mas no final o que conta é o que já foi feito, o portefólio, mesmo que seja constituído apenas por coisas pequenas!!!

Tags : ,

Recursos como textos e livros

Encontrei uma editora em Berlim que tem algumas coisas relacionadas com videojogos, várias investigações, sobre diferentes perspetivas, ..e interessantes, algumas delas são:
Game Production Studies, por Olli Sotamaa, Jan Svelch
Experimental Games Critique, Play, and Design in the Age of Gamification, por Patrick Jagoda
A Precarious Game The Illusion of Dream Jobs in the Video Game Industry, por Ergin Bulut
Gaming as Art Perspectives on the Relationship between Art and Digital Gaming, por Frank G. Bosman
Time and Space in Video Games A Cognitive-Formalist Approach, por Federico Alvarez Igarzábal
(Not) In the Game History, Paratexts, and Games Regina Seiwald, por Ed Vollans
How to Play Video Games Matthew Thomas Payne, por Nina B. Huntemann
Games and Rules Game Mechanics for the »Magic Circle«, por Beat Suter, Mela Kocher, René Bauer, Kollektion-Knowledge Unlatched Auswahl

+infos(oficial): LINK

Tags : , ,

Parte4 – o meu projeto (aprender)

O terreno, coisas interessantes:
shift anula o elemento do terreno;
manipular o brush size e opacity

instalar o package Terrain tools, através do package manager (ativar no project settings, a hipótese de enable preview packages)e surgem outras opções com o package

teclas de atalho com o uso dos brushes: LINK

outras opções, o path finder: LINK

outras opções, o Terrain Tools Sample Asset Pack (free): LINK

depois de instalar é só importar.. neste caso fiz importar tudo. Surge então a hipótese de usar o paint texture e olhar para a secção das layers

Bump Map (informação 3d da imagem, uma layer a partir de mapa 2d, “light catches a shape”)
Height Map (fazer uso do preto/branco para criar informação acerca da altura dos elementos na imagem)
Normal Map (faz uso dos valores de RGB para indicar a direção da luz em termos de x,y e z de cada pixel)

assim sempre que for necessário aplicar uma layer shape é necessário tratar destas três questões:

standart assets para o Unity: LINK
(filtrar… por environment)

Timeline e a Animation

o processo é o mesmo que em Flash ou noutras ferramentas, trabalhar com keyframes e construir e aplicar movimentos entre esses espaços

 

Tags : , ,

Parte3 – o meu projeto (aprender)

Alguns dos temas que devem ser debatidos quando se desenvolve um videojogo:
a experiencia do jogador (precisão, e habilidade) (player experience (precision. skillful);
mecânica principal: pilotar habilmente uma nave espacial e evitar o meio ambiente (core mechanic: skilfully fly spaceship and avoid environmental hazards);
loop principal do jogo: ir de a até b para completar o nível e depois avançar para o próximo nível (core game loop: get from a to b to complete the level then progress to the next level).

Outro assunto é o fluxo do jogo e os ecrãs (game flow and screens)  e que se resume ao seguinte cenário:

O tema do jogo (estória de elementos gráficos):
uma geração experimental de uma nave espacial;
tentar escapar de um planeta desconhecido.
(qual o tema central do jogo, o nome do jogo,…)

Questões que normalmente surgem quando se desenvolve um videojogo:
quais são os features (características) que eu devo incluir no meu videojogo?
quando é que se deve começar o desenvolvimento?
quais são as prioridades?
e se eu não tiver tempo?
quando é que eu devo parar?

Metodologia Onion Design (core feature ou mecânicas):

Devem haver respostas para:
qual é característica que é única e mais importante para o jogo?
qual é a característica seguinte mais importante?
qual é a característica seguinte mais importante?

(exemplos: movimento do jogador, colisão com o ambiente (e morrer por causa disso), power ups, ir de a para b e começar um novo nível (level progression), existirem obstáculos que se mexem, existência de pontuação, existência de inimigos, fuel..)

Um alternativa a este modelo será a de começar pelo mais difícil e mais complicado primeiro.

coisas interessantes:
A classe MonoBehaviour:
input +infos: LINK
Input.getKey +infos: LINK

simular o vento no jogo, alterar a física do projeto em X por exemplo

o áudio:
deve estar na camara, porque é o local onde o jogador está
para trabalhar o áudio vai ser necessário:
audio listener (na camara)
audio source (o elemento gráfico que tem/produz o áudio)
audio file

problemas com o áudio:
ou quando se faz o play no Unity estar muted
ou no projeto do ficheiro, ir às preferences…

O AudioSource +infos: LINK
O AudioSource PlayOneShot +infos: LINK

As cenas tem que ser geridas e referidas:

O SceneManager + infos: LINK

Pode também existir a necessidade de colocar uma pausa entre o morrer e o renascer, para isso existe o método Invoke()
Tem como referência o uso de uma String e pode ser lento.. alternativa é usar o Coroutine

O Invoke +infos: LINK

Ainda acerca dos prefabs:
convém que sejam feitos como deve ser e não duplicar/acrescentar simplesmente na barra inicial
remover os box colider de todos e aplicar apenas ao elemento pai do prefab
adicionar depois um box colider e moldar de seguida esse box colider com a ferramenta de edit colider

Particle System:
tem um emissor
e tem as partículas
é adicionado como game object ou através de um componente
um particle system tem módulos que permitem controlar o comportamento
se ficar a pink (cor de rosa) ir ao módulo render->material (é porque não tem ainda material)
na secção shape do módulo podemos alterar o comportamento do cone no radius
e manter os loops ativos

Lighting tab:
(menu window-> rendering-> lighting)
permite manipular os elementos relativos ao lighting
existem:
main directional light (sol)
environment lighting ()
scene lights (do tipo spot lights…)

Lighting +infos: LINK

transformações:
através do código
vector3
starting position (x,y,z)
movement vector (x,y,z)
movement factor (efeito de ping pong), entre 0 e 1

Transform +infos: LINK

movimento constante:
Matemátia, Mathf.Sin +infos: LINK

algum código:

using System;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Colisoes : MonoBehaviour
{
    [SerializeField] float tempoLoadNivel = 2.0f;
    //audio
    [SerializeField] AudioClip suscesso;
    [SerializeField] AudioClip insucesso;
    AudioSource fonteAudio;

    [SerializeField] ParticleSystem suscessoParticulas;
    [SerializeField] ParticleSystem insucessoParticulas;
    

    bool estadoEmTransicao = false; //lidar com sons, movimentos..

    //cheat code
    bool desligarColisoes = false;
    
void Start() {
    fonteAudio = GetComponent<AudioSource>();
    fonteAudio.Stop();
}
void Update() {
    ResponderATeclasDeDebug();
}

void ResponderATeclasDeDebug(){
    if(Input.GetKeyDown(KeyCode.L)){
        loadOProximoNivel();
    }else if(Input.GetKeyDown(KeyCode.C)){
        desligarColisoes = !desligarColisoes;
    }
}

    void OnCollisionEnter(Collision other) 
    {
        if(estadoEmTransicao == true || desligarColisoes == true)
        {
            return;    
        }
        switch(other.gameObject.tag)
        {
            case "Amigo":
                Debug.Log("Amigo");
                break;
            case "Fuel":
                Debug.Log("Fuel");
                break;
            case "Finish":
                Debug.Log("Parabens terminaste");
                //loadOProximoNivel();
                ComecarSequenciaSucesso();

                break;
            default:
                //Debug.Log("huns..");
                //ou reLoadNivel();
                //ou com pausa
                //ou Invoke("reLoadNivel", 1f);
               //ou Invoke("ComecaSequenciaCrash", 1f); //criar efeito de pausa com disable teclado
               ComecaSequenciaCrash();
             break;
        }
    }

    void ComecarSequenciaSucesso()
    {
        estadoEmTransicao = true;
        //audio
        fonteAudio.Stop();
        fonteAudio.PlayOneShot(suscesso);

        //particulas
        //ParticleSystem.Play();
        suscessoParticulas.Play();

        //parar o movimento
        GetComponent<Movimento>().enabled = true;
        //invoke..
        Invoke("loadOProximoNivel", tempoLoadNivel);
    }

    void ComecaSequenciaCrash()
    {
        estadoEmTransicao = true;
        //som
        fonteAudio.Stop();
        fonteAudio.PlayOneShot(insucesso);

        //particulas
        //ParticleSystem.Play()...
        insucessoParticulas.Play();

        //criar efeito de pausa com disable teclado
        GetComponent<Movimento>().enabled = false;
        Invoke("reLoadNivel", 1f);
    }

    void loadOProximoNivel()
    {
        int cenaCorrenteIndex = SceneManager.GetActiveScene().buildIndex;
        int proximaCenaIndex = cenaCorrenteIndex + 1;
        if(proximaCenaIndex == SceneManager.sceneCountInBuildSettings){
            proximaCenaIndex = 0;
        }
        SceneManager.LoadScene(proximaCenaIndex);
    }

    void reLoadNivel()
    {
        //ou SceneManager.LoadScene(0); // é a primeira ou com o nome
        //ou SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); //voltamos ao inicio
        //ou
        int cenaCorrenteIndex = SceneManager.GetActiveScene().buildIndex;
        SceneManager.LoadScene(cenaCorrenteIndex);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movimento : MonoBehaviour //herança : MonoBehaviour
{
    Rigidbody rb;
    [SerializeField] float forcaDoTrust = 100.0f;
    [SerializeField] float rotacaoDoTrust = 1.0f;
    
    //audio
    AudioSource ruidoMotor;
    [SerializeField] AudioClip motorFogetao;

    //sistema de particulas do motor
    [SerializeField] ParticleSystem motorFogetaoParticulas;
    [SerializeField] ParticleSystem motorEsquerdaFogetaoParticulas;
    [SerializeField] ParticleSystem motorDireitaFogetaoParticulas;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        //audio
        ruidoMotor = GetComponent<AudioSource>();
        ruidoMotor.Stop();
        motorFogetaoParticulas.Stop();
    }
    
    void Update()
    {
        InteratividadeThrust();
        InteratividadeRotacao();
    }

    void InteratividadeThrust()
    {
        //getKeyDown: só para saber se ele primiu a tecla
        //ou (Input.GetKey("up")) ou (Input.GetKey(KeyCode.UpArrow)) //duas escolhas, diferentes signatures
        if(Input.GetKey(KeyCode.Space))
        {
            InicioThrust();
        }
        else
        {
            PararThrust();
        }
    }

    void InicioThrust()
    {
        Debug.Log("Foi pressionado a tecla de SPACE");
        //rb.AddRelativeForce(0,1,0); //Vector3 são 3 valores:xyz 
        //Vector3 permite aceder à direcção e velocidade
        rb.AddRelativeForce(Vector3.up * forcaDoTrust * Time.deltaTime);
        //equivalente a rb.AddRelativeForce(0,1,0);
        //audio
        if (!ruidoMotor.isPlaying)
        {
            //ruidoMotor.Play(); //só para um som
            ruidoMotor.PlayOneShot(motorFogetao);
        }
        //particulas
        if (!motorFogetaoParticulas.isPlaying)
        {
            motorFogetaoParticulas.Play();
        }
    }

   void PararThrust()
    {
        ruidoMotor.Stop();
        motorFogetaoParticulas.Stop();
    }
    void InteratividadeRotacao()
    {
        if(Input.GetKey(KeyCode.A))
        {
            RotacaoEsquerda();
        }
        else if(Input.GetKey(KeyCode.D))
        {
            RotacaoDireita();
        }
        else
        {
            PararRotacao();
        }
    }

 void RotacaoEsquerda()
    {
        Debug.Log("Foi pressionado a tecla de A");
        RotacaoMetodo(rotacaoDoTrust); //xyz: 0,0,1
        if (!motorDireitaFogetaoParticulas.isPlaying)
        {
            motorDireitaFogetaoParticulas.Play();
        }
    }
     void RotacaoDireita()
    {
        Debug.Log("Foi pressionado a tecla de D");
        //transform.Rotate(-Vector3.forward * rotacaoDoTrust * Time.deltaTime); //xyz: 0,0,1
        //ou transform.Rotate(Vector3.back * rotacaoDoTrust * Time.deltaTime); //xyz: 1,0,0
        if (!motorEsquerdaFogetaoParticulas.isPlaying)
        {
            motorEsquerdaFogetaoParticulas.Play();
        }
        RotacaoMetodo(-rotacaoDoTrust);
    }
    private void PararRotacao()
    {
        motorDireitaFogetaoParticulas.Stop();
        motorEsquerdaFogetaoParticulas.Stop();
    }

    void RotacaoMetodo(float rotacaoDesteFrame)
    {
        //freezar o sistema de rotação não deixar o sistema de fisica tomar posse
        rb.freezeRotation = true; //para rodar manualmente
        transform.Rotate(Vector3.forward * rotacaoDesteFrame * Time.deltaTime);
        rb.freezeRotation = false; // unfreezar para que o sistema de fisica tome conta das ações
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class oscilador : MonoBehaviour
{
    Vector3 posicaoDeInicio;
    [SerializeField] Vector3 vectorDeMovimento;
    //slider
    [SerializeField] [Range(0,1)] float vectorDeFactor;

    //periodo de tempo
    [SerializeField] float periodo = 2f;

    void Start()
    {
        //posição inciial
        posicaoDeInicio = transform.position;
        Debug.Log(posicaoDeInicio);
    }

    // Update is called once per frame
    void Update()
    {
        //para medir o tempo..
       /*
        if(periodo == 0f){
            //protecção
            return;
        }
        */
        //por ser float a comparação com == pode comprometer.
         if(periodo <= Mathf.Epsilon){
            //protecção
            return;
        }
        float ciclos = Time.time / periodo; //vai crescendo com o tempo
        //usar Tau, o tal Pi que não é pi e tem em conta o raio
        const float tau = Mathf.PI * 2; // o valor constante de 6.283

        float rawSenoOnda = Mathf.Sin(ciclos * tau); //andar entre -1 e 1 
        Debug.Log(rawSenoOnda);

        vectorDeFactor = (rawSenoOnda + 1f) / 2f; //calculo que vai de 0 a 1

     Vector3 offset = vectorDeMovimento * vectorDeFactor;
     transform.position = posicaoDeInicio + offset;   
    }
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class QuitJogo : MonoBehaviour
{
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Escape))
        {
            Debug.Log("Terminou o jogo!!!");
            Application.Quit();
        }
    }
}
Tags : , ,

Parte2 – o meu projeto (aprender)

o GameDesign deste projeto:
a experiência do jogador ( player experience ) : agilidade
a mecânica do jogo ( core mechanic ) : movimentos, e de evitar obstáculos
o modo continuo do jogo ( game loop ): ir de a para b

coisas interessantes:
a função Time.deltaTime
usar o cinemachine (para termos acesso a diferentes camaras) +infos: LINK
box colider (lidar com as colisões)
rigidbody (vai permitir trabalhar as colisões, lidar com problemas de rotação, através de congelar (freeze nos constrains)
cores +infos: LINK
GameObject.GetComponent + infos: LINK
Time.time +infos: LINK
Tags +infos: LINK
Transform +infos: LINK

algum código:

 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ColisaoMuros : MonoBehaviour
{
    private void OnCollisionEnter(Collision other) 
    {
        //Debug.Log("colisao com um muro");
        //Collision, tipo de variavel
        //other, quem colidiu comigo
        //OnCollisionEnter, quando "entra" na colisão
        //se colidirem contigo muda de cor
        //GetComponent<MeshRenderer>().material.color = Color.grey;

        //2) a colisão só deve acontecer se for com o objecto do jogador
        if(other.gameObject.tag == "Player"){
            GetComponent<MeshRenderer>().material.color = Color.grey;
            //mudar a tag
            gameObject.tag = "colisao";
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mover : MonoBehaviour
{
 //para ficar disponivel no inspctor usamos o [SerializeField] 
    //[SerializeField] float andaX = 0.0f;
    //[SerializeField] float andaY = 0.01f;
    //[SerializeField] float andaZ = 0.0f;
    // Start is called before the first frame update
    float andaY = 0.0f;
    [SerializeField]float movimentoVelocidade = 6.0f;
    
    void Start()
    {
        Debug.Log("parte 2 - inicio do jogo");
        ImprimirInstrucoes();
        //para mover
    }

    // Update is called once per frame
    void Update()
    {
        MoverOJogador();
    }

    void ImprimirInstrucoes(){
        Debug.Log("Bem vindo ao jogo");
        Debug.Log("Move o jogador com as setas ou WSAD");
        Debug.Log("Não vás contras os muros..");
    }
    void MoverOJogador(){
        float andaX = Input.GetAxis("Horizontal")*Time.deltaTime*movimentoVelocidade;
        float andaZ = Input.GetAxis("Vertical")*Time.deltaTime*movimentoVelocidade;
        transform.Translate(andaX, andaY, andaZ);
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Pontuacao : MonoBehaviour
{
    int pontuacao = 0;
    private void OnCollisionEnter(Collision other) {

        if(other.gameObject.tag != "colisao"){
            pontuacao=pontuacao+1;
            Debug.Log("pontos: "+pontuacao);
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Queda : MonoBehaviour
{
    [SerializeField] float TempoACorrer = 3.0f;
    MeshRenderer rendererizacao;
    Rigidbody corpoDoMuro;
    void Start() {
        //esconder a mesh do objeto
        //GetComponent<MeshRenderer>().enabled = false;
        rendererizacao = GetComponent<MeshRenderer>();
        rendererizacao.enabled = false;

        corpoDoMuro = GetComponent<Rigidbody>();
        corpoDoMuro.useGravity = false;
    }
    void Update()
    {
        //Time.time, o tempo que passou desde o inicio de play no jogo
        //Debug.Log(Time.time);
        if(Time.time > TempoACorrer){
            //Debug.Log("ja passaram 3 segundos");
            rendererizacao.enabled = true;
            corpoDoMuro.useGravity = true;
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Roda : MonoBehaviour
{

[SerializeField] float rodaX = 0.0f;
[SerializeField] float rodaY = 0.50f;
[SerializeField] float rodaZ = 0.0f;

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(rodaX,rodaY,rodaZ);
    }
}
Tags : , ,

Parte1 – o meu projeto (aprender)

coisas interessantes:
tecla F para centrar no objeto que queremos,
realizar um reset nas propriedades com o lado direito do rato no inspetor,
alt+botão esquerdo do rato, selecionado o objeto podemos mover em torno dele

coisas usadas e instaladas:
visual studio code
no VSC instalar o Unity Code Snippets
no VSC instalar o C#

Tags : , ,

Teclas de atalho no Unity

ou

Tags : , ,

Instalação do Unity

Provavelmente por já ter tido uma instalação de uma versão do Unity, e que foi apenas removida pelo uso do Add/Remove programs em ambiente windows, tive problemas em voltar a instalar.

Surgia sempre o erro de “Installation Aborted” instalação ficava a meio caminho.

A solução foi instalar a interface (hub) de instalação do Unity mais antigo deste local (LINK) e de seguida fui instalar o hub da versão mais recente e funcionou!

Vou usar a versão do Unity 2020.2.4f1, parece que é a mais recente e é uma versão final..

+infos(sobre o erro): LINK

Tags : , ,

Caravel: Set Forth

“Caravel: Set Forth”, mais um jogo com malta portuguesa no desenvolvimento :)

+infos(oficial): https://www.caravelgame.com/

Tags : ,

Novo curso online pela Gamedev.tv

A malta da Gamedev.tv está a disponibilizar mais um curso online com o Unity: Unity Multiplayer: Intermediate C# Coding & Networking. Desta vez é um curso com o qual tenho um particular interesse já que é sobre o desenvolvimento de um RTS com a possibilidade de ser jogado com dois ou mais jogadores.

+infos(oficial): LINK

Tags : , ,

Referências acerca do motor Godot!

Godot Tutorials (2D, GDScript, Programming Basics).
Emilio (2D, GDScript and VisualScript).
GDQuest (2D and 3D, GDScript, VisualScript and C#).
Game Development Channel (2D, GDScript).
Game Endeavor (2D, GDScript).
Game from Scratch (2D and 3D, GDScript and C#).
HeartBeast (2D, GDScript).
Jeremy Bullock (2D and 3D, GDScript, VisualScript and C#).
KidsCanCode (2D and 3D, GDScript and VisualScript).
Mister Taft Creates (2D, GDScript).
Miziziziz (2D, GDScript).
P1X / Krzysztof Jankowski (3D).
Pigdev (2D, GDScript).
Steincodes (2D, GDScript and VisualScript).
TheBuffED (2D, GDScript).
Code with Tom (2D and 3D, GDScript).
BornCG (3D, GDScript).
Gonkee (2D, 3D, GDScript, Shaders).

+infos(oficial): LINK

Tags : , ,

Criando jogos com Flutter e Flame, com Renan Araújo

Não conhecia esta “framework” de nome Flutter (made by Google), parece interessante para o desenvolvimento de apps hibridas, mas também dá para jogos usando o Flame. Fica a referência para um pequeno workshop online acerca deste tema.

+infos(o video): https://youtu.be/0nl6CZJiFnY?t=4456

+infos(o autor): http://caraujo.me/

+infos(flutter): https://flutter.dev/

+infos(flame): https://pub.dev/packages/flame

Tags : , , ,

Cursos e aprendizagens online (Unity)

Coleção interessantes sobre alguns dos assuntos de trabalhar com o Unity

+infos(): https://www.raywenderlich.com/unity

Tags :

Brackeys, the end.

O canal de youtube e comunidade do Brackeys vai terminar. Foi dos primeiros canais que segui já que tem vídeos muito interessantes para explicar o uso do Unity e assuntos correlacionados como é o caso da linguagem de programação c# ou de modelação de objectos.

Os vídeos e os outros canais de suporte vão ficar activos, apesar do projeto terminar.

+infos(listas no youtube): LINK

+infos(página oficial): https://brackeys.com/

Tags : , , ,

Concurso js13kGames

E que tal entrar num concurso para desenvolver um jogo, durante um mês? requisito o jogo tem que ser desenvolvido em javascript, numa qualquer biblioteca, e só pode ocupar 13k no máximo!

“We want to kick-start 2020’s JS13kGames coding competition with you. Together with the competition’s creator, game developer and Mozilla Tech Speaker Andrzej Mazur, you will learn about the competition’s history, this year’s theme and tips for the upcoming month of coding.

Js13kGames is a JavaScript coding competition for HTML5 Game Developers. The fun part is the file size limit set to 13 kilobytes. The competition starts on Tuesday (August 13th) and runs for an entire month. The theme for 2020 will be announced on 13th August.”

interessante também a quantidade de referências que este site tem acerca de ferramentas para o desenvolvimento de videojogos

+infos(oficial): https://js13kgames.com/

Tags : ,

Humble Game Creator bundle (uma campanha)

Um conjunto de assets para o desenvolvimentos dos jogos, e da lista consta:

Music:
Locked contentTales Of The Far East
Inspirational Music Pack Vol 1
Retro Music Pack
16-Bit Fantasy Action Music Pack
Grand Adventure Music Mega Pack
Madness Music Pack
Inspirational Music Pack Vol 2
Inspirational Music Pack Vol 3
Inspirational Music Pack Vol 4
Dragon’s Den Resource Pack
Survival Horror Music Mega-Pack Vol.2
Nightmares Music Pack
Classical Adventure
Medieval Music Pack
Creature Feature SFX

Graphics:
Sci-Fi Backgrounds
Backgrounds
2.5D Character Pieces Vol. 2
PVGames Sci-Fi Game Assets
Japanese School Interior Game Assets
Forest Graveyard Game Assets
2.5D Character Pieces Vol. 3
Batting Center Game Assets
2.5D Character Pieces Vol. 1
Pixel Animations And Effects
Train Station Game Assets
2.5D Medieval Buildings Vol. 2
2.5D Medieval Buildings Vol. 1
Kanagawa Game Assets
Omega Modern Graphics Pack
Japanese Arcade Game Assets + Music
Mythos: Reawakening
2.5D Monsters: Daemonum Infernum
2.5D Nature Pack Vol. 1

Sprites:
Horror City Sprite Pack 1
Horror City Sprite Pack 2

Tileset:
CyberPop Interior Tiles
Horror City Sewer & Factory Tiles
Japanese Urban Accessories Pack
Horror City Tile Pack

Battlers:
Seraph Circle Monster Pack II
RPG Battlers 3rd 50 Monsters
RPG Battlers 5th 50 Monsters Shades of Battle
Seraph Circle Monster Pack I
RPG Battlers 2nd 50 Monsters
RPG Battlers 1st 50 Monsters
RPG Battlers 4th 50 Monsters
RPG Battlers 6th 50 Monsters Evolution
Badass Bosses Monster Pack
Sci-Fi Foes Monster Pack
Fantasy Beasts Monster Pack
PV Games Humble Bundle Exclusive Pack
Seraph Circle Monster Pack III

Software:
001 Game Creator
Pixelmash

+infos(campanha): LINK

Tags : , , , , , ,