This section is mainly just rinse and repeat. I’ll note down all the possible aspects I have come to understand to fully get to grips with creating something of any worth on Unity:
Scripts – These are vitally important for connectivity, controllers, and the fundamental mechanics in your game. Scripts are the elements that allow you to traverse, change, and trigger environmental and local effects around you whilst also allowing them to perform actions on other game objects as well. Scripts are commonly the jell that links everything together, although Unity has done a terrific job in building a system that is incredibly intuitive, having a keen sense of how the code methods work and the rules that you have to apply in every script allows you to better understand why something happens and why it doesn’t happen, as if the Unity system handled it all for you it would be incredibly difficult to make changes that go against the grain and, in turn, would make it harder to make something original and special. Scripting, by far, is the hardest element of the project to grasp (for me personally).
Interactions – Triggers, colliders, and raycasts make up your interactive features between objects, the environment, and the physics system. This is what instigates Character events and is used in any good form of game editor (such as Arma 3, Age of Empires, or text adventure games). The principles are simple enough, and link well with scripts. The classic line is IF “GameObject” COLLIDES WITH “Collider” THEN “blank” happens. It’s a simple yet effective method of script/game cohesion.
Animation – Particle systems, animators, movement, and realism. These elements are what bring your game to life, hours I have sank into animating every detail of a 2D Characters movement. You perhaps may assume 3D modelling is a harder and more time consuming method of creating characters, however, depending on the extent of your animations, 2D animation could possibly take longer as it would mean replicating the image in many different identical forms (for example in cutscenes, or in full 360 perspective movement if you would want 60 fps smooth animations you may want to animate every pixel of a movement) whilst a 3D model allows you to utilize every possible angle you could ever want and is all set up right at the beginning, meaning there’s less time in the middle used up creating more pixel art. Particle systems can add a flair to your game that makes it look more interesting, a burning house, steaming robot, or sparkling river are just some different possibilities that you can think of when creating particle effects.
Audio and Lighting – Although probably the least vital of the Factors, audio and lighting can add an element of professionalism and also can help you learn the skills you may need one day in different aspects of any job for example creating a video commercial, or testing how lighting reflects off of a particular object.
Advanced Features – These are the features that make your game special an unique, whether it be alterations to the in game physics system, teleportation, scene progression, or technicality in mechanics, advanced features are the elements that are the hardest part to master in coding as it requires you to understand the system well enough to create something original. Although, many people believe the fundamental ideas of what you learn by going through unoriginal tutorials equips you to be able to add these features easier, it is still a monumental moment for any game developer to program something that you thought up and for that to come to life in the real game.
Big (Personal) Common Mistakes:
Three big scripting mistakes I made whilst going through tutorials included trying to add depth to 2D characters as to allow them to move both behind and in front of objects as if they had the perspective of 3D (known as creating a ‘fake perspective’) my aim was to alter the X axis of the Character at each point so that if it was taller than the object it would be behind it and if it was shorter than the object it would be in front of it, this worked, however it used up many many days of my time and was a large amount of code set on a task that was relatively simple; I found out later on that I could achieve the same effect simply by editing the transparency sort mode in Project Settings. One big thing you may need to understand is although you have the freedom to code everything yourself, a lot of the time you won’t have to as someone else has figured a way faster and easier to achieve what you are looking to create (of course, if there is a cost to it you may want to try to make it yourself).
Another big mistake I made was when creating movement for my main character, I forgot to declare one game object, and of course this in turn took me many hours to figure out; initially I assumed it was an issue with the layering of the animations and how they connected as I had imported them in to save time (this didn’t save any time in the long run) but running through the entirety of the tutorial again made me realize the problem was that I had renamed the script so I could better know which controller I was editing on, this means that you need to change every line of code in which it references the script else it will not work correctly.
Finally, my last big mistake was when I was working through my particle system I did every faucet of the script correctly which was by far the hardest element (Instantiation is weird) but the effects kept on staying invisible within the game view but were visible in the scene view, this was weird and I just chopped it up to me not correctly understanding and implementing the blocks of code that tutorials had suggested to me but as I checked over and over again I couldn’t recognize what I did wrong. This both made me worry that if I couldn’t recognize this error how would I be able to achieve what I set out to do and it also made me think how unhelpful many coding manuals were. I eventually realized it was just because the X value meant the effect was set behind the background. After this, the Instantiation (which is the creation of prefab objects in the game world and certain points) became a challenge and took me all day to fully figure out.
Hopefully this shows you that the most common mistakes and errors are usually located within the incorrect usage of scripts and code and by far will become your most irritating moments as it can get very complex. In the same breathe it could be the simplest element of the entire project (where the object is actually placed in the scene).
A very important thing to remember is that you can get so easily bogged down by overthinking your games mechanics and how you are going to get from point A to point Z. The importance comes in the idea of INCREMENTALISM. Slowly but surely working your way through aspects is the way to constantly get ever so closer to improving your code and graphics.