So you’ve made a game and it turns out to be a great idea but has some small annoyances or badly tweaked gameplay mechanics.
What do you do then?
The most common option would be to constantly release updates and hope that everyone remains happy. Unfortunately, not everyone shares the same opinions about the gameplay mechanics. Tweaking one thing will break another player’s experience. Balancing the whole game is one hell of a hard task. Most importantly, balance issues can break the whole game; giving advantage to some and not others will make you lose your players pretty fast ( Blizzard actually spent a year correcting the balance in Starcraft 2 even when the game was done ). Anyhow, balancing is one of the most important aspects and it is pretty damn hard to manage, especially in strategy games.
The less obvious option of keeping everyone happy would be to allow users to modify the game themselves, basically allowing them to create mods for the game. Balancing, gameplay tweaking and improvements can be done by the community itself ! There are probably a lot more experienced people in this world who are better at balancing the gameplay than you, and if you allow them to fix it up, they will do it. By allowing modding, they will create their own versions of the game that fit their needs and expectations, increasing replayability and making everyone happy.
It’s the reason why I chose to make my own engine. The secondary goal of my project is to provide an highly customizable RTS engine that anyone could use to create their own strategy games.
A good selection system is extremely important for RTS games, a good strategy game will allow the player to select their units and buildings in many different ways.
Most basic strategy games should at least have a simple rectangle selection tool, and maybe some custom selection tools as well such as the one in SupCom 2 which allows paint-mode selection and even though I’ve never really tried it I’m pretty sure it can be pretty handy in certain occasions. Other selection methods in RTS games can be also helpful : setting groups, smart selection ( like in KKND ), selection by path, any sort of additional way of managing the game’s objects is always welcome, as long as they don’t replace the basic ones.
Now, I’ve seen some indie strategy games which actually only had that basic rectangle selection tool but lacked the real features like adding or removing objects from your selection, those small but significant things are what differentiates a good strategy game from a mediocre one.
Any sort of strategy game should have at least these features :
Here’s a demonstration of the “good” basic rectangle selection system…
Obviously selects everything that interacts with the box
We do the same thing while holding ALT
And BAM! all those units inside that selection were deselected.
If you hold SHIFT, you should be able to add units to the group.
Finally, the double click selection ( ignore the ugly bodyless units )
Which selects all units of the same type that are visible on the screen
It’s simple as that !
Smart selection is also an important thing to have if your game has a lot of different selectable objects next to each other. When you have few units next to a base and you select all of them, there’s a high chance that you don’t want the base to be included in your selection, smart selection filters out the improbable selection and makes your life easier.
Strategy games need to allow players to have different methods of selecting their units, ability to select however you want is really important, like customizable shortcuts that select certain groups of units.
The more freedom of management you have, the better it is. Realize that not everyone plays the same way as you do, think about all those crazy micro-management Koreans !
Although I did write at some point that making an engine and a game at the same time can be a challenge, but if you add something such as a RTS gameplay using various experimental techniques that you see mostly in recent games it will definitely result in BOTTLENECKS.
Especially when you’re the only one developer.
The solution is to actually avoid looking too far into the future, it’s true that I’m not going to be able to replicate Unreal Engine 4 tech nor have my game directly explode like Minecraft did due to my engine’s platform limitations. However, I can start with something simple, finish it and then develop and advance this technology.
The biggest bottleneck for my project is the fact that I chose to create an engine along with it instead of using an existing one, it’s not exactly something simple but thanks to it I learned a hell lot of things and my knowledge was overfilled with all those little secrets and techniques. Now that I’ve already have something in place, a custom and personal engine made and optimized just for this game, it seems a little bit pointless to use another one, especially when there are no good free engines that specialize in RTS genre ( not counting SpringRTS ).
People who aren’t exactly familiar with the networking techniques will think that in a multiplayer game, the server will always be the one sending all the world information to every single player all the time, even though it ensures that every one sees the world the same way as others, it’s not always the best solution. Instead of sending every 20 millisecond the states of the enemy AI from the server to clients, we can simply send the action to perform and then simulate the same behavior across the clients and make them behave in the same exact way everywhere, saving us a hell lot of data to transfer which we can use for more important stuff. For certain types of games such as FPS ones, it’s acceptable if some things aren’t simulated in the same way across all machines but for RTS games, synchronizing the gameplay is THE most important thing.
The first problem with my game was the fact that I underestimated the determinism, I thought “hey, I could simply make some fancy pathfinding and replicate it across clients” but I soon discovered that a floating point can be a bitch and small differences were noticeable while doing network tests, ultimately ending up with desynchronized games.
The problem with floating points is that you don’t exactly have the same result on all machines ( if you’re interested for more details, here’s a nice A-to-Z article on floats : http://randomascii.wordpress.com/2013/02/07/float-precision-revisited-nine-digit-float-portability/ ) but in some languages such as C++, you have the possibility of forcing the machine to use a certain standard, allowing the floats to have same results across all platforms. Unfortunately in C#, you do not have this option.
I didn’t expect the lack of such thing and this had caused me some problems because most of my game’s logic was already heavily based on floats. AI wars’ developer Christopher M. Park encountered the same kind of problem for his game and he managed to create a fixed point class that would be used like deterministic floats, resolving his problems once and for all. ( http://stackoverflow.com/a/616015 )
My new goal for the new build of FationCommand would be avoiding the floats and using integers or fixed point values instead.
I stripped out a lot of code from the new version, so I’m slowly putting things back while taking in account all the issues that I hadn’t anticipated in my previous version. It’s not exactly a slow process because I’m mostly copy pasting working things from the legacy code, but the advantage is that I can now properly arrange the code structure and make it cleaner and more stable.
I’ll try to write about the issues I had encountered next time.
Enjoy my new fancy water shore effect for now =)
What I’ve been doing lately, well, at least what I used to do before I snapped.
What you see on that picture is the new animation editor ( old one here ) I was working on, a small side game project which was supposed to help me rest from constant RTS coding, I actually wanted to remake my first flash game but then something even worse struck me.I’ll make this extremely vague and just say that a lot of bad shit happened, and the progress of the actual RTS was postponed for quite a while ( …or several months ) and we never finished the playable beta which we wanted to release before the new year. Me and the team encountered a lot of unforeseen issues with the current RTS project that required some heavy changes, to which I didn’t have enough mindpower or time to spend. Also, the increasing work at my actual job drained much of my mental energy everyday, and at some point I had decided to not to touch anything related to game development at all.
Basically long story short : I was in a shitstorm and no significant progress were made during that storm.
I wouldn’t be exactly posting this if there weren’t any good news, the current good news is that I’m slowly getting back on the development.
( Oh right, about the factioncommand domain going down, I just forgot to pay for it and it went away, woops =P )
Found some old pics of an old project, thought I would share since my updates are incredibly slow =P
Found some old pics of an old project, thought I would share since my updates are incredibly slow =P
( Who the hell am I kidding, that chart is way underestimating my success. )
Been fixing some few bugs I’ve made recently because of the whole materials refactoring, but unfortunately I couldn’t spend too much time. Time is now becoming more and more important for me since I’m no longer a student and I no longer have the power to work on the game whenever I want. Ten months ago, before I started to work, I thought that an IT job would be pretty much equal to a school, much to my surprise, I was wrong. Somehow, I didn’t realize that I wasn’t doing much at school, which in consequence granted me all this energy to spend on coding in the evening, but now at work I actually have to use my energy all the time leaving me so little to spend on the game. Not to forget the infinite amount of distractions available to me after work that just suck away my time.
Luckily there’s an advantage to this whole shitty situations, the more away I am from making my game, the more motivated I become.
Oh look, a new episode of Game of Thrones is out today !
What characterized the old RTS titles such as C&C series was the simplicity of the gameplay. If we check all the modern RTS games, we notice that multitasking plays a bigger and bigger role everyday, and that could be considered as the current rising problem in the latest strategy games. They tend to become so complicated that just learning how to play the game starts taking hours ( Achron ) or units become so dull that normal strategies require a huge armies in order to succeed ( SupCom ).
We notice that recently a lot of old games have fully succesfully risen back from their graves with a new title and new enhancements. Starcraft II, Mortal Kombat 9, Diablo III, TorchLight, and many other games - instead of trying new random crazy experiments that have great chances of failing, decided to go back to old days and take the old gameplay back to the future. You might think that old gameplay flows were unpolished and bad, you may be right in some cases but generally all those old games were made simple enough so that people could easily understand the concept and get into them without a problem. I’m not talking about making games mainstream, mainstreaming is making a game easy to all audience, what we want is for people to be able easily adapt to our game and the best way to do that would be creating a gameplay that’s simple and yet can become really complicated and challenging. Once again, Chess would be the perfect example for this.
The first time I played a C&C game was a random skirmish, I hadn’t even started the campaign mode. The game started with one MCV and the only thing you could do is deploy it, then after deploy the only next thing was building a Powerplant, then Refinery, Barracks, Units, and slowly like that I understood the whole flow of the game. The gameplay was some sort of step-by-step tutorial itself, the flow was so easy that even a kid could grasp it.
The problem now is that when a game becomes too simple, it looses it’s aspect of strategy. We have to find the right balance between the complexity of the gameflow and simplicity of the gameplay, so that people can easily adapt and still have many possible strategies at their disposal.
Don’t get me wrong, I love the Supreme Commander series ( except SupCom2 ), but every time I play I feel that almost every single unit in that game is worse than a simple chess pawn.
Fun is the one of the most important elements in any game.
Games have to be fun, otherways people wouldn’t play them? True, but unfortunately, the problem is that the word fun varies from genres and slowly through time it evolves and changes. We found Pac-Man fun in the beginning, but what if the game was released today ? It would’ve been considered as a one boring, replayability-lacking and unimaginative game. The reason why it would turn out like that,is because that genre ( which can be put into action games ) has a strong evolving definition of ‘fun’, because it’s a game that can be played only in one way and doesn’t have much to offer in terms of strategy choices. How about if we choose to go with Chess? Did chess become boring? No, Chess has kept its title of being a good game thanks to all the possible strategies you’re able to use. RTS games are like that, but even better. They do not only offer good reliable strategy choices, but they also rely on your speed of execution of those strategies.
You might think that a realistic RTS game might be fun, it’s not. Fun gameplay and a realistic world don’t mix well, reality involves one of the most strategy-defying elements called “randomness”. Having randomness kills most strategy and ruins the gameplay in a worst way possible. Imagine if Chess games were realistic and your every piece had a certain percentage of defeating the opposing piece, that would render most known strategies useless and the outcome of the whole battle will be fully depend on a lucky roll of dice.
A good RTS bases on reliable strategies and speed, just like Chess but without turns.