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

RTS Making

Started by Aidsterramma Jul 2, 2007 at 10:25 PM 31 replies 4.5k views
Original Post
Aidsterramma
Aidsterramma
Well, I hope to make one in the next years or so, but I will get to my question. A couple friends and I have a fantastic idea (to us) about an RTS we hope to get out into the world. The only problem is, I do not know what computer language to use to program it all. Is C++ okay? I am really a novice at this as I really care about it starting now although we have thought about it since two years ago. Also, what should I be "worried" about when creating a Real Time Strategy?
Welcome to my world. Now sit down and shut up.
Oberon_Command
Oberon_Command
C++ isn't an especially good language for beginners. I'd recommend googling C#, FreeBASIC, or Python and using those as a starting language. Don't worry about what language you choose, you can use just about any programming language to write an RTS. Just pick one.

In any case, what language you choose doesn't matter, since it'll be a while before you'll be skilled enough to write that RTS of yours. You can decide the language the final product will be written in when you have some experience under your belt.

Remember, start small, and work your way up. This holds regardless of what language you choose.
Alerion
Alerion
http://www.gamedev.net/community/forums/topic.asp?topic_id=325768&whichpage=1�

1) Here is a thread made by a member a while ago with the same questions. Perhaps you'll find the responses garnered there enlightening =D

Language choice is strictly one of preference. So you should experiment and find one that you like the best. I like C++ because lots of people smarter than me use it, and that way I can bug them with all my ridiculous questions. Since it's the industry standard, it also has a lot of great resources you can use without dealing with translation (I actually learned C++ by translating samples and tutorials into Pascal which was the first programming language I learned).

There are, of course, downsides. It's structure has often been criticized as being archaic and cryptic.

You might want to consider something like C# (which I have not used personally) which I recommend because many find it to be much easier to learn and understand, and Microsoft has really been pushing it.

2)I can't say for certain what might be troublesome in making an RTS game other than the generic difficulties in making any game. I've been teaching myself programming for over a decade now (only started formal training a year ago) and I'm still struggling daily. It's not for the faint of heart!

But the rewards, well, I'm sure you can imagine them yourself. Multiply them by 10, whatever you see.

Good luck!
-Ally
ender_341
ender_341
Are you more interested in creating the game from the ground up, or just designing the game (units, levels, etc).

If you are just interested in designing it I would suggest using basically any RTS on the market and modding it (try a few games modding tools to find what's simple enough to use, but isn't useless). Most RTS's have at least a level editor, but some of the better ones allow custom models/sounds/resources. I'm sorry I can't suggest any good games to try this from as I haven't really messed with them that much beyond trying to create really basic maps.

If you are interested in building it from the ground up I agree with what everyone else has suggested, find a language you like and use it.
-Matt S.
M Eversberg II
M Eversberg II
I too am planning an RTS, though I know I'm making it in C++. I too have some nifty ideas to bring to the table.

M.
<work in progress>
Aidsterramma
Aidsterramma
I am not worried about what everything will look like right now, only what to use for putting them into the game and setting speed and stuff, like a normal RTS should have.

I think I'll start learning some C#.

Can anyone tell me if the RTS Game Programming Using MS DirectX 6.0 by Mickey Kawick is any good? I have thought about purchasing it for a while now.
Welcome to my world. Now sit down and shut up.
Emmanuel Deloget
Emmanuel Deloget
Quote:
Original post by Alerion
2)I can't say for certain what might be troublesome in making an RTS game other than the generic difficulties in making any game. I've been teaching myself programming for over a decade now (only started formal training a year ago) and I'm still struggling daily. It's not for the faint of heart!

But the rewards, well, I'm sure you can imagine them yourself. Multiply them by 10, whatever you see.

Good luck!
-Ally


From the graphic point of view, a 3D RTS is very similar to any other 3D game (and a 2D RTS is very similar to any other 2D game). So you won't find a RTS specialized graphic engine - although you may find a specialized game engine.

From the game architecture point of view, there are some differences which are tied to the genre.
  • local AI: loads of pathfinding, so it needs to be fast - and it better to be good too, as your player won't appreciate to have their units blocked by a wall when their city is under siege.

  • global AI: unless you are doing a newtork-based RTS, you'll have to cope with opponents AI. That's by far the most difficult point, as the opponents have to act in a logical way - gather resources, build stuff, attack or ambush the player - but should be limited as well - it's quite possible to create an AI that can't be beaten, but that's not very fun to play.

  • Interractions: There is a lot of interactions to cope with. You have many different unit and building types, how do they interract together and so on. This means a lot of tweaking.

If I think of something else, I'll post it.
Emmanuel Deloget
Emmanuel Deloget
Quote:
Original post by Aidsterramma
I am not worried about what everything will look like right now, only what to use for putting them into the game and setting speed and stuff, like a normal RTS should have.

I think I'll start learning some C#.

Can anyone tell me if the RTS Game Programming Using MS DirectX 6.0 by Mickey Kawick is any good? I have thought about purchasing it for a while now.


It's going to be very dated. I would suggest you to not buy a book about RTS programming, but instead to do some basic web research on how every part are to be implemented (the most significant part will probably be the AI).

Matias Goldberg
Matias Goldberg
Quote:
Original post by Emmanuel Deloget
From the graphic point of view, a 3D RTS is very similar to any other 3D game (and a 2D RTS is very similar to any other 2D game). So you won't find a RTS specialized graphic engine - although you may find a specialized game engine.

From the game architecture point of view, there are some differences which are tied to the genre.
  • local AI: loads of pathfinding, so it needs to be fast - and it better to be good too, as your player won't appreciate to have their units blocked by a wall when their city is under siege.

  • global AI: unless you are doing a newtork-based RTS, you'll have to cope with opponents AI. That's by far the most difficult point, as the opponents have to act in a logical way - gather resources, build stuff, attack or ambush the player - but should be limited as well - it's quite possible to create an AI that can't be beaten, but that's not very fun to play.

  • Interractions: There is a lot of interactions to cope with. You have many different unit and building types, how do they interract together and so on. This means a lot of tweaking.

If I think of something else, I'll post it.


Also from the architecture point of view, I would add:

1) To guide you, many games used the algorithm A* for what Deloget referred as pathfinding
2) 2D pixel-coordinates to 3D world-coordinates transform. That way the player can use the mouse to interact with his units. This also involves Ray-picking (This only applies if you're planning to make 3D RTS Game)

Can't figure out anything else now

PS: I've been learning C++ all by myself since I'm 14 (you never end learning programming). However my experience says that you'll need like 2 years of hard work and practice in order to be prepared to write an RTS game. I know because I'm writting one too. However, I had to suspend it because of no available free time. Now I restarted the project because I'm moving to a (very-well-known) graphic engine called OGRE. You're too begginer for OGRE, but my advise is to start somewhere else since you don't know about C++; I started tweaking the XGL Glide Wrapper, then made some usefull (but tiny) apps, created a very powerfull image viewer using DirectDraw (which I never released because of a bug in WinXP I never fixed, but writting it's core helped me A LOOOT) and a TnL engine (http://x86mph.sourceforge.net ) THEN I started writting an RTS game (which is my main objective since I'm 15)
PS2: I'm 19 now.

Dark Sylinc
Aidsterramma
Aidsterramma
Well, my friends and I plan to make a small RTS first, just to get a good grasp on what it takes to actually build one. We are going to include a few tiny tidbits of what an RTS really is, and to us an RTS is all about how the player feels about it. Something like that, eh? Hehe.

Anyways, since there is no BEST programming language for programming an RTS, I think I'll start browsing around with the different languages that are out there. I have the Torque Game Engine from a book (3D Game Programming ALL IN ONE Second Edition. by Kenneth C. Finney, the first and only book I have bought) and it can easily be used to put an RTS into so I have no problem with the choice of Engines, for now.

AI is a big thing for RTSs, I know. I do not want to get into too much of a detailed AI system right now, I want to get "familiar with my surroundings" if that makes any sense, hehe. I have never really understood programming, such as how it is possible to decipher what word goes where and when.

What would you suggest to be a good starting point for a novice like myself getting into the RTS field of game development and what approach should I have to this? I know it takes a helluva lot of time to create everything a "perfect" RTS deserves but I would really want to start now because my friends and I hope to create this in the next couple of years.

Edit: I just thought of this. Would it be helpful and easier to start a small demo for a First Person Shooter before we create a small RTS? I think so. It would be a good introduction to AI, since this small game would not be multiplayer (or would it? hm.. I think only LAN, though, for us to test it out together). I am really a novice, aren't I? But that is where we all start!


Also, I am more interested in First Person Shooters such as the Halo series, but my friends prefer RTSs like StarCraft and Age of Mythology (which I also enjoy but no where nearly as much as they do) and that really stirred up an interest in creating an RTS of our own. My question is, should I leave them to making their own, even though all they have are ideas right now while I have the only access to the proper programs via the book I bought (mentioned earlier in parentheses). I really want to help them out, though, and it would add a huge chunk of experience on my part seeing as how I am the only one with the necessary items. I apologize if this is confusing but I must know and if anyone out there can help me out that would be fantastic. I am the only one really taking initiative to learn all I can before we get together and work on this like crazy.
Welcome to my world. Now sit down and shut up.
Emmanuel Deloget
Emmanuel Deloget
Quote:
Original post by Aidsterramma
Well, my friends and I plan to make a small RTS first, just to get a good grasp on what it takes to actually build one. We are going to include a few tiny tidbits of what an RTS really is, and to us an RTS is all about how the player feels about it. Something like that, eh? Hehe.

Anyways, since there is no BEST programming language for programming an RTS, I think I'll start browsing around with the different languages that are out there. I have the Torque Game Engine from a book (3D Game Programming ALL IN ONE Second Edition. by Kenneth C. Finney, the first and only book I have bought) and it can easily be used to put an RTS into so I have no problem with the choice of Engines, for now.

Funny, I was about to tell you "that's a good book, you should try to get it". TGA might not be the greatest thing around there (but it's still really great). I would also suggest you to give a look to Advanced 3D Programming All in One (by the same author), as it discuss a lot more about AI, pathfinding, and scripting TGE.

Quote:
Also, I am more interested in First Person Shooters such as the Halo series, but my friends prefer RTSs like StarCraft and Age of Mythology (which I also enjoy but no where nearly as much as they do) and that really stirred up an interest in creating an RTS of our own. My question is, should I leave them to making their own, even though all they have are ideas right now while I have the only access to the proper programs via the book I bought (mentioned earlier in parentheses). I really want to help them out, though, and it would add a huge chunk of experience on my part seeing as how I am the only one with the necessary items. I apologize if this is confusing but I must know and if anyone out there can help me out that would be fantastic.


FPS are a lot easier to manage - unless you want to go in the fine details you'll see in Gears of War. But still, that's another story :)

Aidsterramma
Aidsterramma
Quote:
Original post by ender_341
Are you more interested in creating the game from the ground up, or just designing the game (units, levels, etc).

If you are just interested in designing it I would suggest using basically any RTS on the market and modding it (try a few games modding tools to find what's simple enough to use, but isn't useless). Most RTS's have at least a level editor, but some of the better ones allow custom models/sounds/resources. I'm sorry I can't suggest any good games to try this from as I haven't really messed with them that much beyond trying to create really basic maps.

If you are interested in building it from the ground up I agree with what everyone else has suggested, find a language you like and use it.


To answer your question, I am building the game from the ground up, with my friends giving out ideas and (soon) concept art. So far it is only one other friend but the other is sure to follow suit as soon as he has the time.
Welcome to my world. Now sit down and shut up.
Aidsterramma
Aidsterramma
Quote:
Original post by Emmanuel Deloget
Quote:
Original post by Aidsterramma
Well, my friends and I plan to make a small RTS first, just to get a good grasp on what it takes to actually build one. We are going to include a few tiny tidbits of what an RTS really is, and to us an RTS is all about how the player feels about it. Something like that, eh? Hehe.

Anyways, since there is no BEST programming language for programming an RTS, I think I'll start browsing around with the different languages that are out there. I have the Torque Game Engine from a book (3D Game Programming ALL IN ONE Second Edition. by Kenneth C. Finney, the first and only book I have bought) and it can easily be used to put an RTS into so I have no problem with the choice of Engines, for now.

Funny, I was about to tell you "that's a good book, you should try to get it". TGA might not be the greatest thing around there (but it's still really great). I would also suggest you to give a look to Advanced 3D Programming All in One (by the same author), as it discuss a lot more about AI, pathfinding, and scripting TGE.

Quote:
Also, I am more interested in First Person Shooters such as the Halo series, but my friends prefer RTSs like StarCraft and Age of Mythology (which I also enjoy but no where nearly as much as they do) and that really stirred up an interest in creating an RTS of our own. My question is, should I leave them to making their own, even though all they have are ideas right now while I have the only access to the proper programs via the book I bought (mentioned earlier in parentheses). I really want to help them out, though, and it would add a huge chunk of experience on my part seeing as how I am the only one with the necessary items. I apologize if this is confusing but I must know and if anyone out there can help me out that would be fantastic.


FPS are a lot easier to manage - unless you want to go in the fine details you'll see in Gears of War. But still, that's another story :)


Hehe, FPS games do seem a lot easier to manage. Do you suggest my friends and I create a simple FPS do get the very basics of what it takes to program, model and everything about the RTS gaming industry?
Welcome to my world. Now sit down and shut up.
Stani R
Stani R
Aidsterramma, it seems from your comments that you have zero programming experience, so unless you can get a coder on board, your first game should probably be something very simple that hits all the major bases (input handling and user interface, rendering, audio, ai and game logic, data structures and resource management, game loop). Popular first games include Tetris, Breakout, and such. The idea is to understand through experinece how those things work together on a small scale. A typical FPS (say Doom III for example) is anything but simple or small.

Mine was (only completed recently ^_^;) a class project where I created a very rudimentary browser-based JSP/MySQL multiplayer space trading simulation. Not a very good start since web applications are quite different from traditional games, but it's the only thing I have to show ^_^;.
csscplayer
csscplayer
I'm just starting to learn how to program C++, so I might not be very knowing, but I don't think you will be able to just start to program an FPS without any prior programming experience. I just created my first game-oriented program yesterday and it was a simple guess the random number program. You have to start very small before jumping straight to shooting. Of course I might not know what I'm talking about at all and you can ignore this post. I don't know if using an engine makes a difference.
Aidsterramma
Aidsterramma
Quote:
Original post by lightbringer
Aidsterramma, it seems from your comments that you have zero programming experience, so unless you can get a coder on board, your first game should probably be something very simple that hits all the major bases (input handling and user interface, rendering, audio, ai and game logic, data structures and resource management, game loop). Popular first games include Tetris, Breakout, and such. The idea is to understand through experinece how those things work together on a small scale. A typical FPS (say Doom III for example) is anything but simple or small.

Mine was (only completed recently ^_^;) a class project where I created a very rudimentary browser-based JSP/MySQL multiplayer space trading simulation. Not a very good start since web applications are quite different from traditional games, but it's the only thing I have to show ^_^;.


That is most certainly true. I do have no programming experience, or any other experience for that matter. I just want this game to be something I can put behind me as experience. Also, I want this to be my introduction to the whole game development industry, which, I know, is something you cannot just "say" and mean it. I want to eventually get my name out there in the next couple of years (by couple I may be underexaggerating a tiny bit, eh? Hehe)
Welcome to my world. Now sit down and shut up.
nef
nef
I would recommend C++ as a good starting language. Before you know what programming is, the whole concept is hard, might as well learn the most popular (for games at least assuming thats what you wana do) one. As programming itself starts to make more sense, the C++ syntex rides along. I would only imagine coming from C# to C++ to be more confusing that C++ to C#, or just about any other language for that matter.

Do these steps to learn programming and C++ to make an RTS game:

1.) Get a "Teach yourself C++ in 21 Days" type of book and go through the entire book, do as many lessons as possible, be sure to grasp at least 80% of every chapter. Don't worry about having to come back to this book as a reference as you continue on to the next steps.

2.) Research the concept of Data Structures. Then impliment a linked list, vector, hash table, binary search tree all with as little cheating as possible. Try to truly comprehend the theory behind these data structures and just figure out how to write them and create these objects yourself to the best of your ability.

3.) Research and learn the STL, this will be easy after completing step 2 and will also make this step more rewarding :)

4.) Research and learn enough about the Windows API to create a side scroller mario style game with two levels.

5.) Research Software Architecture and read/learn about as many design patterns as possible. Be sure to at least read about: Factory's, Singletons (is this a real design pattern?) and Finite State Machines.

6.) Research and learn the DirectX API. Recreate your mario game using the knowledge of previous problems during making it the first time, your new design patterns you've read so much about and do it with the DirectX API.

7.) Research and learn Linear Algebra, focusing on Vectors, Matrices. Write your own fully functional math library including Vector2d, Vector3d, Matrix 3x3 and Matrix 4x4 functional objects. Be sure to have a console test application to verify vs. paper calculations that each function and implimentation works.

8.) Create a nice tech demo that uses the DirectX api to load in a world, with a skybox and have static + dynamic objects loaded into the application. Have multi-animated entites moving around in this virtual world space and do a camera fly through of the entire scene upon executing the demo.

9.) Now, get your friends to start making assets for your rts, while you design a rendering engine able to support the core graphical essentials of you game. You will also have to do some research on AI algorithims to impliment pathfinding for AI.

After completing the first 8 steps, the only real challenge left i would say is the AI, since it would be the only completley new concept. After working up to step 8, researching Dijkstra or A* and implimenting it wont be very hard at all. You will find out the hardest part about anything in the end is coming up with the forethought to design everything to work together, but you did design patterns in step 5 which by step 9 you should have enough practical c++ experience to be able to put together a rendering engine with gameplay slapped ontop to create an RTS :)

GL.
nef
nef
Quote:
Original post by Aidsterramma
Quote:
Original post by lightbringer
Aidsterramma, it seems from your comments that you have zero programming experience, so unless you can get a coder on board, your first game should probably be something very simple that hits all the major bases (input handling and user interface, rendering, audio, ai and game logic, data structures and resource management, game loop). Popular first games include Tetris, Breakout, and such. The idea is to understand through experinece how those things work together on a small scale. A typical FPS (say Doom III for example) is anything but simple or small.

Mine was (only completed recently ^_^;) a class project where I created a very rudimentary browser-based JSP/MySQL multiplayer space trading simulation. Not a very good start since web applications are quite different from traditional games, but it's the only thing I have to show ^_^;.


That is most certainly true. I do have no programming experience, or any other experience for that matter. I just want this game to be something I can put behind me as experience. Also, I want this to be my introduction to the whole game development industry, which, I know, is something you cannot just "say" and mean it. I want to eventually get my name out there in the next couple of years (by couple I may be underexaggerating a tiny bit, eh? Hehe)


Hmm, from second hand experience i can tell you its possible to go from no coding ever to being competent enough to fully design and implement your own 3d engine and game in 2 years using c++.
cshowe
cshowe
Quote:
Original post by nef
Hmm, from second hand experience i can tell you its possible to go from no coding ever to being competent enough to fully design and implement your own 3d engine and game in 2 years using c++.


Really? I can't imagine even learning C++ properly in 2 years.
BeanDog
BeanDog
Quote:
Original post by cshowe
Quote:
Original post by nef
Hmm, from second hand experience i can tell you its possible to go from no coding ever to being competent enough to fully design and implement your own 3d engine and game in 2 years using c++.

Really? I can't imagine even learning C++ properly in 2 years.

Note that nef didn't say "properly." He said "competent enough." I agree with him--I went from a BASIC-only background to my first 3D space shooter (DX7 then) in less than a year. The code, looking back at it, was awful. But that didn't matter at the time, and I'd never have gotten as skilled as I am now without that particular project.

Topic Locked

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

Sign in to reply to this topic.