User Interface and Colour Update

Hi all,

Welcome back to the dev log of Project Hunter. This is a little update on the UI again, I did a social media post to show off the UI last time as there wasn’t anything special other than the change in style but that has changed a little more again with the decision to change the use from a simple image and fill effect and change the progress bars of Bow Power, Arrow Power and Quiver Size.

The first proper improvement in UI was posted on twitter here or can be seen earlier in the development logs or embedded below; and looking back I thought the simpler look was going to fit well into the game style but due to finding the buttons and not creating them myself or getting a base template it got harder and harder to to get the UI’s to fit together. I found some buttons which seemed a better fit which are now in use except I have altered the colour scheme to have a blueish undertone and text to fit the contrast of the background of the menu’s along with the templates of each type.

I then posted an update on twitter here or embedded above which is showing an animation of when a user buys an upgrade for either the bow, arrow or quiver size. The animation is just scaling up the data holders along with playing an upgrade sound effect and scaling down the data holders again, this was a simple a nice animations until I began internal testing and a few mobile devices did not like the animations or I should say the data went off screen and then back on screen once scaled down and this is not a very acceptable animations.

I decided that the priority of this needed to be pushed up and I began to create a shader which can be applied to a material onto an image or slider for example. The shader is simple enough to take in a texture to be applied on top of the background bar and have the filling image to have the same background as the background bar with the animated material applied to the filling image bar. The shader also has some other variables such as Colour, Opacity, Speed and Division. The Colour variable is applied to the overall product, Opacity is used for the opacity of the texture passed in on the final product, Speed for the multiplication of Time for the animation movement of the material and Division which is the amount of times to divide the texture and applied to the material and final product.

More on the next development log update going over the animals available with the environments they are in and updates towards publication and beta availability.

Twitter: @LRProjectHunter

Facebook: @LRProjectHunter

Happy Hunting All

Unity Jobs System Update

Hi all,

Welcome back to the dev log of Project Hunter. The last update went over the massive fps increase gained from transferring to the Universal Render Pipeline (URP) in Unity but I still wanted to improve on the performance and optimizations that can be done to gain a smoother and more consistent 30 fps on the mobile platform.

I took a look back at the code I had already completed for the Unity Job System for the A* Pathfinding algorithm as I know the algorithm works within a standard operation and I had already designed the code to work within the Unity Jobs System. After some more debugging seeing that the path is found but not set when finishing the job, deciding to cut out some functions and write the code within the Execute function of the Unity Job instead of the private functions within the Job Struct called to be used. To my big surprise this actually fixed the issue for returning the data out of the A* Pathfinding but there was still another issue which is now the full list was not being set and I knew from previous multi-threading work that it takes times to execute these operations. To allow the job time to execute gave me an idea to create a Pathfinding System which is the manager for the animals to send their starting and ending positions and this system then adds each animals job to the queue and then the animal is alerted to change state when their pathfinding job is complete and the data passed back is valid to traverse down or invalid and needs to get a new start and end position for the job to calculate a path again.

Since the change over the fps has become more consistent but the fps increase I thought would be achieved has not been fully accomplished across all mobile platforms, this could be a number of things such as code that is dropping the frametime significantly or the amount of animations and effects happening within a frame or even the mobile device is not as powerful as the newer systems that can operate twice as fast. This could push me further towards the Unity Entity Component System (ECS) but a further restructure of the animal code will be needed to work with the ECS that is not to say it is impossible to restructure the code but will take a bit more time to transfer over versus changing code to work with the Unity Jobs System like I have done here.

Twitter: @LRProjectHunter

Facebook: @LRProjectHunter

Happy Hunting All

Some Local Feedback, Graphics Render Pipeline Change, High Scores and Profile Data

Hi all,

Welcome back to the dev log of Project Hunter. After letting close friends and relatives play Project Hunter, there were some feedback on the UI within the menu’s of the game. Along with that to fix some big fps issues the game now uses Unity’s Universal Render Pipeline (URP). This has really given an increase to the fps making it a good stable 25-30 fps without the use of the Job System or Entity Component System as of yet.

This change over to the Universal Render Pipeline is also a good choice as it allows me to use the shader graph for quicker prototyping of shaders and materials, as you can see from the new cloud within the background. Within the cloud shader graph I manipulate the vertex points of the model using a gradient noise. There is a base noise layer with a higher noise layer which Linear Interpolation (Lerp) between the noises to generate the randomness of the cloud, there is also the use of Lerp between the peak and valley colours of the cloud. Following that there is also a curvature calculated to not see the horizon of the cloud but due to the camera angle of the game and not wanting the cloud to take up a lot of space this doesn’t really show. Some downfalls of the URP is that much like the standard pipeline you still have to do some things yourself but as a whole it gives better flexibility to a developer especially those who have no understanding of graphics programming.

Hopefully you can see throughout the menu’s the UI has gained in size just to be clearer for users as it gained some local feedback from friends and family. Along with that to carry on the arcade concept I was going towards there is a local high score table within the game which keeps track of the highest scores, this is still going to change once published to the online high score table to compete against anyone around the world who plays. Furthermore, there is also the addition of the Profile Data, this is a general overall track of the user from their highest score yet, highest hit combo, highest amount of kills they gained in a hunt, total kills, total score and the number of total hunts the user has played.

First Preview of Project Hunter video was posted just last week on the social pages of Project Hunter. I should hopefully have a new video out soon showing off what users can hunt.

Twitter: @LRProjectHunter

Facebook: @LRProjectHunter

Happy Hunting All

Menu Change and More Environment Changes

Hi all,

Welcome back to the dev log of Project Hunter. It has been a little while since the last post, since then I have completely added and changed over to the new Menu Manager and Menu System. If you look at the images the Menu and UI look a lot better along with better management of the Menu’s using the Stack technique. There are still more buttons on the UI to be added and they are currently being worked on.

Even better is that after Unity has released the Device Simulator is has been a lot easier to tweak UI and Menu elements along with adding the feature of UI Safe Area Management, this is to keep all the UI components to be within the devices safe area so the notch on mobile or tablet devices won’t overlay the UI at any point.

As the title states there is also some environment changes which can be seen in the images as well. Just some simple low poly mountains to give the hunting area some depth, along with the mountain textures in the back again to give depth between the low poly mountain models. There is also cloud movement in the scene as a little effect of the world moving around as the skybox stars also move.

Moreover, there has been a little tweak to how the animals spawn into the environment. As the gameplay concept is to be more arcade style, the game mode is survival and the more points you earn the more animal variety you get to see. This is to keep the user interested as they might not get to a certain point score and not get to see some animals which other users of-course share among one another.

The Animal Object Pool pools a lot of animals but when the Spawn Manager calls to return an animal to spawn into the hunting area there is a check for not just the inactive object but if the animal index is unlocked and able to be used from the Animal Object Pool. To begin Cows, Deer and Rabbits spawn and the more points the user earns by hitting and killing the animals the more shall show.

After testing and not getting the best results i.e. the Job finds the A* path and assigns to the NativeList path to return equals the length of the path from point A to point B. However, when completing the Job the NativeList path that was found now has a length value of 0. So the overhaul to Entity Component System has begun along with the overhaul of the physics system for the basic Unity version to the ECS Physics System.

Some Environment Additions

Hi all,

Welcome back to the dev log of Project Hunter. This week has been what I wished for in getting a lot of progress done with the menu’s and UI of the game, the menu system is in place and is currently being unit tested to with the basic menu’s required: Main, Options, Game, Pause and End menu’s. The selection menu’s will be implemented once unit testing is complete and integration testing is complete. The reasoning for waiting until integration testing is complete; is after much thought that instead of having a persistent menu manager across the scenes instead use one scene and allow the menu’s to act as the “scenes” overlaying the game and stopping movement and input for when a none game menu is active. This could be due to change of course if the integration testing does not run as expected with the current system then this concept on menu’s acting as “scenes” will be implemented. The current menu system being used is show in the images below.

Moreover, as the title says there has been some environment changes, if you see below the hunting areas for the player to perch behind have now been changed. The hunting areas are still defined from the environment so the user should understand what these could be used for. There is also the matter of the environment getting made wider as the edge of the terrain shouldn’t be seen by the user as it looked unclear and not very well thought out, from that I also added in some mountains to give the environment some depth along with some clouds above.

As stated in the last dev log post the current implementation running on the mobile platform is running around 16-20 fps which is okay but it isn’t the required smoothest it needs to be. That being said I have also implemented the A* path finding used within the Unity jobs system and the next step of this is to test and integrate this into the animals which will require some change in selection of the animals target position. Once integrated another mobile test build will be completed to see the performance increase of the Unity jobs system and analyse if the performance increase is enough to go to beta and publish to google play or if the Unity ECS system is another requirement to change into.

A Week Longer

Hi all,

Welcome back to the dev log of Project Hunter. It’s been another week of progress on the project. As stated last week, the next steps are to work on the menus and UI of the game. The reason for this is that the interaction of the UI is a major aspect for users, meaning, it’s kind of the middle man between the back end at work and the user.

I started by looking at menu techniques used in software and games alike, and as I’m using Unity I thought; why not look at some Unite talks on UI and menus as well? The Unite talk from 2017 (Video) given by a developer at Yousician talked about the generic menu system they made, as they use a lot of menus within the software. I began implementing a menu system like the one within the talk to cover the project needs, and there are not a lot of menus but I want persistent menu management throughout the scenes.

Another topic is the UI, which is tied in with the menus that are being created. So to begin with, some UI implementations have been that; when hitting an animal an image will transition by scaling in and out over a period of time, to help indicate an animal has been hit. Within the menus, there are buttons that transition by movement and scale to give a better feedback to the player. Other UI updates are the transition by movement in the Y direction of the player score, player kill count and the arrows the player has remaining while in game. This UI animation is not a large movement so it should not obscure the player or distract them from the game, this is yet to be play tested on mobile so this could change.

As you can see from the slideshow below the current systems in place for the main playing scene hold a frame rate of around 16-20 on mobile, which isn’t too bad but improvements are needed in using jobs and ECS system in Unity. Another note, is that the environment doesn’t look filled or pleasant so I am working on fixing the grass patches generation to not overlap over the edge of the environment. Furthermore, I think there will be an addition to the size of the environment, along with some more polish around the environment to feel more like a hunting reserve, as well as, adding hunting areas instead of pads to move to, possibly fences around the edges which is another look into the terrain generation

Excuse the facebook messenger pop up, I was messaged while it was loading.

A Few Months Down The Line

Let’s begin by saying sorry for the lack of posting content of the dev log of Project Hunter throughout the past few months. There has been a lot going on from more hours of work and less hours available to work on the project for myself and David with his university work. After a few months though I believe in the next few weeks Project Hunter will be in its first build version if the current systems in place work efficiently together on the mobile platform.

Over the months there have been a lot of changes to the project from trying and testing different techniques. Some techniques implemented within the project are Object Pooling, Observer Pattern. Some systems were changed for the techniques to be implemented, the reason for these changes is to remove any tight coupling between any classes and create Singletons of the managers that require them.

A system that was changed was the arrow checking what object it has hit, I implemented an interface IDamageable which has a function called Damage with a parameter of type int for the damage of the arrow that is currently being used. This interface is attached to the HealthComponent which has the Damage function implemented already. The function handles the damage from the arrow and sends out an event for either being hit or being killed, we also then update the animal HealthBar based on the event fired. This is to remove the tight coupling in place within the previous system implementation of the managers and the HealthComponents, and the managers with the Player.

The managers such as Game Manager and Spawn Manager listen to these events when they are fired off and update accordingly. The Game Manager updates the players score, hit count and returns the arrow back to the player, if the animal fires the died event then the Game Manager updates the players score, hit count and the kill count along with returning the arrow back to the player. The Spawn Manager however listens to the died event and after the delay for the death animation to play out we return the animal to the object pool that the Spawn Manager is using for the animals, it will then re-initialize a new or the same animal to the object and spawn the animal back into the environment.

There has also been some animation work being done, using some animations found on Mixamo along with the Erika model with a bow and arrow, not the style we was going for but this is the dev build. I have found a model to use that is the low poly style we want, I just need to make a skeleton of it and setup animations for it but that will be a little later. We have sound effects in place for when animals are eating, moving, etc along with sound effects for arrow firing with some cool trail effects behind the arrow There is also the Grass Shader that I implemented, I have attached the shader to a plane, can also do quad but wanted bigger area grass patches and not tall patches, This shader also has a wind effect passing over it and can be changed in speed and direction.

The next steps for the project are working on the UI and the menus, there are currently basic menus in place but I would like to implement them to give better feedback and interactions. Once these are implemented and tested the project is somewhat complete to a basic version, we would then be implementing new systems and update previous systems to be more efffcient such as using ECS and DOTS which is also the next few steps as well. Once the UI and menus are in place and tested for the build we will begin working on the new environments, animals, bows, arrows, customization as well but that is future work, we currently have out leaderboard in place which is currently local for yourself track record but we will be pushing for a worldwide leaderboard once on the Google Play Store and IOS if we get there.

Version0.1ScreenShot.png

A week later

So a week later and so much has changed, for it is David writing this post. Over this week we have implemented the basis for the animal movement and refined the handling of screen input. A way-point system has been implemented so that the animal movement will interact with these points allowing for the complex behaviour, a key element of the project.

A Input manager has been implemented in order to differentiate the different types of input. The Swipe manager is used when swiping in order to get direction and duration of a swipe, data needed for the game play. With a Tap manager supplementing this to support the player changing hunting points and will soon support any menu interactions such as pausing or other game play behaviour .

So with this blog and project it is currently a two person team. Sam and myself, are ambitiously committed for the foreseeable future to put out two blog posts a week. One with the intentions with the week and one with a review of the week, problems faced and possible break down of code. Although these are our intentions we are making sure at least one of these come out every week.

Starting a New Adventure !!!

So here we go again on another coding adventure. Lets begin with what the adventure is and that being a mobile game. This is hopefully going to be a quick iteration prototype within the next month or so as the rest of the game will fall in place with polished models and animations.

So this adventure we are going to call Project Hunter, the idea is for the player to be a hunter within the wild in a range of environments and wildlife to fit. A few game modes to play so we can all for users of all experiences and ages to play this wonderful game.