Advertisement

Idea for avoiding (some) micro-management in RTS games

Started by May 07, 2006 02:29 PM
20 comments, last by TheTroll 18 years, 9 months ago
One thing I have always been annoyed with in the popular RTS games is that I have to do micro-management. I just hate doing a pretty successfull attack only to find out I didn't notice that all my wood-gatherers had just been idle because they couldn't find any wood. I got a little idea which might, or might not work, I haven't implemented it myself and doubt I ever will. There will most likely be a lot of grammatic and spelling errors in it, I apoligize. I have run the document through a spelling checker and read it over a couple of times, but lots of errors might still be there. Problem In many of the more traditional RTS games today (Red Alert-/Star Craft-/Warcraft-style) micro management is a very big problem. Often you have to take care of many small groups of units, for example in Warcraft and Age Of Empires you have to make sure your workers gather wood from the correct places and don't start looking for wood near the enemies bases or too far from where it's returned. In most RTS games you have to keep creating units, upgrading your technology and expanding your base, while you attack the enemy, in addition you might also have to make sure your workers gather resources from the correct areas. If you are attacked you have yet another thing to take care of. If the units were able to attack on their own, if the workers could stay close to the base etc. then you might be able to take care of everything, but units have basically no AI. Often you choose a group of units, you can then attack a single unit at a time, when this unit is dead your units start attacking, either at random or follows some very bad algorithm. This gives very bad results compared to when a player guides the attack. Having units attack a mill, while a hostile catapult or a whole army is attacking them, is not rare. How to reduce the micro-management? The main problem is the stupidity of the units (lack of AI). The have very simple, hard-coded rules. Just imagine the gain you could get if you could choose between ten different strategies when attacking, maybe strategies like:
  1. All attack strongest enemy
  2. Attack closest enemy
  3. Choose strongest enemy, where there aren't enough attacking units
  4. etc.
Actually we could get much smarter strategies, but they would be hard to present in a list form. Now imagine you could also specify input parameters to the strategies, now you could say find the strongest enemy which isn't attacked by a force n times his own, if you believe taking out the strong enemies first is a priority you should have n high, if you like to battle all the units keep n low. Some of the strategies would be hard to describe as text though, and shouldn't. The player shouldn't need to know the exact formulas used to determine which enemy to attack. Consider the following pseudo code.

STRATEGY
{
	// Input from the user
	USER_IN
	{
		MAX_DISTANCE_FROM_BATTLE_CENTER = 0< feet
		RULE_STRICTNESS = 1 to 100
	}
	// Input from the game
	GAME_IN
	{
		BATTLE_CENTER = POINT
	}
	// Code for each individual unit
	UNIT_PROCESS
	{
		// Check if we are to far away from BATTLE_CENTER
		DIST = DIST ( BATTLE_CENTER, POS ) IN FEET
		IF ( DIST > MAX_DISTANCE_FROM_BATTLE_CENTER )
		{
			MOVEMENT_GOAL = RETURN_TO_BATTLE;
			// Calculate how important it's that we return
			// If the value is low the unit might choose to keep out of battle
			MOVEMENT_GOAL.IMPORTANCE = (DIST- MAX_DISTANCE_FROM_BATTLE_CENTER) / RULE_STRICTNESS;
		}
		REL_F = RELATIVE_FORCE(THIS.CURRENT_SQUAD, CURRENT_ATTACKERS)
		// If we have double the force of the enemy and someone needs assitance
		IF( REL_F > 2 && FRIENDS_NEED_ASSISTANCE )
		{
			SQUAD.SEND_FRACTION_TO ( REL_F/(REL_F-2), SQUAD_IN_NEED_OF_ASSISTANCE)
		}
		ELIF ( REL_F < 1)
		{
			CALL_FOR_ASSITANCE( IMPORTANCE = 1/REL_F)
		}
	}
}

A very simple and very general strategy. In a real project we would use much more sophisticated strategies, but this was just to show the flexibility. Now imagine if we called this the "general attack strategy", we could also have a "cooperative attack strategy", "take out magicians attack", "protect buildings defense", "defensive attack", "base attack" (quickly kill enemy workers, barracks etc., but still keep defensive) etc. These strategies of course wouldn't be limited to attacking, we could assign a little group of workers with a "close the base gathering" strategy which make sure workers are always close to the defense, and maybe even build towers at strategic positions. Another group of gatherers could get assigned to "valuable resources" strategy, which makes sure they always try to find the best resources even if there are no friendly units nearby and fog of war still covers the area. Assigning a strategy to a group of units would feel a little weird to the user, in my opinion at least, so I would instead call these "strategies" generals; since it makes more sense to say a general is leading units than they just have this strategy. So you have an offensive attack general, cooperative attack general etc. This introduces yet another strategic choice; a general can only be attached to one group of units so if you start to like one general you will still have to use different generals, since you many groups of units. If I were to implement a system like this, I would do it in a hierarchy-way. For example imagine this:

     RESOURCE SUPERVISOR
                /     \ 
BASE_GOLD_GROUP        \ 
                        \ 
                       / \ 
                      /   \ 
                     /     \ 
                    /       \ 
         BASE_WOOD_GROUP    EXPLORING_GOLD_GROUP
The groups BASE_GOLD_GROUP, EXPLORING_GOLD_GROUP and BASE_WOOD_GROUP might make requests to the supervisor. For instacne if we have too much gold, but not enough wood some workers from the gold group might be transferred to the wood group. In the same way in an attack against a base we might have a "strategic buildings and towers" group of catapults and a couple of heavy-armed warriors (something like a Grunt in Warcraft), to protect the catapults. Another group of light warriors, maybe with horses, is assigned to a "worker killing group". Then we have a main group of different units which attacks all the enemy units. Above all of the groups we have a supervisor making sure all three groups are close to each other, possibly transferring units between the groups. The supervisor might also send requests, either directly to other generals or to the player who then have to decide (s)he you can make the request. So do you have any thoughts on this idea? Do there already exist games using this kind of stuff? Do you think it would completely ruin or game? Or do you actually think it could work if properly implemented?
I think properly implemented, it could add something to the genre, but it would also take something off, since micro-management is both the bread and the butter of it. You can difficultly imagine a game where it doesn't show. And I have difficulties imagining a Real Time Strategy game where all the strategies are already hard-coded.

If I was to add something to a RTS, I would probably add the possibility for a group of units to act as a TEAM, which means that at no moment, the first member of the group can be further from the center of the group than is the last member of the group, meaning that, if due to a bad path finding, one of the units of the group cannot get from A to B, then all the group stays behind, because of the "You don't leave your own behind" Navy Seals rule. Which means that the devs should greatly enhance pathfinding, for a start. Maybe have a Group pathfinding, with each member of the gruop acting as a random movement aroudn a central vectoriezd direction, or something. I would also like to see some different formations, like loose ranks, tight ranks, and such. I think it could be beneficial to see the same strategies as in NeverWinter Nights for group movement included in some RTSes...

On the other hand, I have to admit that being able to predefine some set strategies could be beneficial for the players, since when you're doing an attack, you don't always have the time to juggle and toggle between different units to give the perfect orders, and it's also pretty difficult to bypass the stupid AIs. But at no cost would I want to play a Strategy game where all the strategies are predefined by the conceptors. It woudl rule out the fun of it.

Then, maybe, if you can think of a way to allow the player to define his strategies through, maybe, a sort of priorities ranking, through icons of sighted units, then THIS could be interesting. But I cannot conceive a game in which everything is already done for me.
Yours faithfully, Nicolas FOURNIALS
Advertisement
That is an excellent idea.
However the one thing you have overlooked is efficiency. When you have 1000+ units on the map, it is incredibly difficult to calculate the best strategy for every single unit without sacrificing processing power.
However, if this was pre calculated behind a loading screen, the player would never have to know.

If you have an existing engine, could you implement this and tell us how it works?
Quote:
Original post by Fournicolas
I think properly implemented, it could add something to the genre, but it would also take something off, since micro-management is both the bread and the butter of it. You can difficultly imagine a game where it doesn't show. And I have difficulties imagining a Real Time Strategy game where all the strategies are already hard-coded.


The whole idea is that you won't get that hard coded feel, because if each strategy have 3 inputs and we have 3 groups which can choose from 10 strategies. Then we would have 81 ways of combining it. Of course in many of the groups you will still have to guide the units, because the strategies can't take everything into consideration and know exactly what the player wants to achieve.

Essentially you make a strategic choice before the battle where you split up groups and assign strategies to them. When you're in the battle you should observe the battle and if something isn't going right you should adjust the parameters of some of the strategies and maybe even change the strategy of a group.

Also the player should still be able to control the units like in a normal RTS, but when the player is gone they should go on following the strategy they where assigned. In this way the player will always have something to do if he is better than the strategies.

Quote:
If I was to add something to a RTS, I would probably add the possibility for a group of units to act as a TEAM, which means that at no moment, the first member of the group can be further from the center of the group than is the last member of the group, meaning that, if due to a bad path finding, one of the units of the group cannot get from A to B, then all the group stays behind, because of the "You don't leave your own behind" Navy Seals rule. Which means that the devs should greatly enhance pathfinding, for a start. Maybe have a Group pathfinding, with each member of the gruop acting as a random movement aroudn a central vectoriezd direction, or something. I would also like to see some different formations, like loose ranks, tight ranks, and such. I think it could be beneficial to see the same strategies as in NeverWinter Nights for group movement included in some RTSes...

Yes, this would definatly be beneficial.

Quote:
On the other hand, I have to admit that being able to predefine some set strategies could be beneficial for the players, since when you're doing an attack, you don't always have the time to juggle and toggle between different units to give the perfect orders, and it's also pretty difficult to bypass the stupid AIs. But at no cost would I want to play a Strategy game where all the strategies are predefined by the conceptors. It woudl rule out the fun of it.


As stated before you should be able to gain control over your own troops, the strategies is a back up when the player isn't available or when the player shouldn't waste his time.

I do agree that if not implemented properly it could take some fun away from the player, and we also have problems like this, for instance when waiting to get enough resources for something you most of the time have nothing to do. I do believe, though, that if done correctly it could work quite well.

Quote:
However the one thing you have overlooked is efficiency. When you have 1000+ units on the map, it is incredibly difficult to calculate the best strategy for every single unit without sacrificing processing power.
However, if this was pre calculated behind a loading screen, the player would never have to know.

1000 units could be a problem, but still imagine if each unit had to be processed once every second. So 1000 units/sec, if we could keep the processing time at 50 KHz (I know KHz is not a good measure of performance, but it's easy to compare with the CPU) then to process all the units would only occupy 50 MHz or 2.5 % of a 2 GHz CPU. Remember that workers and idle units will have very fast processing.

Quote:
If you have an existing engine, could you implement this and tell us how it works?

Unfortunatly I can't implement it myself, right now at least, both because my engine is far from done and because I'm planning another project (role playing FPS/TPS with completely procedurally generated worlds).
What you are saying is very true about todays RTS games. When you look at perhaps the very first RTS game ever made you start to see how different things have become.

I think the problem with many games today is that they are not fun and they are too focused on micro details and forget about the action.

For example, to this day Herzog Zwei (yes that sega genesis game) still has elements that todays top RTS games lack.

here is a list of orders that it had

Supply
Home Base Attack
Secure Minor Base
Enter Minor Base
Attack when approached
Circular Defense
Base Defense

Keep in mind it was made in 1989! but it sounds a bit like what you are talking about.


When I want to make a game I like to take a look at the old arcade games. I often ask myself how i can recapture the fun of those old games.

I'm actually working on a 3d version of Herzog game right now. :) I might post a few screen shots soon.
Make it 3D and in space, and you've got yourself the game presented to Ender, in Orson SCott Card's saga's first volume, Ender's Strategy.

The main characteristics of said game were that it was Real Time, 3D, multi-front, and that the conditions of victory changed from mission to mission, because, well, it wasn't a game at all, in fact.

But what made it so interesdting was that it made use of "generals", in that Ender was the Ultra-Arch-Generalissimus, who commanded fleets from high level, and his sub-commanders all commanded a squad of battleships, and even some of them a squad of fighters. He had to make use of his generals and of available troops.

I think that learning to command the commanders, while leaving to them the execution of small tasks, and remaining high enough to be able to see every detail would be extraordinarily good for the genre. But I guess it would also be extremely difficult to execute properly...
Yours faithfully, Nicolas FOURNIALS
Advertisement
I'm currently making a 3rd person action/strategy game(it's actually a lot more, but this description is good enough for this thread). This is a short version of the thought-process behind the command-layout. This might not apply to RTS's but it might spark some ideas.

Design goals:
I compared movies and action-series to games on how the hero controls the friendly units. In games there is a lot of micro-management, in the movies the hero only says what needs to be done. It's not very ofthen (s)he says who to do what. In games this is how the controls has been done.

Goal based controls
So I came up with goal based controls. The player tells what needs to be done and the teammates/ai does it. Cover this, move there, fall back, etc. However in movies, the hero never really tells that the teammates to stop a order(unless it's a hold-fire order). To solve this I thought about using strengths. If a order is strong enough it is taken, this way I could give several orders(attack on the leftside and attack on the right side) and have the team split up and attack from several angles. However a problem with this approach is when to stop using a order. Reduce the strength over time(Option A), or only accept multiple orders in a tight combinations, a few seconds perhaps(Option B).

Teaming up
Another idea came to mind when I was reading a review of full spectrum warriors: ten hammers. Splitting the entire teammates set into manageble subsets: teams(Option C). You are not controlling the teams directly but instead giving goals to the currety team. Once a order is given a new team is selected (automaticly). This system has the downside of you have to give several orders for moving the entire team, but this could simulate the "go go go" command and could be lessened if the player easily could change the team size.

Final Result
Unknown, I'm still working on the engine/basic game code so I can't really tell. As far as I can tell Option B and C seems to give the best result, but only gameplay tests can show the truth IMHO.

hth

Back on track with the RTS. This seems to have the possibility to be come a great _strategy_ game, and not a micro-management game that the others seem to be. When I'm done with the current games on my todo list I'll let you know - I'll probably take about 40 years :)
Quote:
Original post by Anonymous Poster
One problem might be that the game might become too simple/easy to play. Right now to master an RTS game you have to be darn fast clicker and micro-manager AND know which strategies to use against whatever opponent.

I think that's the problem with some RTS's that will not be named: if you took out the micromanagement there would be no strategy left. In my eyes this is a flaw of the game, not the idea of removing micromanagement. Isn't this an RTS? Give more meaningful choices to the player.

It only takes one mistake to wake up dead the next morning.
The Total War series split the micromanagement and the strategy into two different games.
The battlefield decisions have to be made quickly using the resources available, just like an actual battle. The long term things like research, financing an army and building an army are turn based, giving players more time to think, just like a real war.

Fights take minutes, beurocracy takes months. In RTS games, all of the infrastructure building takes place at a frantic pace, totally unlike anything related to an actual war.

Personally, I didn't miss the exclusion of base building and micromanagement from the battles. It gave me more time to concentrate on commanding my troops.

Micromanagement was further reduced by having regiments. You didn't have to tell each individual soldier what to attack. So you were only effectively ordering around 20 or so entities.
Quote:
Original post by Frequency
I think that's the problem with some RTS's that will not be named: if you took out the micromanagement there would be no strategy left. In my eyes this is a flaw of the game, not the idea of removing micromanagement. Isn't this an RTS? Give more meaningful choices to the player.


this is one of the reasons i don't like rts games; they're almost always RT with minimal s. if you break most of these games down to the actual strategy involved, it's almost always one single, simple strategy(zerg-rush?), and whoever has the best UBER-MICRO wins. all i've seen in the last few years worth of rts games is better graphics, the same ai(with no i), more of the same 10 billion mouse clicks to keep your army gathering resources to build more mindless drones that don't know how to walk from point a to point b. i'd like to see a rts game without the endless micromanagement, and instead some ai that lets you plan out your STRATEGY instead of having to repeatedly tell your gatherers to keep gathering and fighters to stop committing suicide and getting stuck on terrain.

i believe CTar is on the right track.

(after reading this post again "rpg" and "mmorpg" came to mind [lol])
This space for rent.

This topic is closed to new replies.

Advertisement