Skip to main content
GameDev.net gamedev.net
🔒 Locked

Space strategy

Started by NIm Sep 26, 2005 at 1:12 PM 23 replies 4.2k views
Original Post
NIm
NIm
I'm looking to do a space strategy game, initially based off of Science Fiction books concerning space combat. I want to basically make your ship entirely modular and technology proceed not in single dvances, but in a fluid line(you reserch fusion rockets, and the efficiency/power of your fusion rockets is proportional to the time that you spent researching.) I do plan doing it in 3d, and eventually I realized that it was kind of similar to homeworld. Of course, I then realized that while homeworld was a great game, it had interface issues. I went back and played it, and found that this was mostly due to short clipping distances, and low resolution, but also I found it annoying that you could get somehting in the middle of the screen, but if it moved, and left the battle, the camera followed it. This is kind of annoying to me. Even if you focus on the whole battle, it could move out far enough to be annoying, all becuase of a single ship. I would like a camera control system that was more intuitive and useful than this, possibly multiple viewpoints like a 3d model editor, but of course it would have to be much easier to use, with a much quicker learning curve. Another thing that annoyed me was the movement system. it tended to encourage 2+1d thinking rather than actual 3d thinking. for those who haven't played it, homeworld has a key m to move, whereupon you get a 3d circle around your ship or group, with other ships represented as circles on that grid, and vertical lines drawn to them, telling you how far away vertically they were from that grid. I'd be looking for the sort of thing that would allow you to forget which way was down(there'd be an option to set an arbitrary down, for those who don't think 3d so easy. I don't know if I could deal with real-3d :) ) I thought about having a 3d grid system, with little cubes at regular intervals, but that is kind of ugly, although that's not a strong opinion. I don't mind pressing m to move though. I intend to have calculation assisted movement, for orbital movement and such. a coolscenario presented in a 2d game I saw once was to have 2 ships in opposite orbits around a center of mass. I'd like that sort of thing, but it's hard to calculate 3d orbits in your head. even 2d orbits take a bit of getting used to. (and by "calculate in your head" I mean intuit:) ) I'd like some kind of line drawing thing, but I need some better UI ideas for that. a player could plan a path before taking it. at some point ther'd be a menu for entering various standard orbits, and modifying orbits and so on, but I need a real RTS UI, if posssible. Thanks for your ideas!
animalmotha
animalmotha
O_o ...Homeworld was perfect.

^_^

I like your ideas, perhaps hexagonal shapes would be better than cubes for a 3d mapping system. Also you need your ships to turn on their axis, once your ships are facing different directions you lose your sense of direction.

But don't you dare say a word about homeworld!!! ^^
animalmotha
animalmotha
Thinking about it now, homeworld rocks so much, imma go play it. =]
NIm
NIm
Really? maybe it's just me, now, 6 years after I played it the first time looking at the clipping distances and resoulution. I loved that game though. I'm just now playing through cataclysm and homeworld, and I'm amazed by how much story and gameplay are in there.

Even so, what do you think about computer assisted course-plotting through gravitational fields? I know that there will be several different ways of doing it, including dead reckoning, but I just have difficulty thinking ogf somehtingbetween that and openingup a dialog box with a picture of the planet and your course and six orbital parameter entry fields. (I'll hav both, but I need something cthat can be done quickly with minumum risk)
animalmotha
animalmotha
Computer assisted would be good, but leaving enough for the player to do could be very tricky.
NIm
NIm
Of course the player is doing something!!! She is deciding the course! but it's easier if the the computer calculates it for her. Sort of like a goto order in more terrestrial RTS, only you have to goto an orbit and particular place in that orbit, instead of a location. in space, becuase nothing slows down of it's own accord, speed and course IS location. Location changes from moment to moment without anyone thinking about it, even without engines running. but to change speed, you either have to be near something massive(thus, orbits), or have some kind of engine running. I pretty much know how to do this, but I don't know the kind of interface that users would want. Recommend a cursory understanding of orbital mechanics for this, but the interface should be so intuitive that you don't need such an understanding.

The game is 3d, so it would kind of be hard to do a hex grid in space. it could be done, but it would be hard. much easier to do a cubical grid, simply because it coincides with a cartesian coodinate system. What I meant by cubes was that there hould be a waypoint at every vertice of the xyz grid. This is useful because it does not require an extra step if you want to move in 3d instead of 2d. as howeworld did.
Paradoxish
Paradoxish
Well, I'm not completely sure that I know what your exact problem is, but as far as UI considerations for space strategy games I can offer up a few suggestions. Take what I say with a grain of salt, though, since I'm working on more of a hybrid strategy/space sim game, not a straight RTS. Some of this might be useful to you, though, or you might have already thought about it.

In any case, I decided to completely ignore Homeworld-style or RTS-style movement orders since I'm not sure how much sense they make in space. There'd hardly ever be any need to move a ship to a certain position in space, only to a position relative to another object.

So, instead of picking a point in space and having the ship move there, all movement orders require a point of reference of some sort. "Move to within weapons range" of an object, "Move to within 500km" of an object, and so on. In the same vein, a ship could be told to maintain a parallel course with another object, shadow it, or to enter into an orbit around it. This seemed like a necessary compromise for me since I'm using psuedo-realistic physics and I didn't want to bother the player with the complexities that entails.

Although I haven't considered the details of this yet, I also want to implement player-set 'nav points' for situations where fine movement control is required. I'll probably use a system something like homeworld in this case - select a location for the nav point on a 2d map and then use a supplementary key to move it 'up' and 'down' the third axis. Nav points would function just like any other object in the game world, so ships could be given movement orders relative to them.

Finally, for more fine-tuned ship control, I'm letting players set their exact heading in degrees, including roll. While the player's setting the ship's heading, but before actually executing the order, a line points out from the player's ship to give an idea of the direction the ship will be going in after the heading change. I'm not sure how much interest that'll be to you, though, since it'd probably be a pain in a real strategy game where you're controlling a whole bunch of ships.

Also, while I like the idea of making up and down somewhat meaningless, keep in mind that you'd realistically want some sort of reference plane that ships could be 'above' or 'below'. It just makes sense as a navigation aid.

Anyway, those are just a few of the solutions I've come up with while working on the same problem.
Jotaf
Jotaf
Wow, this is a though one!
Representing accurate 3D information in a 2D screen is really hard. If you think about it, in most space shooters like Freelancer, when fighting, you never really have a sense of which way is your base or where you came from.
You play it as 2D+1, as if everything on the screen was 2D (point + click to shoot), and the perceived distance to an object is only used to know if it's in range to shoot it or not (or how much it takes to move to it). You never really have a 3D sense of where everything is.

With that in mind, it's easy to see why most approaches end up being less than intuitive.

Now, I don't claim to be the master of all knowledge, these suggestions are just some ideas that make sense to me but I can't guarantee will solve the problem I described.


One idea would be ditching the usual notion of the RTS overhead map, since it seems so hard to implement. This is pretty radical so I'd say there's a 50-50 chance this is the way to go.
A possible implementation would be grouping objects together in discrete groups. One group would be a task force moving from one planet to another, another one would be a planet and all ships or space stations orbiting it.
Your camera would only be centered around one of these groups at a time, and you'd always have a pretty good overview of each group, and move around freely (maybe orbiting) within it.
Homeworld offers an option that is quite similar to this, although it doesn't make the distinction between groups automatically. What makes this any different?
The radar/map would be overlaid over the screen, with a key like caps lock to toggle it. In real 3D. Imagine a big sphere surface around the group you're centered on right now; there would be a dot in this sphere for the enemy base, another one for the incoming enemies, etc (automatic grouping would make sure the map sphere is not too cluttered). A dot could be bigger or smaller to give you a sense of distance. It could be compared to a map of the stars as seen from Earth.

So, you'd have a notion of the relative direction and distance between the relevant space objects. This would be much more useful than an overhead map!

There's room for improvement, but as the core of a new system I think it could turn out to be pretty intuitive!
NIm
NIm
I think it is effective to set headings for your ship, becuase There will only be one ship. It will be strategy because of the speed at which the game progresses, as well as the complexity that each individual ship has. I want each ship to have several components, or even be in several pieces, which I guess would make it several ships.

I love your idea, jotaf, about the sphere over the group you are centered on, and think I can improve on it. instead of around your current group, it will be sized to exactly fill the screen, and be semi-transparent. The symbols used on it would be different enough from the view through it that it would be easily distinguishable. Everything within a certain distance, at the moment I am thinking 10,000 Kilometers will be appropriate, will be displayed inside the sphere, and everything outside of that will be grouped and displayed on the surface of the sphere. I think it may prove neccessary to draw lines from the surface or center of the sphere to objects, like in homeworld. This 10,000km sphere has several other purposes, and will be centered on the player's bridge, so a particular group being looked at will not neccessarily be centered. It will have a diffeent colored symbol representing it's location within the sphere.

There will be several other "worlds" outside of yours, each one holding an enemy ship or fleet, each 10,000 km in diameter. Each will be drawn onto the outside of the map-sphere as a single dot, and drawn onto the starfield as a dot. Planets will be the exception, and will be rendered not as a point, but as an actual sphere, even if outside your world-sphere.

I really like the idea of a line going out from your ship, and simply entering a course change. That is what I will do. That line will extend far beyond your ship, through the entire solar system, curving of curse, for gravity. I also, however, need something for orbital mechanics. instead of a course change, I need to be able to request a higher orbit, or one with more inclination, and a type of transfer orbit to get there. Actually, ths could be done the same way. Just have 6 parameters for the desired orbit, and if neccessary, the optimization of the transfer orbit, along with a parameter for how much optimization to require for the transfer orbit. Perfect! Thank you for the idea!

I noticed htat when I posted this, I didn't get very many meaningful replies at first. What could I do to get meaningful replies sooner?
Jotaf
Jotaf
Quote:
Original post by NIm
...
There will be several other "worlds" outside of yours, each one holding an enemy ship or fleet, each 10,000 km in diameter. Each will be drawn onto the outside of the map-sphere as a single dot, and drawn onto the starfield as a dot. Planets will be the exception, and will be rendered not as a point, but as an actual sphere, even if outside your world-sphere.


Glad it helped :) I'd really like to see a game using this system, so I'll keep an eye on the progress of your game.

Quote:
I really like the idea of a line going out from your ship, and simply entering a course change. That is what I will do. That line will extend far beyond your ship, through the entire solar system, curving of curse, for gravity. I also, however, need something for orbital mechanics. instead of a course change, I need to be able to request a higher orbit, or one with more inclination, and a type of transfer orbit to get there. Actually, ths could be done the same way. Just have 6 parameters for the desired orbit, and if neccessary, the optimization of the transfer orbit, along with a parameter for how much optimization to require for the transfer orbit. Perfect! Thank you for the idea!


Sorry, but I don't think I understand what you mean about the orbits and stuff!

Quote:

I noticed htat when I posted this, I didn't get very many meaningful replies at first. What could I do to get meaningful replies sooner?


That depends, most of the time the problem is that your topic has already been discussed many times lately so people don't bother typing the same stuff again. But if you search the forum you'll find lots of interesting discussions. Sometimes it's just that no one has any creative ideas for your problem :P It's a matter of luck I guess.
NIm
NIm
Quote:
Original post by Jotaf
Quote:
Original post by NIm
...
There will be several other "worlds" outside of yours, each one holding an enemy ship or fleet, each 10,000 km in diameter. Each will be drawn onto the outside of the map-sphere as a single dot, and drawn onto the starfield as a dot. Planets will be the exception, and will be rendered not as a point, but as an actual sphere, even if outside your world-sphere.


Glad it helped :) I'd really like to see a game using this system, so I'll keep an eye on the progress of your game.


Don't hold your breath. This is a learning project for me, so it'll be a whill the specific item being lerned being opengl, so I don't have too much done yet :) Once that gets done, though, it should be come playable shortly thereafter. No idea when that'll happen though. Kind of tripped over myself getting into college this year, so I've got my hands full.
Quote:


Quote:
I really like the idea of a line going out from your ship, and simply entering a course change. That is what I will do. That line will extend far beyond your ship, through the entire solar system, curving of curse, for gravity. I also, however, need something for orbital mechanics. instead of a course change, I need to be able to request a higher orbit, or one with more inclination, and a type of transfer orbit to get there. Actually, ths could be done the same way. Just have 6 parameters for the desired orbit, and if neccessary, the optimization of the transfer orbit, along with a parameter for how much optimization to require for the transfer orbit. Perfect! Thank you for the idea!


Sorry, but I don't think I understand what you mean about the orbits and stuff!



Basically, a gravity source curves the path of an object, which is why you get orbits. I wish I knew of a good orbital simulator to help you get the idea...
Quote:


Quote:

I noticed htat when I posted this, I didn't get very many meaningful replies at first. What could I do to get meaningful replies sooner?


That depends, most of the time the problem is that your topic has already been discussed many times lately so people don't bother typing the same stuff again. But if you search the forum you'll find lots of interesting discussions. Sometimes it's just that no one has any creative ideas for your problem :P It's a matter of luck I guess.


Many thanks. I shall endevour to promulgate fewer and simpler ideas at one time, and also to search the past few pages of the forum:)
SquareDanceSteve
SquareDanceSteve
Did you ever play ORB? Offworld Resource Base?

I think that is the best single player strategy game from the control and fluidity point of view.
-----------------www.stevemata.com
CombatWombat
CombatWombat
Homeworld really was 2d+1 when you consider the ships never pitched or rolled. They always existed perpendicular to the usual plane and they only moved vertically with it.

Control with all axis of rotation... I've thought about that alot as I've always wanted to make something like this. And I've NO clue where to begin.

You could control the units foreward speed and then issue orders via rotations specifically. Like order Cruiser A to maintain 20m/s and pitch up 30 degrees. This brings up the issue of trying to navigate the stupid things from A->B though. If you guess wrong by a degree or two you will be off a long distance by the time you get there.

Perhaps allow setting a 'nav point' with respect to some other object and then the game will compute the required heading and ...go. Then allow the system above as an 'override' for when you get into close combat. The next difficult problem arrises from how to describe that 'nav point'. I guess homeworlds system works for that though?

Just rambling.

NIm
NIm
It seems to me that it would be to my advantage to do everything in multiple ways.

"Down" might be with respect to a particular ship, planet(determined by axial north/south), system, etc. It would be confusing to have it change all the time, especially if it changed as you changed your current focus. It may also be possible to orient a ship to whatever you set this global "down" to be.

Velocity changes have been kind of a problem, from the design perspective, becuase the distances involved are so huge. Presumably you could zoom to any degree you like. in combat, only your velocity relative to another ship counts, unless you are about to smack into a planet. In this case, it is probably best to make direct changes to your vector, by way of some kind of drag and drop thing. Possibly similar to homeworld, but with a few improvements.
Alternatively, if you know exactly what you are doing, you can input a heading and velocity directly into you navigation system, relative to either you current position heading, or your current point of reference. You could even do constant heading changes this way. set a random rotation and don't cancel the rotation, keep ing yourself in a tumble, which makes you hard to hit or indistinguishable from a random rock.
You could also set a heading to pass through a point (of course your frame of reference has alot to do with this) or stop on a point(it takes fuel to stay on a point, because of gravity), or pass through several points.

For drawing a point in the void, I turn to a rather ancient invention: the compass rose. On old maps, there is are lines that radiate from a number of points on a map. This was later given up for the cartesian grid system, because the cartesian sytem is more precise. I think it would be good, however, to use it to give an inuitive idea of position. Everything this positioning system is used for woould have lines radiating from it in 3d space. Each line would point toward a navigational reference. You'd set a number of these(planets, distant stars, possibly mobile ones like ships you are aware of) and have a line pointing to each. The idea is o give the player an idea of where they are in space. The cartesian grid doesn't do that, nor do the numbers associated with the grid.
This is something I really want feedback on. It's a strange idea, and I don't know how well it would work.



_winterdyne_
_winterdyne_
Does anyone remember a game called Gravity in the early 90's?

That was basically played on an isometric grid that was distorted by massive objects forming hills and so on. A similar grid could be calculated from arbitrary down.

Though for displaying gravity fields, I'd suggest particle systems to show space dust falling toward your massive objects.
Winterdyne Solutions Ltd is recruiting - this thread for details!
MidoriKid
MidoriKid
You should check out Orbiter. The orbital calculators and transfer MFDs taught me a lot about orbital mechanics. I never knew that stuff was so complex! I mean, it's rocket science, not brain surgery. ;) Get the Red Shift mission planner add-on and try to copy the autopilot stuff for your orbital AI.
Paradoxish
Paradoxish
Quote:
Original post by NIm
The idea is o give the player an idea of where they are in space. The cartesian grid doesn't do that, nor do the numbers associated with the grid.
This is something I really want feedback on. It's a strange idea, and I don't know how well it would work.


I think you're risking overloading your player with information and cluttering the interface severely. Even if you have only a few reference points in space, that's still a lot of lines pointing out every which way. It might be a 'realistic' way to show how navigation works, but I'm not sure if it'd be very fun or even particularly manageable.

As far as giving the player a good sense of direction and orientation, I think just using nav points like you'd find in any space sim would work fine. Have the location of planets highlighted in some way, so if you're looking at an external view of your ship and rotating around it you can see where they are relative to your position.

For actual long-range navigation I don't think it's really necessary to even go that far, though. Like I said before, I don't think there will ever be any reason for the player to want to go to a completely empty point in space. You'll almost always be travelling relative to something else, so it should be good enough to provide a list of landmarks (planets, starbases, other ships, whatever) to select from when you're plotting a course over a long distance. You could use either an actual list or a map that lets you scroll through them in a visual fashion.

If there is a time where you'd want the player to just pick a random spot and fly to it, you'd probably want to generate a nav point there anyway so the player doesn't get lost. If you do that, the nav point just becomes another 'reference point' for the player to travel to.
Jotaf
Jotaf

Quote:
Original post by Paradoxish
As far as giving the player a good sense of direction and orientation, I think just using nav points like you'd find in any space sim would work fine. Have the location of planets highlighted in some way, so if you're looking at an external view of your ship and rotating around it you can see where they are relative to your position.


That's a bit how I had suggested. Obviously you can't see objects that are far away, but an overlaid map mode with some way to also give you a sense of distance (for example, bigger or smaller dots) and maybe also some filters would be very intuitive. I think it would be enough to rule out the usual notion of over-head map.


Quote:
For actual long-range navigation I don't think it's really necessary to even go that far, though. Like I said before, I don't think there will ever be any reason for the player to want to go to a completely empty point in space. You'll almost always be travelling relative to something else, so it should be good enough to provide a list of landmarks (planets, starbases, other ships, whatever) to select from when you're plotting a course over a long distance. You could use either an actual list or a map that lets you scroll through them in a visual fashion.

If there is a time where you'd want the player to just pick a random spot and fly to it, you'd probably want to generate a nav point there anyway so the player doesn't get lost. If you do that, the nav point just becomes another 'reference point' for the player to travel to.


I agree. But I can see the need to position ships near a planet, but behind the enemy space-station. And it could be even more interesting if you usually order your ships to orbit around a massive target, instead of stopping near it; how would you tell it to follow behind the station? The first problem could be solved if, after specifying the target, you could also refine the order by selecting a nearby location.
Paradoxish
Paradoxish
Quote:
Original post by Jotaf

I agree. But I can see the need to position ships near a planet, but behind the enemy space-station. And it could be even more interesting if you usually order your ships to orbit around a massive target, instead of stopping near it; how would you tell it to follow behind the station? The first problem could be solved if, after specifying the target, you could also refine the order by selecting a nearby location.


You're right, and placing yourself in a specific position relative to another object is probably the most difficult aspect of this problem from a UI perspective.

At the moment, I like the idea of placing a sort of 'navigation sphere' around reference points. The player's actual, final position is a point on the surface of the sphere. The radius of the sphere would be the distance from the reference point, so the player could shrink or enlarge the sphere to arrive closer or farther away. Sliding the 'destination point' around the circumference of the sphere would allow the player to fine-tune his actual position relative to the object.

In concept, it seems like a pretty good system to me, but I'm not sure how it would work in practice. There are definitely some UI obstacles that'd need to be overcome, including coming up with an intuitive way for the player to slide the destination point around the surface while also scaling the whole thing. On the bright side, the exact same system could be used for moving reference points - the player's final position is relative to the object, so it doesn't matter if it's stationary or not.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.