My Game Plan

Started by
8 comments, last by slayemin 9 years, 4 months ago

Hello,

I believe this is the right board for this. I've never programmed anything before. From all my reasearch, it seemed that C# would be a good idea to start with. I have decided that what language you learn and how you learn it should never be rigid. Obviously each series of tutorials highlights different things better than others. It seems as a game programmer, you must be ready to adapt to new languages and processes within the coding.

I initially started wanting to learn AS3, but then I thought my desire to learn in a short amount of time would be hindered by learning multiple languages. Note that I am only concerned with PC right now (apps are a lower priority), but I have a consideration: If I learn C#, and most games are written and C++, isn't there a drawback of me not being able to read the code and take influence from it? What appeals to me is looking at coding as just another art form where concepts are tweaked and played around with.

I plan on:

- Learning basic C#, then XNA Framework (video tutorials)

- If I can find existing 2D games written in this language, I will try tweaking them. After (or if I can't find any suitable), I will make a simple games like Pong, then a side scroller, and maybe a bird's eye view shooter (2D). ***I forgot to mention that I know my way around Photoshop (digital paintings), so it's off my radar for now.

- Learn Maya or 3D Max

- I will follow the same method of learning 2D games with 3D

*A concern I have is if I learn via video tutorials, how will I know which information is relevant to video gaming and which is not? Perhaps this is easy. I'll have to find out.

I plan on doing this all on my own. I have been involved in music, visual arts, and literature for a while, and obviously these overlap with gaming (imo). I see the coding and blender as the last obstacles to producing multi-media works, such as video games. A full game does not appeal to me atm. I am visioning unpolished/single leveled prototype kind of things. Although rare, I have come across one man games.

After reading around a lot and receiving all sorts of answers, I picked C# and methods of learning quite casually. I know they'll probably change as I progress anyways. I plan on making FPS-type ideas by the end of this. Based on my outlook on this situation, I would be taking influence from many different types of games.

So, all in all, does this sound like a solid game-plan, or have I made some crucial misunderstandings?

Advertisement
Hi. Your plan sounds achievable if you ask me.
On the long term you might benefit (or not) from the language you choose. I'd prefer c++ because in the end I believe you have more control/ lower level. But when you're starting c# should be fine to start with. For both languages several API's/libraries are available for say rendering or math, so you dont have to do eveything yourself (right away).
Good luck

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

Starting with C# is fine. If you ever need the lower level management that C++ allows, then you can switch over, but for learning, I think your progress will be greater and your frustration lesser (and thus the likelihood that you'll stick with it) if you start with C#.

Inspiration from my tea:

"Never wish life were easier. Wish that you were better" -Jim Rohn

soundcloud.com/herwrathmustbedragons

Of the countless beginner threads around, this one seems far more grounded in reality, so long as you don't expect this to be just a 2-3 month journey before releasing your game. :)

You show some concern for not starting with C++ since most games are written in C++. While it's true that most triple-A games are written in C++, I don't believe this is going to hinder you. Your goal seems to be towards indie game development and not joining a big studio. Maybe you should learn C++ eventually to better round yourself out as a developer, but that's a long way off and not worth worrying about right now. Plenty of indie games are written in C#.

To avoid getting overwhelmed in the early days, I recommend that your first few weeks be in just C# as you're learning the syntax. Once you get the basics down: variables, loops, branching, functions, classes, etc. Make some simple text based games like guess-a-number or hangman.

Once you're ready for more game development, I think starting with XNA/C# is an excellent idea. It allows you to get closer to the low level/inner workings of a game, but it's abstract enough that you can get a sprite showing on the screen in short order which is pretty darn motivating. Motivation is going to be one of your biggest hurdles early on. (later on too). XNA is no longer actively supported by Microsoft, but I think it's still a good choice for learning. You may also look at MonoGame which is an open source port of the XNA framework and the community is still active.

Pong -> Platformer may be too big of a leap of skill. Take a look at this article about which games you should make early on and why.

http://www.gamedev.net/page/resources/_/technical/game-programming/your-first-step-to-game-development-starts-here-r2976

And here are a couple of XNA links that I found very useful:

http://rbwhitaker.wikidot.com/xna-tutorials

http://www.xnaresources.com/default.asp?page=TUTORIALS

After you've made a couple of simple games in XNA though, I recommend you take a look at Unity. At this future point in your education you should have a decent grasp on programming and understand the basics of game development. Follow a couple of Unity video tutorials and once you have the basics of Unity down, remake a few of the simple games you made in XNA like pong. You shouldn't have to remake all of them, but it's a good way to learn the tool and see how far you've come as a developer.

Sometime during all this, you're going to want to learn more about object-oriented programming, design patterns, software architecture, more advanced C# features, etc. But that will come with time. For now, go crank out a "Hello World" program. It's where we all started at. :)

Good luck, and when you run into problems, let us know and we'll help you out,

- Eck

EckTech Games - Games and Unity Assets I'm working on
Still Flying - My GameDev journal
The Shilwulf Dynasty - Campaign notes for my Rogue Trader RPG

cozzie,

I don't know too much about programming languages, but I just chose C# because I thought: "Does it really matter?" Obviously C# vs. C++ matters, but it just felt like choosing between C# and Python was splitting hairs. Why those two? No real reason other than it seemed that people who are concerned with video game program choose those (at first). With that, I can find more help/tutorials if needed. I just felt ultimately that it's not good for anyone to just learn one.

On another note, I have a very general idea of what API's/Libraries are. This is what caught my attention when I saw Unity vs XNA. It seems that Unity would be a better choice now. I'm a lot about speed. My music is all sample based. In programming, why make an engine (or play an instrumental part), when you can sample someone else's idea, and tweak that? I'll have to look into this in the future.

NoAdmiral,

I wasn't aware there was something lower level than C#. As I said with cozzie, ostensibly, the community for C# and Python seem to have many users that have intent to program video games. I see it as: I should go with the grain first, and then make my own rules later.

Eck,

I can definately see myself learning C++ eventually. Right now, it feels that I should just take existing music/artwork for my first 2D games. Although, I would love working on it, the programming is going to really ruin the workflow, so I should just get that down first. Also doing something completely text based would be the same idea.

I'm looking into Unity now. I'm not sure if it serves a similar function to XNA, but from what I've read, it seems that XNA will force me to make my own engines for many things. Creating my own engines is where I see the creativity of coding really shine, but as a beginner I would just want to be making games asap. What I don't understand is, if C# has Unity or XNA to make games... then does C++ have an equivalent? Does one learn C++ then another program like Unity/XNA if they are to make games? I will come to understand this in time.

As previously stated, a community is of interest to me. I was not sure which one to join, but this site seemed to have a high congregation of programmers who are concerned with video gaming in particular. Thank you for the encouragement. I will proceed sometime in the near future to video tutorial binge.

I am looking at one of the Lynda tutorials: up and Running with C# (targetted to people new at programming, not just new to C#). This supplemented by Youtube/Googling forums, or most recently, here. Again, selective tutorial choosing is somewhat lost on me. It feels like splitting hair since most of them teach the same thing (as long as they're beginner). If one doesn't teach something, look at another one that does. I see too many people wanting something that's A-Z of what they should learn. This doesn't exist because only they know what they want to learn, and not yet what they will want to learn. Regardless, people here know my philosophy better, so I am open to any recommendations or tutorials. I will definately look into them.

Future note to self: ease up on the giant posts.

On a side note (I don't want this to get into an elitist war), if I learn C#, will it be easier to switch to C++. rather than if I learnt on Python? Are the C familials similar like that or no?

On a side note (I don't want this to get into an elitist war), if I learn C#, will it be easier to switch to C++. rather than if I learnt on Python? Are the C familials similar like that or no?

Theoretically yes.

You will have a better grounding in some of the syntactical quirks of C++ (ending statements with semicolons...)

But the two languages are dissimilar enough in behavior that it really only provides a minimal advantage.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

If you want to learn C++, then learn C++. If you want to learn C#, then learn C#.

Learning C# to just learn C++ wont help you very much. Although some things carry over, you'll spend most of your time unlearning C# idioms and learning C++ ones. Same goes for C++ vs C, or when comparing any language really.

Just as I thought. It feels like there are no compelling reasons for me to choose C# over Python. Either way, I've started learning C#. I thought C# might have a larger community/more support, but I could be wrong.

C# is a good starting point.

Keep in mind, you're going to be learning two things at the same time:
1) How to write C# code
2) How to write a program using logical instructions

The two are not the same. You can accomplish #2 in any language, but the means you're using in this case is via C#. So, when you're struggling to make something work, you need to be careful to ask the question: "Is this a language syntax issue or an issue with trying to figure out how to correctly write instructions sequentially?"

So, with #2, you can actually accomplish this by writing your instructions in english using pseudo-code, such as "Add two to the value X." or "Turn the space ship by 45 degrees and then apply the thruster."

Why is this important? Because you're going to eventually get to a point where you say, "How do I write a for loop in language XYZ which iterates over ten items?". The end result is the same (logically speaking) but implemented differently depending on which language you are implementing it in. So, "programming" is a language independent, abstract discipline, in which you get good at it through lots of indirect practice.

When you're just getting starting with making *any* type of program, you want to start SUPER small and simple. Start with printing the classic "Hello World" onto the screen. Then create a "Guess my number" type game, where the computer picks a random number and you have a fixed number of tries to guess it. Then, create tic-tac-toe. Then try creating something more complicated, like break out. Graduate to tetris. Then maybe pac man or some other old school atari games. Stick to 2D until you get really familiar with the game development process. When / if you eventually shift to 3D, your literally adding an additional dimension and the amount of work grows in an order of magnitude and the complexity increases equally (ie, you can figure out what someone is clicking on very easily in 2D, but in 3D you need to shoot a ray out into the game world and intersect it with a 3D object).

When things get difficult, I find what helps the best is to try to write out what I'm doing in pseudo-code and work out the solution to the problem on a hand-held whiteboard. If I can't solve the problem outside of code, what hope would I have of solving the problem with the additional complexity of code?

Also: If you *really* want to get good at writing code, get good at mathematics! Get good at trigonometry, linear algebra, algebra, etc. You'll be relying on the strength of your math skills every day. You don't want your math skills to be your lowest common denominator which limits your capabilities. Getting good at math should also directly help you get better at writing and conceptualizing good code. for example, if you know the quadratic equation and you want to write a function to solve it, you already know what the objective is and what the answers should be when you test them, and you should be able to break the algorithm down into its component steps and verify that the values are the expected values. This is essentially what all programming boils down to: Do the steps make sense? Do the values match the expected values? Does the final product match the expected product? Now, put it all together to build a program which appears to do magic!

This topic is closed to new replies.

Advertisement