Hello everybody, this is not a “you all suck” sort of thread, but a “Think about this…” type of message.
A little note about myself before we get started,
I am a 28 year old Former United States Marine who has been programming for well over a decade (from age 13 to be exact). Since getting out of the USMC at the age of 20 due to an injury I received while overseas, I needed to support myself, but I didn’t have the mobility I once had…I turned to Freelance Computer Programming. I have been working professionally in the freelance market for over 8 years, and I have learned a few things as I go. (Note: I am 100% self taught, but have multiple certificates in various programming related fields. Such as Security, Networking, Windows Development, etc.)
Time, time, and time again I see people say things like “Its not possible to do insert something here”. While this statement is not 100% wrong, it’s 99% wrong. The most common reason people say this, is because they can not think of the solution themselves, or can not find the solution themselves, therefore they deem it as “impossible”. This leads me to my next bit…Troubleshooting / Creativity.
Like Unity, C#, Javascript, ETC…No language can account for every single possible scenario, and make a function for it. Obviously there is no “USGovernmentSattelite.AsyncControlSattelite” feature. [Feds, don’t raid me]. But, if you truly wanted to, you could use various other commands to get there. Just like you do with EVERY bit of programming.
There is almost always a work around in place that could get your desired result. The matter is finding it.
For example, I just got done reading a post that is asking Unity for the support of a “Launcher”, and how it would make peoples lives “easier”. Although, this indeed would be a nice feature, the result is already obtainable.
Simple creativity on the matter is the process of “I want this (in this example, a Updater / Launcher)…How can I get that if its not already available to me?”
In my examples in the thread, I provided two solutions that would allow them to do this.
I can assume that these people already have a basic knowledge of programming, so I explained in simplistic forms that they could either…
A. Command Line Arguments, or B. Configuration Files.
Meaning…They could easily program a desktop based program in C# (or any other Mono program) that has the automatic updating in it, as well as settings (Sound volumes, resolutions, etc).
They could either A. Pass this information to the game.exe’s command line arguments and read the command line arguments at run time, OR save them to a config file, and read that file at run time.
Now, probably part of the people reading the suggestions would not understand what I meant, or how to get the desired results based off of what I said…So this leads me to my next topic.
Research.
As a career programmer who’s been doing this for oh so long, There are too many times that I decide to go outside of my “comfort zone”(current knowledge) and want to broaden my knowledge, and do something that I normally wouldn’t do. I have spent COUNTLESS hours researching on how to do something, or how something works, or how to implement something else.
Now, when I say research, I do not mean “Post on Unity forums, and check back in 3 hours until someone is NICE ENOUGH to post some code for me, so I can copy / paste it”. I mean look through the unity forums, and Google.
Did you find a thread that DID have some source code? Sweet. Don’t just copy / paste it into your project then complain that it doesn’t do what you wanted it to do…Take the time to LEARN the code being pasted. See a function being used that you’ve never heard of before? Look it up to see exactly what it does.
For example, today alone I was learning about Shaders. I saw some videos, and the guy doing it used the “saturate” function. I had NO idea what this was. After a quick Google search, I found that it will clamp a value between 0 and 1.
I know, I know, more work. I’m sorry. I bet you’re getting pretty tired reading this by now huh?
Which leads me to my next topic…
QUALITY
I too have fallen victim to this many times, where you are tired of a project, or so excited that the end is near, you just want to get the thing out of the door so you can get paid!
This is where mistakes happen. Bugs that don’t get fixed, or bugs that you say to yourself “Meh, the players can deal with it…for now…i just want some money!”, etc, etc.
This is a HUGE mistake. Take a look at the somewhat recent Sim City release. Although, I personally love the game, and think it’s great, look at all of the negative reviews and bad press the game received…due to bugs…or errors.
Marketing…
Just because you make the worlds greatest game, does not mean you will be rich beyond your wildest dreams… You still have to market it. You need to ask yourself “How much would I pay for this game?” and then ask 10 friends…if the prices are in the same ballpark, there is your MSRP.
YouTube videos, facebook posts, forum posts, Steam greenlight, etc, etc, etc. You need to “whore” out your game, and the gameplay. Not just “heres a few pretty screen shots of the game”.
Now, to summarize a few things before I “wrap this up”, I am going to end it with some tips / tricks.
Note your bugs immediately. Put it in a notepad, save it on your desktop. When you think your game is done, go through your list to make sure you fixed all bugs.
Categorize your games issues. I personally do it on a scale of 1 to 3.
1 being “It’s fine, but needs optimizing”
2 being “Not game breaking, but needs to be looked at ASAP”
3 being “Game breaking bug. Needs fixed NOW”.
This will obviously allow you to go through your bugs and fix the more “necessary” bugs.
Make sure you are CONSTANTLY advertising your game. It is better to have 1,000,000 people mad at you that your game isn’t out yet, than 10 people actually playing it when it is released.
So, in short…
Do research, be creative, and don’t succumb to greed by releasing a broken game.