Month: March 2021
Lisbon Game Conference 2021
durante os dias 23 e 24 de abril vai decorrer em Lisboa a conferência Lisbon Game Conference que conta com a organização por parte do NET- ISCTE.
o programa ainda está para ser definido mas em breve vão haver mais informações! para já começaram as inscrições..
+infos(oficial): https://netiscte.pt/lisbongameconference
Proposta de trabalho (para Lisboa)
Tarefas:
“Working with Live Ops Designers, Artists and Marketing teams to eliminate issues of Live game events and to validate that these events have reached the targeted quality level;
Compile trackers and reports for regression, checklists and coverage;
Proactively pick up testing requests from Live Ops, and Marketing teams;
Find and enter high-quality issues based on department standards and perform edge case scenario tests to ensure fixes have no knock-on effects;
Verify In-game events and Monetisation implementation for issue fixing, changes or tuning before Live engagement;
Responsibility for a some specific areas of the game which includes:
Point of contact for testing areas of Live Ops based projects for other teams
Initiate conversations with Live Ops Designers, Artists and Marketing teams involved in in the specific areas of the game;
Interface with other in-house QA, the Outsourced QA Team & development, art and management team members involved in the specific area of the game on a daily basis;
Organise and review testing by other in-house and/or outsourced testers;
Support for the Content Team on testing Live Operations events and dynamic changes in a live game environment.”
Requisitos:
“At least one year experience in a QA position on either Mobile or Console;
Interest and knowledge of mobile platforms (Amazon, Google Play, Apple);
Strong ability to work under pressure and to meet given deadlines;
Good communication skills and able to work as part of a team;
Keen eye for detail;
Previous experience with black-box testing;
Experience in Live Service based gameplay, Desirably on mobile devices;
Previous experience working in the games industry;
Understanding the usage monetisation on either Mobile or Console;
Previous Quality Assurance experience with Freemium mobile games;
Passionate and experienced social mobile games player;
Has the testing knowledge to provide constructive feedback to address challenges that come up within the project;”
(é uma excelente oportunidade para quem quer entrar nesta industria.. )
+infos(oficial): LINK
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!!!
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
Proposta de trabalho (para Lisboa)
Gameplay Programmer
Experiência com implementação de mecânicas de gameplay, noções de “game feel” e sentido crítico.
Artista Generalista
Com foco em 3D, noções de UI e familiarizado com implementação no Unity.
Proposta de trabalho (para Londres)
O estúdio/empresa First Light Games está à procura de “um senior developer com bastante experiencia(tinha preferência com Lead/Director experience)” para ir para Londres.
Requisitos:
“5+ years professional experience as a software engineer working in a game development team (+7 for technical Director).
Knowledge of scalable software architectures and distributed services
Experience in OOP with Unity3D in C#
Experience shipping a game on mobile
A passion for making games!”
+infos(oficial): https://firstlight.games/job-page-01
+infos(rede social): LINK
Game Production Studies (um livro)
Mais um daqueles livros que é para ler, sendo que neste caso os trabalhos de investigação que constam no livro são as seguintes:
Introduction: Why Game Production Matters?
Hobbyist Game Making Between Self-Exploitation and SelfEmancipation
Self-Making and Game Making in the Future of Work
Should I Stay or Should I Go? The Circulations and Biographies of French Game Workers in a ‘Global Games’ Era
Intermediating the Everyday : Indie Game Development and the Labour of Co-Working Spaces
Game Developers Playing Games : Instrumental Play, Game Talk, and Preserving the Joy of Play
Game Development Live on Twitch : Observations of Practice and Educational Synergies
Unity Production: Capturing the Everyday Game Maker Market
More Than One Flop from Bankruptcy : Rethinking Sustainable Independent Game Development
How to Study Game Publishers: Activision Blizzard’s Corporate History
Who Creates Microtransactions : The Production Context of Video Game Monetization
Regulating In-Game Monetization : Implications of Regulation on Games Production
Promises of the Periphery : Producing Games in the Communist and Transformation-Era Czechoslovakia
Construction and Negotiation of Entrepreneurial Subjectivities in the Polish Video Game Industry
The Development of Greater China’s Games Industry : From Copying to Imitation to Innovation
Before and After: Towards Inclusive Production Studies, Theories, and Methods
Este livro foi editado por Olli Sotamaa, Jan Svelch.
Existem outros deste grupo de trabalho que parecem ser também interessantes e que são:
Persuasive Gaming in Context (free)
Minor Platforms in Videogame History
Digital Gaming and the Advertising Landscape
Transnational Play Piracy, Urban Art, and Mobile Games
+infos(oficial): https://www.aup.nl/en/series/games-and-play
Civilization VI – New Frontier Pass
Não que tenha tido muito tempo para jogar videojogos nos últimos tempos, e devia, mas vou estando atento ao que vai saindo para o mercado, mais concretamente os jogos que eu sei que vou gostar, os tais RTS. Um desses casos é o Civilization, que pela primeira vez vai dar um grande destaque a Portugal :) na sua versão mais recente o Civilization VI – New Frontier Pass.
e ainda
Vou querer jogar.. vou mesmo!
+infos(oficial): https://www.civilization.com/
Proposta de trabalho (em Lisboa)
O centro de investigação Hei-Lab da Universidade Lusófona tem disponíveis três vagas para alunos licenciados na área de videojogos ou similares (candidaturas até 26 de Março).
2 Vagas – Bolsa para licenciado em áreas de jogos ou afins, para desenvolvimento de aplicações de serious games em VR
+infos: http://www.eracareers.pt/opportunities/index.aspx?task=global&jobId=132239
1 Vaga – Bolsa para licenciado em áreas de jogos ou afins, para desenvolvimento de aplicações de serious games, incluindo-se ambientes imersivos.
+infos: http://www.eracareers.pt/opportunities/index.aspx?task=global&jobId=131929
+infos(Hei-Lab): https://hei-lab.ulusofona.pt/
“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
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
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(); } } }
Humble Software Bundle: Fresh Start Game Dev Assets Bundle (uma campanha)
Mais uma campanha da malta da Humble.. e desta vez com assets para o desenvolvimento de videojogos. Da lista de prendas desta campanha consta:
Graphics
Cyber City Autoshop Interior Tileset
Isometric Dungeon Designer Expansion
Gothic Castle Asset Pack
Cursed Kingdoms Battlebacks
Medieval High Seas
Medieval Townsfolk
Tiny Tales Worldmap Tileset Pack
RPG Battlers – 9th 50 – 50 more Shades
Horror City – Hospital Tiles
Horror City – Retail Tiles Add-on
Visustella Modern City Vol 1
Visustella Modern City Vol 1
Isometric Dungeon Designer
RPG Battlers – 7th 50 Time Fantasy Tribute
Tyler Warren RPG Battlers – Lost Levels
Isometric Dungeon Designer Outdoor Edition
Visustella Modern City Vol 2
Cursed Kingdoms Monster Pack
Crystal Cavern Asset Pack
Overworld Battlebacks
Tiny Tales Dungeon Tileset Pack
RPG Battlers – 8th 50 More Time Fantasy Tribute
Visustella School Horror Vol 1
Cursed Kingdom Dungeon Tileset
Downtown Dungeon
Isometric Dungeon Designer, Cyberpunk Edition
Rogue Encampment Game Assets
2.5D Character Pieces – World War II
Medieval Warfare Knights Templar Bundle
Tiny Tales Overworld Tileset Pack
Medieval: Bosses
2.5D Scorching Sands
RPG Battlers – Pixel Style 1
Slasher Forest Tile Pack
2.5D Snow and Ice
2.5D World War II Tiles
Animated FX
Animations Select – Dark
Animations Select – Earth
Animations Select – Water
Animation Pack: Indirect
Medieval Heroes I
Animations Collection 2 – Quantum
Animations Select – Thunder
Animations Collection III: Thaumaturgy
Comic Book
Galefire – The Legendary Captain Slayde
Animated FX, Exclusive to Humble Bundle
Animation Pack: Support
Animation Pack: Weapon
Animation Pack: Elemental
Graphics, Exclusive to Humble Bundle
Rural Japan Asset Pack
Music, Exclusive to Humble Bundle
Nightmares Vol. 2
Madness Vol. 2
Inspirational Music Vol. 5
Music
8-Bit Music & SFX
Retro Fantasy Music Pack Vol. 01
Cyber City Music Pack
Storyteller’s Music Pack
Audio
Sci-Fi SFX
+infos(campanha): https://www.humblebundle.com/software/fresh-start-game-dev-assets-software
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); } }
Os melhores jogos de RTS (para a PC Gamer)
Os editores da revista PC Gamer, decidiram apresentar de forma algo complexa uma série de nomes de jogos de RTS que eles classificam como sendo os melhores de sempre.. bem, de sempre é algo limitado já que pelo que percebi eles olham muito para os tempos modernos esquecendo algumas das relíquias que saíram e que tiveram o seu tempo e espaço, bem como glória (por exemplo onde é que está o Settlers?)
Da tal lista constam os seguintes jogos:
Crusader Kings 3
Total War: Three Kingdoms
Total War: Warhammer 2
Europa Universalis 4
Civilization 6
Sins of a Solar Empire
Stellaris
Endless Legend
Alpha Centauri
Age of Wonders: Planetfall
Iron Harvest
Battlefleet Gothic: Armada 2
Northgard
Homeworld
Command & Conquer: Red Alert 2
Homeworld: Deserts of Kharak
Supreme Commander
StarCraft 2
Warcraft 3
Company of Heroes
Rise of Nations
Warhammer 40,000: Dawn of War 2
Battletech
Into the Breach
XCOM 2
Invisible Inc.
DEFCON
Unity of Command 2
Hearts of Iron 4
Steel Division: Normandy 44
Total War: Warhammer 3
Homeworld 3
Humankind
Third Age: Total War
XCOM: Long War
Crusader Kings 2: A Game of Thrones
Não concordo com ela.. faltam aqui coisas e não sei quais é que foram os critérios para a elaboração da mesma, mas acho que um deles foi o de serem jogos que ainda se jogam!
+infos(oficial): LINK
LDtk , 2D level editor
Encontrei uma ferramenta gratuita que permite editar níveis no formato de 2D. Parece ser bastante simples e intuitiva, e tem como formato de saída diversas linguagens.
De acordo com o autor: “My goal is to provide a level editor that has all the important core features and to do them right, with a modern user interface/experience.”
+infos(oficial): https://ldtk.io/
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#
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
Novos talentos Fnac videojogos 2020
Da lista inicial de candidatos:
Chama, ST Studios,
Lyto, Trochi Studio,
Samshcart ultra, Game Dev Técnico
Vacuuman, Rogério Silva
Dynasty Rush, Pedro Teixeira
Dumo, RAWEGG
Estudasses, oh filho, Daniel Pinto
Tetrascape, Mieicrawler & FEUP Archives
Endeless Sunset, Y2m Studio
Little Girl, Arboresis Studio
Maia: unhappily ever after, Perpétuos Games
Overtime, Laindback Strart
Steamchain, Wild lynx Studios
Circuit Slimes, SomethingFell
RPS. José Fonseca
Manage my Kingdom. ETIC
The Infamous, João Moreira
Subject 5, Tiago Fino e João Martins
Pulcar Vermis: Re, Vitaly Davydovych
Blade Rift, Gonçalo Lopes
The ship, Francisco Silva e Inácio Maio
The thing, S-Designs
i11, Paulo Arinto
Da lista resultaram seis finalistas:
Escape, de Pedro Viegas, +infos: LINK
Careto, MA Studios, +infos: LINK
Nur, BebBed Games, +infos: LINK
Evil Below, Barbosa and Ortega, +infos: LINK
Tattoo Burner, Ricardo Nunes, +infos: LINK
NJINGA: the democratic warrior, Team NJINGA, +infos: LINK
+infos(video): LINK
Opiniões
A opinião de cada um vale o que vale, mas é sempre interessante ouvir e ler algumas daquelas que vale a pena. Já tinha em tempos passado os olhos pelo portal goodreads.com onde podemos encontrar opiniões de pessoas que leram livros .
E foi neste portal que encontrei o livro “Sid Meier’s Memoir!: A Life in Computer Games” e que foi escrito pelo próprio Sid Meier!!! Este senhor é um dos game designers que eu mais admiro, foi pelas mãos dele que eu tive conhecimento do jogo de RTS Colonization (um dos melhores que joguei) e posteriormente o jogo e sequela Civilization. Nesta altura ainda não sei muito bem do que se trata o livro mas já está na lista de aquisições para muito breve!!
Também encontrei neste portal uma lista mais ou menos extensa (50 visiveis), e quase que organizada, acerca de “Books on Video Game History”. É sempre um tema que me interessa, principalmente se forem jogos indie e se foram jogos pelos quais eu passei várias horas. E neste caso também encontrei uma lista acerc do tema
+infos(Sid Meier): https://www.goodreads.com/book/show/50489373-sid-meier-s-memoir
+infos(a lista dos históricos): LINK
+infos(a lista do game designer): LINK