Version control everything
Starting your next project? First thing you should do is set up a local Git repository. Don’t wait, and don’t put it off for later. Do it first thing, even when working alone. Even if you don’t do offsite backups, a local repository is a fantastic way of creating restore points that also offers an important side benefit of allowing you to compare files to see exactly what changed to cause the current horribly broken behaviour. Also, if you do change something for the worse with a repository you can always easily restore your changes selectively to a previous version — whether it’s the entire project folder, or just a couple of lines of code in one of your files. Even better still, getting savvy with branches will allow you to prototype different things without messing up the main (hopefully stable) repository, which grants you far more freedom and greatly reduces change anxiety.
Follow your vision
Every developer will quickly learn that everyone has ideas for games — whether it’s brand-new ones, or simply improvements to existing games. Some of them may actually be very good, and it’s always a good idea to listen to your players when they say that something isn’t working well and needs to be changed. That said though, never let your players pull your game in a direction that takes it away from your original design of what it should be. Strive to make a game that you yourself want to play. Incorporate ideas, but keep true to your own creative vision.
Don’t sweat the small stuff
You may care about making sure that every bolt and nail is modelled on your tiny in-game model that will never take more than half an inch on your screen, but your players won’t. Worse still, they will hate you for wasting your time on something that they simply don’t care about. And guess what? They will be 100% right. Surprising as some may find this, nothing is more important in a game than its gameplay. Your game can have a world made out of cubes and go on to sell millions of copies simply because it gives your players the creative freedom to express themselves with those simple cubes. When developing a game, always aim for the least needed effort to get your vision across. Nobody will care that your fancy starship has a velvet-wrapped gold-encrusted toilet seat if it handles like crap and your game chugs at 2 FPS on a NASA-grade supercomputer. Ask yourself a simple question: what will your players focus on during their gameplay? If your game is about the challenges of taking a satisfying dump in null-G, then such attention to detail will probably help. If, on the other hand, your game is about space-based dogfighting, then you’re simply wasting your time and money. So don’t be that guy. Shift your focus — at least until more important tasks are out of the way.
Play your game
I can’t stress this one enough. The most important aspect of making a good game is playing it — ideally alongside your players. Not only will you gather valuable feedback but you will also see first hand what your players see: the good, the bad, and the horribly broken. I can’t even count the number of times I came up with a great idea that I added to the game, only to find it lacking after thorough play-testing, or severely overbalanced, or simply not working at all. Don’t wait for QA to point out your mistakes. Take the proactive approach and play through your additions yourself first. And after you test it, test it again — then make sure you didn’t break something else in the process. Because trust me, you probably did. That’s just how programming works…
Adding multiplayer is a great way of creating a community for your own game. Even mediocre games can be made great with the addition of coop multiplayer. Not all games will have the same benefit of course — real-time games are more suitable for it than puzzle games, for example. Regardless, if you are considering multiplayer for your game, do it early on — ideally as the first thing you do. Adding multiplayer is generally as simple as changing function calls to remote procedure calls. In layman’s terms, instead of simply doing something (calling a function, setting a variable, etc), send a message to other players saying that that function should be called or that variable should be changed. That’s it! That’s literally all it takes with advanced networking and serialization tools like TNet.
Empower your players
Some players will like your game, some will hate it, and then there will be a few who will like it A LOT. They will spend hundreds or even thousands of hours playing it, becoming your “veterans”. Cherish them. Empower them. Give them special things — whether unique items that don’t imbalance the game, or better yet — moderator privileges if your game happens to be online. With the right tools such players can quickly become your secret army — guiding new players, keeping troublemakers at bay, and even creating content and running special events — but only if you’ll let them. So do.
Once your game is out (and indeed often even while it’s still in beta!), your players will want to change it. It may be simple balancing changes desired by an individual with a slightly different vision, or it may he a complete overhaul in the style of XCom Long War or Arma 2’s DayZ. Making your game easily accessible to all is an important step to greatly increasing its shelf life. Even if the game is mediocre, simply giving your players tools to make it better will have a tremendous effect on your game’s sales. If you choose not to add modding support due to security concerns or to prevent cheating, at least consider adding a way for players to customize their experience — give them hats, flags, paint jobs, etc — just let them make their experience more unique.
Value the "non-mainstream" press
Youtube Let’s Plays and Twitch live streaming have become the go-to sources for information for players considering purchasing games these days — especially around the launch day. When you release your game you can expect a literal horde of people to contact you in hopes of obtaining a free copy or letting you know that they’ve already released a video or five about it. Some of those — Twitch streamers especially — can have quite a notable effect that you can easily observe when looking at the sales graph during and after the hours the content was streamed or put live. As a rule of thumb though… if whomever contacts you has to ask you for a free copy, then it’s highly unlikely that they can have any noticeable effect on your game’s visibility. Worse still, from my own experience with Windward, 19 out of every 20 requests were coming from scammers — individuals pretending to be Youtubers and Twitch streamers in hopes that I would be too busy to do a basic identity check. When you release your game and start getting such requests, always take the time to double-check the contact page on the channel they claim to be. I had a polite generic response to such obviously fake requests: “Certainly, I have a couple of keys for you and your friends — please contact me from that channel via Youtube and they are yours.” Simple, polite, and always sent a clear message: scammers need not apply.
Embrace the piracy
Your game will be pirated. You can fight it, but you can’t stop it. Worse still, when you fight it, chances are you will end up harming the experience of legit customers either by making your game slower or by inadvertently causing stability issues with the game itself. My suggestion to fighting piracy is simple — just don’t. Simply accept the fact that your game will be available for free somewhere and work to enhance the experience of legit customers instead. For example in Windward I was releasing frequent updates that would add new content, but would also have a side effect of preventing older versions of the game from connecting to updated multiplayer servers. Those that chose to pirate the game could still play it solo — but to play online they would need to go legit first. Also keep in mind, even without such incentives, every pirate is a potential source of free advertising. They may not pay for the game, but if they like it they will tell their friends about it — and their friends might just buy it!