Want to make RTS strategy game, good starting point...?
#1 Members - Reputation: 113
Posted 28 September 2012 - 02:31 PM
I find this community because I did research about game developing topics. So I decide to register on this community and ask for your opinion.
I am not begineer in computer stuffs, and I know logic of programming language. I have little knowlegde of C, C++, Started to learn C#...but I was always oriented about other areas of IT. Amateur for game making but not in IT general!
I am interested to make RTS strategy video game, isometric camera view (like PC GAME DESPERADOS for example)...so I started to read many books about DirectX, XNA, OpenGL, C#, AI programming...so I want to know where is good starting point for making this game genre.
I want to use C# for this project, not C++, since I always had trouble with it, because it is too complicated.
I see good oportunity for learning C#, since it has more object-oriented concept, with much less code and easy readible code for writing. Beside of that I know that C++ is the more powerful language until today.
So I want to use DirectX and C# for my project. But I have trouble with finding books for c# & DirectX (I found just one), but in every next book,
it is used c++!
I read many web sites and they mentioned Slim DX, and in generaly, other articles which I read tells that it is possible to make good game with combination c# and directX, but...I don't have enough information about all this stuffs, so I became confused! It is really hard to have wish to learn c++ from scratch, since I started c# and I like it really...I don't try OpenGL, but I am already familiar with DirectX (some beginning stuffs), and I think that it is good and interesting.
XNA...hm, it sound that it is not bad solution, but I heard that it is already overcome technology, and I think that it is better to wait with XNA, until I try to make something with DirectX and C#, at first. But I dont know it is possible to make strategy game in XNA?! Maybe I am wrong.
I also, find Unity 3D game engine and I find that I could programming there in C#, but again it doesn't have enough support for c#.
All examples are written in Javascript...maybe even it don't support to write RTS strategy in it?!
I want to find best way to learn both of those languages, and make this game, but I dont know if it's possible?!
Thank you all!
I am willing to hear your expirience.
#2 Members - Reputation: 368
Posted 28 September 2012 - 03:43 PM
I would advise you to stick with XNA and C#. XNA covers lots of things for you.
Also, from what i grasp, you are beginner in programing. Personal advise - just don't go 3D yet.
Good starting point in my opinion would be C#, XNA, 2D "pixel men" sprites (or at least black cubes) and some study of A* path finding algorithm.
Edited by Sollum, 28 September 2012 - 03:44 PM.
#3 Crossbones+ - Reputation: 2422
Posted 28 September 2012 - 04:14 PM
I'm guessing by support you mean tutorials and examples (rather than meaning language/library support)? I actually found there to be a massive amount available (just look in the tutorial section) and there are also a lot of books to bring you up on the basics.I also, find Unity 3D game engine and I find that I could programming there in C#, but again it doesn't have enough support for c#.
As I mentioned there are a lot of C# examples available right on the Unity site and in other places. You can definitely use the Unity to build an RTS as I prototyped one in pre-production in under two weeks when testing which technology we wanted to use going forward.All examples are written in Javascript...maybe even it don't support to write RTS strategy in it?!
Edited by Saruman, 28 September 2012 - 04:14 PM.
#4 Members - Reputation: 113
Posted 29 September 2012 - 07:58 AM
I agree that it is important to understand good how to program 2d eniviroment, then I will have better understanding of 3d programming for sure.
Thank you for advices.
What is your expirience about game making in Unity3d? Do you use it?
@Saruman
Hi, man! I see that you are expirenced developer, so I appreciate a lot your opinions.
Then you recommend me to use Unity. By the way, what is your opinion about XNA? I think that I will try both, Unity & XNA, because to learn more 2D Game concept with XNA...
When I said that Unity doesn't have support I think exactly on tutorials and examples on C#, not language support (but I do research on Unity web site and find great references manual on c#). Digital tutors has also great video tutorials on this topics, but in JS are all examples.
Where to learn how to learn more about strategy game programming concept in Unity (for example camera, GUI...)?
Thank you guys, again! ;)
#5 Crossbones+ - Reputation: 945
Posted 29 September 2012 - 06:20 PM
Edited by shadowisadog, 29 September 2012 - 06:23 PM.
#6 Members - Reputation: 121
Posted 29 September 2012 - 07:41 PM
#7 Members - Reputation: 774
Posted 29 September 2012 - 07:59 PM
Also, (personally) I've found that starting with C# and XNA is a bit easier than C#/C++ and DirectX. DirectX to me feels like "I've already been into graphic libraries and programming for a while lets check this out" type of setup. Because I went with DX for a while but I felt a bit overwhelmed, so I went to Python and Pygame then now I'm into XNA and C# and I love it so far. The tutorials are very nice and the XNA/Xbox site for creating games is a nice starter http://xbox.create.msdn.com/en-us/education/gamedevelopment (about half way down the page)
Just go with what you feel comfortable with. If you don't feel good about C# and it doesn't make alot of sense yet, step back and try some basic python.
and Good luck
#8 Members - Reputation: 113
Posted 30 September 2012 - 05:04 AM
When I saw code in the book, it looks more, more easier then DirectX, and I think that it is excellent for learning basics on good way. I will find more books for XNA, but I dont give up from Unity.
Probably, I will leave DirectX, OpenGL, because they are more advanced stuffs for learning (and slower pace of learning-since I am hobby programmer it is not good for me ).
I have basic knowlegde of c# but I will expand it for sure. I know it is very important.
But, what is the future of XNA? I didn't understand @shadowisadog.
XNA is cancelled? Does XNA games have future or XNA will be changed with some other technology? It is very important to look things forward. Can we run XNA games on Windows 8 even?
Beside of that, could someone give me some link where I can learn programming strategy games in XNA?
Thank you everybody ;)
#9 Members - Reputation: 774
Posted 30 September 2012 - 08:23 AM
"I also don't see Microsoft fully ditching its investment" < which makes sense to me because I believe XNA is still being widely used for XBLA development.
#10 Members - Reputation: 3330
Posted 30 September 2012 - 09:58 AM
#11 Crossbones+ - Reputation: 945
Posted 30 September 2012 - 06:20 PM
I just find book: Sean James - 3D Graphics with XNA Game Studio 4.0.
When I saw code in the book, it looks more, more easier then DirectX, and I think that it is excellent for learning basics on good way. I will find more books for XNA, but I dont give up from Unity.
Probably, I will leave DirectX, OpenGL, because they are more advanced stuffs for learning (and slower pace of learning-since I am hobby programmer it is not good for me ).
I have basic knowlegde of c# but I will expand it for sure. I know it is very important.
But, what is the future of XNA? I didn't understand @shadowisadog.
XNA is cancelled? Does XNA games have future or XNA will be changed with some other technology? It is very important to look things forward. Can we run XNA games on Windows 8 even?
Beside of that, could someone give me some link where I can learn programming strategy games in XNA?
Thank you everybody ;)
As Inuyashakagome16 pointed out, I did mean if XNA were to be canceled. There is some debate (mostly just a lack of news from Microsoft) about its future as you had pointed out in your original post.
XNA games will run on Windows 8 for desktop PCs, especially because Windows 8 will run Windows 7 programs. Windows 8 for tablets is another matter, and I am not sure what the story is there... but I don't feel there is much need to worry.
As far as information about building an RTS in C#, I think you are going to have a difficult time finding a resource that explains every piece of how to make YOUR idea for an RTS game.
RTS games are games. Games are software. Learn to program software first and foremost. There is nothing magic about games... There are many solutions to any particular problem, and each have their strengths and weaknesses...
I think the greatest conceptual hurdle to overcome as a new game programmer is that there is no generic "best". People always want to ask what is "best" and what is the "right" way to do something. How do I make "this" game, as if there is but ONE and only one solution. This is not the case. There are many many many possible solutions, and all have trade offs. You must ditch the concept of best, and merely pick solutions.
_____________________________________________________________________
But if I were to make an RTS game today, knowing what I know... and I were to do it in C#... and I wanted to create some generic pile of code and algorithms that I could use to construct my "game" with absolutely no design document (just going to throw it together as I go, or whatever) then I might do the following things:
1. I know that I would need some way of representing the terrain. Assuming I was making a 2D RTS (I am more a fan of 2D RTS games, and 3D is very complex), I would probably opt to use tiles. Which means I would need a tile engine, and I would need to implement tile scrolling. Tiles would help with pathfinding for sure, but I would lose some flexibility. I know that I would need to probably have some form of map editor and so I would probably choose something like Tiled or Mappy to make levels (just to avoid making my own tool, although that could be an option).
2. Tiles or not I would need pathfinding. I would probably choose to use A* pathfinding, and just for kicks I might implement some steering behaviors/reactive planning. I might investigate how other games have done their troop movements such as Coordinated Unit Movement. Either way my units would probably use finite state machines with a combination of other techniques.
Although that is just a small fraction of the puzzle. Constructing a computer opponent for an RTS is very difficult. Combine that with multiplayer (if you choose to add it) and things become even more difficult (dealing with large number of onscreen units is a complex task).
This is just scratching the surface.... The best advice is to start simple and work your way up to this sort of game.
Good luck
Edited by shadowisadog, 30 September 2012 - 06:22 PM.
#12 Members - Reputation: 113
Posted 01 October 2012 - 04:28 AM
I see that for this type of game is needed to learn AI logic and understand how to programming it, it is big part of this genre of games, really.
I will start small for sure ;)
Thank you again, I have now better insight what I need to do.
Regards!
#13 Members - Reputation: 113
Posted 20 October 2012 - 04:48 AM
I decide to start with XNA, because I find it user-friendly. I read couple books about c# and since I have expirience with OOP, it is more easier for me to upgrade my knowlegde.
But beside of that I am beginner.
I decide to learn to programming 2d enviroment first...but...I have trouble now with Vector2 operations!
I don't have a clue how to start to learn Vector2 problematic, and I see that it is foundation to program any game. It is used for moving, rotating, scaling etc...
I checked some topics on community and I doubt that I need to learn linear algebra, to use Vector2 operation properly?
http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
Is there good way to learn this Vector2 problematic, since it is graphical programming and not only c# stuffs. How to learn graphic programming?
I see later if I want to programming 3d enviroment, which using Vector3, it is impossible without understand of Vector2 at first!!!
For my start I will be with time satified to learn how to make isometric view in XNA:
http://sciencefact.co.uk/2011/03/xna-isometric-maps/
...but there are some code which I dont understand, for example:
// Initialise block 2D array
Blocks = new Block[Width, Depth];
// Used as a base width and height for varying sized tiles
int baseWidth = 128;
int baseHeight = 64;
// Position blocks
Rectangle position = new Rectangle(0, 0, Tiles[0].Width, Tiles[0].Height);
for (int x = 0; x < width; x++)
{
position.X = (baseWidth / 2) * x;
position.Y = (baseHeight / 2) * x;
for (int z = 0; z < depth; z++)
{
Blocks[x, z] = new Block(0, position);
position.Y -= (baseHeight / 2);
position.X += (baseWidth / 2);
}
All of this kind of code required to understand good behavior of x, y coordinates.
Any help?
#15 Crossbones+ - Reputation: 945
Posted 23 October 2012 - 10:07 PM
The code is creating a new rectangle called position at 0,0 and using the width and the height of the tile from the Tiles array at element 0 (the first element). This is not good code, because that would be better done as a constant, or loaded from a data file of some sort. position is also a terrible variable name.
Then there is a for loop where x goes from 0 to the width (not quite sure if the width is in pixels, or the width in tiles...). The code calculates the x and y positions from the baseWidth/2, and baseHeight/2 multiplied by x. I am not sure where y went...
Then in the nested loop the z axis foes from 0 to depth. This is bad variable naming because once again not sure if depth is in pixels or tiles. The array is two dimensional and being accessed so the element is at x, z.... not sure why this is being done... I would opt for a three dimensional array, or maybe a 2d array and have a block class handle its layers..
Here is a link to maybe a better resource: http://www.xnaresources.com/default.asp?page=Tutorial:TileEngineSeries:4
Edited by shadowisadog, 23 October 2012 - 10:10 PM.
#16 Members - Reputation: 113
Posted 24 October 2012 - 09:24 AM
I really appreciate all your posts, since you didn't ignore it only. I am beginner, and I know that I must using search on this community. I did research but I want to learn it from very beginning.
Thank you for explanation of this code...
I am only curious how to go forwared with this stuff about games, since I decide to try XNA.
As you see I don't have right direction where to go now, related to Vector2 (I leave Vector3 problematic for later).
I got conclusion that I must learn graphical programming and game mathematics. I am right?
I find out some books which I will get:
Microsoft XNA Unleashed: Graphics and Game Programming for Xbox 360 and Windows, by Tom Miller
Real-Time rendering
Fundamental of Computer Graphics by Peter Shirley
So since I don't get them yet, can you tell me what is the best way to learn Vector2 problematic? What are best practices for it?
And...
If I want to make some 2.5D game (plans for later - some isometric strategy), does it used Vector3 or not? I will use some 3d models in my games ,prerendered like 2D sprites to use isometric perspective.
Regards!
#17 Crossbones+ - Reputation: 945
Posted 24 October 2012 - 10:43 PM
Khan Academy is a great resource for learning more about the subject. Linear Algebra on Khan Academy.
#18 Crossbones+ - Reputation: 945
Posted 24 October 2012 - 10:49 PM
However it is not time to get discouraged. You must simply realize that the craft will take years to learn, many more to master. Many have come before you, and many have found success. If they can do it, then you can as well. However you must have the motivation to succeed. You need to just keep trying to climb a little section, and eventually you will be amazed at how far you have come.
So in answer to how to move forward.... Just don't stop. Write programs all of the time. Try grand things and fail them. Learn from the failures and figure out why you failed (just don't let it discourage you). You can go off in a thousand different directions and in all of them you can learn skills that you can apply to other projects. You will learn about design when your design fails you.
Edited by shadowisadog, 24 October 2012 - 10:53 PM.
#20 Crossbones+ - Reputation: 945
Posted 26 October 2012 - 10:32 PM
Linear algebra is a great thing to learn. It really helps you to understand vectors and matrices. Both vectors and matrices are essential when it comes to 3d programming. I think it is the most useful mathematics (all of it is useful though) when it comes to game programming.






