Hey there, how time flies, and some ramblings.
I'm sure most of you will disagree with my views, however please don't think of me as someone who is saying "I'm totally right, everyone else doesn't know squat", since these are merely opinions.
So I've finally created my GDNet journal. Took me quite a while, too! I hope to be more active around here, as well as in my blog.
I've been working for a living as a game programmer for CandyCane LLC, a small smartphone game studio who has been producing a few games mainly for the iPhone, and more recently for HP Palm's webOS, Android, and Windows 7 Phone, where their probably most popular game is Fling, a game where you "fling" various game pieces so they bump and send each other out of the board until you get only one left. I've been working for them for exactly one year now.
It was a rough year, especially since this is my first job in the industry and I am still kind of a rookie, even though I've been programming for almost 11 years now. My biggest challenges so far have mainly been the game ports from iPhone to webOS and Android, but I'm getting better so it'll probably stop being such a challenge in this upcoming year of work.
Although my dreams of making awesome evolving 3D worlds, a project I called "WorldBase", have been delayed because of my job, I'm hoping to restart working on it in a few years when I have plenty more available resources and thus more security for the entire project, in order to prevent it from failing once more.
[heading]If there's one thing I've learned after all these years, it's that:[/heading]
Learning how game technology works is very important
But people tend to end up trying to make their own 3D Game Engine in the end. This is often a bad idea, especially nowadays when we have the UDK and Unity available free-of-charge.
Spending too long developing game tecnology is a curse you can't escape from
After you've learned how a large part of game tecnology can be developed, you start to feel picky when trying to select a game engine for your projects. That's mainly because you end up developing your own "style" and since all game engines are developed in different ways, with many different tools and interfaces, you will end up disliking them all, leaving you to make your own, once more. This is even more of a curse than most people expects, since you can start a project thinking "I'll make a simple basic game engine" and spend years working on it without realizing you're spending too much time on the tech with little of the game to show.
A lot of commercial game engines out there that are geared for Indies are not that great
Everyone loves talking about Torque, Unity, UDK, C4, etc. But fact is that some of those engines have less-than-friendly Indie licenses or are apparently not very good. As an example, I ordered Torque 2D when GarageGames was reborn and started selling all their products for $99 with Source included. I saw their License, and after posting a thread in their forums, they said the following:
@Nuno - The license allows you to use a copy of T2D for your own development. If you want others to help you in development, such as writing code or creating levels, they will each need a license. Anyone touch the editors, TorqueScript or C++ needs a license. If you have an artist that just creates the sprites but just hands them off to you, never touching T2D, then they do not need a license.
Well, this is horrible from an Indie point of view. Often Indies will have more than one programmer, and spending twice or more of the original license makes the whole thing incredibly expensive. Indies don't always have that much funding, so just getting $99 is quite a feat. If you get a SVN server for your project, which will include torquescript and maybe some C++, even if your artists don't use the SVN directly, you have to spend those $99 once more. Imagine this when their $99 promo goes back to the old price which is probably more than twice as expensive.
The worst part is that it seems that a lot of asset producers seem to be limiting the number of persons that can have access to purchased assets to one, maybe two persons, and the real world just doesn't work that way. In a world where websites like xp-dev.com and assembla.com provide free file versioning services like SVN and GIT, the ammount of people who have access to a SVN server is generally everyone who is part of the group that created the server. So what can you do in order to keep everything A-OK? Create a separate SVN server? Remove access to the SVN from most team members?
Often you'll also find engines that look great, but once you try their demos or look at their samples you notice how they're not something you'd enjoy using. A couple of examples would be C4's engine demo, which although looking pretty sweet, has horrible physics, and the Leadwerks engine's API, which is just ugly.
Now, I don't know if the developer who created the C4 demo just wanted to setup the demo's physics quickly, but trying the demo made me not want to get the engine at all. The biggest demotivator was when i tried to climb some stairs. I'd get stuck, press SPACE constantly in order to jump, and more than often I'd jump backwards somehow, causing me to have to painfully climb those stairs all over again.
It's really hard to manage a team even if there is genuine interest in a project
Yes, it's true. I've created a small Indie team called Flaming Torch Games, and even though we were getting some great progress on our first project, a game that we codenamed "Rectangle Bejeweled", the project is slowly dieing as I speak, even if there is no proper reason for this. Most of the team never communicates with each other, no matter what I try to get them to do so, and some people have barely done anything so far. The problem with internet teams is that they often forget about the team and often get busy with things in real life that will make them unavailable pretty much all of the time. The main problem is that most people just go "hey, that game is cool" but don't want to do any work or just lose interest because it's "a lot of work". However, when there are people actually trying to be productive for the team, they are still very busy, often with their full-time job. Bottom line is, people are very busy, so unless you hire them yourself you'll need a lot of luck to have an indie team that works.
3D games need a team, stat
Often you'll see someone single-handedly trying to make an awesome 3D game, maybe even attempting to do something really "simple" like a character moving in a small chunk of land with some buildings around. However, what I've noticed the most is that that's just not possible to do all by yourself. You need external resources, mainly art, since a programmer is often not an artist and free 3D models only get you so far. You also can't just make some simple textures for a 3D game to behave as "programmer art".