Category: Videojogos

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 : , ,

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 : , , , , , ,

Mais um canal.. com o Godot

Encontrei este canal com vídeos recentes e interessantes acerca do desenvolvimento de um videojogos com o motor Godot.

+infos(youtube): LINK

Tags : , ,

5 Tips for awesome Game Design Docs

Da índia surge um developer que dá algumas dicas acerca dos Game Design Docs:
#1 always make a revision history and table of contents
#2 use mockups sketches references
#3 create asset lists
#4 customize your GDD
#5 update your GDD

+infos(o video): https://youtu.be/dgaUiGF9mkI

Tags : , ,

Assets de batalhas (WW)

A malta da Synty Store disponibilizou mais um pack de batalha e desta vez com referência à primeira guerra mundial. Para se ter acesso a este pack é necessário já ter o pack de guerra e o custo final de tudo é de:
POLYGON – War Pack – 80 euros
POLYGON – War Map – WWI – 18 euros

Assim e pelo POLYGON – War Map – WWI:

POLYGON – War Pack

+infos(War Map – WWI): https://syntystore.com/products/polygon-war-map-wwi

+infos(War Pack): https://syntystore.com/products/polygon-war-pack

Tags : , ,

Humble RPG game development assets bundle: 2d art, music and sound effects (uma campanha)

Um conjunto de objetos para ajudar no desenvolvimento de videojogos do género RPG, da lista consta:
2D Characters Male
2D Hand Painted Mine Tileset
2D Hand Painted Snowland Tileset
58 Fantasy RPG Items
Souls RPG Graphics – Town Tileset
Souls RPG Graphics Tiles – Grasslands
Ancient Game SFX Pack
Clean City Game Assets
Cute RPG UI Kit
Dark RPG Chiptune Soundtrack Bundle
Dialogue Boxes
Dwarves vs Elves RPG Sprites
Elemental Magic Sound Effects Vol 1
Elemental Magic Sound Effects Vol 2
Fantasy Character Bundle
Fantasy RPG Items Vol 2
Farm & Fort Tileset & Icons
Forest Isometric Block Tileset
Frozen Village Isometric Block Tileset
Hand Painted Extra Objects Tileset
Human Fantasy Animated Pack
Interface SFX
Inventory Sounds Pack
Japanese Bar Interior Assets
Japanese City Game Assets
JRPG Character Pack
JRPG Music Pack
Lighthearted RPG Location Soundtrack Bundle
Lighthearted RPG Soundtrack Bundle
Medieval RPG UI Kit
MMORPG UI Kit
Monster Creature Animated Pack
Monster Creature Super Mix
Osaka City Game Assets
Pixel Art Beach Tile Set
Pixel Art Forest Road
Pixel Art Medieval Fantasy Characters
Pixel Art Medieval Interiors
Pixel Art Medieval UI Pack
Pixel Art Old Castle
Pixel Art Town
RPG Inventory – Fantasy Battles Axes
RPG Inventory – Fantasy Bows
RPG Inventory – Fantasy Daggers
RPG Inventory – Fantasy Potions
RPG Inventory – Fantasy Spears
RPG Inventory – Fantasy Swords
RPG Music Pack – Complete Collection
Side View Animated RPG Battlers
Souls RPG Graphics – Desert Tileset
Soul’s RPG Graphics – Sprites
Spells & Ability Icons
Survival Icons
Tyler Warren RPG Battlers Pixel Style
Warrior Adventure Game Characters

+infos(campanha): LINK

Tags : , , , , , ,

Humble Learning game coding and development bundle (uma campanha)

Está a decorrer uma campanha com referências a cursos para aprender a programar jogos e a desenvolver. Da campanha surge a lista de:
Applied Computer Vision with Unity and Azure
Battle Royale – Multiplayer Projects
Build a Micro-Strategy Game
Build an RPG Adventure in Phaser
C++ Programming for Beginners
Create a 2D RPG with Godot
Create Your First 3D Game with Unity
Develop a Puzzle Platformer Game
EasyAR and Marker-Based Apps for Beginners
Godot Game Development for Beginners
Humanoid Animation Tools for Beginners
Intro to Game Development with Unity
Intro to Multiplayer Game Development
Learn C++ by Making a Text-Based RPG
Player Authentication with Azure PlayFab
Python Programming by Making a Game
Real-time Strategy Project – Unit Movement
RPG – Multiplayer Projects
RPG Development with Phaser
The Complete Blender Course
The Complete Procedural Terrain Generation Course
Tile-Based Math Game Project
Turn-Based Game – Multiplayer Projects
Unity 2D Projects – Super Plumbers
Unity Cinemachine for Films and Games

+infos(a campanha): LINK

ps_ eu até achei interessante esta campanha por causa de alguns dos cursos que ele tem, contudo uma análise com mais critério apercebi-me que afinal estes cursos são cursos que fazem parte de um pack mais completo da malta da zenva.com nomeadamente do percurso Strategy Game Development Academy e que prefazem um total de 12 cursos online

Tags : , , , , ,