Sign in to follow this  

How Should I Approach Game Development?

This topic is 2346 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey Guys,

So for the past week I've been looking around this forum looking for ways to approach developing a game. Games like Minecraft, Terraria, MapleStory, and Dofus have inspired me to create my own game.
I've have already listed ideas and concepts for the game, 2D side-scroller, in my notebook. I've also done some sprites for the game, though they still need work. So now at this point I want to decide upon a programming language. I'm currently leaning towards Java, because I hear it's a good place to start. I want to build this game from complete scratch if possible, though if I need to work with software like Game Maker or other software that's fine too. I'm really determined to develop this game before I go off to college next fall. Haha, I know it's a long time before then, but I want to get a good understanding of all this. Hoping to major in engineering in the computer field or something :)

As for learning and understanding a programming language or software are there any books you guys would recommend? Preferably a book I can buy from a local book store like Borders.

[u]Other Information[/u]
OS: Windows Vista
Watched some tutorial on Youtube for a basic understanding of Java, though not much if none was really learned.
Messed around with Blender's Game Engine though most of my time was spent modeling. Managed to make a simple WASD movement and camera, though I didn't have to code anything.

My apologies if I failed to provide sufficient information or broken a rule.

- Key

Share this post


Link to post
Share on other sites
I personally would prefer to use C++ but that's because I am most comfortable with c++, that and its faster than java. Yet another reason is because it is the industry standard for game programming (though that doesn't really matter for your case). I think c++ is easier to learn since you can learn procedural programming before diving into OOP (objected oriented programming). To me, it's easier to break down styles of programming and learn one then the other, so that you can utilize both effectively. Java is almost all OOP. Regardless though, a language is only a tool to build the game. I would say that it's not as important which language you use as the algorithms you build to drive the game. That's my view on the subject.

Nathan

Share this post


Link to post
Share on other sites
Towards the top of the page, there's a link to the ' "For Beginners" Forum FAQ '.

Take a look at that and it'll get you pointed in the right direction as far as good languages to start the learning process with and some helpful info on the best way to ask us good questions so we can give you good answers as problems inevitably arise during learning and making your game. :)







Share this post


Link to post
Share on other sites
Hey,

I've also just started game programming and it seems the c++ is the way to go. DirectX and OpenGL are both graphics libraries in c++ and they seem to crop up everywhere. If you want to learn c++, here is a good beginners intro and reference: http://www.cplusplus.com/doc/tutorial/. If you don't already have a c++ compiler and editor, window's visual studio is a one that I like. You can get the express (free) version here: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express. Download the All in One ISO or just c++ express. One thing with visual c++ is that if you want to see your program output i.e. print statements such as printf or cout, you have to add the line: system("PAUSE") at the end of the main() function. This took me a while to figure out when I first downloaded visual c++. Good luck.

Share this post


Link to post
Share on other sites
Thanks for the replies!

Tomorrow morning I'll take a look into C++ and check it out.
But one thing I don't really grasp is the concept of graphics libraries. I looked around, did some research, but what exactly do DirectX, OpenGL, and SDL do? They appear often in all videos games I've seen.
When ever I needed an image in Java I would just tell it where to look for it and where to display it. How do graphics libraries compare or what do I benefit from them?

Share this post


Link to post
Share on other sites
[font=arial, verdana, tahoma, sans-serif][size=2]DirectX is a massive library that include input, sound, graphics, event handling and other features. Conversly OpenGL is about graphics, where you'll need additional libraries to handle what it does not cover and in most cases, especially when just starting out, you'll probably be writing your own simple routines utilizing only the bread and butter of the input capabilities from libraries like GLUT and SDL.

In regard to loading images, with Microsoft libraries such as the GDI Toolkit loading images is as easy as pointing to where in memory you want it to go and then calling the file in, but that says nothing of the other crud that you have to go through just to setup a window. [/size][/font]

My advice would be:

1. Steer clear of win32 tutorials - they are overly cumbersome for those just starting out with little to be gained.
2. Google the heck out of every little thing that pops into your head, self-reliance is the most powerful toolset one can have when starting out
3. Pace yourself. With all the "AHAH!s that come along there tends to be about 40 or 50 "Bah"s and/or "Damn"s so cramming isn't going to be very productive

Best regards!

Share this post


Link to post
Share on other sites
I would recommend C# ( It got Javalike syntax ) and It got a great Graphic framework ( XNA ) also SDL and SFML are both available to C# for cross-platform development.
C# is easy to get used to, friendly, good documentation.

It's woth checking out! :)
C++ is a very steep and tedious to learn and make games in!

Share this post


Link to post
Share on other sites
Ah, thanks

In the "For Beginners" Forum FAQ it says that C# is a relatively easy language. Should I start with C# and maybe sometime from now move up to C++?

Share this post


Link to post
Share on other sites
[quote name='Key' timestamp='1310573814' post='4834887']
Ah, thanks

In the "For Beginners" Forum FAQ it says that C# is a relatively easy language. Should I start with C# and maybe sometime from now move up to C++?
[/quote]

I would start with C#. It's a lot like C++, so when you decide to move up it should be pretty easy. Well definitively easier than learning C++ as your first language, as you already would have learned all the concepts from C#.

Share this post


Link to post
Share on other sites
[quote name='beatlefan' timestamp='1310574650' post='4834893']
[quote name='Key' timestamp='1310573814' post='4834887']
Ah, thanks

In the "For Beginners" Forum FAQ it says that C# is a relatively easy language. Should I start with C# and maybe sometime from now move up to C++?
[/quote]

I would start with C#. It's a lot like C++, so when you decide to move up it should be pretty easy. Well definitively easier than learning C++ as your first language, as you already would have learned all the concepts from C#.
[/quote]

Thanks for the reply.

What tools do I need to work with C#? I hear about XNA, but when I went to search it up on Google I links to like Visual Studio. Visual Studio = XNA?

Share this post


Link to post
Share on other sites
[quote name='Key' timestamp='1310576469' post='4834904']
What tools do I need to work with C#? I hear about XNA, but when I went to search it up on Google I links to like Visual Studio. Visual Studio = XNA?
[/quote]

Well for right now you just need Visual Studio, which is what you do all your coding and debugging in. You can get it [url="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express"]here[/url].

You don't need XNA at the moment since you haven't started to learn C# yet.

Share this post


Link to post
Share on other sites
I want to scream to the sky every time I see the typical responses in these threads!



More often than not, you have a bunch of people with very little programming experience, recommending the language they use, because someone else with very little programming experience recommended it to them earlier. What would make these forums a much much better place is if it provided a "testing" faucility where you could get rated in various languages and make that information publically available. I think you will find the majority of people that recommend C++ a) have experience only in C++ b) have very little actual experience.



I don't mean to be harsh, but it is a self perpetuating piece of bad advice. C++ is NOT a good beginner language. Period. It's not a particularly productive langauge either. And frankly, when you are starting out, you simply do not have the skills to take advantage of the speed. Hell, most professional programmers won't have the ability to really get the speed out to justify the loss of productivity.


When you talk to people that have used C++ for years, they generally wont recommend it to other developers, especially not to new developers. Hell, a great many of these developers no longer use C++, for good reason.

My original answer was going to be "from behind, well lubricated", but that struck me as inappropriate. ;)

Share this post


Link to post
Share on other sites
It's says do not post tutorial or guides here, I'm not sure if it means like tutorial threads or links to tutorial. But is there any suggested places I should learn from or books?
Ignore this post if it does break the rule.

Share this post


Link to post
Share on other sites
[quote name='Key' timestamp='1310581117' post='4834935']
It's says do not post tutorial or guides here, I'm not sure if it means like tutorial threads or links to tutorial. But is there any suggested places I should learn from or books?
Ignore this post if it does break the rule.
[/quote]


No, posting links and requesting them is fine. As to posting tutorials, what language are you going with?


Back to your original question, Java is a perfectly valid choice and is a relatively new user friendly tool, but when it comes to games the library support is a bit on the blah side. Many people recommend XNA just because the package is entirely newbie friendly. From having an included and intuitive IDE, good tutorials and probably the best non-2D game library, especially from a new user perspective. If you want to go the XNA route, [url=http://create.msdn.com/en-US/education/gamedevelopment]start here[/url].



To be honest, you need to walk before you can run. Expect to spend a couple weeks just wraping your head around the basics of the langauge and tools before you even approach game programming, this is true regardless to which language you choose. That said, after even a few hours, you can start towards simple text games and grow out from there, so you can encorporate game programming into your normal programming development.

Share this post


Link to post
Share on other sites
[quote name='Key' timestamp='1310573814' post='4834887']
Ah, thanks

In the "For Beginners" Forum FAQ it says that C# is a relatively easy language. Should I start with C# and maybe sometime from now move up to C++?
[/quote]

Personally i wouldn't consider a move from C# to C++ "Moving up", in many ways its a step down, placing languages in a hierarchy is just silly though, for larger projects it might make sense to use more than one language (Making gui applications using C++ is a pain in the ass for example, some frameworks such as QT makes things quite a bit less painful but its still bad compared to some other languages). I've used C++ for over 10 years now and i still don't know the language properly, when i have a choice i use Java instead and for my current game project large portions are written in Lua(Allthough the core parts are written in C++), C# is something i'm looking at a bit on the side and will learn eventually aswell I wouldn't consider it moving down though as its likely to make me more productive.

No matter what language you start with you should learn more languages in the future as it will make you a far better programmer.

Share this post


Link to post
Share on other sites
[quote name='Key' timestamp='1310581117' post='4834935']


It's says do not post tutorial or guides here, I'm not sure if it means like tutorial threads or links to tutorial. But is there any suggested places I should learn from or books?
Ignore this post if it does break the rule.
[/quote]

A couple of years ago, a C# workshop was run on these very forums. You could follow along with the workshop itself [url="http://www.gamedev.net/forum/83-c-workshop/"]here[/url], including a free online book it follows [url="http://www.charlespetzold.com/dotnet/DotNetBookZero11.pdf"]here[/url].

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1310577619' post='4834910']
I want to scream to the sky every time I see the typical responses in these threads!

I don't mean to be harsh, but it is a self perpetuating piece of bad advice. C++ is NOT a good beginner language. Period. It's not a particularly productive langauge either. And frankly, when you are starting out, you simply do not have the skills to take advantage of the speed. Hell, most professional programmers won't have the ability to really get the speed out to justify the loss of productivity.

When you talk to people that have used C++ for years, they generally wont recommend it to other developers, especially not to new developers. Hell, a great many of these developers no longer use C++, for good reason.
[/quote]

I agree with Serapth. I wouldn't recommend C++ either, and I use it professionally programming a commercial graphics SDK. C# is just a much better choice for beginners. As the OP learns programming and has a desire to go under the hood even further, then *that* is the time to open up C++. If the OP learns C#, not only will he be able to work on his game faster but he will have a skill in a language that is growing much faster than C++ in the general programming industry.

Anyone who recommends C++/D3D over C#/XNA in the "For Beginners" forum to someone who is trying to build a game most likely doesn't know what they are talking about. Especially if the person asking for advice has little or no programming experience.


Share this post


Link to post
Share on other sites
I need a bit of help with Visual C# 2010 Express
I followed one of the tutorials on how to get the console to print out of line of text.
My problem is that when I Debug it the Command Prompt opens briefly and close. Is there anyways I can pause it or close the program after a few seconds?
[code]using System;

namespace StartingPoint
{
class TestProgram
{
public static void Main()
{
Console.WriteLine("Hello, World!");
}
}
}
[/code]

Share this post


Link to post
Share on other sites
You've got two choices, run without debugging ( CTRL + F5 ) and it wont automatically close.



Otherwise, after your Console.WriteLine() line, add:

Console.ReadKey();

Share this post


Link to post
Share on other sites
So I spent a few hours reading that C# Workshop book. Don't fully understand it, but I went on a tangent and made my own little text game. Not complete...just the very beginning D:
Probably not doing it right, but that's why I'm posting here. Are there shortcuts to what I'm doing or should I avoid shortcuts and learn it the hard way?
[code]using System;

namespace StartingPoint
{
class TestProgram
{

public static void Main()
{
bool name = false;
while (name == false)
{
Console.Clear();
Console.Write("Please choose a name for your character.");
Console.WriteLine("");
string strName = Console.ReadLine();
Console.Clear();
Console.Write("Will you name your character, " + strName + "?");
Console.WriteLine("");
string strNameCheck = Console.ReadLine();
if (strNameCheck == "Yes" || strNameCheck == "yes")
{
name = true;
bool gender = false;
while (gender == false)
{
Console.Clear();
Console.Write("Are you a Male or Female?");
Console.WriteLine("");
string strGender = Console.ReadLine();
Console.Clear();
if (strGender == "Male" || strGender == "male")
{
int Gender = 1;
Console.WriteLine("So you are a " + strGender + "?");
string strGenderYesNo = Console.ReadLine();
if (strGenderYesNo == "Yes" || strGenderYesNo == "yes")
{
Console.Clear();
gender = true;
Console.Write("Enjoy your journey.");
Console.WriteLine("");
}
if (strGenderYesNo == "No" || strGenderYesNo == "no")
{
Console.Clear();
gender = false;
}
}
if (strGender == "Female" || strGender == "female")
{
int Gender = 2;
Console.WriteLine("So you are a " + strGender + "?");
string GenderYesNo = Console.ReadLine();
if (GenderYesNo == "Yes" || GenderYesNo == "yes")
{
Console.Clear();
gender = true;
Console.Write("Enjoy your journey.");
Console.WriteLine("");
}
if (GenderYesNo == "No" || GenderYesNo == "no")
{
Console.Clear();
gender = false;
}
}
}
if (strNameCheck == "No" || strNameCheck == "no")
{
Console.Clear();
name = false;
}
}
}
}
}
}[/code]

I'm thinking for this part:
[code] if (strGender == "Male" || strGender == "male" || strGender == "Female" || strGender == "Male")
{
int Gender = 1;
Console.WriteLine("So you are a " + strGender + "?");
string strGenderYesNo = Console.ReadLine();
if (strGenderYesNo == "Yes" || strGenderYesNo == "yes")
{
Console.Clear();
gender = true;
Console.Write("Enjoy your journey.");
Console.WriteLine("");
}
if (strGenderYesNo == "No" || strGenderYesNo == "no")
{
Console.Clear();
gender = false;
}
}[/code]
I could add || Female in there and get rid of the If for the Female option? But how would I go about assigning a int for Male and Female?
My brain actually aches..haha

Share this post


Link to post
Share on other sites
You can get rid of the female option altogether and do the string compare more easily:

String.Compare(strGender, "male", true);

That ignores the case of the user input. The way you did it, it wouldn't work if they entered "MAle" or "femalE"


I haven't compiled this but if you do something like below in your gender check loop, its a lot cleaner.

[code]
if (String.Compare(strGender, "male", true) == 0)
{
Console.WriteLine("So you are a man?");
}
else
{
Console.WriteLine("So you are a woman?");
}

string strGenderYesNo = Console.ReadLine();
if (String.Compare(strGenderYesNo, "yes", true) == 0)
{
gender = true;
}
[/code]

You'll have to add some error checking though, in case the user enters something weird. You can message me if you need more help.

Share this post


Link to post
Share on other sites
here's what I would do:

[code]strGender = strGender.toLower();
if (strGender == "male" || strGender == "female")
; // do stuff
else
Console.WriteLine("Can you not answer a simple question?");[/code]


Assuming whatever language this is (C#?) has a sane implementation of strings that includes toLower and toUpper functions. if not, write your own toLower function that takes in a string and returns that string with every character modified to be lowercase. It makes your life easier. What if they type "MaLe" or "feMALE" etc.

and follow that up with

[code]string strGenderYesNo = Console.ReadLine();
if(strGenderYesNo.toLower().startsWith('y'))
; // do what you need to do if they say yes[/code]

Once again, the startswith function may not exist in your language, but it probably does, and is also trivial to implement yourself. This way allows people to triple their productivity by only caring about the first letter. It's also faster computationally or whatever, but who cares about that.

Vent radioactive gas? ;-)

Share this post


Link to post
Share on other sites

This topic is 2346 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this