3D Minigame: Portals and Level Loading – 14/12/20

I recently found my long lost 3D minigame and decided to do some catch up work on this, the things I’m missing from the game is a level loading sequence and an animated object of some kind. For my animated object I have lights flickering and a coin spinning.

For my portal, I took to the internet and came across this simple shader on Reddit. (LINK). This created a really cool parallax effect dependent on where the camera is looking. I then wrote a simple script and attached it to the portal itself.

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

public class Portal : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    private void OnTriggerEnter(Collider other)
    {
        if(other.tag == "Player")
        {
            SceneManager.LoadScene("Level2");
        }
    }
}

This is what the portal looks like in my level.

The Elevator Pitch – 10/12/20

We got the cateGORY of Sports when the wheel of doom was spun. The Sports Video Game genre is a popular one and a one that is riddled by a disease called EA Sports. Makers of some of the most popular sports games and known for monopolizing the market with FIFA Ultimate Team, its no surprise they get a bad reputation, releasing the same game year on year with a few small changes here or there, and even a recent scandal about not being licensed to use certain players names or likeness’s, whether we love them or hate them, the money the game generates for the industry is about the only good thing EA Sports do.

But what if Sports games weren’t like that, what if the boundaries of sports games were expanded upon.. what if there was a sports game that allowed a player to do whatever they wanted. With games such as FIFA, injuries are limited and the playability of these games can get a bit tiring, so the market is in need of something fresh..

PRESENTING…

BLOODSPORTS is a sports game that has no limits and no restrictions. A game that would never make it to the light of day. The concept came from the origins of a sport called Maya Ball which is an ancient sport from roughly 3000 years ago.

This game would never make it to the market because of the law and content restrictions. With that in mind, we decided to take a more realistic approach.

More Realistic Approach

eSports Manager is a more realistic approach. This sports game is a hybrid between sports and simulation. We wanted the idea to be that you manage an eSports team, you scout players to add to your team and coach them to become better players, organise tournaments and try to climb the ranks. Whilst the game is not based on a physical sport, eSports is becoming more and more popular by the day and is becoming recognised as a sport. So much so that it was part of the Red Bull X Games not too long ago, and tournaments are now featured on live TV as seen with CWL on Spike and FIFA on Sky Sports.

So with eSports as a trend, what better way to market this game other than to make it an eSport itself. Thats right! The best eSport Managers can go to head to head in quarterly tournaments to see who has the best eSport team in their game category. More importantly, your team can also gain fans by the player streaming to twitch with full twitch integration. Fans can impact the game with certain Twitch commands that can gain fans, lose fans, hold polls if you’re undecided, the list goes on, so lets see !fans in the chat. Thanks for the bits.

Storefronts and Marketing – 24/11/20

CPGD2

A storefront is essentially somewhat of a shop window, so in a digital aspect, its a website or application that sells goods and services. If we look into the gaming industry, there are many of storefronts that all offer the same products, sometimes exclusives.

Game Digital Storefronts can include the likes of Nintendo eShop, Playstation Store, Steam, Epic Games, Humble Store and EA Origin. They also tend to follow the same kind of design as to how they represent goods on sale and new games.

The Playstation store features a navigation bar at the top of the screen, firstly showcasing the latest games. At the moment, they’re showcasing Spiderman: Miles Morales which is a PlayStation exclusive. If I hop over to the Deals part of the store, we can see what they currently have as part of a promotion.

So straight away, we can see that they use a uniform approach, by this I mean everything is made out of squares and evenly spaces, they have the two top sales categories at the top, followed by 3 games that are selling well and then further categories at the bottom. When we click onto a game, this is where the magic happens.

From here we can see a nice big colour banner showcasing a screenshot from the game, We see some information about the game regarding hard drive space and multiplayer and an add to cart button aswell, it is worth noting that on the PS5, you can also add a game to your wishlist.

So how does Playstations Store Front compare to Steam or Humble?

With Steam, there is no big banner, but instead a selection of screenshots and trailers from the game, it also has a button to buy the game and then further down, features the game in a bundle. It also shows reviews and various links related to the game such as the official Discord server. Not too bad for a Storefront purely aimed at PC Gaming.. not to mention everything is accessible in browser, unlike the PS Storefront.

The Humble Store keeps it simple and compact, it shows the platforms the game is available on when you buy it from them, the price, a wishlist button and a few screenshots from the game, represented in a bigger format than what Steam does. The reviews are down towards the bottom of the page, and the game description is about half way down.

So the lessons we can take from these Storefronts is to keep things simple, share screenshots and trailers from our games. A wishlist is also an important feature because this allows developers and creators to see how many people are wanting to play their game or have shown interest in their game. Developers might find one store more engaging than another so will target that store’s format when producing marketing content.

Three games at the moment that are prominent across all pages are Assassins Creed Valhalla, Call of Duty Black Ops Cold War and Cyberpunk 2077. They grab my attention because I’ve seen it on every storefront, the reason for this? Well they are three goliath franchises that normally get yearly releases, with the exception of Cyberpunk, and they tend to sell well to the masses, partly due to marketing, but also due to already being established as fan favorites.

Cyberpunk 2077 is different and the reason for this is because the game developers, CD Projekt Red, have made their mark in the market already with a small game known as The Witcher 3: Wild Hunt. The game drew so much attention because it pushed consoles and PC’s to a different level with its amazing graphics and massive open world. So expectations are there for Cyberpunk 2077 and with expectations comes anticipation.

If I was to design a storefront for the GameJam game we made earlier this year, Zero: Neon Rush, I would make it look like this… and I have, I like this design because it emphasises the colours and neon feel the game delivers, the writing is easy to read and I’ve included a few screenshots aswell as the video recording of the game being played.

Zero: Neon Rush by NextGenJordan

Game Design Trends and Developments – 17/11/20

CPGD1 – CPGD3

A trend in the video games industry is defined as what’s currently popular, not necessarily in video games, but with the players themselves. If we’re talking by today’s standards, then we’re looking at things like Battle Royale, Loot Crates and eSports.

The most popular by far at the moment is Battle Royale and what I have noticed personally is that each publisher, whether it be Ubisoft with Hyper Scape, EA with Apex Legends, Activision with Call of Duty: Warzone or Epic Games with Fortnite, a lot of publishers and developers all want a piece of the pie.

CoD Warzone beginner guide: Top 5 tips to excel

Because of the nature of the genre, these games can support tons of players in one match, normally with 3-4 friends per group. They then take customization options away from players and put them either behind pay walls or a virtual currency, and because no one wants to look the same people will be willing to pay for such items.

Another trend, as mentioned above, would be eSports. eSports, in my personal opinion, would be a healthy component for any multiplayer game to include. Games such as Call of Duty and Overwatch have seen some of the best eSports leagues in the world and most of all, from a developers point of view, they are worth tons of money.

Call of Duty only just recently started to Franchise eSports teams and have had some heavy investment, because of this they are able to have a global competition with teams such as the London Royal Ravens or Chicago Huntsmen, making it location based franchises is not only a smart move for the sense of pride among players, but also for supporters. Supporters will then go on to buy apparel or in-game items.


In terms of video game development, a couple of trends that are on the rise are VR/AR and Cross-Platform. VR/AR is on the rise because it essentially is a Gamers haven, to be able to place yourself into a more immersive experience for total control on what you want to do and put yourself into the shoes of the protagonist is all gamers have ever wanted.

The same thing applies for AR, for years, people have been wanting to become Pokemon Trainers, myself included, and with that, Pokemon GO comfortably does this, not only does it use your real location, but it also allows you to catch, battle and view your Pokemon in real life space. As technology has developed, it has allowed developers to be more creative and allow them to create such experience for their players.

Niantic Support

Cross-Platform is a development trend that is fresh off the press. From a console point of view Playstation players and XBOX players have forever been at war with each other with the odd PC player trying to get involved. Now there is a sudden peace and harmony between the two fans as they have been granted freedom and choice.

It is worth noting that Fortnite was probably the straw that broke the camels back with this. They embedded cross-platform into the game and it only had to be activated, however Sony were late to the party, there was a pushback with Sony saying their techology won’t make it easy for developers to make crossplay a reality, but with Fortnite, they said its there, it’s ready to go, we just want your approval.

Fortnite has removed cross-play with Xbox One, PS4 from the Nintendo Switch


So after rigorous testing, Crossplay became a thing and now developers and players alike, are reaping the rewards. I think the next logical step for this to evolve would be cross-progression. HiRez Studios’ Smite is a perfect example of Crossplay, cross-progression and Sony problems.

As an example, my Smite account on PS4 is the furthest developed, when I load up my Switch to play Smite, my progress is non-existant. If I had started my Smite account on PC or XBOX, My progress would be transferred to everything but my PS4, and it all comes down to Sony and the way their technology works.

There are also trends that have come to fruition and died, mostly because technology advanced. One of these trends would be 16bit games, these sorts of games are very rarely seen nowadays but in the past, consoles such as the SNES or Sega Megadrive would feature great titles like Super Mario World and Sonic the Hedgehog 2.

1991's Super Mario World Is the Best Wii U Game Yet | WIRED


So whilst the trend may not be as popular now, games such as Crypt of the Necrodancer have taken 16bit to the next level by introducing modern music that is rhythm matched with gameplay.

Crypt of the NecroDancer — DarkStation


Anatomy of a C# Script – 10/11/20

When creating a C# script from Unity, it creates a script that includes Unity API at the very top, it then names the class and then provides two functions.

The first function is Start. Any code placed within start will be called by Unity before any gameplay begins, as the name suggests, it is an initiation period in the script that runs when first called.

After that, there is the update function. The update function runs every frame, this is particularly useful for motion, triggers and responding to an input from the user.

Using Unity.Engine;
Using System.Collections;

public class MainPlayer : MonoBehaviour
{

public string myName;
public int myAge;

//Use this for initialization
void Start()
{
      Debug.Log("Hi My Name Is, what my name is, who my name is, chika chika... " + myName + " and I am " + myAge + " years old"; 
}

//To be called every frame
void Update()
{
}

This code will print in our console part of the lyrics to an Eminem song, followed by the users name and then their age. We are then free to create any other functions our script may require to make our game run.

Integrated Development Environments – 10/11/20

An Integrated Development Environment (IDE) is essentially where all the coding development parts of our games are normally completed. They exist to correctly format pieces of code and maybe to even help us correct the code should there be an error, it can even act as a basic text editor.

It would be no use if Unity threw up an error about some code that we may have made, for us to then not be able to find out what the error was or to help us correct it, especially in programming, a lot of mistakes can be made and an IDE can help us avoid or fix them.

IDE Examples

Visual Studio // Android Studio // Brackets.IO

An example of an IDE would be Microsoft Visual Studio. Visual Studio is normally the go to IDE for Unity developers because it is feature rich and integrates nicely with Unity.

When a new script is made in Unity, it will add the correct API’s for us to code correctly within Unity. This is noted at the top of our script when making a new script and it looks like this..

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.SceneManagement;
 using UnityEngine.UI;

Without those parts, Visual Studio wouldn’t recognise most of our code as it uses multiple components from Unity API. As mentioned above, it helps us correctly format our code so when making a new function or an if statement, it will indent the code and automatically place curly brackets, along with this it also utilizes an autocomplete function which can also be quite annoying.

Another cool feature of Visual Studio is its ability to colour certain parts of code so its easy to understand what code is referring to what, this is known as Syntax Highlighting.

Other examples of IDE’s would be Android Studio. Android Studio is needed to build android apps and dispatch on to Android Devices in a legitimate way. What I mean by this is you don’t just build the APK and download it to your device, the Android Studio IDE will sign, license and can even publish your apps to the Google Play Store.

It also has many of the same features as Visual Studio in terms of the formatting and syntax highlighting, However one unique feature is that it has an Android Emulator so you can test your apps without having to deploy the app to a device.

Finally there is also Brackets.io. Brackets.io is an online IDE that includes many of the features Visual Studio has, however it doesn’t use up as much space as Visual Studio as it doesn’t need to be downloaded and all the code is compiled in browser. It also has plug in support that can help make coding that tiny bit simpler. The one issue with this particular IDE however is when you are combining it with a Game Engine like Unity, it doesn’t recognise Unity’s API’s so you could be stabbing in the dark.

Difference Between IDE and Game Engine

The difference between an IDE and a Game Engine is astronomical. Two completely seperate entities. The IDE is there for the programming components of the Game Engine.

The Game Engine is essentially the glue that pieces everything together. If you need to construct a code for a specific Game Object in engine, you would then turn to your IDE of choice and code that class for that object. You would then attach that script to that game object within the game engine.

Game Engine = Glue that pieces everything together.

IDE == Coding environment to build our object orientated code, for use within a game engine.

3D Minigame: Camera Flythrough – 03/11/20

In todays session, we started to learn about animation and animating the camera. The process is fairly simple and uses simple keyframe techniques.

To start, I put the camera into a starting position and then made it bank to the right and travel through the petrol station in my scene.

The camera then moves forward through into the subway before moving over to the lamp posts to slalom through.

It then comes up to one of the buildings as it sneaks through a crack in the bricks to reveal a lovely prize before returning to the starting position.

To achieve this, from the starting point, I moved the keyframe slider forward a bit and then moved my camera into the position I wanted, the transform boxes then turns red, then right clicking the transform, press add key.

Really simple and really effective. Below is a GIF of the full flythrough.

3D Game Jam: Distance – 19/10/20

Itch.IO – LINK

This week, we will be jamming! That is right, my first game jam is here and I am evidently over-excited about making a game with my fellow classmates. The theme for the jam is Distance.

In my group we have myself, Devon Hunt, Harrison Stevenson, Jake Langley and Marcus Eley, we have decided to do an endless runner game that takes after the impossible game.

Best Impossible Game GIFs | Gfycat

To start out we set a theme and that theme is Neon, so we will be looking at using bright vivid colours, tons of neon lights and some EDM to match. I personally have taken up the roles of programming and 3D modelling, aswell as Unity implementation. Devon will also be assisting me in those fields. Harrison will be working on art assets for the game, while Jake and Marcus will be doing some 3D modelling.

In the first session it was important to get the basics down, so we made a trello board as a to do list so we could list some core functionalities of our game and assign tasks to each individual.

To begin, we started to work on the very basics of the game functionality and that was making the character move, we needed him to move forward and across 3 individual lanes. So we made a platform that was 10 units long in the Z axis and 3 units wide in the X axis. This way we could refer to the separate lanes as -1, 0 and 1. -1 being the left lanes, 0 being the middle lane and 1 being the right lane.

Seeing as we didn’t have a lot of time, we scoured the internet either for a tutorial or a premade script which would allow us to do this and we came across this script which is on the Unity forums. LINK. We use this as a base template and modify what we need to fit our scene. It should be worth noting that the original author of the code has said it is ok to use this and he has left it there for others to use as a solution.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class playerController : MonoBehaviour {
 
    [Header("Player Properties")]
    public float playerSpeed = 5f;
    public float playerJumpHeight = 1f;
    public float changeLaneSpeed = 10f;
    public float gravity = 12f;
 
    [Header("Lane Properties")]
    public float laneWidth = 1.5f;
    private int laneIndex = 0;
 
    private CharacterController myCharacterController;
    private Vector3 velocity;
 
    bool isFalling = false;
 
    bool userInput = true;
 
    private void Start() {
        myCharacterController = GetComponent<CharacterController>();
        laneIndex = 0;
    }
 
    private void Update() {
        Move();
    }
 
    private void Move() {
 
        if (userInput == true ) {
           
            if (Input.GetKeyDown(KeyCode.LeftArrow)) {
                print ("Left");
                if (laneIndex == 0 || laneIndex == 1) {
                    laneIndex--;
                }
            }
            else if (Input.GetKeyDown(KeyCode.RightArrow)) {
                print ("right");
                if (laneIndex == 0 || laneIndex == -1) {
                    laneIndex++;
                }
            }
            else if (myCharacterController.isGrounded) {
                velocity = Vector3.forward * playerSpeed;
 
                if (Input.GetKeyDown(KeyCode.UpArrow)) {
                    velocity.y = Mathf.Sqrt(2 * gravity * playerJumpHeight);
                }
            }
        }
 
        if (transform.position.y < -1f && isFalling == false) {
            isFalling = true;
            userInput = false;
            print ("Falling");
        }
 
        velocity.y -= gravity * Time.deltaTime;
 
        Vector3 moveAmount = velocity * Time.deltaTime;
        float targetX = laneIndex * laneWidth;
        float dirX = Mathf.Sign(targetX - transform.position.x);
        float deltaX = changeLaneSpeed * dirX * Time.deltaTime;
 
        // Correct for overshoot
        if (Mathf.Sign(targetX - (transform.position.x + deltaX)) != dirX) {
            float overshoot = targetX - (transform.position.x + deltaX);
            deltaX += overshoot;
        }
        moveAmount.x = deltaX;
 
        myCharacterController.Move(moveAmount);
    }
}

Once that was out of the way it was time to start researching ways to make our platforms spawn an infinite amount. Firstly I made some primitive platforms using Unity’s built in 3D objects. One platform has a jump obstacle, the other has an obstacle where the player will slide under it and the other platform would feature a ramp. We also have a normal platform so it isn’t always obstacles that the player comes across.

Then all I done was take the primitive shapes that made each platform, placed them into a empty game objects, set the transform position to 0, 0, 0. I then renamed and dragged the empty game object into my prefabs folder.

Then it was back to research time, I took to the internet to find some help making the platforms spawn. I do already have a little knowledge when it comes to this so that is why I knew to make them into prefabs, although programming it is a different level.

I came across a YouTube channel named Holistic3D. This person has a whole Udemy course on creating a 3D Endless Runner, however, the only free episode is the one I needed. The author gives us a script to make the platforms spawn.. but not to an infinite amount, but to an amount which is good for us to test the function of our game.

The script is as follows:

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

public class WorldGen : MonoBehaviour {

	public GameObject[] platforms;

	// Use this for initialization
	void Start () 
	{
		Vector3 midPlat = new Vector3(0, 0, 0);
		for (int i = 0; i < 50; i++)
        {
			int platformNumber = Random.Range(0, platforms.Length);
			Instantiate(platforms[platformNumber], midPlat, Quaternion.identity);
				midPlat.z += 10;
        }
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

Essentially how this code works, you attach this script to an empty game object and position the empty game object where you want the platforms to spawn from. It uses an array which allows you to put in multiple game objects to use as a collection to spawn.

It then creates a space, in this case, at 0,0,0 for our objects to spawn into and uses a random.range function to choose what platforms to spawn and where. Now for the platforms it is important for them to be 10 long in Z axis as this script will spawn the platforms every 10 units. However, as I mentioned before, this only allows to spawn in 50 of them, so we need to do some more research as to how to make them spawn infinitely.

So far it works! Now its just time to make the game look better, we researched common neon themes and came across images that would feature wireframes and outlines of buildings.

Retro-futuristic arcade game Neon Drive hitting Switch this week - Nintendo  Everything
ArtStation - Neon Retrowave, Michelle Brown

So I started to research how we could make neon-wireframe blocks each side of our platforms and to achieve this, we looked into shaders. Shaders are a game component that contain code to render certain effects or visuals. I came across this shader. LINK. This shader gives us a wireframe grid with a few customisation options.

Using that shader wasn’t enough, I needed to look at creating a skybox. Using the themes mentioned before, I looked at Neon City vectors to use in a skybox. I came across this image. LINK. I’m using this as a temporary placeholder. Then using photoshop, I made it into a skybox.

A skybox is a component of Unity that acts as a panoramic set that refracts lights and colours onto the environment. With a few tweaks to our character placeholder, This is how the game looks now.

With the core functionality out of the way and a basic look down, we can now look at implementing pick ups, a better character, better obstacles, a menu system, a UI, a soundtrack and much more.

Introducing Zero

For this project, I am allowing the use of my character Zero, although a slightly different colour scheme. He is moving from his origins of Green and White to a black and blue to fit in more with this theme. I took my model and uploaded him to Mixamo for an easy rig and easy animation.

We then added him to the game to replace our cube placeholder, then using Unity’s animator, we put together the animations to go active when certain requirements were met. As an example, he would only jump if the up key was pressed, he would only slide if the down key was held.

For a finishing touch, we then added post-processing effects, which include a vignette, bloom and lens distortion. From my input, that was pretty much me all done. I awaited some obstacles from Marcus Eley to finish the platforms off and the result is in this video. Devon Hunt put together the Menu’s and UI and also found a way to make the platforms spawn forever, we added Jake Langley’s music and sound FX and also used Harrison Stevenson’s 2D UI Art.

Overall, it was a really fun project that came with plenty of challenges, what is interesting is some of the design choices we made later on towards the end. As there is a Vignette now, the skybox is rendered useless, the neon lines on the platforms and on the grid were made thicker to reduce Anti-Aliasing issues. Is this game ready for a public release? No, its not perfect but we would like to work on it for the future to add more customisation options such as character editing and costumes.

Lighting in Unity – 13/10/20

Today we started learning about Lighting within Unity and how it can help create different environmental effects. I took it upon myself to develop my scene further and created a minimalistic petrol garage.

Very basic it is just made up of cubes with a door to break down to take all the garage’s money. I’ve added lights to roof of the refilling station aswell as spotlights on the fuel containers to show when they are active. Inside of the petrol station I made a point light which I gave a yellow colour to indicate that there is gold in the building.

So far so good, the little town is coming together, still need to program the script for the coins and make a few more structures to give our town some more life.

What is a Game Engine? – 08/10/20

So what is a Game Engine in any case? It’s not the buildings or the corporations who try to monopolize the market, its not the numerous developers or the publishers with strict deadlines. It’s the software, the thing that holds the whole operation together and makes it run smooth as butter…

Above is a modified version of the late Sir Bobby Robson’s infamous quote of ‘What is a club in any case?’… The same kind of thing could apply to a game engine with a few substitutions.

Football Tweet on Twitter: "Sir Bobby Robson: What is a club in any case?  http://t.co/5IMHc9pJ4w"

Really though.. A Game Engine is exactly what it says on the tin, its an engine that is designed to build and run games. An example of some Game Engines would include Unity, Unreal Engine, Godot and GameMaker Studio. I’m personally a fan of Unity as it is simple to use and understand.

An ideal Game Engine, such as Unity, should include features that allow the developer to see the graphics they have made or built in engine, add audio to a game aswell as networking features for online play. Awesome game engines allow you to implement realistic physics (Frostbite Engine) or in Unity’s case, basic physics that would replicate real life with the correct mass and gravity applied. There should also be ways for the developer to script and program GUI’s, model certain aspects such as buildings and items as well as tools that would be ideal for worldbuilding.

Fortunately for me and using Unity, Unity includes all of those features which makes it really easy to build a simple game. The small game I am building now can be tracked on this very blog where I have already demonstrated some key features.