An arcade shoot down all the towers, mobile game for iOS; iPhone X.
[1/10/18 - 7/10/18] This project will undergo the implementation of a puzzle arcade shooter to take down block towers over iOS devices by Apple, and made within Unity. Throughout the project will carefully plan and design the most suitable finger gesture inputs, to allow the player to experience an intuitive one. The theme of this game will be around magic and colour! The player must launch their little magical diamond from a slingshot, and use it to take down multiple towers and its colored blocks. The aim is to have enough balls to take down a tower, to avoid running out of required ammunition to progress further and run into an ad break; which will be added for assignment purposes. The point of this project is to see how far we can push the limits of iOS devices, tested on the iPhone X. This project will also be using C-Sharp for the implementation of program code functionality. This week I wanted to focus on the actual movement physic of the Diamond, which will be launched into a tower full of different shapes. The perspective camera creates a 3d Plane in the center between the near and far camera clip planes, to allow 2d input by the user for mobile devices, and transfer it for 3d space using ScreenPointToRay. This ray will then be the raycast which hits the player's object (Diamond), and allows the player to move it around, with its movement restricted to a 2d plane. At the moment if the player moves the diamond outside of the aim radius, the diamond will freeze, or clip back into the start position. However, I need to find a way to have it so when the player goes outside the radius, the diamond will stay at its last moved position, and when the player lets go, the diamond will launch as normal. The diamond launches nicely, however too slowly and I would like the player to choose where they would like to shoot the diamond with more ease.
X [8/10/18 - 14/10/18] This mobile game will be angry birds inspired with its intuitive slingshot, which has managed to engross people into playing its tactile and intuitive interactive design. This week I was able to create the game's sling shot by creating two line-renderers from the diamond's holder and to the slingshot poles; which I also modeled in Maya. I have also modeled most of the tower assets I may need within Maya, to ensure the creation of the multiple jenga-like-tower levels is performed smoothly, and to avoid entering and exiting out of Maya constantly. I attempted to create a line showing the current aim position for the diamond, however I have not figured out how to tell the line to follow the diamond's predicted landing position from its beginning, and if it will be too resource heavy for mobile devices to handle. The created 3D models for the tower, do have many faces on its polygons, and so again, I hope this won't exceed the mobile's hardware capabilities. I've added a static skybox in from the asset store, and imported some particle effects for added consumer appeal, all imported assets from the unity store will be referenced.
X [15/10/18 - 21/10/18] This week I went ahead and added the diamond's trail renderer to add visual appeal. A death zone has been to make tower objects disappear on collision and the diamond will re-spawn after it has hit death zone, or has stayed on the platform for more than five seconds; in case it gets stuck. Pretty particles created by SKJ (2017) [references in word document], will appear upon object hit with death-zone, and will delete to save memory. I have also added an interactive function, where the player will launch the diamond upwards (tap, drag and release), then tap and hold to charge the diamond into the tower with more added force. This is to ensure more fun is had by the player, and to enforce a more addictive experience.
X [22/10/18 - 28/10/18] I have now added a feature where the score will display with a fade effect for visual appeal. This took a bit of time to get working, at first I attempted to implement this through the game's main manager, however I decided later it would be more efficient to attach the effect script to each tower block to allow OnTriggerEnter to work with it. I have also added two discs to store the total diamonds left for level and bonus diamonds if previous level was completed with less diamonds for completion. The aim is to have the player take down towers, with as less diamonds as possible. Next week I would like to get all UI designs completed, so that I can focus more time into the actual game play mechanic and rules, to make this game as addictive and fun as possible. I have also created the appropriate resolution to work along with iPhone X's capabilities of its resolution display. The game will be targeted to iPhone X users. However, I will attempt to create this for as many devices as possible, to appeal to the wide 'full of potential' market. I managed to get the game to work upon my iPhone X and the scaling is fit appropriately to the phone's resolution. I will aim to continue with the ability change between different resolutions, to ensure the game is not only for iPhone X owners, but of those own older generation iPhones, and potentially newer models. This will be worked upon during the final stages of the project.
X [29/10/18 - 4/11/18] So this week I attempted to add in a vibration option for the game to enable and disable vibration capability on mobile devices, however currently the vibration doesn't work on iPhone X using Handheld.Vibration() just yet, and so I will need to come back to this during the final stages of the project. The quick vibration will be used when the diamond hits any surface, to add immersion. I have began creating the main menu user-interface graphics as 2D images. The design of the user-interface menu and its design is still in progress. I have also completed the menus functionality and included button animations to add visual appeal using an animator and triggers to call an animation when a button is selected, highlighted, cancelled with finger input.
The design of the main menu, has been completed. The WiziDiamond will move in the background using Unity's built in animation I recorded. The title will move using the same technique, and other user-interface elements will move upon interaction. All user-interface elements for the main menu have been completed. The design of the main menu's friendly interface should allow the user's to have a easy experience intuitively interacting with its design and structure. Player can delete their save data at any point by simply selecting the delete preferences button; in the lower left corner, this also makes it easier for me to test the project to ensure scores, skins and unlocked levels are unlocking correctly.
I have also, implemented a score feature with stars upon a level to show how many stars have been obtained for each level. This feature works in a similar manner to many other mobile games on the market, a few such as: Candy Crush, BubbleWitch and Angry Birds! The player will still be able to finish a level if they manage to obtain one out of three possible stars. They will just finish with a low score, and minimal points to purchase skins with. I have used Unity's post processing effect script to change color on the scene upon a win or loss, this required three camera on the scene as the script was dependent on one camera, and could not be adjusted. The loss screen will aim to feature an advertisement option to allow the player to gain more lives through accessing it; called interstitial advertising. Increasing potential ad revenue and to give the player a chance to complete the level, if they were so close to complete it!
X [5/11/18 - 11/11/18 + 12/11/18 - 18/11/18] This week I decided to implement a shop into the game! The player can now equip and buy skins, with the total amount of points they have obtained. The player may if they wish have points, tally from a replayed level. This is so, that is they want to buy an expensive skin, they will have to grind a level they find easier to complete compared to the last few challenging levels of the entire game. Levels have not been created yet, however another feature has been created, that retrieves the in-game's diamond total and any of its extras left over by the player. Any diamonds left over will be carried onto the next scene, to allow the player to have more shots and taking off every tower object off the platform, as a reward. It took a while to get the shop pages working as well as getting player prefs to remember when a player has unlocked a skin!
I decided to create the skins for the shop using Maya to model, and substance painter to texture and use their provided materials. I have also implemented an input feature which allows the user to rotate the platform left and right with a simple swipe input; for mobile. This is so the player has the ability to have as much control of their shots as possible, and to add intuitiveness to game-play, at first the platform would continue to spin along one direction making it annoying for the player to aim their shots, due to lack of control. Equipped skins will change in main menu and will also change in-game!
X [19/11/18 - 25/11/18] To improve challenge to the first level, I have added spheres that continuously bounce to add more challenge in getting rid of them. There were a few problems with stacked tower objects sliding off one another, and so the fix involved freezing their rigid body rotation, and re-enabling them when hit by the diamond. I have also added animations to the extra diamond and current diamond total texts to add immersion. Bronze, Silver and Gold stars have also been added on top to appear when the player has managed to pass a star/score threshold. Achieving bronze will allow them to progress onto the next level, but will finish with minimal points to buy skins, and their high score will be low. This will be stated as so, on the main menu's level select menu.
I have added a feature which will show the players scored star when they complete the level along with a randomized message. I have also added the display of the player's final high scores upon the level menu, achieved from each level. The levels will also have their sky boxes rotate on movement with the mobiles gyroscope!
X [26/11/18 - 2/11/18] This week I went ahead to add an additional two levels, for the testing of transferred extra shards/diamonds, and to see if the points would all tally up the shop's currency correctly. Sound has also been implemented using royalty free audio clips, upon the main menu and in-game levels. The mute option works from the main menu, and to aid the player further while in-game, I have added a pause menu which will pause the game and show the user 'potentially appreciated' options such as; resume, quit, mute/un-mute audio and toggle vibration when the player dies. So far I have included resume, retry, un-pause and main menu. I will add mute and vibration toggles at a later stage, as they're on the main menu already. I can move onto other features in the meantime.
X [3/12/18 - 9/12/18] A new input feature has been added to allow the player to shake the platform, by shaking their mobile device which and if it supports/includes an accelerator and gyroscope. There were a few bugs regarding with sliding objects with rigid bodies, and objects flying away due to their set use gravity booleans upon their rigid bodies. If the user has hit a tower object with the diamond, and then shake their mobile, the mentioned object will be able to rotate on its three-axis rigidbody. Objects which have not been hit by the diamond will find it harder to fall off the platform through the shake function, this is intended as it prevents the player being able to complete a level, by the shake function alone. I was going to limit the amount of time allowed for a shake, however it would be unreasonable to limit if the player accidental shook the phone, without intention and thus using up a shot accidentally.
X [10/11/18 - 19/12/18] This week has been to focus on fixing any possible bugs that may occur through game-play. So far, I've managed to find a problem with the level unlocked. As each unlocked level was stored within one player pref key ("UnlockedLevel"), it caused any previously replayed levels to lock any further acquired levels, for example: if the player were to play level 1 after playing level 3, level 3 would lock itself again. This was due to the completion of level 1 believing that level 3 has not been unlocked yet; when it had. This issue has been fixed, by giving each level its own key to assign ("UnlockedLevel1, 2, 3, etc") when it has been unlocked appropriately. Took me a while to fix this bug, but now the level selection menu works as intended.
I found another bug regarding the shake function, the animation would unfortunately play every frame and cause the animation to be in its starting frame for eternity. This issue was simply fixed by including a 'once-only' Boolean to make the function run once only within the update method.
The game could also have used an application icon, and so this was made within Adobe Photoshop along with a cool royalty free space background and Photoshop brushes to give the diamond its shine effect. This icon should appeal to the mass marker, and catch one's eye upon the store; this is if I decide to deploy it upon there.