Dev blog #11 Programmer's First World Problem

Greetings Fellow Devs and Viewers,

Today I would like to discuss about my whole experience with my game and progress so far.
All the game mechanics that I wanted are mostly done. What it Missing is the extra content and improve the look and feel of the game. Also changed the name to just B.L.A.S.T.E.R.

As i am mostly a programmer I find it quite difficult to make game look awesome. How to put it right now the game at some point it feels dull and simple in a bad way. Maybe it is only me because i tent to be strict with Judging my own work.

This week I started implementing new Level and new Enemy movement mechanic. Some bugs have come out from this implementation but they were easy to fix.
I am trying to find ways to pump the game visuals and make everything looks great as well as play well. This will take some time. I might post a test build here eventually so look out for that!


Now I would like to talk a little bit about how I set the UI and my approach.

So in the game I needed a main menu where the player spends time to navigate through the levels and spens his hard earning coins. Then in the game I wanted to have a UI that is clean and doesn't come on the way of the action.

Also I wanted the Main menu to have easy access to everything easily with not many buttons and screens to go though. I was happy with my previous game Ui layout so i wanted to do something similar here too.

Main Screen

The main screen consist of few different things. The Player Level at the top and Experience Bar on the top left. this is just a Text where I just update it though my Main Manager Script.

On the top right corner we have a button which open the Menu nothing special here.

Next we have a 3D preview image of the current selected Ship ( i want to be able to change playable ship in the future) this was possible by creating Camera and set a render texture to render whatever the camera sees into a RawImage. This way we have a 3D representation of our ship model in the UI. Also I set the main camera not to render the ship layer( i will talk about this later).

This RawImage of our ship preview is also a button which opens our Upgrade shop. Under this we have 3 Quests which are random every time. This are generated the first time the game run.

Here i had a problem of how would I save them so when the player restarts the game or comes back from a level and how to keep their progress ( more about this later)

Next we have our two button on the bottom. Those are just Text with a button component. One closes the game using Application.Quit() and the other turns on the Level Select Screen.

Level Select Screen

As you will notice is that the UI stays the same all the way and any screen. i will always keep the same layout that way I keep things consistent.

Here the only thing that changes is the Quests. We replace them with a list of Mission that the player selects to play. there were many different ideas on how to approach this but the simplest way to do it is to have buttons with a text and a background that represents the Level. For example the Mission 1 is a grassland level and also suggusts the player about the difficulty and what level he should be before trying it out.

Every Mission Element is preface which contains a background image and two texts. We set this on runtime. The we copy the same button prefab depending on how many levels we have. In addition we using Scroll View because not all buttons fit into the list and we want the buttons to be big because this game is for phones.

Mission Details

Every Missions has a story and challenges that player needs to achieve. This is a different screen where it is similar to iur level select but instead of buttons and scroll view we have 4 challenge prefab. One for each challenge we have. We could expand this and add more as this system is dynamic.

The challenge Element contains a two Images that represents the complete or not completed yet and a text that describes it.

I load all the data by a JSON file which contains a list of missions and their detail like story id and difficulty and name and then I use a script to set everything up.

In addition, i was trying to think how to I represent the story for my game. i decide to have a small text every time you go into a mission for the First time. It won't come again and if someone wants to read it again he can open it again by the button near the mission name

last player presses Play and Game starts. We also have screens like the options and Highscore which are accessible from Menu. Those are not so important right now.

Now that we set all our UI ( I call each of them Screen) I asked my self how do you go from one screen to another? One way was to just disable and enable the right gameobject when you press the buttons. It works but eventually it started to be annoying and too much work. Especially when the UI become a bit more complicated. Adding the functionality into the Buttons itself thought the inspector was not ideal.

That is why I creative a script called ScreenManager. This screen has an Open And Close screen. Open Menu and Close Menu. Everytime we press a button we tell Screen Manager to open the right screen depending on a string i give it. Every screen has an ID so i know which one I want to change. So when I want to change the level I tell screen Manager to so just that. There was a small issue with this how would I know which Screen i was previously? This was easily fixed by having a previousScreen string variable a set it up accordingly. All good so far I can go from main to level and detail screen and back. Another problem here was when player opens the menu and goes to setting or high score when the player went back it went to Menu. That wasn't what I wanted. I wanted from setting to go back to the main scene. I managed to workaround when I open the scene I check if previous scene was Menu or not and also if the next is settings or Highscore then I set the previous screen as my main scene.

Upgrade Screen

Here we have a list of available Upgrade the player can buy. He can spend his hard earned coins. Every Element is a prefab which contains a background image and a foreground image. They do share the same background because i wanted to make the foreground filled to give the effect of progress. In addition you have the cost and the whole image is a also a button.

When we press the button the script we have checks the following things. If we have enough coins to buy this and also put the right information on the element like the name of the upgrade and cost also make it red to symbolise that we don't have enough money to buy it as well as the progress.

I wanted to make the upgrade system somewhat dynamic so I could put new upgrade in the future. I accomplished that by using scriptable object which contains the Data for each upgrade. name cost and also the cost for each rank and the level which the player needs to be for each rank. then using that the ObjectiveElemenr script fills the right information.

I put everything in a Canvas which scales depending on the screen. And I only use another canvas for screens i want to change the sorting order like the Pause Menu.

New features added

Added Transmission effect to give some Narration in game for player and friendly and Bosses.

Finally added Multiplier for kills while you keep killing spree till 4 you get score miltiplied by the amount of kills you have. I put max 4.

Also I put some texture on the planet so they don't look so dull. This is few things that I am trying to do to improve the visuals.

Because I dont want this blog to go any longer , I will stop it here . Again sorry for the long text. Until next time.

Thank for reading!

Comments 2

  • Good job so far, looks good! I can relate and sympathize with you in regards to the graphics elements but remember some of the most famous and well known games even today do not have fancy graphics. The fun factor is the most important aspect and subbing in new graphics later if required is not the hardest task in the world.

  • Well done mate! I'll look forward to playing it :)

    love Wah! Lafell x