Intimidated, not sure where to start.

Started by
13 comments, last by minibutmany 11 years, 3 months ago
After hours upon hours of searching throughout the internet for information on game design and development, I've finally come down to a last resort of asking other people for help. After searching other websites, GameDev.net seemed like the forum of choice, after purchasing a membership, i'm now here with my story and questions.

I am very intrigued by video games, they havnt always just been mindless products that major game companies produced. I quickly fell in love with RPG's, most notably mass effect, i quickly saw it as art. I currently play EVE online as well, you can probably see my prefered genre, sci-fi, sandboxed styled games. The openess of these games empowers me to create in a way i've never been compelled before, and I'd like to channel that into developing my own video games.

However I am absolutely clueless on where to begin, i'm intimidated by the process, hesitant to start. My friend described it as having to cross a raging river, without knowing how to swim. I have absolutely little to no knowledge of programming languages. However, I know some basics about the industry, that knowledge only extends to the fact that the industry tends to use C++/Java. Although, no one answers the question, why? I am a type of person who needs to understand something before I can do it, as simply doing it feels empty and unsatisfactory. So why do developers use C++/Java over HTML, or even visual basic? Is there an easier way to learn these languages instead of mindlessly jumping into them?

What is the visual process? What exactly is a sprite sheet, and how does it meld with 3d or even 2d design? This is the part of the industry that I love, but have no idea how to go about it. I currently own a membership to the student version of adobe creative cloud service, I have extensive skills in illustrator and photoshop. I've been using those to make websites with muse (staying away from that intimidating code! ph34r.png). The drawing ability is there, and the ability to put it on the computer is there also. However I am not familiar with 3d design, map design, sprites and animating. What are the steps to creating the visual bits and pieces? And if applicable, why is it that way (aside from common sense)?

And now the game engines, I understand that they are used to put everything together, but where do they start to come into play? I'm very confused about the process with the engine. What can be done inside the engine, and what needs to be done outside of the engine? It all comes down to the question "Why?" with the game engine.

Most importantly, I think I may just need a nudge in the right direction. I've been slowly and steadily understand the adobe products and the workflow, how they can interact together. And this is what I want to learn with game developement. As I said before I am very intimidated by programming, and the production workflow of video game design, I'm clueless, every tutorial i've found just says "Program, deisgn, game engine". Its not simply that easy, or else everyone would be doing it. Thanks for reading, I hope I can learn a lot by being part of the community, and hopefully giving back the hospitality and the vision the folks here will bring me.



Coming from the EVE-Online community, this is considered a wall of text, so here's the TL;DR(Too long didn't read summary) of my questions:
1) Why do developers use C++/Java over HTML, or even visual basic?
2) Is there an easier way to learn programming languages instead of mindlessly jumping into them?
3) What exactly is a sprite sheet, and how does it meld with 3d or even 2d design?
4) What are the steps to creating the visual bits and pieces? And if applicable, why is it that way (aside from common sense)?
5) When does the Game Engine start to come into play?
6) What can be done inside the engine, and what needs to be done outside of the engine?
Advertisement
To answer q2, there is no other way to learn a programming language without actually programming in it. If you wanted to learn to play the piano, would you try and do it without actually playing the piano?

If you want to learn, start with a language like Python, which is a powerful language but is a lot easier to understand for a beginner. Then once you feel confident in that, move on to a language like C#, combined with XNA, to build yourself some more powerful games (that you can run on your 360 if you have one). After a while you might want to move over to C++, but it's not recommended for a beginner, in much the same way that learning Mozart straight away is not the best way to learn the piano.

To answer q2, there is no other way to learn a programming language without actually programming in it. If you wanted to learn to play the piano, would you try and do it without actually playing the piano?

If you want to learn, start with a language like Python, which is a powerful language but is a lot easier to understand for a beginner. Then once you feel confident in that, move on to a language like C#, combined with XNA, to build yourself some more powerful games (that you can run on your 360 if you have one). After a while you might want to move over to C++, but it's not recommended for a beginner, in much the same way that learning Mozart straight away is not the best way to learn the piano.


How closely related are the languages? For example say Python was english, would C++ be chinese? Or are the two more closely related?

Coming from the EVE-Online community, this is considered a wall of text, so here's the TL;DR(Too long didn't read summary) of my questions:

Yay! a TL;DR section! I got about halfway through... :)


1) Why do developers use C++/Java over HTML, or even visual basic?

HTML is not a programming language, it's a markup language (basically, HTML doesn't do anything, it just says how things look, whereas proper programming languages actually do stuff). C++ is certainly the "de facto" standard in the AAA game industry. Other languages, like Java, C#, Python, etc. are often used by smaller developers (in addition to C++). The reason why is because of a) fine control and b) legacy.

For A: Languages like Java, C#, etc. don't give you fine level control over memory management, and they try not to give you as much "low level" access to things. This fine level of control can be important when developing for consoles (and sometimes computers, but most notably consoles) because consoles have a very limited amount of memory and speed, and C++ gives you control over these things so you can really push things to the next level. However, this comes at a cost, because it's also easier to completely screw it up with this fine level of control or introduce weird, obscure bugs that are hard to track down.

For B: Back in the day, C was the de facto programming language (it's still popular for a lot of things). C++ was invented later and is largely compatible with C, which means that all those companies who spent millions of dollars on their code bases could use their existing code in C++, so C++ was easily adopted. Fast forward to the modern day, and you have people who have been programming in C and C++ for years, and huge code bases written in C and C++. Why throw all that work away? It's a lot cheaper/efficient to keep going. Think of it like momentum.


2) Is there an easier way to learn programming languages instead of mindlessly jumping into them?

Kind of. Some languages are easier to pick up on than others, but they all require a lot of work and a lot of tinkering around with.


3) What exactly is a sprite sheet, and how does it meld with 3d or even 2d design?

Sprite sheets don't have much to do with 3D. These are sprite sheets. Basically, when you draw a sprite (think of sprite as a 2D image placed on the screen), you are just drawing a little picture. You typically use the video card to do this. In order to show an animation, you have to switch between frames every time you draw. There's a bit of a speed penalty when switching images (textures) that you're drawing, so it can be more efficient to pack related frames together into one image/texture (a spritesheet), and then when you draw you just draw a small sub-rectangle of the image/texture/spritesheet.


4) What are the steps to creating the visual bits and pieces? And if applicable, why is it that way (aside from common sense)?

In 2D or 3D? 3D requires a lot more work, because you have to make the 3D model, then animate it, then texture it, etc. Someone else can comment on this more than I can.


5) When does the Game Engine start to come into play?

The Game Engine is basically already written code that makes it so when you write your game, you don't have to start completely from scratch. Certain things, like physics, the ability to render objects/sprites, creating a window, playing audio, networking code, etc. from a game can be reused. These reusable parts can be bundled up into a "Game Engine." But you still have a lot of programming to do to actually make your game. The game engine is just there to help you not have to rewrite the mundane things that you already wrote for the last 10 games made.


6) What can be done inside the engine, and what needs to be done outside of the engine?

See above. Things that are done "outside" the game engine are things that can't be shared between games (because it wouldn't make sense to do so). Exactly where you draw the line depends entirely on a) what game engine you're using, b) what game you're making, c) how similar this game is to past games you/others have made, etc.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

How closely related are the languages? For example say Python was english, would C++ be chinese? Or are the two more closely related?

There's actually multiple parts when it comes to programming. There's A) the syntax, which is the actual symbols/letters you use to write the code and how that's structured, and then B) there's the standard support libraries, and then C) there are algorithms and data structures.

For A: Python and C++ have pretty different syntax. Other languages, like C, C++, C#, and Java all have somewhat similar syntax, because they all took some of their syntactical rules from C. Learning the syntax isn't the hard part, though. You can usually pick up on it pretty quickly (when going from one language to another, even if their syntaxes are quite different).

For B: Each language comes with its own standard library. These standard libraries can allow you to do things like reading/writing files, networking, threading, getting input/output from the user, etc. Some languages have support for more things in their standard library, and other languages have less support. C++ offers pretty little in its standard library when compared to Java, C#, and Python. However, if a standard library doesn't support or have something you want, you can always write it yourself in the language you're using. But the more your language's standard library supports, the less time you have to spend reinventing the wheel.

For C: Algorithms and data structures are things that you can transfer from one language to another pretty easily. For example, let's say you have a list of numbers you want to sort. There are lots of algorithms you can use to sort these numbers, some of them being faster or requiring less memory than others. However, the sorting algorithm itself doesn't depend on the language you're using. So once you learn a good sorting algorithm, and you write it in language X, you can transfer that same knowledge to language Y should you ever be working in language Y.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

[quote name='bhawk245' timestamp='1355699307' post='5011395']
How closely related are the languages? For example say Python was english, would C++ be chinese? Or are the two more closely related?

There's actually multiple parts when it comes to programming. There's A) the syntax, which is the actual symbols/letters you use to write the code and how that's structured, and then B) there's the standard support libraries, and then C) there are algorithms and data structures.

For A: Python and C++ have pretty different syntax. Other languages, like C, C++, C#, and Java all have somewhat similar syntax, because they all took some of their syntactical rules from C. Learning the syntax isn't the hard part, though. You can usually pick up on it pretty quickly (when going from one language to another, even if their syntaxes are quite different).

For B: Each language comes with its own standard library. These standard libraries can allow you to do things like reading/writing files, networking, threading, getting input/output from the user, etc. Some languages have support for more things in their standard library, and other languages have less support. C++ offers pretty little in its standard library when compared to Java, C#, and Python. However, if a standard library doesn't support or have something you want, you can always write it yourself in the language you're using. But the more your language's standard library supports, the less time you have to spend reinventing the wheel.

For C: Algorithms and data structures are things that you can transfer from one language to another pretty easily. For example, let's say you have a list of numbers you want to sort. There are lots of algorithms you can use to sort these numbers, some of them being faster or requiring less memory than others. However, the sorting algorithm itself doesn't depend on the language you're using. So once you learn a good sorting algorithm, and you write it in language X, you can transfer that same knowledge to language Y should you ever be working in language Y.
[/quote]

The intimidation has been broken into multiple little peices, thank you for explaining that to me, and for your other response as well. I'm looking forward into at least breaking the ice into a few of these languages before I choose a major. Just the idea of programming seems like a bugged giant from skyrim, one hit and im suddenly on the moon, or a dragon that consistantly circles mindlessly in the sky. What would you suggest to break the ice to programming? Python seems to be the language of choice for a beginner like me, any more friendly nudges in the right direction? How someone should go about learning a language, what to expect?

The intimidation has been broken into multiple little peices, thank you for explaining that to me, and for your other response as well. I'm looking forward into at least breaking the ice into a few of these languages before I choose a major. Just the idea of programming seems like a bugged giant from skyrim, one hit and im suddenly on the moon, or a dragon that consistantly circles mindlessly in the sky. What would you suggest to break the ice to programming? Python seems to be the language of choice for a beginner like me, any more friendly nudges in the right direction? How someone should go about learning a language, what to expect?

Python seems like a decent choice to start with. Honestly, people will come in and say "Learn language X first!" and "No, learn language Y first!" Honestly, it's not that big of a deal. Programmers learn more than one language over their lifetime. Starting with X doesn't mean you can't learn Y. Some will say X is harder than Y because it's easier to shoot yourself in the foot, and they might be correct, but honestly, if you sit here and debate between language X and Y, you're just losing valuable time that would be better spent learning either one of them. Okay, now that I have that out of the way, all I can really suggest is two things: 1) Google like crazy (you'll find tons of resources on the Internet), and 2) Experiment like crazy. There's lots of tutorials you can follow, and after going through a tutorial, I'd recommend tinkering with things and trying things out, seeing what you can make with the knew knowledge you gained. Experiment all the time. Your first (many) programs will be simple, but as you progress they'll become more and more useful, until you're able to actually make a decent (yet simple) game. And then you just keep on learning.

So yeah, google and experiment.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

[quote name='bhawk245' timestamp='1355700989' post='5011412']
The intimidation has been broken into multiple little peices, thank you for explaining that to me, and for your other response as well. I'm looking forward into at least breaking the ice into a few of these languages before I choose a major. Just the idea of programming seems like a bugged giant from skyrim, one hit and im suddenly on the moon, or a dragon that consistantly circles mindlessly in the sky. What would you suggest to break the ice to programming? Python seems to be the language of choice for a beginner like me, any more friendly nudges in the right direction? How someone should go about learning a language, what to expect?

Python seems like a decent choice to start with. Honestly, people will come in and say "Learn language X first!" and "No, learn language Y first!" Honestly, it's not that big of a deal. Programmers learn more than one language over their lifetime. Starting with X doesn't mean you can't learn Y. Some will say X is harder than Y because it's easier to shoot yourself in the foot, and they might be correct, but honestly, if you sit here and debate between language X and Y, you're just losing valuable time that would be better spent learning either one of them. Okay, now that I have that out of the way, all I can really suggest is two things: 1) Google like crazy (you'll find tons of resources on the Internet), and 2) Experiment like crazy. There's lots of tutorials you can follow, and after going through a tutorial, I'd recommend tinkering with things and trying things out, seeing what you can make with the knew knowledge you gained. Experiment all the time. Your first (many) programs will be simple, but as you progress they'll become more and more useful, until you're able to actually make a decent (yet simple) game. And then you just keep on learning.

So yeah, google and experiment.
[/quote]

Again thank you very much for your responses. I will do that and get started on that. I would also like to learn more about the visual side of things, and how they are incorperated with programming. How does one work with the other? And how are massive worlds created? Can you create these worlds without code? What are the limitations to development without using a programming language?

Im trying to gauge what side of the process I want to specialize in and be on.

How does one work with the other?

There are varying degrees of "magic" involved. The simplest would just be loading the asset in your code and drawing it, which means you or your artist just make the asset (using Photoshop, 3DSMax, Maya, etc.) and you just load it in. Other times, the asset is way to big to reasonably load into memory (think of these games that require two or three DVDs to install), in which case you have to break the assets into chunks and work with chunks in your code. There really isn't a great answer to this. You'll see how the work together as you carry on.


And how are massive worlds created?

Depends on the game. Some worlds are created procedurally from a math algorithm (try googling fractal landscapes for some examples). Other words are created by artists (though this requires a bigger budget, because you have to pay them). Sometimes it's a blend of the two, where you have a set of assets created by an artists that are placed and organized procedurally to make it into a massive world.


Can you create these worlds without code?

Sure, artists do it all the time.


What are the limitations to development without using a programming language?

If there's no programming, nothing will happen. You'll just have a pretty world with people in it, and everything is just sitting there static. Anything you want to actually do, or anything you want to happen, you have to program.

Think of your physical body as the "art"/"world", and your brain as the "programming". An artist can sculpt a human figure, but without a brain, it's just a static sculpture.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
This is much easier to understand than what I had expected. I guess i just need to dabble into both to see which one I like better. If someone could answer my 4th question, i'll be on my way. Thank you again for all of your help Cornstalks, I hope I can pass on the information when the time is right.

This topic is closed to new replies.

Advertisement