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.

 

 

It’s these times that optimization band-aid techniques (As I like to call them because we are literally patching up something to make it work on a lower end device) will help you out. So here goes in no specific order πŸ˜‰

1. FILE SIZE – Build Report Tools

There are several build report tool assets on the asset store and Unity itself comes with one. (I personally use this one => https://www.assetstore.unity3d.com/en/?stay#!/content/8162)
Needless to say, when your final file sizes for your output (Either an APK or ipa file etc.) get out of control, you can count on a build reporting tool to tell you what is taking up space. As our projects grow in size, it can be hell to try and find what specific items are eating up your final build size. Most of the time it happens to be TEXTURES. When you do find these textures, many times you’ll notice that those textures are like something on the scale of 4096×4096 or 2048×2048 when in actuality they only may require a 128×128 footprint. You’ll instantly save precious file size on your output simply by changing the size down of the image and recompiling. It’s that simple and this one tool/trick has helped me COUNTLESS times (Especially for Android world where you need to get your apk sizes down under 50mb/100mb to be able to download easily over cellular data).

2. FPS Trick – Near/Far Draw Planes

Inside of your cameras (Specific to 3D Games or 2.5d Games where 3D is involved), you can set the clipping planes differently. This has the effect of rendering LESS polygons on the screen and can considerably help your frame rates. You’ll have to tweak your near and far planes a bit however to find a good mix between quality and speed (Because if you overdo it, then players can see the actual polygons being cut out). When done right, you can instantly increase your FPS, sometimes considerably!!

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

This one trick is so useful and has helped me to get a similar VISUAL quality (End users generally dont even notice it) yet a MASSIVE boost in acceleration and fps as well as a decrease in draw calls!
Here’s how the trick works, first get to an area in your game that is SLOWING to a crawl, then you look out past the game play area and see where the player wont generally go. This could be mountains, scenery, etc. and then turn off all the game objects except for the scenery. (I usually make the skybox a solid color so I can cut out the final image using an alpha png texture).
Once you have done this, TAKE A SCREENSHOT (You can use print screen or get a nice in-editor screenshot utility to help you out) and then go to your favorite image editor (I use GIMP hehe, yes I still love it over photoshop) and simply make the background TRANSPARENT. At this point save the new image as a png file so that you have the alpha channel and then bring it into unity and create a new material with this texture.
Next (This is where this trick is so awesome), you simply take a 2D Plane and apply the texture to it and then position it right in the same view where you were before. You then delete ALL objects behind that image and VOILA! Instant reduction of polygons and draw calls and in many of my own past tests, an instant bump to fps (Sometimes its a little bump, but still every fps bump is a win in my opinion).
Your final view to your end user should literally look the exact same or similar, yet you as the developer obviously can see the difference. A similar technique is used with FOG to remove objects behind the fog and render them in slowly. You can use the fog version as well as both do work very well, but fog does tend to really be a system resource hog so I generally use this 2D Plane trick.

4. Optimization – Texture Atlases

Yes yes, there are those who know exactly what a texture atlas is (You can skip this point if you know this stuff), but for me when I was younger I had no clue what this was, and how much of a life saver this one concept can be!
So the concept of texture atlases can be confusing but its basically a whole bunch of textures within one giant texture that is applied to several objects instead of one texture per one object. This concepts allows for many objects to share a single texture.
I know the concept itself may sound confusing, but what it does is AMAZING! In my opinion it is among the largest contributors to draw call reduction around. Every time an object has to be drawn on the screen, the system has to go grab the object and then create a NEW texture or material in memory to apply it to the object. Now if you have several objects all using the same texture, this makes the computers life easier as there are less materials being placed into memory and the system can reuse those textures.
This creates the most OPTIMIZED solution. However what do you do if you DO NOT know how to do this atlasing stuff on your own? Simple! Go to the Unity Asset Store and find some of the awesome texture atlasing tools available.
I personally use MeshBaker (https://www.assetstore.unity3d.com/en/?stay#!/content/5017) however you can choose which one you want. The point is to know that this concept exists and that you can make use of it when you need to optimize your game!

5. Optimization Trick – Square Images

Lets face it, games are not generally square, so how do we make our textures fit within this magical SQUARE size that Unity can optimize better with?
Literally SQUARE the image! For example if you have an image that is 923 x 433 I’d literally take the longest side first and ask myself what the closest square image is (In this case 1024×1024), and so then I’d create a blank image of that size and paste in this image of 923 x 433 into the 1024×1024 image. I have noticed that my graphics turn out better (especially in 2D) but don’t just take my word for it, try it out and see for yourself how putting squared images will help you out πŸ™‚ (BTW Side Note: This was a CRUCIAL thing for me on iOS my textures using PVRTC compression would go wonky if I didn’t have them in square size. Once I did that, all my images came out crisp and clear in 2D and allowed for a much higher quality in the end).

6. Optimization – Use Static Batching

If you don’t do this already, for any of your 3D objects that you know will NEVER move, you need to make them static! To do this simply select any object or objects you know will be static or non-moving in your game (Trees, Walls, etc.) and then inside the inspector view select the Static checkbox.

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

If you’re like me, when you first start using Unity (Even after having to reinstall a new version) you run into the whole Auto-Generating lighting stuff that literally takes time to do. Each time you move an object or make simple changes you end up waiting for such a long time for lights to render. It seems as if things slow down to a crawl and in some cases it can halt your creation of your game while you wait for LIGHTS to render.
Here is what I do, I simply turn off auto-light generation and then before actually pushing out a build I manually go and generate lights. This one trick saves me time and again having to wait for lights to render in Unity editor.
Here’s how you do it:
a. First, go to Window => Lighting => Settings
b. Finally uncheck the Auto-Generate

Now you can enjoy working nice and fast without the issue of lights being generated every other moment slowing your system to a crawl when you don’t need it. (And when you are ready to generate lights, simply hit the Generate Lighting button!)

Conclusion

So there you have it, use some of these optimization and speed tricks to help you work better, create games faster and optimize your games for maximum FPS, reduced draw calls and overall smaller file sizes! My friend Warren Wang has even MORE amazing optimization tips in his article here => https://connect.unity.com/p/performance-optimization-primer-part-1
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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!

It’s no secret, many of us develop so much and work so hard that we end up DREAMING in code! As a person who’s burnt out many times (And yes even landed myself into the Hospital on occasion from it), I’ve learnt that it is NEVER worth putting your health at risk PERIOD!
These next 7 keys, tips and tools have helped me and I hope to really bring up this conversation inside of you to focus on a healthy balanced lifestyle as well so that more of us are LIVING LONGER and pushing a health first developer economy!

1. You NEED to take a break!

So many times we as developers work hard, I mean literally overwork! 16-24 hours, some will even pull in no sleep for even longer than that! Not only is your cognitive thinking completely useless at that point, your motor skills and judgement skills are literally 0% or even negative. Sometimes you get stuck on code and you just dont want to leave until you solve it.
Did you know that if you JUST WENT TO BED you may actually solve the challenge in your dreams? It’s happened to me time and again that during or even after a great nights sleep, when I come right back to the code, it’s like I can magically see the issue and solve it!
Lack of sleep and breaks can literally lead to all kinds of diseases and illnesses (I’ve personally found I catch colds and flus easier when that happens). Take a look at this article link on 11 Effects of Sleep Deprivation, its pretty crazy => https://www.healthline.com/health/sleep-deprivation/effects-on-body#1.
SO What the heck can we do to help us with this?
    1. 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!
    1. 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).
    1. 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/
  1. 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

It’s no secret, you inherently know that you need to work your body out. Just 30 minutes of physical activity a day will keep you living longer and healthier than most!
Stand up at work, infact if you can take at least 1-2 hours in the day to swap desks to a standing desk to help you out, DO IT! FIDGET!! Yes that’s right, shake a body part (A foot, an arm, whatever), get a fidget spinner, but little movement is better than none. I personally have a rubiks cube as my fidget spinner and its been helpful to me! I also have a standing desk and stand for a good amount of time.
Early to Bed and Early to Rise, I usually will wake up around 3-5 times in the main week (M-F) at around 6am and I try to get to bed by around 10pm. I get into the gym by around 6:30am/7am and work out. This ONE habit alone sets the ENTIRE tone of my day and I am able to go into my work crushing any challenge that comes in my path.
Now of course I’m not going to tell you how to get your physical health done as every person is different, however I WILL tell you to do some physical activity. It could be daily sports or daily walking but something that gets your heart pumping for a good 30 minutes daily should help you out (Of course talk to your medical professional about options).
Β 
Yes that’s Me and Yes my Muscles are REAL! πŸ˜‰ 3-5 times a week working out around 30-45 min has led to that after 8 years of doing it.

3. Meditate

Our brains are so wired thinking so much that we forget to take some time to just focus on OURSELVES! Meditation is simply just closing your eyes and thinking about well…nothing really…just letting your mind unwind as you focus on your breathing. It’s an opportunity for your brain to mentally let lose and is different than dreaming or sleep.
During meditation time, ideas and thoughts have an opportunity to come together! I can’t tell you how many times I solved a problem or overcame a challenge just by using this one exercise daily! If you spend just 30 minutes a day (Preferably right after you wake up) doing this one habit it will literally take you to new levels you never even imagined! I do this every morning when I wake up and I plan my day during meditation. It’s an incredible tool on your way to health as a developer and I highly recommend you try it out!

4. Make Time for Friends and Family

Our industry is one of the most INTROVERTED industries around. Its so easy to fall into the trap of talking to no one and meeting no one and just being stuck inside your code. Sometimes we forget even why we do it (And other times some people do it JUST so that they don’t have to socially interact). This is a VERY dangerous thing and should be discouraged completely!
Human beings NEED interaction, it’s something that we all need in order to grow and most importantly in order to live. We as an industry do NOT discuss these topics much so I’m going to put it out there that YOU NEED TO MAKE FRIENDS! That’s right, and for others who already do this, you need to spend time with your friends and family.
Infact in a New York Times Article (https://www.nytimes.com/2017/06/12/well/live/having-friends-is-good-for-you.html) out of 7,000 people surveyed they found that β€œpeople who were disconnected from others were roughly three times more likely to die during the nine-year study than people with strong social ties,”… Now I don’t know about you but that is pretty scary!
For some it is really scary to shake a persons hand or say hello, but I recommend going out there and making a few friends and making some connections. We as an industry should definitely push for this! Please GO OUT to group events such as team building events like Laser Tag or other fun things. You may end up working with some of these very people in a future project and they may remember you as the person who helped them win in Laser Tag!
Another important area is FAMILY! This is for the family men and women out there who have kids and spouses. Please take the time to be a part of your families lives. I make it a point to SCHEDULE in my family time. If you do not schedule in a definite time like “After 7pm every day, and every Saturday” (Or whatever it is for you which is DEDICATED FAMILY TIME) you may miss out the very reason why you are working so hard for!
At my home I created a new tradition (Which I hope you take and do as well) called Family Tuesday. It’s a day in the week that the family comes together, sits down at the dinner table and we say one good thing about each other such as a praise or something kind. We then play a board game after dinner and connect with each other. The general rule is only one or two people are allowed (Usually the parents or heads of the household) to have devices/phones for emergencies only. The goal is NOT to be on the phone but to be really present (mentally and physically) with the family (not buzzing away on a phone or watching tv in another room).
This one tradition has helped strengthen my family bond and I hope you try it out and use it as a tradition in your own families as well so you never forget why you’re working so hard πŸ™‚ You wont have a time machine to go back to cherish the precious moments as your family grows so ENJOY THE JOURNEY!

5. Eat Healthy

My goodness how often do we as developers screw this one up?! From in-office snack rooms to the ever increasing 2-3 times a day coffee runs, developer diets are among the WORST diets around! Unfortunately it leads to many diseases, obesity and chronic illnesses. What’s worse is that an unhealthy diet also SLOWS YOU DOWN mentally and physically! It’s no secret that processed foods are bad for you, and eating healthy is generally a challenge for many. So HOW can we become more health conscious as an industry?
Step 1 is to become a CONSCIOUS eater! That’s right, YOU need to decide what goes in your mouth. Easier said than done at times, but in general if you know it’s not good for you, don’t put it in your mouth! What has worked for me has been sticking to vegetables and fruit (IN THAT ORDER) focusing on more leafy greens when I can (Salads over fries, grilled chicken over fried chicken, etc.).
Take time to learn about what works for your body. For me I’m lactose intolerant, I didn’t know this until many years later!! Give me a milkshake and I’ll be in the washroom and in pain and worse, bloated and won’t lose any weight. Once I found what foods and diet worked for me (Speak to a physician and/or a nutritionist) I was able to easily lose pounds faster and keep the weight off (Obviously I exercise as well so that helps out big time).
Choose Tea over Coffee during coffee runs, and drink a solid 6-8 glasses of water in the day. Your body will thank you and you’ll notice you’ll have more energy and have a clearer mind. We all know how lethargic we get after a heavy lunch, and so I recommend keeping meals light rather than 3 large meals. I split my meals up into smaller meals (4-6 in a day if possible, including little snacks such as nuts, veggies and fruits). When you’ve got a large coding problem and it’s afternoon time, you’ll be surprised how you’ll be able to overcome it with that additional energy boost. I’ve had many times with heavy meals that I can barely stay awake and thus get nothing done in the afternoon times after that. People who are working right now know EXACTLY what I mean lol!
Step 2 is to make a meal plan and start planning out your week ahead! Figure out what foods will give you better vitamins, minerals and nutrients. There are helpful meal planning apps out there on the app store that can help you with that. One I’ve used in the past has been Meal Prep Pro (https://itunes.apple.com/us/app/mealpreppro-meal-prep-planner/id1249805978?mt=8) which helps me to pre-cook meals and have lunches ready to go. Not only do I end up eating healthier I also end up saving MONEY! That’s a HUGE WIN for sure!

6. Have Fun and LAUGH!

Laughter truly is the best medicine and we tend to forget to do this. It’s okay to have fun and enjoy the time we spend when working hard on big projects. From planning to sprint meetings to interviewing potential candidates for your team and much more, we need to take the time to have a little fun.
One thing I like to do is put a smile on a person’s face who is having a rough day. When they are out of a coding session (When they are outside of the Zone, you know what I mean) I’ll sit down with them, tell them something positive or in a team meeting (If the entire team is not at their peak level) I’ll uplift the team with positive words of inspiration or make everyone laugh with a fun little joke (keep them clean!) but something to lighten the mood. From doing a magic trick, to telling someone they are valued and appreciated, laughter and joy literally changes the environment and makes the work move along much more smoothly and in many cases dev teams become more productive. Even things such as sprint planning can become more fun by using Fibonacci cards or some other fun scrum tools out there to make the meeting times less boring. See what works and HAVE SOME FUN!

7. Think Win-Win

This is one right out of Stephen R. Covey’s book 7 Habits of Highly Effective People (I highly recommend you grab a copy at your local book store!). So many times we’re working so hard focused only ourselves that we forget that a TEAM effort is ultimately what wins in the end. There has never been a time that I can remember that any major undertaking was ever done by ONE person alone. There may be one person who people may attribute to as the “leader” or “visionary” but they never got there alone. From Steve Jobs to Bill Gates to any success in our industry. It was a TEAM EFFORT that led to world class results and the only way you can achieve that is by thinking as a member of the team.
Too many times in our industry it can become easy to think that we are “the best” or that we dont have to care about others as long as you got your sprint or tickets done and all your JIRA’s are closed you’re good to go (For those who don’t use JIRA think of any ticketing system or items you complete in your sprint as tickets). I’d recommend you get up, go walk over to other developers and see how you can help them out achieve their sprint goals. Not only will they thank you for it if you help them solve the issue, your team will complete sprints faster and you’ll all succeed as you release updates more often thus => Happy End Users! Another nice benefit of this is you will learn exactly how and where your code is being used and will get to see things from your other team members perspectives. This will allow you to adjust your code over time to be able to better accommodate your peers which in turn means faster turn around times for code and of course most likely an added boost to your paychecks as your team gets promoted more often for hitting targets!
Many hands make for light work!

Conclusion

So to end this off here, I hope you take some time out after reading this to go out there and look at your life right now and make some adjustments so that you live longer and have a more balanced lifestyle. I really hope we as an industry focus more on healthy developer habits and support a great health first culture so that our teams can work better and become more productive.
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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.

Yes I’m sure you’ve gone through the tutorials and sometimes it can be confusing just to get things working. My goal in this article is to lay out all the basics of mouse interaction so you can get the job done and continue working on your awesome game!
Every game object that you create in a scene can’t do anything without a script. Every script that you write will give that object some functionality. Unity itself comes built in with several functions in C# that allow you to figure out when a mouse has gone over your object as well as detecting mouse clicks and other mouse functionality.
So lets begin by making the base code you can use to interact with ANY object in 3D. Specifically we will go over: 1. Mouse Location on Screen 2. Detecting a 3D object under the mouse using RayCasts 3. Detecting when a mouse enters and leaves an object (Non-Raycasts) 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

1. Mouse Location on Screen

Lets start off by creating a new script in Unity and call it “GSMouseInteraction” (GS Stands for Game Scorpion which I just use as a simple naming convention and this naming also makes sure that any other assets you download wont bug out if they have a similar named script called Mouse Interaction).

 

Next we need to lay down some code (Mouse Input Code can be found here from Unity’s Website => https://docs.unity3d.com/ScriptReference/Input-mousePosition.html)! Double click the new script you just made and Copy and paste the following assuming you used the SAME name for the script. Please paste this ONE LINE of code into the Update() function inside of your script and save the file: Debug.Log(“X: ” + Input.mousePosition.x + ” Y: ” + Input.mousePosition.y);
Once done, save the file and lets come back into Unity. Wait for the code to compile (The little spinner at the bottom right of unity indicates that code is compiling) and then click and drag the script onto your Camera. At this point RUN the app and watch the console window as you move your mouse around. (You should see your cursor position).
Notice the negative numbers? These indicate that the mouse is OUTSIDE of the screen, in this case the mouse is bottom left which is where my console window is in this image.
So basically that one function, Input.mousePosition is a Vector3 and contains the X, Y and Z coordinates of the mouse. In general however I ignore the third element and stick to the X and Y as you’ll be using these in most games and apps. So the two mouse position code items for X and Y coordinates are:
Input.mousePosition.x // Floating Point Value
Input.mousePosition.y // Floating Point Value
And I’ve created an image so you can understand WHERE on the screen these positions are:
Bottom Left => 0,0; Right Bottom of screen => 0, width of screen; Left Top of screen => height of screen, 0; Top Right of screen => height of screen, width of screen
As you can see in the image above, the mouse coordinates are based on screen size. When the coordinates are outside of these amounts (Usually in windowed modes) you can safely assume that the users mouse is outside the window.
Okay now go ahead and comment out that line, but keep it there so you have reference code you can use later for your own scripts and mouse functionality. So now that we know how to get the mouse coordinates on-screen, lets move onto the next item!

2. Detecting a 3D object under the mouse

For this next step we need to detect when the mouse moves over an object in our 3D world (Our 2D GUI generally has its on button click so that is separate). To do this we will need to do something called Ray Tracing. A Ray trace is simply pretending that whatever our object (In this case our camera) is looking at, it is looking at it with a LASER POINTER (Just imagine this concept) and the second this so called infinite laser pointer hits something, we can get information back on WHAT we hit and WHERE we hit it, all within 3D space. It’s pretty cool as a concept, takes a LOT of math to do. Luckily Unity has done most of the heavy lifting for us and we can write a few lines of code to make this work. For now inside of your Update() function add the following code (Code Base from => https://docs.unity3d.com/Manual/CameraRays.html): RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { Debug.Log(hit.collider.name); }
Our next step requires us to have an object that has a COLLIDER on it (Any collider will do). For our example, simply make a 3D Cube in the middle of your scene and make sure it has a box collider on it. Now when you save and run the program and HOVER your mouse over the box, you should see the name of the object!
At this point we now know how to get the location of the mouse and we know how to DETECT the object under the mouse…Now we need to figure out how to have an OBJECT under the mouse detect WHEN the mouse entered it and WHEN the mouse left it…

3. Detecting when a mouse enters and leaves an object

Please comment out all the ray cast code (Just comment it so that you have a copy of it for your own use later whenever you need to use it). For this one we need to put our script on any 3D game object in the scene that you want to detect the mouse entering and exiting. In this case here we are using the SAME script and so to make our lives easier I’m going to use a boolean to help us out. Take a look at the code below: // Private Variables private bool b_MouseActionsOnGameObject = false; // 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; } }
So at this point, we have successfully detected if the object is the camera or not and we have assigned a boolean variable that we can now use to enable and disable code accordingly. We will now create three built in functions to test out the Mouse Enter, Mouse Exit and Mouse Over (Hover) an object. Before we do that however, save the code file and click and drag it onto your BOX model in the scene (At this point you should have TWO instances of the code, one on the BOX game object and one on the Camera). Once saved, come back to your code and copy and paste the following code functions into your script: // 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”); } } // Check Mouse Over private void OnMouseOver() { if (b_MouseActionsOnGameObject) { Debug.Log(“Mouse Over Me”); } }
Now go ahead and save the file and run the game in Unity. If you move your mouse over the box, you should see it have the message when you Entered with the mouse, when you were OVER the game object and when you exited the object.
You may be wondering how the heck this stuff is useful, but think about a PC game where you have to hover your mouse over land objects and PLACE something ontop of them. At that point when a game object detects the mouse is over it, you can display a flashing effect on that object and BOOM! You now have an indicator and simple object selection script in 3D! Lets move onto the next items which are to detect a Mouse Down Click and Mouse Up Click! Before we go there, please comment out all the Debug Log comments from the functions (You now know how to detect mouse over, enter and exit!)

4. Mouse Click Down, Mouse Click Up

Okay so at this point I want you to copy and paste in the following code so we can test out the Mouse Click Down and Mouse Click Up (We will do mouse drag after):
private void OnMouseUp() { if (b_MouseActionsOnGameObject) { Debug.Log(“Mouse Up”); } } private void OnMouseDown() { if (b_MouseActionsOnGameObject) { Debug.Log(“Mouse Down”); } }
Okay so now save the code and go ahead and test the code by running it and clicking on the object. You’ll actually notice that the Mouse UP does NOT get fired until you actually let go of your mouse, no matter WHERE the mouse is. Keep this in mind as you are doing your code. Okay so now that you know how to do these two functions, comment out the Debug.Log items and lets move onto the next step!

5. Scroll Wheel Movement Direction Detection

For this part I am going to focus on movement of the camera using the scroll (You can learn more about the scroll command here => https://docs.unity3d.com/ScriptReference/Input-mouseScrollDelta.html). With scroll, we will zoom the camera in and out (Later on you can easily add code restrictions to restrict how close or how far the camera will zoom in). Simply copy and paste this example code into your Update() function to test out the values: Debug.Log(“Mouse Scroll: ” + Input.mouseScrollDelta.y);
Now save and test it out. You’ll see that the actual mouse scroll values will be shown in the console. After you have tested the code, stop the editor and go back to the code. We will now use this value to determine the camera zoom. I want you to comment out that code (So that you have it for your own reference) and then paste the following below it and then save and run it (Once again place the code within the Update() function): // 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); }
Okay so now after you copy and paste that code and save it and run the game again, when you use your scroll on your mouse your camera in the game view should zoom in and out! πŸ™‚
Now go ahead and comment that out so you have it for your own coding purposes. Lets move onto the next learning step which is Drag and Move objects!

6. Mouse Drag and Drag and Drop 3D Objects

Now I’m doing this next step from a TOP DOWN or ANGLED view, thus my Y coordinate is actually going to correlate with my Z in 3D space and my X will be the same (Left and Right). Unfortunately dragging can be a bit confusing so what I’m about to show you is my own spin on things. Feel free to use it and tweak it to your liking. Start by pasting the code below into your GLOBAL variables section: private bool b_MouseDown = false; private float f_LastMouseXMovementAmount = 0.0f; private float f_LastMouseYMovementAmount = 0.0f;
Next replace the Mouse Up and Mouse Down functions with the following changes for the b_MouseDown variable like so: 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”); } }
Finally, copy and paste the following code into your Update() function: // 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); }
And there you have it! Save the code, hit the play button and then click and drag your object around using a click and drag functionality!!

7. Screen Movement via Mouse Location

Okay this final step to really have all that juicy mouse functionality is something that I’m personally using in my own game Armies of Riddle E.X. as well as my future title Knights of Riddle (Both are being made for Steam, so look out for those in the future). Anyways, before we go into the next part, please comment out the code that you did for the last set (That way you have a copy of it for your future use in any mouse interactions you can think of).
Here is how the effect works, when the user moves their mouse OUTSIDE (Or to the edges of the screen), the camera moves in that direction. This is usually used in Strategy and MOBA games heavily like LoL and Starcraft, etc.
Copy and paste the following code into your Update() function: // 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); } }

Conclusion

Okay so there you have it, using the code above you should have all you need for the basics of mouse interaction and movement. If you feel the movement is too rigid (Ex. things dont move smoothly), then you’ll need to use some form of Tween solution like DoTween or iTween.
Here is the Entire CODE for you to download:
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);
            }
        }


    }
}

 

If you enjoyed this, you’ll like my other friend Robin’s incredible article on Buttons (And it even uses Dotween which you’ll definitely find useful for smooth movement!). You can check out his article on how to build a better Button with Dotween here => https://connect.unity.com/p/building-a-better-button-with-dotween
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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.

 

Okay so lets start off by first realizing that the world is NOT just North America. There are many other markets out there and that too many other platforms where we can sell our games and apps. Monetization strategies vary based on the markets you are entering and for the most part you need to understand those markets to really know if it’s worth putting your game into it. So here is the list:

LIST OF GAME MARKETPLACES

LEGEND – Total $ is how profitable a marketplace is in general with 5 ($$$$$) being the most profitable and 1 ($) being the least. Use it more of a yard stick as other markets may actually make you money, but this is just based on my years of experience in the various app and game markets πŸ™‚
a. ($$$$$) Steam (Desktop Games) => https://partner.steamgames.com/
c. ($$$$) Amazon => https://developer.amazon.com/
d. ($$$$) Google Play => https://play.google.com/apps/publish
g. ($$$) Windows Store (Desktop and Mobile) => https://developer.microsoft.com/en-us/store/register
o. (?) itch.io (Made for Game Devs) => https://itch.io/
q. ($) F-Droid => https://f-droid.org/en/

Tips and Advice

I would recommend to keep in mind that the further EAST you go, chances are that your app or game will most likely have its apk file copied off of devices and shared easily. In that case an ad based strategy would be the best bet. Keep in mind that many times people don’t have internet connections all the time and so ads may not always work. In that case I recommend having internet detection code to check if there is internet and just switch off your game if there is none. I personally use this asset from the asset store to do just that => https://www.assetstore.unity3d.com/en/?stay#!/content/19009.
The other issue I would encounter is people hacking/cracking the game and literally GAMING the scores and stuff. To protect against things like that (And the most crazy one I’ve ever faced was one dev house was grabbing all the ad calls, rerouting them to their own publisher id’s and repackaging games and throwing them back on the app store as their own!!) I use another asset called the Anti-Cheat Toolkit => https://www.assetstore.unity3d.com/en/?stay#!/content/10395.
There are other issues as well which you will face, specifically those who can’t use credit cards as they use their Cellular provider and pre-paid cards to pay for their phone. In those cases they put more money into their phones and then they get CARRIER billing charges instead. The challenge is that those charges can be astronomical!

CONCLUSION

Well there you have it, there is a fun little list of markets you can get your games onto. Keep in mind, not all markets make a massive amount of money, but definitely you will see a growth uptick in your games by using these other markets. For example I had some of my games in all of the alternate markets, and my GOOGLE PLAY downloads increased even more because of all the other Android markets having the game (I even ended up getting over 100k+ views on my YouTube promo videos from it generating me some additional side revenue from YouTube ads!).
Hope this gives your game a boost in the long run, and in any case at least now you know of other markets you can potentially gain more users from and possibly even more revenues!
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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

This environment is where all the development takes place. You can consider this the developers area where you can make your mistakes and break things as much as you want. Test out new code ideas, see if something works, but basically this is where all the BUILDING of new features and ideas (and bug fixes) takes place. Should anything happen in this stage, the client or end user will never see it. This should STRICTLY be for developers only and possibly for a Product Manager to kinda see if the team is going in the right direction to test things out.
I would not recommend marketing or any other department to go in to this as they may see a feature that may not be released. Be careful who in the team has access to this part of the product.
Once a product has been tested well in the staging environment (Using internal Alpha testing within the team), you then want to move your build into a second environment known as the…
Β 

2. QA Environment

The QA environment is where various forms of TESTING take place. Listen, just because something worked before doesn’t mean it still does. Any updates or changes you made in code could have literally broken another part of code. The goal of any QA environment is to literally test ALL the areas of your game/app to make sure its working.
Your app or game may have started off with one or two functions but over time this will grow and you wont be able to manually test EVERY function EVERY time. Thats where QA software comes in (Things such as JUnit, Appium, Selenium etc.) and you have SEVERAL types of tests that take place.
Two tests that you definitely want to do are a UI Test and a Code test. With UI Testing you’re testing to see if the PHYSICAL UI Works (Ex. If the user clicks a button, does that button do what it is supposed to do? If so, return SUCCESS, else return FAIL). For Code testing, we want to make sure our FUNCTIONS are returning what we need them to return (Ex. Function A takes in two variables and should return an integer value. Does this still hold true?).
The thing about the QA Environment is that it is ALWAYS preset. That means that everything is predictably set with default values to start with to help test out functions. Your goal should be literally to TEST to see if things work so focus on that => Ex. You are looking to see that if your function adds two numbers IT RETURNS TWO ADDED NUMBERS.
At this point you can then use GIT and other tools for Continuous Integration which will allow for cool things such as auto-building and stuff.
Which then brings us to our NEXT area…

3. Sandbox Environment

The sandbox environment is literally where you have your beta testers and sales team going out to share features. This is basically a production version without the actual final end users. This is where things can be tested for other unseen bugs before launching as now you’ll have users using the app/game, you can see any additional edge cases that you may not have detected in any of the previous tests with a more realistic data set and real users. It’s at this time that any final mission critical items can be addressed before a final push.
Keep in mind that you want to make sure that you don’t have anyone messing around with things when Sales teams are up selling the game or app or future features. It’s happened several times where a “Beta Tester” was updating data when a nice demo was going on LOL!
Finally that leads us to the most important environment…

4. Production Environment

I still remember every time production would ever go down, my good friend Srdjan would just about darned near have a heart attack! Basically this is literally where all the end users are. This is the FINAL build, the actual thing that gets into end users hands.
This is where you want to have analytics and tracking to see how users are using things. From various heat map analytics to video replays (If you can get them) you want to see where your user base is going. What is the user flow, what are they doing in your app or game?
Ironically there have been so many times that the end users use your app or game for an ENTIRELY different purpose!!
You want to make sure you know your up time and the second things may go down you need to be prepared!
Amazon AWS as well as Digital Ocean provide various services to help you with scaling as your app or game grows.

 

CONCLUSION

Well there you have it, if you have a four staged environment like that and build your software through those stages (Staging, QA, Sandbox, Production) you’re going to be able to build better software and ship things with higher quality than if you just went out and made your game and pushed it right to the end user (Basically right to production).
Strategies like this are what the top dev companies in the world are doing (I know I worked at several of them, including my last one) and I highly recommend employing some or all of this methodology to really get your games and apps to that next level! Not only will you have better software and games, you’ll also have a more bulletproof end user experience which in turn means higher revenues and a better bottom line!
Got some additional ideas? Please write out how you are using various environments in your own companies and add to the discussion!
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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 πŸ™‚

 

If you’re like me, an indie developer, who for years never really had a use for git until finally I just had to ‘git’ it done (such a geek joke)…anyways, you may be wondering WHY even use git, how can it help me out and finally how do I set it up? This article will focus only on a BASIC git setup (With the goal to be able to edit base code files). I will not be going into LFS mode or a tutorial on how git works exactly however the reference links I have attached do go into LFS and even how to use git and more advanced functionality as well.
Lets get started!

1. WHY USE GIT

Git is a tool that allows you to have MULTIPLE versions of your project at any given time that you can swap between at any time you wish. It also allows for version tracking which can be useful for many reasons, such as auditing code and even has the capability of telling you all kinds of analytical things that allow you to develop even better (Ex. How many lines of code a dev wrote, Total changes to a file, etc.). There are times that this stuff comes in handy if you’re ever going for a government grant or are looking to get investors and shareholders on board, or even to track how much work a developer on the team is doing. The list goes on and on about the benefits. The entire project is usually stored on a server somewhere online (Either on your own server or on a Git server – aka the ‘cloud’) as well as the original/edited copy on your specific hard drive.
What would be some reasons you’d want to use git for your project?
-Version control -Analytics -Continuous Integration (CI) -Automation (Yep with git you can get into automated things like auto-builds and other cool stuff!) -MUCH MORE!
What sold me when I first got git was the reset feature when it comes to coding => Have you ever said, “Hey you know what, it would be awesome to have FEATURE X in my game…Let me go code that…” Only to find out later on, that FEATURE X was a very bad idea and you just kept going down this unusual rabbit hole to no end? Finally when you realized you went too far, so much had changed in your project and you had no clue how to get back and are now thinking about canceling the entire project?! YEAH I’VE BEEN THERE! How would you feel if you could magically just type in a command and BOOM! You’re back to where you had “Branched” off in the first place to try out the FEATURE X as if you had a time machine and never took that route? THAT’S THE POWER OF GIT and one of the several reasons why so many developers use it.
The OTHER major reason so many developers use it is that because the project is on the cloud or on a server, it allows other developers (either publicly if you make your project public or privately between developers YOU have added to your ‘repo’) to collaborate on the exact same project. Now in Unity we do have a nice service called Collab which does pretty sweet stuff as well so do definitely check that out, but for those who like to go old school, Git has been a choice for many teams around the world when it comes to collaboration on projects. With multiple developers working on one single project, you can have a MASTER ‘branch’ (Basically its the final version of the entire code) and everyone just making a copy and making their changes on that and then merging those changes back to the master. This of course is a simplified version of how it all works (Something called the flow of things, or more specifically a ‘git flow’).
The point is that git (when used properly) can allow you to test out new ideas without fear and allows you to work with a team easily across the world. There are other reasons why people may use Git but these are just TWO of the many reasons why one would use git.

2. How To Setup Git In Unity

I’m taking a bit of a reference here from a few websites that I have used in the past to set things up (Please check below as I have listed the links to these helpful websites).
a. First we need to download and setup git. For this tutorial we will be setting up git console by visiting https://git-scm.com/downloads and clicking on the appropriate link (Windows, Mac, etc.) and Once downloaded simply install and use all the default options (NOTE: I usually like to use GIT from my windows command line, so make sure you allow this inside of the options as you walk through things as my example will be using that). b. Secondly we need to setup a GIT service provider. Now of course you can setup your own Git server yourself, but that is outside the scope of this article. For this article we are going to use a popular (Free with paid options) service called GitLab (They offer 10 Gigs of storage per project and offer private ‘repos’). Go to https://gitlab.com and signup for an account. After that create a new project and follow the instructions as outlined in the image below.
Β 
c. After you’ve given your project a name and a project slug you want to put something inside of the folder so you know everything is setup. I usually will start a project with a basic Readme file. So go ahead and check off the box to initialize the repository with a readme file as per the image below and then hit the “Create Project” button.
d. Now we need to get our new project folder onto our PHYSICAL system. To do that, create a new folder or directory on your computer that you can easily access via command line or console window (Mac). I usually like to put main drive to keep things simple, so I’m going to use the example of C:\PROJECT_FOLDER for our example. So go ahead now and make your new folder using Windows Explorer or Finder.
e. Open up Git Bash (It’s an app that should be installed that came in your git folder) and using dos/unix commands (ls and cd) navigate to the new folder you made.
f. Now we need to go back to our Gitlab account project view and change the link to an HTTPS link and then COPY this link to our clipboard by clicking the button to copy, as per the image below.
g. Now go back to your DOS/unix Git Bash console window and type in the following command (Assuming you are in the CORRECT FOLDER!!!!): git clone [URL_YOU_JUST_COPIED]
Note you may have to right click on the Git Bash console window in order to paste things in as per the image below:
h. At this point you should now have the new git repo on your hard drive inside the folder you created. This is important because now you will do the following step, which is important as I made this mistake a few times and it caused me more trouble than help…If you are making a NEW Unity project, then go ahead and make the project in a DIFFERENT folder outside the git folder you just cloned. If you are using an existing one you are planning to use with git then you can continue onto the next step. (NEW Project In Unity => Place in a DIFFERENT folder!!)
i. Now if you were in Unity 3D we want to close Unity 3D. In any case, find your project folder and take ALL the files within the folder for your Unity project and paste it into the GIT folder that you have downloaded via the clone command as the image below:
If you did this step correctly, your new GIT directory should look similar to the following (Note the .git folder and the README file):
j. Now at this point BEFORE we can do our very first ADD, COMMIT and PUSH procedure we have to now setup our Unity project first. To do this, lets now open up Unity by navigating to our new project folder and opening up the project from there. You’ll know you’re in the right project folder when you see a .git folder as per the image below (It is a hidden folder so you’ll have to show hidden folders).
k. Inside of your Unity project, go to Edit -> Project Settings -> Editor and then set Version Control to ‘Visible Meta Files’ and Asset Serialization to ‘Force Text’ (This will take some time to serialize assets so just wait for it to finish.
l. Once completed, save your project and close Unity. Now create a new empty file which we will use as the Git Ignore file using Notepad (Or any text editor) inside the folder and copy and paste the following data into the file (Obtained from => https://github.com/github/gitignore/blob/master/Unity.gitignore):
[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
j. Now save the file as “.gitignore” (In Notepad you will have to use quotes to save a file in this format). Over time you can add more files here that you want git to ignore. I personally ignore massive asset files that I know I can easily download again. My most valuable asset items generally are the code base, scenes, custom items I’ve made and connected items (Prefabs and things I’ve setup or created) which I keep all separately so I can easily work with them in Git. Aside from that, most of my other items tend to be assets from the asset store which I generally ignore as I can download these from the asset store again anytime and thus I speed up commit times because of this. If you are doing the same thing here is how you add a custom folder to your git ignore file
    1. Find the folder name in your Asset folder
    1. In your git ignore file add the following line (WITH THE STAR AT THE END): Assets/NameOfFolder*
  1. Save the file and now that specific folder and files wont be added.
k. NOW We finally get to the part of Adding, committing and pushing our project up to the cloud! (NOTE: There is a little warning that comes up in windows when doing an add of files which I personally turn off using the command: git config core.autocrlf true You can read about the warning and how to deal with it on this stackoverflow post => https://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is-it-important)

GIT PROCESS:

Start by typing in the following command to ADD the files (The period is required at the end): git add .
After that type in the following command to commit (Surround message in quotes): git commit -a -m “Your Message About This Commit Here, You can type anything you want, I usually type notes on what this commit is about”
Finally use the following command to push it up to your Gitlab: git push
l. If you have done all the items right, when you go back into your Gitlab online, you should see the new commit added with the files. You simply need to do a merge to master at this point as a next step if all looks good.
m. From now on, when you complete your work for the day, simply follow the GIT PROCESS steps above to save your work and have those changes uploaded to the server. Should you want to branch and try new ideas out and so on, I’d recommend learning how to properly use git, which brings us to our NEXT STEPS…

3. Next Steps

This article was simply on SETTING up a basic git system and flow with Unity 3D (Please see some of the reference sites below to learn more). If you want to learn git itself and how to use it directly then I recommend taking a solid git training course. One nice resource I have personally used to learn git was from this website here => https://learngitbranching.js.org/.
Also please do check out my good friend Matthew Ostil’s amazing article on the next level up with BitBucket and learn how to back up your projects with BitBucket and taking Git to another level! => https://connect.unity.com/p/backing-up-your-projects-a-beginner-s-guide

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!

Yes the old adage of “you get what you pay for” generally is true, but at the same time you can save quite a bit of money when outsourcing to the right people. Finding a balance between quality and price can be a challenge and so here are a few things that I discovered while looking for top talent.
a. Use reputable escrow/middlemen style sites where the money is with a third party and does NOT go to the actual service provider (Sites like UpWork.com and Fiverr.com are an example of these sorts of markets).
b. Don’t pay FULL PRICE until the job is done! Paying in installments ensures you will get the work completed.
c. NDA’s are great, but good luck trying to hunt a provider down. From my own experience if someone really wants to take your stuff and sell it, they’re gonna do it, and if you’re paying a service provider $500 for a set of 3D models and they decide to go and sell those models as well to someone else, the question is are you really going to spend more money to go and find that person and sue them? These become the moral challenges within things because it will actually cost more to do that. You’re better off hiring local talent for MISSION CRITICAL items such as your MAIN CHARACTER in a game and then use external artists for not so mission critical, ex. A forest or a landscape. Even if it gets resold, your end users wont really recognize it as much as they would a main character (Hope that makes sense but this is from my own experience). NOTE: This does not mean that you shouldn’t have NDA’s! They are still a MUST as they deter a lot of nonsense, but the point is that don’t RELY on NDA’s is what I’ve come to learn.
d. Paying more does not necessarily equal better quality!
Ok so thats the first point out of the way, the next point took me a LOT of people hired over the years to learn this concept, so take this as many thousands of dollars spent over the years to learn this next item…
Β 

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

So even though this may be common sense, it’s really not that common and people don’t understand this point (And yes there are some exceptions to this rule). If we take Asia is the most east and North America as the most west as we travel around the world looking for service providers you will start to notice a distinct quality difference in your final products.
The more West you go, expect more systems in place to handle things, more quality and more security with your services that are provided to you (Ex. You know your NDA’s and Copyrights are more enforceable the more west you go compared to the east). The more East you go the less these services and infrastructure are there (In General). However in some cases there are full houses and teams DEDICATED just for following north american and western systems so if you find them, keep them as they are GOLD! China for example has some amazing dev teams (One of the many reasons I’m learning Mandarin! Some of these companies are incredible in China)
Now here is what I have personally found (These are personal results, yours may vary) in general: a. Mid-Europe and Eastern European’s are a POWER HOUSE of top quality developers when it comes to software. If I had only one choice to choose developers from it would be developers in mid to eastern Europe. They literally can make magic with code and are so well versed that I just have not found others who can do what they do with code.
b. Philippines => Great for artwork and English skills! Their service providers are great for customer service as well as creating high quality artwork at a relatively mid-price range.
c. China/India => If you’re looking for entire projects to be completed, China has incredible teams of dev houses for it. If I were hiring a team to help me on a project, I’d be choosing a Chinese dev house to help me build it all up (However not the artwork or assets, just literally putting it all together). India I’ve found to have great help for BPO items (Business Process Outsourcing) such as accounting, web development and other business related tasks. I personally however found the challenge was always in copyright issues and stuff and many times the professionals you thought you were working with turned out to be someone else. On several occasions I had people who came in to do the work, and the next day it was a DIFFERENT person or had NO IDEA what to do when they said they were pros at something (Literally lying on resumes and job descriptions). Once again this is from my own experience and yours may be different.
d. Western companies have the highest quality and the same systems and structures you are use to. I’d recommend these companies for MISSION CRITICAL items. From characters to getting your apk or ipa into the app stores, etc. I would NEVER trust others outside of the north american market with my final apk files for example (That’s just me but once again that’s my own experience from things).
Okay so that’s a brief overview of quality and work based on the world…but what about PRICING? Lets dive into that next!

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

So this one should be no surprise as you hear all the time that India and China are generally the cheapest location for service providers. There are a few caveats however that I do recommend and you should definitely checkout if you’re going down the road of outsourcing!
a. India/China => Lowest Cost in general.
b. Philippines => I have found that their teams are a happy medium price wise along with quality and so for saving money I’d go here for art and customer service (As per my notes above)
c. Europe => I like getting artwork from here as it tends to be higher quality. Prices are also relatively higher however not as high as north america. If you’re looking for high quality NPC’s, GUI work or stuff that you need high quality at a price that is pretty great (Not bargin bin but definitely not North American pricing) then Europe is great for this. The software side is definitely on the higher side and so you’ll want to watch and see the pricing. They may actually charge western rates, but you are getting devs there that are literally THE BEST in the world in my opinion. I’ve personally been developing since I was 10 and have years of dev experience and even a degree in computer science and those devs can do circles around me! If I’m going to invest money in top talent for dev work, even at market rates (And yes even times less than market but still up there) I’d be taking on European devs hands down in my opinion (Once again from my experience, your experiences may vary).
d. Middle East => There is a LOT of startups now coming out of the middle east that can do a lot. I personally have not investigated much and so I can’t speak on behalf of it but a lot of new service providers who are outsourcing their services to North American markets are popping up continuously.
e. North America => Most Expensive, These are market rates and you’d be looking at around $50-$300+/hour depending on what you’re looking to have done. Each service provider is different but like I said, if you’re looking for mission critical help, North America is where I’d put my money on if I had to choose my important items (Such as managing my apks, uploading them to markets, building my ipa files and managing my app business).
Now all of this brings me to my next point…Should you outsource?

4. Pros and Cons of Outsourcing

The pros of outsourcing are as follows: a. You save time b. You can have an app or game out before your competitors c. You can have more professional quality results if you do not have the skills that the other providers have (Ex. if you’re not an artist, hiring an artist may bring your game to the next levels) d. You can save considerable amounts of money The cons of outsourcing: a. Money cost (Depending on your budgets and who you choose as your service providers) b. Copyright and NDA issues (This depends on where in the world you choose your providers and each situation) c. It takes time to find a good mix of providers you can trust
There are more pros and cons for sure but these are just a few from each end that I can share from my experiences.
So where should you go if you want to get started in finding service providers?

5. A short list of service provider sites

This list is in no way a full list and there will be others all the time. These are the ones I’ve personally used based on my own experiences.
a. Fiverr.com – People will do different services for $5 (Now more as they upgraded the site) b. UpWork.com – Full out freelancing site c. elance.com – Another freelancing site d. 99designs.ca – Great for artwork e. Kijiji/Craigslist – Yes you can find local professionals on these sites f. YourManInIndia.com – You guessed it, Indian outsourced service providers g. guru.com – Another freelance site h. Toptal – Top developer freelance site i. UNITY LIVE EXPERTS – Your source for the TOP Unity talent
And ofcourse Unity Live Experts!!! (Yes you can get me if you’re lucky! I’m at the more costly end

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

In our digital world, email is the new paper. You need to keep an email trail to protect yourself because there will be times (Countless) where you told a service provider to provide you with X and they deliver Y and say you never said X. This is where you simply take out the email and paste in your exact requirements and what they agreed to.
UNDER NO CIRCUMSTANCES should you ever simply state over a video call or voice call your requirements and then not follow up with an email with the exact same requirements. Infact what I do is I send an email, state the requirements, then in a call I repeat the exact same requirements and then get them to email me back a confirmation that they understood those requirements.
This one set of steps has saved me time and again so that outsourced houses dont try and overcharge you extra fees for a so called “Add-on” to the project that was clearly in the original request. KEEP THIS ONE TIP IN MIND, IT COULD SAVE YOU MANY MANY DOLLARS AND HEADACHES!

CONCLUSION

So there you have it, my six tips and advice for outsourcing which I’ve learnt over the years after investing thousands of dollars and building over 70+ apps and games. I hope it serves you well as you look out for your next service providers!
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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!

 

Lets face it, developing is a lot of hard work, with lots of hours involved. You’re spending days coding and with all that hard work, there are definitely times you’ve probably said “There’s gotta be a better way!” Well there is no MAGIC BULLET but these gadgets and tools will make your dev life easier and in some cases save you hours!
In no specific order, the following list are things that have made my life easier or faster and can make yours that much more awesome as well (Please note, any links to Amazon are NON-AFFILIATE links. These are genuine direct links to the various tools and sites and based on my personal opinion).

1. Logitech MX Master Mouse

My good friend Srdjan swears by this mouse, so much so that literally I made sure I got one. WOW does this thing ever help! I’ve used Magic mouse (Apple) as well as other mice but this thing is so good! It links up to several computers and can even work BETWEEN computers!!
That’s right, ONE MOUSE TO RULE THEM ALL! You can literally drag from a windows pc into a mac with ONE single mouse (Using Logitech’s FLOW technology and the two systems have to be on the same wireless network). I have the MX Master 2S which I bought for around $120.
The most useful feature I use the most is the HORIZONTAL scroll function and the SUPER scroll thing on this mouse. If you’ve never tried this stuff out, I just can’t explain how efficient it makes movement in your systems! This alone has saved me some solid time for sure!
Anyways I could go on and on about this mouse, here is the link to grab one for yourself: https://www.amazon.com/Logitech-Wireless-Cross-Computer-Control-Graphite/dp/B071YZJ1G1

2. Noise Cancelling Headphones

I cannot stress how big this one is! Seriously it changed my life and my code and productivity just went through the roof after I grabbed my first pair.
There are so many in the market, but the ones many devs tend to go for are the Sony and Bose headphones.
You want something that can really clear out all background noise. These aren’t cheap though and the Sony ones can easily run you a good $400 or so. However they will pay you back in the amount of increased productivity you end up getting because of the complete background noise removal. Literally incredible and just can’t be explained, you need to get a pair to really understand how it works.
Getting a pair is up to you, but to let you know, myself and many other devs who got a pair have sworn by them and I for one have definitely seen a massive boost in my productivity and development life because I can focus more instead of all the excess background noise.

3. Fidget Spinner / Toy

Yes the good old fidget spinner/desk toy. This is one that once again is a very helpful thinking tool/gadget. At first it may seem just like a toy, but you’ll start realizing how useful this one thing can be when you’re sitting around thinking of how to overcome a coding challenge.
It literally just gets played with and you can choose what works for you, but having a toy to work with while coding can literally help your thought process. I’m no doctor or something but I do recognize that there is a direct link with our body and mind.
For me specifically, playing with a fidget spinner or desk toy (In my case I upgraded to a Rubik’s Cube because I can solve it at the end of the day after a long coding session, its actually pretty fun and helpful), has helped me overcome several coding challenges and has now become a major gadget/tool I use in my daily dev work.
Fidget spinners and toys range in price. My most expensive one cost me around $100, but that’s just extravagant. You can grab one usually at your local dollar store for less than $5 or on Amazon for under $20.

4. Standing Desk

As you start to code there are times where you just need to stretch. Seriously, going weeks sitting will really catch up to you!
I simply went to Ikea and got a desk top for like $15 and 4 extendable feet for like $15 each to make my own custom standing desk for around $75 or so. Trust me your body will thank you when you stand up and code. I find that I can actually think better standing and get some serious coding and work done while standing. (Especially after the mid-day lunch hour LOL)
There are many standing desk solutions, even ones which can easily convert. Take a look at the options out there and see what works for you, but you’ll see a definite boost of energy while standing. It’s worked wonders for me and I’ve been able to pump out some pretty complex codes during those standing times.
Grab yourself a standing desk today!

5. An Ergonomic Chair

Ah the good old dev chair…Literally you know which chair is yours…it conforms to you it speaks to you, and if done right it can help you code like a champion OR put you to sleep!
For me I actually got a PAINFUL chair on purpose. Not to hurt my back or anything, but something that wont put me to sleep. For others they need a nice comfy chair to code on. I’ve had both, heck even the big “I’m a Manager” chair as well.
Some of the brands of chairs many devs go by are Herman Miller and Steelcase. Check those out if you’re serious about chairs, but just know that Herman Millers and Steelcases can go for a pretty solid penny (Looking at several thousand on some of their models) so keep that in mind!

6. External Monitors

Yep when one monitor is just never enough, you definitely need a second one! I constantly find myself throwing code into other windows and with Unity 3D you definitely have times where you want to do some tests in one window and then code in another window (Ex. Visual Studio in one window and Unity 3D in the other).
If you’re serious about development as a Unity developer then dual monitors are a definite MUST in my opinion.
What you get however is up to you. I personally prefer smart TV’s as I can just as easily swap over one of them to Netflix or cast something from my phone onto one of them.
Many devs prefer top quality monitors with the fastest speeds. During writing this article, the hottest screens are all 4K and the bigger the better! I’d recommend also getting a dual screen holder stand for your screen that you can easily move the screens around should you want to (That’s just an added bonus if you can get it).
Anyways, take a look at the latest screens to see what you like. This one is quite user preference at this point as I’ve yet to see devs all zone in on a particular brand or model like the other gadgets in this list.
My friends, Warren Wang and Matthew Ostil (Both Unity Live Experts and Unity Power Users) recommend Dell and Asus monitors (4K if you can get them).

7. Notebook

This one is a definite must have! I actually personally use just basic notepads and pencils that I grab at the dollar store. At any given time my desk is littered with HUNDREDS of scribbles and notes and seriously I can’t stress enough how big this is to have.
One other nice notebook I have is something called a Rocketbook. It’s literally a reusable notebook. The nice thing about it is that you can take a picture of your notes, convert them into PDF files and then simply erase the book with tissue and water and use it unlimited times! It’s a very useful tool if you’re trying to save on paper (Think of the trees my friend, think of the trees! LOL!) => https://getrocketbook.com/
Another tool I find really helpful is my iPad and Apple Pencil. It does a similar thing and I use that as well when I’m on the go and need to jot out some ideas.
In any case I can’t stress enough how important it is to have some gadget or tool around to write notes on. This will definitely help you as you do your Unity development!

Conclusion

So there you have it, a short but sweet list of “must haves” for any developer who is looking for gadgets and tools to help them out in increasing productivity, becoming more efficient and ultimately being able to code better and faster overall.
And if you have a developer friend (Ahem Ahem πŸ˜‰ *wink wink*) and you’re looking for Christmas gifts, then you now have an idea of things you could buy them that would literally make their development lives that much sweeter!
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

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

Such a neat little trick, I love this one a lot! Basically ANYWHERE you write the word TODO with a colon in comment format, Visual Studio has an internal tool JUST to find these all within your code instantly!
Here is how you do it:
a. Anywhere you want to leave an item that you know you need to do or a note to remember something simply type in the following: // TODO: [Place Your Todo Item Here]
b. Now inside of Visual Studio simply click on (View => Next Task) and you’ll be able to see all your To Do items and even cycle through them!
NOTE: One issue you do need to keep in mind is that YOU are not the only one who will be using this trick. Other assets (Other developers whose assets you may purchase and download) also use this technique so in some cases you may end up seeing their TODO items as well. Simply remove those if you want to or skip over them, but keep that in mind when you are using assets that other devs have made.

2. Fast Refactoring

There are so many times where we have code that is repeated over and over again. To reduce the amount of lines and to keep code clean we want to put those into functions. However sometimes just trying to write those functions can take a bit of time.
One neat trick to help out in refactoring these blocks of code comes directly within visual studio! Here is how it works:
a. Select the code block you want to make into a function and then right click on it and select “Quick Actions and Refactoring” (You may also use keyboard shortcut CTRL + . )
b. Next select “Extract Method”
c. At this point Visual Studio will create a new function with the highlighted code. Now simply type in a function name and your new function will be ready to be used and reused anytime you want! HOW COOL IS THAT?

3. Jump to Definition (F12)

Have you ever been writing code and then forgot where something was defined? This happens a lot and sometimes you’re just trying to figure out where something was created in the first place.
To solve this, Visual Studio has a simple keyboard shortcut to instantly go to a definition of any item. Simply Select the item and then hit the F12 key! It’s that simple and really REALLY helpful!

4. Attach to Unity with Breakpoints

This one is really helpful in debugging. Basically you simply click on the side of ANY line of code to place a break point. You then select Attach to Unity at the top and then run your game in Unity.
The second the break point comes up, you will see it all inside of Visual Studio! It’s a great way to do some serious debugging within Visual Studio itself while having Unity open. It’s also a great way to NOT have to add any additional lines of code to your app/game and still get outputs. This is a preferred method of debugging because of this reason.
Step by Step: a. Click on the side (It is a LIGHT grey vertical bar) with your mouse to get a RED break point on the specific line you want.
b. Click on ‘Attach to Unity’ at the top
c. Hit the PLAY button inside of Unity
d. Finally, you should see your break point show up if everything went right and Visual Studio will halt your app/game and show you the information ready for you to debug (The best part is there is NO CODE CHANGES REQUIRED!!!)
e. Hit the STOP button at the top of Visual Studio (It’s the RED SQUARE) to stop the break point debugging so you can continue coding!!!

5. Alt + Up; Alt + Down

This one is a fun one, you simply go to any line of code and you can instantly move the ENTIRE line of code using Alt + Up on your keyboard and Alt + Down on your keyboard. It can save you some time for sure in moving around in your code. Give a try and see how useful it can be!

Conclusion

So there ya go, enjoy those tips and tricks as you code your next hit game using Visual Studio and C#. Though some of these tips may have been simple they have been quite helpful for me and have saved me some serious time! ENJOY!
Now go make some awesome games! You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

How to Survive The Holidays as A Developer! 5 Tips to Make It Awesome!


How to Survive The Holidays as A Developer! 5 Tips to Make It Awesome!

So you’re going to go into the holidays as a developer…Like it or not you’re going to have to interact with people OUTSIDE of your day-to-day world! These 5 tips will help you break the ice!

Holiday season can be a blast, here are some tips that can help you out as you mingle with loved ones and friends, some of whom may have no idea what Unity 3D is let alone some who (Yes they exist) don’t play GAMES…and even the odd one or two who DON’T USE APPS!

1. It’s about having fun, not JUST hibernating away from people!

Lighten up! This is a key issue I see developers doing at every year during the holiday time (And thus leading to burnout!). They forget that they are human beings too and need to take a break!
Go out to events, host a party, Say hello! Make a friend! Catch up with a loved one! Go and ignite a new love interest! The point is whatever you do PLEASE DO NOT SIT AND WATCH THE ENTIRE 7 (Soon 8) SEASONS OF GAME OF THRONES! Our bodies and minds need HUMAN connections so please go out and have some fun.
In fact I recommend (If you must play games) to buy a few BOARD GAMES that are group games. Fun things like Jenga or other silly games like Scrabble can be fun and bring family and friends together (Especially if you are hosting an event). Board games are always a blast and your goal during these times is to talk ANYTHING but business/dev (Your brain will thank you for it! I mean you are ON A HOLIDAY BREAK FOR CRYING OUT LOUD!!!)

2. Be Considerate Around Non-Dev Folk

When was the last time you stood around two car mechanics talking? How about two doctors? two lawyers? etc. The point is in those situations you most likely feel uncomfortable because you have NO idea what they’re talking about! “Last week I did a triple biopsy with a cardiac blah blah blah…” Yeah the rest of my family is doctors GO FIGURE!
Point is just as you would feel uncomfortable in those situations, there are others who are NOT technical like you so if you’re talking code and you see a few people who do not speak the “Lingo” seriously take a step back and say hello and CHANGE THE TOPIC to something you both understand! You’ll end up making more friends and will also lighten the mood and make things more comfortable for your guests (ESPECIALLY IF IT’S YOUR PARTY!!).
There are other topics to speak about…I generally stay clear of Religion and Politics though (This is a time to be thankful not a time for fighting and arguments, but that’s just my own personal thing lol). Talk about movies, talk about the 8th season of Game of Thrones coming up (That you plan to watch AFTER the holiday season ahem ahem!), talk about things that most people can relate to => “Darn is it ever getting cold outside, eh?” (<== YEAH I’M CANADIAN)

3. DRINK RESPONSIBLY!

This one goes without saying, but please drink responsibly. There are MANY reasons for this, ofcourse the number one being safety, but also there are times where you may literally go against NDA’s and other contracts by blurting things out at these events because you had one too many drinks!
Sure one or two drinks may bring out your relaxed super cool side but don’t overdo it! Be safe and have fun and if you need to…UBER IT HOME! πŸ™‚

4. Don’t Over Eat!

As we are entering a time where there is a lot of HEAVY foods (And some are darn near heart attack levels…but TASTE SO DARN GOOD!), eating healthy during holiday season shouldn’t be an afterthought!
If people generally stay clear of veggies at your party, do something fun to make them more pleasing to eat. Things such as placing greens in garlic sauce or having finger food style veggies with dip can definitely help in getting people to eat more healthy.
Try creating some fun healthy drinks and mock tails for those who don’t drink alcohol and be mindful for those who are vegetarian by labeling foods.

5. Babies, Kids and MORE babies…

During this time of year you will definitely have your share of children and babies trying to touch your coveted MINT CONDITION Star Trek Memorabilia! (What? Am I the only trekkie? SERIOUSLY!?)
Anyways, before having any event at your own place, please CHILD PROOF your place. Put your important items away in a place that a child would not be able to reach.
Keep sharp objects and items away from locations that they could fall on someone short who could reach up (Kids will try and reach for anything!) and if you have some time put together some fun things for kids to do so that they can stay occupied. Setup a game console

CONCLUSION

I hope you all have a blast during this time. It’s a great time to connect with your own clients and other professionals and family and friends in a light hearted fun manner. Be safe and have a lot of fun and remember, You’re a HUMAN BEING TOO! Be yourself and enjoy! => TAKE PHOTOS πŸ˜‰
You are a super star! Keep up the great work and NEVER GIVE UP! You Got This!! BE A CHAMPION!
Nav is a Unity Live Expert and Mobile Game and App Developer

Subscribe To Email

Subscribe To Email. Let's stay updated!