Tag: Unity

Humble Software Bundle (campanhas)

Humble Software Bundle: Massive RGP Game Development Assets

Mais uma campanha por parte da malta da Humble bundle, desta vez vários cursos para aprender a trabalhar com o Godot v4 e v3
“Master Godot—the lightweight, fast, and free game engine behind hits like Sonic Colors: Ultimate. Whether you want to use the brand new version 4 or the battle-tested version 3, these courses will get you building platformers, RPGs, first-person shooters, city-builders, strategy games, and more—no prior experience required!”

da lista consta:
Create a 2D Platformer with Godot 4
Develop a 3D Platformer with Godot 4
Build a Micro Turn-Based RPG with Godot 4
Real-Time Strategy Game with Godot 4
Intro to Game Design
Level Design for Beginners
Intro to Rigging Models in Blender
Intro to 3D Modeling with Blender
Intro to Pixel Art with Photoshop
Build a First-Person Shooter with Godot 3
Construct a Strategy Game with Godot 3
Create a 2D RPG with Godot 3
Develop a 3D Action RPG with Godot 3
Godot 3 Game Development for Beginners
Godot 4 Mini-Projects
Intro to Godot 4 Game Development

+infos(oficial): LINK

 

Humble Software Bundle: Massive RGP Game Development Assets

Mais uma campanha por parte da malta da Humble bundle, desta vez vários cursos para aprender a desenvolver jogo no unity do género RPG
“Train yourself to develop your own role-playing sagas with these courses from GameDev.tv! Discover how to design and code core systems for combat, dialogue, quests, and other RPG essentials using Unity. Learn how to make art using Blender by creating your own awe-inspiring dragon. Plus, get packs of assets to help you put together your own open worlds.”

da lista consta:
Unity RPG Core Combat Creator Course
Unity RPG Dialogue & Quests Course
Unity RPG Shops & Abilities Course
Unity RPG Inventory Course
Unity 3rd Person Combat Course
Ultimate RPG Environments – Mountainscapes
Ultimate RPG Environments – Sprawling Valleys
2D RPG Template Starter Kit
RPG Music Pack
Open World Terrain Pack
Create A Dragon in Blender Course
Blender to Unity Mini Course

+infos(oficial): LINK

Tags : , , , , , , , , , , ,

Planear para o multiplayer

A malta do Unity anda a divulgar/propagar para que os developers consigam implementar o modo de multiplayer de uma forma acessível, e com propostas para a resolução dos problemas que possam surgir, em forma de produtos/serviços que alugam e documentação.

Uma série de webinars apresentados em direto e também foram atualizadas várias referências nos docs para esta opção. algo a explorar.

Um video setp by step:

+infos(oficial): https://unity.com/products/game-server-hosting
+infos(oficial):  https://docs-multiplayer.unity3d.com/

A malta da Game Dev Academy partilhou um tutiroal sobre o assunto no Unity:

+infos(tutorial multiplayer): LINK

Tags : ,

Humble Software Bundle (várias campanhas)

Neste final de ano estão a decorrer várias campanhas no site Humble relacionadas com o desenvolvimento de videojogos. Neste momento:
The no-code GameDev Bundle
Unreal Engine Ultimate Game Dev Assets
Unity Art Bundle Holiday Encore
Unity Tools Bundle Holiday Encore
Unreal Nature & Fantasy Assets

A primeira está relacionada com o uso da plataforma GDevelop “The no-code GameDev Bundle” e da qual consta:

“Want to develop games without having to learn a programming language? Tap into the power of GDevelop, the no-code, open-source, free, and easy game-making app! This bundle features everything you need to get creating fast, including 30 asset packs with over 5000 visual, music, sound, and UI elements, plus sample games to play and provide inspiration. You can also upgrade to get up to 6 months of GDevelop Gold Premium access, unlocking even more app features. Jump into no-code game dev today, and support NPower with your purchase!”
e a lista :
3-Month GDevelop Silver
6-Month GDevelop Gold
Advanced Platformer Template
Air Hockey Game Template
Ambiances
Basic RPG Kit – Tiny Battle Edition
Battles
Black Rose 2 EP
Black Rose EP
Boat Game Template
Character Base: Short ‘N’ Stubby
Character Base: Thicc ‘N’ Juicy
Chrome Dinosaur Game Template
Division EP
Foley & Footsteps
GUI Pack: Bars ‘N’ Boxes
GUI Pack: Finger Click ‘N’ Good
Hamlets
Hand-Drawn GUI Kit
Handheld Character Pack Top D
Handheld Town ‘N’ Around
I Know Now, That I will Never Be OK
In Transit
Knife Hit Game Template
Platformer Starter Pack
Red String EP
Rescore
Rescore II
Retro
Spells 2.0
User Interface
Visual Novel Char. Creator
Visual Novel Megabundle
Wasteland Love Notes

+infos(a campanha): LINK
+infos(): https://gdevelop.io/

A segunda tem como titulo “Unreal Engine Ultimate Game Dev Assets” e da qual consta:

“Build fantastic worlds in your games with this bundle from Sidearm Studios, curated for Unreal Engine developers! This collection features a wide range of art assets for a variety of genres, including medieval towns, Wild West cities, dark dungeons, and horrific space prisons. You’ll also get a library of visual effects for spells and explosions, along with icons for equipment and characters, to help bring your game to life.”
e a lista:
Ancient Ruins
Ancient Temple
Arabian Palace
Cathedral Of The Dead
Fantasy Forest
Fantasy Magic Forest
Fantasy Stylized Megapack/Open World
Hand Painted Armor & Equipment Icons
Hand Painted Character Avatar Icons – Fantasy
Hand Painted Weapon & Equipment Icons
Horror Cafe
Medieval Castle – Castle/Village Environment
Modular Dungeon – Depths Below
Modular Medieval Stylized Town
Modular Stylized Dungeon
Modular Stylized Medieval Castle
Modular Stylized Medieval Village
Modular Stylized Underwater World
Modular Town: Saint Michel
Niagara AOE Magic Abilities
Niagara Explosions
Niagara Magic Projectiles
Restaurant/Diner Environment
Stylized Forest Pack
Stylized Graveyard
Stylized Trees & Rocks
The Vault: Horror Space Prison
Wild West Sky City

+infos(a campanha): LINK

A segunda tem como titulo “Unity Art Bundle Holiday Encore” e da qual consta:

“Bring your game to life with this bundle of incredible art assets & artists’ tools—specifically curated for Unity creators! Featuring characters, environmental elements, SFX, music, animations, and prefabs, this library of thousands of assets and creative utilities will help you realize game worlds for a wide range of genres.
Build a low-poly 3D dungeon, or craft a lush natural world with an anime-inspired look. Discover loops and tracks to score your horror game, and add the sounds of battle to your fantasy epic. Get menageries of creatures, a fantasy realm’s worth of level-building blocks, and lots more, and help support Gameheads with your purchase!”
e a lista:
Basic Motions
BIRDS PACK
Boing Kit: Dynamic Bouncy Bones, Grass, and More
Brute Force – Snow & Ice Shader
Character Creator 2D
Eternal Temple
Footsteps Sound Pack
Forest animals
Little Dragons: Tiger
Magica Cloth
Map Graph
Meadow Environment – Dynamic Nature
Monster Sounds Pack
Monsters Ultimate Pack 02 Cute Series
Party Monster Rumble PBR
Pixelate
POLYGON Dungeons – Low Poly 3D Art by Synty
ProPixelizer
Quibli: Anime Shaders and Tools
Quirky Series – Animals Mega Pack Vol.1
Quirky Series – Animals Mega Pack Vol.2
RPG VFX Bundle
Seamless Texture Generator
Toon Fantasy Nature
Total Music Collection
Ultimate Sound FX Bundle

+infos(a campanha): LINK

A segunda tem como titulo “Unity Tools Bundle Holiday Encore” e da qual consta:

“Back for a Holiday Encore! Build the game you’re envisioning with this massive bundle of versatile tools for Unity, the world’s leading platform for real-time content creation! Featuring more than two dozen utilities, systems, and other assets built with game creators in mind, this bundle will help you:
Design levels faster and build 2D and 3D worlds more efficiently
Manage animation and motion more easily
Create effects ranging from lighting to weather-filled skies
Add systems for dialogue, destruction, and more And many more…
Whether you’re dreaming of building a role-playing game, top-down shooter, or sci-fi mech sim, this bundle will help you turn your vision into a reality”
e a lista:
Archimatix Pro
Better UI
Blocks Engine 2
Bones Stimulator
Broccoli Tree Creator
CCG Kit
DestroyIt – Destruction System
Dialogue System for Unity
EndlessBook
FluXY – 2.5D fluid simulator
Fullscreen Editor
Magic Light Probes
Mech Combat Kit
Performance Tools
Prefab World Builder
Procedural Circular Health Bar Pro
RPG Cameras & Controllers
Script Inspector 3
Smart Lighting 2D
Storyteller
TopDown Engine
Train Controller (Railroad System) ULTIMATE COLLECTION
True Shadow – UI Soft Shadow and Glow
UniStorm – Volumetric Clouds, Sky, Modular Weather, and Cloud Shadows
Very Animation

+infos(a campanha): LINK

A segunda tem como titulo “Unreal nature & Fantasy Assets” e da qual consta:

“Looking for a library of art assets to build your game world in Unreal Engine? Create mountains, meadows, and forests, and populate them with dragons, goblins, rock monsters, and more with this game creator’s bundle!
This collection features high-quality, realistic environment sets for a variety of outdoor locales, including meshes, blueprints, and materials from the artists and developers at Nature Manufacture. You’ll also get a variety of fully animated, high-fidelity, customizable fantasy creatures from Infinity PBR. Get the art you need to start building in Unreal today”
e a lista:
Bone Dragon
Environment Set
Fish Man
Forest – Environment Set
Giant Worm
Goblins
Graveyard and Nature Set
Ice World
Landscape Ground Pack
Meadow – Environment Set
Mountain – Environment Set
Mushroom Monster
Nature Set
Park Photo Scanned Assets
Plant Monster
Rock Monster
Scorpion
Spiders
Treant Monster Creature
Winter Ground Pack
Young Dragons

+infos(a campanha): LINK

Tags : , , , , , , , , , , ,

Humble Software Bundle: Unity Tools Bundle e mais..

Uma campanha para se ter acesso a alguns cursos e também a alguns assets. Do texto de apresentação consta: “Want to create your own game in Unity or turn your development passion into your profession? Pick up this bundle featuring 100+ hours of online courses from GameDev.tv! Get a complete education in coding 2D and 3D games in Unity using C#, and build your own multiplayer game using Mirror. Discover how to create and publish mobile games, and explore essential dev techniques for a variety of genres”

da lista surge:
Unity Turn Based Strategy Course
Unity 3rd Person Combat & Traversal Course
Complete C# Unity Game Developer 2D Course
Programming Design Patterns For Unity Course
Unity Visual Scripting Course
Unity Multiplayer Online Course | Intermediate C# Coding & Networking Using Mirror
Complete C# Unity Game Developer 3D Course
Unity Mobile C# Developer Course
Data Oriented Tech Stack (DOTs) & ECS in Unity Introduction Course
Skill Builder Season 2
Elven Village Music Pack
Cube Village Asset Pack
How To Get A Job In The Video Game Industry Course
Skill Builder Season 1

+infos(oficial): LINK

Neste momento está também a decorrer uma campanha relacionada com livros de Game Design, e lista contem:
Dungeons and Desktops: The History of Computer Role-Playing Games 2e Second Edition
White Space Is Not Your Enemy: A Beginner’s Guide to Communicating Visually Through Graphic, Web & Multimedia Design Third Edition
Game Design: From Blue Sky to Green Light
Better Game Characters by Design: A Psychological Approach
Honoring the Code: Conversations with Great Game Designers
Game Design Theory: A New Philosophy for Understanding Games
Mobile & Social Game Design: Monetization Methods and Mechanics, Second Edition Second Edition
Designing the User Experience of Game Development Tools
Virtual World Design
Extending Virtual Worlds: Advanced Design for Virtual Environments
Game Design Deep Dive: Platformers
20 Essential Games to Study
Reverse Design: Chrono Trigger
Reverse Design: Final Fantasy VII
Reverse Design: Final Fantasy VI
Reverse Design: Super Mario World
Reverse Design: Half-Life
Game Audio Programming 3: Principles and Practices
The Craft and Science of Game Design: A Video Game Designer’s Manual
Narrative Design: The Craft of Writing for Games
Games as Texts: A Practical Application of Textual Analysis to Games
The Pyramid of Game Design: Designing, Producing and Launching Service Games
Professional Techniques for Video Game Writing
Write Your Way into Animation and Games: Create a Writing Career in Animation and Games

+infos(oficial): LINK

Tags : , , , , , ,

Formação gratuita: Gaming: UNITY

Tomei conhecimento acerca de uma ação de formação financiada acerca do motor de videojogo Unity. São 25horas em horário pós-laboral, duas vezes por semana a começar no dia 9 fevereiro e até dia 7 de março. O formador vai ser o José Luís Campo Silva.

O conteúdo Programático:
Editor de jogos 3D
Importação de modelos 3D; texturas e áudio
Aplicação e ajuste de texturas e iluminação
Animação de objetos, elementos e definição de sistemas de partículas
Definição de ações e sincronismo de eventos
Definição de interruptores e ações automáticas
Transição entre áreas de modelos; estrutura de níveis
Definição de limites de deslocamento; desenho de envolvente
Utilização de estruturas de deteção de colisões e sistemas físicos
Definição e extração de cenas animadas a partir do modelo interativo

e tem como pré-requisitos:
Conhecimentos prévios em Programação em C#

Entidade responsável por esta ação de formação é a EISnt – EISnt – Centro de Formação Profissional e Consultoria Formação profissional em tecnologia para empregados e desempregados financiada

+infos(oficial):  LINK

Tags : ,

Humble Software Bundle: Learn Unity Game Development (uma campanha)

Está a decorrer uma nova campanha relacionada com cursos acerca do Unity, e da lista consta:
Unity Multiplayer Course: Intermediate C# Coding & Networking
Unity Mobile C# Developer Course
Complete C# Unity Game Developer 2D Course
Complete C# Unity Game Developer 3D Course
Game Dev Skill Builder (Unity) – Season 2
Ultimate Music Bundle by Sidearm Studios
Ultimate SFX Bundle by Sidearm Studios
Programming Patterns Introduction Course
Data Oriented Tech Stack Introduction Course
Game Dev Skill Builder (Unity) – Season 1
RPG 2D Art Asset Pack
Get Git Smart Course: Learn Git in Unity, SourceTree, GitHub
Unity UIToolkit for Editor Scripting Introduction Course

+infos(oficial): 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 : , , ,

“Strategy Game Development Academy” o curso de RTS

A empresa Zenva enviou-me um email a indicar que está com uma promoção num curso que eu gostava de passar os olhos. Aliás não é um curso é um conjunto de vários cursos que depois estão associados a um perfil. Com o nome de “Strategy Game Development Academy” e do curriculum faz parte:
Level 1: Game Development Basics
Coding in Unity with C#
Building your first game
Simple game mechanics
Level 2: Strategy Game Basics
Strategy design principles
Basic resource management
Building your first strategy game
2D procedural maps
Level 3: Real-Time Strategy Games
Selecting, moving, & coordinating units
Resource-gathering
Unit combat with state machines
Enemy AI
Level 4: Popular Features
City-builder mechanics
Multiplayer games with Photon
Turn-based games
Technology trees

Mas depois com uma análise mais detalhada surge a seguinte lista do curriculum (e que eu acho que é o percurso mais natural):
Course 1: Intro to Game Development with Unity
Course 2: Create Your First 3D Game in Unity
Course 3: Build a Micro-Strategy Game
Course 4: 2D Procedural Maps for Beginners
Course 5: Develop a City-Building Game with Unity
Course 6: Real-time Strategy Project – Unit Movement
Course 7: Real-time Strategy Project – Resource Gathering
Course 8: Real-time Strategy Project – Unit Combat
Course 9: Real-time Strategy Project – Enemy AI
Course 10: Develop a Technology Tree for Strategy Games
Course 11: Discover AI and State Machines in Unity
Course 12: Intro to Multiplayer Game Development
Course 13: Turn-Based Game – Multiplayer Projects

O motor de jogo é o Unity e existem duas modalidades de aceder (pagando): 168 dólares por ano, ou 20 dólares por mês!

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

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

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

A partilha de uma experiência..

Supostamente este é um video acerca de uma experiência sobre o uso do game engine Unity..

 

Tags :

Um blog interessante.. sobre o uso do Unity

Este blog parece sobre o uso do Unity mas também sobre o desenvolvimento de videojogos :)

Tem um posts interessantes sobre retirar melhor performance deste game engine :)

+infos(blog): https://coffeebraingames.wordpress.com/

 

Tags :

Mais uma referência para ajuda no uso do Unity

Unity Cheat Sheet and Quick Reference 2018

Os temas são:
MonoBehaviour Event Execution Order
GameObject Manipulation
Vector Quick Reference
Time Variables
Physics Events
Coroutines
Input Quick Reference
Hotkeys

+infos(oficial): LINK

+infos(o pdf): LINK

Tags :

Livros sobre videojogos

Apareceram no mercado mais dois livros de introdução a ambientes gráficos para o desenvolvimento de videojogos e que são:
Unity 2018 Game Development in 24 Hours, Sams Teach Yourself, 3rd Edition – LINK
Godot Engine Game Development in 24 Hours, Sams Teach Yourself: The Official Guide to Godot 3.0 – LINK

Tags : , ,

Recording Video For Your Unity Game (tutorial)

+infos: LINK

Tags : ,

Lisbon Game Conference 2016

No próximo mês de outubro e no ISCTE (em Lisboa) vai decorrer o Lisbon Game Conference 2016. É já a terceira edição de um evento que pretende aproximar a industria do ensino ao mesmo tempo que disponibiliza um espaço para workshops e networking.

A inscrição no evento é gratuita e o programa do mesmo ainda está para ser publicado.

No ano anterior um dos workshops esteve relacionado com a introdução ao Unity.

+infos(oficial): http://lisbongameconf.iscte-iul.pt/

 

Tags : ,

Unity assets

Aqui fica um referencial de alguns assets para o Unity, livres (free):

https://github.com/unity3d-jp

https://bitbucket.org/Unity-Technologies/ 

https://github.com/crilleengvall/UnityExamples

https://github.com/Unity-Technologies

Não testei ainda nenhum deles apenas é uma colecção de referências.

Tags : , ,