7 Optimization and Speed Tricks and Tools

Here are 7 optimization and speed tricks and tools that I’ve used over the years that have helped me to increase my FPS (Frames Per Second) and decrease draw calls as well as final file sizes.
At times, creating games and apps can be frustrating, none so frustrating as when you are trying to launch onto a mobile device or limited device only to have everything slow to a crawl. I’ve heard things like, “It worked fine in the editor…what gives!?” or things like, “My FPS count is freaking 7-10…” and the list goes on. You literally feel like someone came and restricted you from releasing your beautiful creation to the world…you’re now constrained to the hellish nightmare of HARDWARE restrictions where your final output platforms do not have the power to handle the capabilities that normal Laptops/Desktops have.
1. FILE SIZE – Build Report Tools

2. FPS Trick – Near/Far Draw Planes


3. Visual Trick – 2D Planes In Place Of 3D Graphics

4. Optimization – Texture Atlases


5. Optimization Trick – Square Images
6. Optimization – Use Static Batching

7. Unity Usage Speed – Turn Off Auto-Generate Lighting


Conclusion
7 Keys to Developer Health

Rarely do we discuss the mental and physical challenges that come with development…lets open up this conversation now with 7 ways you can have a more balanced Development Life!

1. You NEED to take a break!
-
-
TAKE BREAKS! That’s right, if it’s a coffee walk with the team or just taking a step away from the code, DO IT! You’ll come back refreshed and even better for it!
-
-
-
Get a FULL rest! Don’t SKIP this! A minimum of 6-8 hours of sleep is what I recommend (As do many other experts out there, but this is just from my personal experience).
-
-
-
Power Naps in the Day! On my way to work in the Trains/Subways I’d take power naps for a part of the trip. I use a tool called Pzizz to help me with this, it’s the most incredible app that takes you through an incredible sleep cycle style experience and you wake up feeling refreshed, even after 15-20 minutes of a nap! Here is the link to Pzizz if you want to try it out => https://pzizz.com/
-
-
GO HOME! (BIG POINT HERE!!!) Too often we overwork so hard to try and hit deadlines and complete sprints. But to be honest if a company needs their developer LONGER than a normal 8 hour shift, then they need to get realistic (THIS IS TO THE COMPANIES OUT THERE) and hire more staff to pickup the loose ends. Unfortunately the reality is that this rarely happens in our industry and thus we as developers suffer and have to work 10-12 and even sometimes 14-16+ hours. Don’t be afraid to leave at the right LEGAL times, anything longer and it’s pretty much illegal (Not to mention UNHEALTHY) and you shouldn’t be penalized for working a proper full 8 hour shift. Any company that wants to combat this point is UNETHICAL in my opinion and if you do get removed from your job FOR WORKING AN 8 HOUR SHIFT you’re better off! We are PROFESSIONAL ENGINEERS and DEVELOPERS, not hamsters on a hamster wheel and the INDUSTRY should respect that. Other industries are happy if you work a full 8 hour shift yet in our industry it seems to be something frowned upon if you aren’t staying overtime. I FOR ONE BELIEVE THIS MINDSET MUST CHANGE! No one wins if you’re sick or worse in the hospital or DEAD! ENOUGH SAID! PLEASE TAKE CARE OF YOUR HEALTH!
2. Go To The Gym / Workout

3. Meditate


4. Make Time for Friends and Family



5. Eat Healthy


6. Have Fun and LAUGH!


7. Think Win-Win


Conclusion
7 Steps To Master Mouse Interaction with 3D Objects (Beginners)

In this article I will walk through how to interact with your 3D Game objects using your mouse.
1. Mouse Location on Screen


2. Detecting a 3D object under the mouse
3. Detecting when a mouse enters and leaves an object
4. Mouse Click Down, Mouse Click Up
5. Scroll Wheel Movement Direction Detection
6. Mouse Drag and Drag and Drop 3D Objects
7. Screen Movement via Mouse Location
Conclusion
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GSMouseInteraction : MonoBehaviour { // Game Scorpion Inc. // Mouse Interaction Script // Usage: // Put this script on the MAIN Camera or on ANY objects you want to have mouse interaction // Private Variables private bool b_MouseActionsOnGameObject = false; private bool b_MouseDown = false; private float f_LastMouseXMovementAmount = 0.0f; private float f_LastMouseYMovementAmount = 0.0f; // Use this when script becomes active private void OnEnable() { // Make sure the object is NOT the main game camera where the script is placed if (gameObject.tag != "MainCamera") { // Enable all Mouse Detection for OnClick, OnEnter, OnExit functionality b_MouseActionsOnGameObject = true; } } // Check Mouse Enter private void OnMouseEnter() { if (b_MouseActionsOnGameObject) { //Debug.Log("Mouse Entered"); } } // Check Mouse Exit private void OnMouseExit() { if (b_MouseActionsOnGameObject) { //Debug.Log("Mouse Exited"); } } private void OnMouseOver() { if (b_MouseActionsOnGameObject) { //Debug.Log("Mouse Over Me"); } } private void OnMouseUp() { if (b_MouseActionsOnGameObject) { b_MouseDown = false; //Debug.Log("Mouse Up"); } } private void OnMouseDown() { if (b_MouseActionsOnGameObject) { // Get LAST X Position of mouse and subtract from current position //if (f_LastMouseXMovementAmount <= 0.0f) //{ // f_LastMouseXMovementAmount = Input.mousePosition.x; //} // Get LAST Y Position of mouse and subtract from current position //if (f_LastMouseYMovementAmount <= 0.0f) //{ // f_LastMouseYMovementAmount = Input.mousePosition.y; //} b_MouseDown = true; //Debug.Log("Mouse Down"); } } private void OnMouseDrag() { if (b_MouseActionsOnGameObject) { //Debug.Log("Dragging"); } } // Use this for initialization void Start () { } // Update is called once per frame void Update () { // Mouse Location //Debug.Log("X: " + Input.mousePosition.x + " Y: " + Input.mousePosition.y); // Detect an object (WITH A COLLIDER) under the mouse via hovering //RaycastHit hit; //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //if (Physics.Raycast(ray, out hit)) //{ // Debug.Log(hit.collider.name); //} // Scrolling //Debug.Log("Mouse Scroll: " + Input.mouseScrollDelta.y); //// Scroll and Zoom Camera //// As long as we are THE CAMERA object, do the following //if (!b_MouseActionsOnGameObject) //{ // // How fast we want to move the camera zoom // float f_CameraZoomFactor = 1.0f; // // Get the current X, Y and Z position of the camera // float f_CamX = gameObject.transform.position.x; // float f_CamY = gameObject.transform.position.y; // float f_CamZ = gameObject.transform.position.z; // // Add the scroll value / 100 to the Y value of the main camera // gameObject.transform.position = new Vector3(f_CamX, f_CamY + (Input.mouseScrollDelta.y / f_CameraZoomFactor), f_CamZ); //} // If the mouse is down and the object is NOT the camera //if (b_MouseDown && b_MouseActionsOnGameObject) //{ // // Movement Factor // float f_MovementFactor = 100.0f; // // Calculate X Movement Range // float f_MovementRangeX = (Input.mousePosition.x - f_LastMouseXMovementAmount) / f_MovementFactor; // // Calculate Z Movement Range // float f_MovementRangeZ = (Input.mousePosition.y - f_LastMouseYMovementAmount) / f_MovementFactor; // // Move object via a drag by following mouse x, y location and translating to object x, z // gameObject.transform.position = new Vector3(f_MovementRangeX, gameObject.transform.position.y, f_MovementRangeZ); //} // Move Camera based on mouse cursor hover location in the X and Z coordinates // Detect if we are on the camera if (!b_MouseActionsOnGameObject) { // Get the MOUSE X,Y location float f_MouseX = Input.mousePosition.x; float f_MouseY = Input.mousePosition.y; // Get the screen size float f_ScreenWidth = Screen.width; float f_ScreenHeight = Screen.height; // This is the movement speed float f_MovementSpeed = 1.0f; // Check if mouse is outside of X value on either side of screen if (f_MouseX <= 0.0f) { // Move Camera LEFT in X (-f_MovementSpeed) gameObject.transform.position = new Vector3(gameObject.transform.position.x - f_MovementSpeed, gameObject.transform.position.y, gameObject.transform.position.z); } else if (f_MouseX >= f_ScreenWidth) { // Move Camera RIGHT in X (+f_MovementSpeed) gameObject.transform.position = new Vector3(gameObject.transform.position.x + f_MovementSpeed, gameObject.transform.position.y, gameObject.transform.position.z); } // Check if mouse is outside of Y value on either side of screen if (f_MouseY <= 0.0f) { // Move Camera DOWN in Z (-f_MovementSpeed) gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z - f_MovementSpeed); } else if (f_MouseY >= f_ScreenHeight) { // Move Camera UP in Z (+f_MovementSpeed) gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z + f_MovementSpeed); } } } }
List of Mobile App Markets – Grow Your Game!

In this short article we are going to go over all the various mobile markets you can put your game or app into. There are many and most of them are Android based. Each market has a different strategy which we will go over in this article.
LIST OF GAME MARKETPLACES
Tips and Advice
CONCLUSION
Software Stability and Environments

Building software can be an ongoing challenge, but how do you setup your software environment in order to make sure that clients get the best experience? This article takes a sneak peak into the world of Software Stability!
Thanks to one of my good friends and colleagues (Srdjan L. – A FREAKING GENIUS and a true gem! Hi Srdjan!) who taught me a LOT about stable software, there are approximately FOUR environments (Though each corporation may have a slightly different setup) I recommend you setup to help you in creating more stable games and software (This works well for Multiplayer/Multi-User games or any app where there are usernames, passwords and logins, which most of the latest top AAA games and apps SaaS Software’s generally have – specifically you need some form of SERVER architecture going on).
1. Staging Environment

2. QA Environment

3. Sandbox Environment

4. Production Environment
CONCLUSION
Git Command Line Setup With Unity Step By Step for Beginners

I am going to walk you through how to setup git command line on a new unity project π

1. WHY USE GIT
2. How To Setup Git In Unity








[Ll]ibrary/ [Tt]emp/ [Oo]bj/ [Bb]uild/ [Bb]uilds/ Assets/AssetStoreTools* # Visual Studio cache directory .vs/ # Autogenerated VS/MD/Consulo solution and project files ExportedObj/ .consulo/ *.csproj *.unityproj *.sln *.suo *.tmp *.user *.userprefs *.pidb *.booproj *.svd *.pdb *.opendb *.VC.db # Unity3D generated meta files *.pidb.meta *.pdb.meta # Unity3D Generated File On Crash Reports sysinfo.txt # Builds *.apk *.unitypackage
-
-
Find the folder name in your Asset folder
-
-
-
In your git ignore file add the following line (WITH THE STAR AT THE END): Assets/NameOfFolder*
-
-
Save the file and now that specific folder and files wont be added.
GIT PROCESS:
3. Next Steps
Reference Sites List
6 Outsourcing Tips for Hiring Help For Your Games!

In this article I go over the things I’ve learned after years of getting help with service providers worldwide! From Art to assets to full out developers, here are 6 tips that I learnt along the way!
As you grow and expand your business you may find that you need help. Lets face it we’re not all artists or musicians or even 3D modellers! While trying to wear many hats you end up creating DEV games that show a serious lack of skill in several of those areas. So what do you do at those times? YOU OUTSOURCE! But where do you start and what do you need to watch out for? Lets walk into that in more detail now!
1. You Get What You Pay For Holds True…But There Are Definitely Some Gems!

2. The Further East the Lower The Quality (In General)…The Further West The Higher The Quality (In General)…

3. The Further East, The Lower The Cost…The Further West, The Higher The Cost

4. Pros and Cons of Outsourcing

5. A short list of service provider sites

6. GET IT IN WRITING! Keep an Email Trail!

CONCLUSION
7 Must Have Gadgets and Gizmos to Speed Up Your Unity Development!

7 Must Have Gadgets and Gizmos to Speed Up Your Unity Development!
Gadgets and tools that will save you time or make your development life easier and even increase your productivity!

1. Logitech MX Master Mouse
2. Noise Cancelling Headphones

3. Fidget Spinner / Toy
4. Standing Desk
5. An Ergonomic Chair

6. External Monitors

7. Notebook
Conclusion
5 Visual Studio Coding Tricks to Speed up your coding

5 Visual Studio Coding Tricks to Speed up your coding
5 Visual Studio Coding Tricks to Speed up your coding
How would you like to INSTANTLY save more time and energy coding your games? Over the years I’ve learned many fun tips and tricks that have helped me to speed through things in Visual Studio. I share with you some of those tricks that have helped me plow through MASSIVE code…I’m talking 100k+ lines of code with massive amounts of scripts. These are just some of the many useful tips and tricks I’ve learned over the years but figured I’d write some of them down here in this post. May these tips and tricks serve you well in your own coding endeavors as you build the next hit game in Unity!
1. TODO

2. Fast Refactoring


3. Jump to Definition (F12)
4. Attach to Unity with Breakpoints





6 ASO (App Store Optimization) T.R.I.C.K.S. To Stand Out From The Crowd!
January 25, 2021
Game Development
No Comments
Nav from Academy Of Games
These App Store Optimization T.R.I.C.K.S Will Give Your Users A Better Experience!
T – Title
R – Reviews
I – Icon
C – Customer
K – Keywords
S – Screenshots / Video
INFOGRAPHIC
Conclusion