PDA

View Full Version : Program Languages 101




MstrPBK
Sep 23, 2008, 07:17 PM
I know the question I am about to ask is not a simple one; but I also know I will have considerable learning to do after it is answered.

Question: Could this community give me a list of languages I ought to consider learning to start me on my way to producing my own RPG game. With the assumption that current training is a good foundation: 1970's BASIC language and an decent immersion into the FileMaker Pro/Advanced environment. Where do I go from here? Going back to school is not an option here.

Aside from the standard interfaces that are expected, the project will entail significant 3D work, managing polygons (beyond squares, rectangles, hexagons), hopefully the implementation of fractal geometry, animation, a complex tapestry of background management.

Feel free to ask questions of me to refine the suggested list properly.

Thank you for your interest in this inquiry.

Peter Kelley
St. Paul, MN



ChrisA
Sep 23, 2008, 07:37 PM
Question: Could this community give me a list of languages I ought to consider learning to start me on my way to producing my own RPG game.

What you will find is that the language itself is the easy part. For example C can be learned quickly but when you program some non-trivial task you need to make many, many calls into many, many libraries. For example if you decide to use OpenGL for your graphics (A very good idea) you find that the Open GL book is about three times the size as the book that covers just C. And so it goes with the other frameworks, like the one that you would use to create windows and dialog boxes that are needed for user interaction. There are a number of these APIs that you need to become very famiar with. Most C programs are just strings of calls into these APIs.

The direct answer is C and the related C++ and Objective C languages.

But what if you wanted to write a science text book on say microbiology? You would have to know how to spell and type and construct paragraphs. But you'd also need to know microbiology. If you are wrinting an FPS, knowing the programing language is like knowing how to spell and type and use a work processor. That's the easy part.

mobilehaathi
Sep 23, 2008, 08:26 PM
Definitely learn C/C++ and ObjC if you want to do Cocoa stuff. I don't know much about programming graphics, but OpenGL is probably a good place to go.

Its going to take a lot of work. Best of luck!:)

Eric5h5
Sep 23, 2008, 09:53 PM
Aside from the standard interfaces that are expected, the project will entail significant 3D work, managing polygons (beyond squares, rectangles, hexagons), hopefully the implementation of fractal geometry, animation, a complex tapestry of background management.

Sounds like you want to use Unity (http://unity3d.com). The advice to learn C and do everything from scratch is years outdated; most games are made with 3rd-party engines these days. It's just too much work otherwise. The additional cost of buying an engine license is significantly outweighed by the immense amount of effort you save.

--Eric

Muncher
Sep 23, 2008, 10:02 PM
What you will find is that the language itself is the easy part. For example C can be learned quickly but when you program some non-trivial task you need to make many, many calls into many, many libraries. For example if you decide to use OpenGL for your graphics (A very good idea) you find that the Open GL book is about three times the size as the book that covers just C. And so it goes with the other frameworks, like the one that you would use to create windows and dialog boxes that are needed for user interaction. There are a number of these APIs that you need to become very famiar with. Most C programs are just strings of calls into these APIs.

The direct answer is C and the related C++ and Objective C languages.

But what if you wanted to write a science text book on say microbiology? You would have to know how to spell and type and construct paragraphs. But you'd also need to know microbiology. If you are wrinting an FPS, knowing the programing language is like knowing how to spell and type and use a work processor. That's the easy part.

Definitely learn C/C++ and ObjC if you want to do Cocoa stuff. I don't know much about programming graphics, but OpenGL is probably a good place to go.

Its going to take a lot of work. Best of luck!:)

Sadists! Sadists all! :p:rolleyes:

The OP only knows BASIC; you expect him to pick up OpenGL?

I can't imagine what it would be like trying to learn entirely on a Mac. I know quite a bit about unix environments and C and xcode now, but when I first tried, I was really confused. Either learn non-gaming APIs in Obj-C first, then OpenGL, or learn SDL with C, and then Obj-C and OpenGL later. There's really no direct path. Don't take any lessons in online tutorials for granted, and learn as many algorithms for game physics and the like as you can. With some determination, you can get pretty good.

Good Luck!

mobilehaathi
Sep 23, 2008, 11:03 PM
Sadists! Sadists all! :p:rolleyes:

The OP only knows BASIC; you expect him to pick up OpenGL?

I can't imagine what it would be like trying to learn entirely on a Mac. I know quite a bit about unix environments and C and xcode now, but when I first tried, I was really confused. Either learn non-gaming APIs in Obj-C first, then OpenGL, or learn SDL with C, and then Obj-C and OpenGL later. There's really no direct path. Don't take any lessons in online tutorials for granted, and learn as many algorithms for game physics and the like as you can. With some determination, you can get pretty good.

Good Luck!

Well I got the impression s/he was looking to invest some serious time and energy into producing a very refined product and wanted to implement particular graphics from scratch. Not sure why I thought that...just did.

I don't see how what I said was any different than you...just more distilled.:)

I mean, to learn C/C++ and OpenGL from scratch sufficiently to program a polished 3D RPG sounds like many many years of hard dedicated work. Somehow I got the impression that's what the OP was planning. I also got a "I wanna do-it-myself" vibe.

I dunno.....:D

Muncher
Sep 23, 2008, 11:22 PM
Well I got the impression s/he was looking to invest some serious time and energy into producing a very refined product and wanted to implement particular graphics from scratch. Not sure why I thought that...just did.

I don't see how what I said was any different than you...just more distilled.:)

I mean, to learn C/C++ and OpenGL from scratch sufficiently to program a polished 3D RPG sounds like many many years of hard dedicated work. Somehow I got the impression that's what the OP was planning. I also got a "I wanna do-it-myself" vibe.

I dunno.....:D

Huh... now that I read your post...

I do have an explanation though! I wrote something else, but decided I didn't like what I wrote, so I wrote something different.

TheReef
Sep 24, 2008, 12:38 AM
You could use REALbasic, I've made simple games in REALbasic, a small 2D RPG game was one of them where you could move around, collect items, use items on field etc.
That's for 2D through.

It's great for quick stuff, but performance wise (important in games) it isn't the best option.

As you already know BASIC it isn't a great step up, it's just learning how an object orientated environment works.

http://www.realsoftware.com/products/realbasic/index.php

As your looking at 3D, you could try looking at a game engine such as Unity or Torque.

Aranince
Sep 24, 2008, 12:47 AM
I recommend Python with either Pygame or Pyglet for graphics. Python has a very simple yet powerful syntax and it comes included with OS X.

MstrPBK
Sep 24, 2008, 01:12 AM
Somehow I got the impression that's what the OP was planning. I also got a "I wanna do-it-myself" vibe.

First to clear the air ... I am male.

Second I realize there are many routes to the same end. All of them not very easy. All your thoughts are valued and appreciated ... more is welcomed. Your input is showing the path that I have to follow - thank you.

Third ... (pause) ... I would rather be off working on the project definitions / narratives for this project to hand to the programmer(s), and then consult with the programmer(s) as they need input.

However there is a brick wall between me and that scenario (will try to avoid the soapbox here).

As a person with disabilities and fighting to get off the (American) welfare system the probabilities of me finding a programmer (much less a team of programmers) seems pretty unlikely being that I am in the lower 10th of the US employment strata. Working Pro Bono with the hope of "some" return at some unknown date is not what most professionals call appealing or even exciting.

Rather than complaining about my situation I am doing something about it while remaining within the welfare guidelines: THAT IS learning. Then using what is learned to my advantage. In addition I have no expectations of becoming wealthy, nor do I expect to become famous. I just have the hope that someone will appreciate what I have produced ... assuming it ever reaches that point.

I just have this 30 year old dream and walking this path alone the best I can. Anyone want to join me???

Respectfully Submitted,
Peter Kelley
ST. Paul, MN

JonnyThunder
Sep 24, 2008, 06:44 AM
MstrPBK :

You know, although I'm not going to offer suggestions as to HOW to go about achieving your goal - I just wanted to say the following...

No matter how many people disbelieve your abilities, no matter how hard it will sometimes seem to accomplish your goals, and despite anything else that you may see as a barrier - don't ever lose sight of your target and don't ever give up until you reach it. Your 30 year old dream is just as obtainable as anyone elses, and there's no better time and place than here and now, to just go for it.

Good luck with it buddy, I hope you make it work for you.

mobilehaathi
Sep 24, 2008, 07:35 AM
First to clear the air ... I am male.

Second I realize there are many routes to the same end. All of them not very easy. All your thoughts are valued and appreciated ... more is welcomed. Your input is showing the path that I have to follow - thank you.

Third ... (pause) ... I would rather be off working on the project definitions / narratives for this project to hand to the programmer(s), and then consult with the programmer(s) as they need input.

However there is a brick wall between me and that scenario (will try to avoid the soapbox here).

As a person with disabilities and fighting to get off the (American) welfare system the probabilities of me finding a programmer (much less a team of programmers) seems pretty unlikely being that I am in the lower 10th of the US employment strata. Working Pro Bono with the hope of "some" return at some unknown date is not what most professionals call appealing or even exciting.

Rather than complaining about my situation I am doing something about it while remaining within the welfare guidelines: THAT IS learning. Then using what is learned to my advantage. In addition I have no expectations of becoming wealthy, nor do I expect to become famous. I just have the hope that someone will appreciate what I have produced ... assuming it ever reaches that point.

I just have this 30 year old dream and walking this path alone the best I can. Anyone want to join me???

Respectfully Submitted,
Peter Kelley
ST. Paul, MN

I totally didn't see that you'd signed your name in the first post, thereby clarifying your gender. Sorry! I'm just so used to being gender neutral on boards that I sometimes ignore the obvious facts!

Anyway, you might consider trying to develop apps for the iPhone/iPod Touch. Having the device isn't absolutely necessary, so you wouldn't have to worry about wasting money on that. You would just need a Mac and $100 (one time fee) to post apps to the store. Honestly, the barrier to entry is pretty low and the potential returns are astonishing. Give it a thought...

If you dedicate some serious time into learning to program, it can be incredibly rewarding. Best of luck!

mysterytramp
Sep 24, 2008, 05:54 PM
Anyway, you might consider trying to develop apps for the iPhone/iPod Touch. ... Honestly, the barrier to entry is pretty low and the potential returns are astonishing.

I'm sure almost everybody saw this, but just in case you didn't:

[from MacRumors news... Sept. 19]

iPhone Game 'Trism' Makes $250,000 in 2 Months

Trism developer Steve Demeter revealed at a conference that he had generated $250,000 in income from his popular iPhone game since its launch on July 11th.

Trism is a gravity based puzzler which generated some press ahead of the App Store launch.

Trism presents the player with a playifeld populated by colorful, triangular tiles or “trisms.” The rows of trisms can be slid in six different directions (thanks to their triangluar shape) in order to achieve a match of three or more like-colored pieces. When a match is made, the like trisms disappear and surrounding trisms fall in to fill their place in the direction of gravity.
Trism is available from the App Store for $4.99. At that price, Trism would have had to have sold over 71,000 copies to generate that level of income, or an average of almost 1200 copies a day.

App Store Link: Trism


It's mind-boggling that he generated that amount of cash in such a short period of time.

Pull that off MstrPBK, and you can hire that team of programmers your RPG needs!

mt

mobilehaathi
Sep 24, 2008, 07:11 PM
Pull that off MstrPBK, and you can hire that team of programmers your RPG needs!

Exactly!

Muncher
Sep 24, 2008, 08:12 PM
I recommend Python with either Pygame or Pyglet for graphics. Python has a very simple yet powerful syntax and it comes included with OS X.

The more I think about it, the better that option sounds. Learning Python is good because it's currently one of the best languages for any platform. It also looks extremely, and I plan to learn it myself when I get the time. You can't beat the core C language for compatibility, but Python code can be adapted for Windows, Mac, common linux distros, and more.

The only problem with Python code is speed. Because it is interpreted, it will inherently be slower than C code.

First to clear the air ... I am male.

Second I realize there are many routes to the same end. All of them not very easy. All your thoughts are valued and appreciated ... more is welcomed. Your input is showing the path that I have to follow - thank you.

Third ... (pause) ... I would rather be off working on the project definitions / narratives for this project to hand to the programmer(s), and then consult with the programmer(s) as they need input.

However there is a brick wall between me and that scenario (will try to avoid the soapbox here).

As a person with disabilities and fighting to get off the (American) welfare system the probabilities of me finding a programmer (much less a team of programmers) seems pretty unlikely being that I am in the lower 10th of the US employment strata. Working Pro Bono with the hope of "some" return at some unknown date is not what most professionals call appealing or even exciting.

Rather than complaining about my situation I am doing something about it while remaining within the welfare guidelines: THAT IS learning. Then using what is learned to my advantage. In addition I have no expectations of becoming wealthy, nor do I expect to become famous. I just have the hope that someone will appreciate what I have produced ... assuming it ever reaches that point.

I just have this 30 year old dream and walking this path alone the best I can. Anyone want to join me???

Respectfully Submitted,
Peter Kelley
ST. Paul, MN

If you're determined, you can do anything. Just look at the story of the kid who was a teenager when he cracked CSS. When/if you get good at C/Objective C/C++, and you have a working knowledge of OpenGL or DirectX, you might take a shot at this (http://www0.us.ioccc.org/main.html) or this (http://pouet.net/). Put something good up there, and you're sure to get recognized by someone.

MstrPBK
Sep 27, 2008, 11:25 AM
This discussion has been very helpful.

I am assuming that C; C++; and Object C are variants of the same language. As they were being brought up it is unclear to me if these are to be learned on a "either/or" basis, or if I ought to learn each of these, or some combination of them?

Other languages (in alphabetical order) on the priority list seem to be:

Cocoa
Open GL
Python
SDL

(referring to my initial post) While I know FilmMaker Pro and Advanced; is there any need to consider SQL since that has export options for that? [From my view] are there other unknown ways to interface with the FM Pro databases that I have previously created?

There have been suggestions for me to investigate Unity and Torque.

Is there anything that I may have missed before wrapping this up to produce the final homework list?

Peter Kelley
St. Paul, MN

Aranince
Sep 27, 2008, 11:28 AM
C, C++, and Objective-C are all compatable with eachother. The only difference is feature set. Cocoa, OpenGL and SDL are not languages but APIs(Application programming interface) that allows you to do fun stuff like make user interfaces, or do 3d/2d graphics. You would/should learn Python before learning c/c++/objc/opengl etc. because it is simple enough to get you up and running quickly and will teach you the concepts of programming and object oriented programming without having to deal with complexities in c/c++/objc.

MstrPBK
Sep 28, 2008, 02:49 PM
C, C++, and Objective-C are all compatible with each other. The only difference is feature set. Cocoa, OpenGL and SDL are not languages but APIs(Application programming interface) that allows you to do fun stuff like make user interfaces, or do 3d/2d graphics. You would/should learn Python before learning c/c++/objc/opengl etc. because it is simple enough to get you up and running quickly and will teach you the concepts of programming and object oriented programming without having to deal with complexities in c/c++/objc.

Trying to get this right (per se), and not afraid to learn.

The project that I am proposing to create will entail BOTH 3D and 2D graphics. If C, C++, and Objective-C are all compatible between each other and the only difference is the feature set are you suggesting that ALL of these ought to be learned because of the differences in the feature sets?

Over all the previous discussion was focused on OpenGL and SDL. Should I expect to learn both of these or are these an either or choice?

I will note to learn Python first and follow that up with the C Languages as they are decided (above).

Respectfully submitted,
Peter Kelley
St. Paul, MN

Muncher
Sep 28, 2008, 11:34 PM
Trying to get this right (per se), and not afraid to learn.

The project that I am proposing to create will entail BOTH 3D and 2D graphics. If C, C++, and Objective-C are all compatible between each other and the only difference is the feature set are you suggesting that ALL of these ought to be learned because of the differences in the feature sets?

Over all the previous discussion was focused on OpenGL and SDL. Should I expect to learn both of these or are these an either or choice?

I will note to learn Python first and follow that up with the C Languages as they are decided (above).

Respectfully submitted,
Peter Kelley
St. Paul, MN

To clear up the languages:

C is the basic language, which both Objective-C and C++ are based off of. Both Objective-C and C++ have very different syntaxes (how they look), but are often used to accomplish identical goals. Objective-C is very Mac-friendly, while C++ is much less so, but highly windows compatible.

OpenGL and SDL are both graphics libraries. OpenGL is harder to learn, but faster. SDL is built on OpenGL, and is easier but less powerful.

Hope that helps.

MstrPBK
Sep 30, 2008, 02:07 PM
Trying to get this down to a final summery here. The input consensus seems to be that in my case I ought to learn the following (alphabetically again)


C language
Objective C
Open GL (as my API)
Python


I will learn Python first and follow that up with the C Languages.

Thank you all for your input to the initial question and guiding this person in a direction. This discussion is continued in THREAD Program Languages 202

Peter Kelley
St. Paul, MN

mongrol
Sep 30, 2008, 06:16 PM
I would actually read the forums at idevgames.com and also ask the same question there. Learning a language and framework is only a part of creating a game and if you are new there are many challenges along the way of which learning a language is only one of them. idevgames.com has some very experienced indie programmers and frequently get requests on how to start game design/programming. Ask there, not here. You will get much more focussed advice.

MstrPBK
Oct 1, 2008, 12:55 PM
I would actually read the forums at idevgames.com and also ask the same question there. Learning a language and framework is only a part of creating a game and if you are new there are many challenges along the way of which learning a language is only one of them. idevgames.com has some very experienced indie programmers and frequently get requests on how to start game design/programming. Ask there, not here. You will get much more focussed advice.

Mongrol I fully understand what your saying.

Up until now there are other things I have not discussed that I know about my background. But before I list those let me also list the what I view as the subdivisions of work on this project. I know that between my experience and my direction of learning will only take me so far. Others will inevitably have to be pulled in. But if you fully read the entire thread here you will also see some limitations in my life (please read again).

The team will need:

Animation and Special Effects Specialist
Background Specialist
Internet and Server Specialist
Second Database Specialist
2 Music Specialists
Second Programming Specialist
3D Rendering Specialist
1 Research Specialists (if I am very lucky)
Sales and Distribution Specialist
Customer Service Specialist

There may be other specialists that have not dawned on me at this point. But the list is a starting point of knowing my limitations.

My skills range from:

College level Animation training (Cell and Computer)
Database Development
Desktop Publishing
Foundational Music Theory
Foundational Market Research Theory
Foundational Website Theory

Respectfully Submitted,
Peter Kelley

P.S. For the sake of your post Mongrol I will take your advice and get a second opinion, or is it (smirk) a third!

garethlewis2
Oct 1, 2008, 01:57 PM
Before you decide to go down this path, what level of Math do you have?

I am not trying to dissuade you from doing this, but there will come an inevitable point where you will need a solid understanding of linear algebra, and definitely an understanding of calculus. You don't need to be an expert in the subject, you have to be comfortable dealing with integrals and derivatives.

C programming is easy. You will pick that up in a week. You seem to have the time.
C++ is essential for the games industry. Unless you are writing games specifically for a Mac, C++ is the only way to get a job, though that may not be your intention.
Objective-C is essential for writing apps that utilise the Mac correctly. The Java bridge is dead, and good riddance to its corpse.

OpenGL is a gigantic subject. Getting a cube on a screen is easy. You don't even have to worry about co-ordinate systems. Getting objects to interact with each other and also have their own co-ordinates requires far more coding, e.g. switching between camera, world and local co-ordinates.

The Math is required when you want to perform object movement either in straight lines, boring, or using non-linear motion paths, such as quarternians.

Someone else pointed out that you should use an engine. That's true, but 3D engines aren't by definition easy. They have to understand all the math, and co-ordinate transforms, so before using one, you need to understand how one works.

MstrPBK
Oct 2, 2008, 12:27 PM
I am not trying to dissuade you from doing this, but there will come an inevitable point where you will need a solid understanding of linear algebra, and definitely an understanding of calculus. You don't need to be an expert in the subject, you have to be comfortable dealing with integrals and derivatives.

GarethLewis2 you make an excellent point. While I had High School Algebra. I never made it to calculus. I did a improvised project with algebra in programming (must have impressed instructors because I never received a failing grade in either class). Looks like I need to back track a little with the math area - thank you for the heads up and the reality check.

Will add books in those directions on my own.

Thank you again,
Peter Kelley
St. Paul, MN

Muncher
Oct 2, 2008, 10:20 PM
Before you decide to go down this path, what level of Math do you have?

I am not trying to dissuade you from doing this, but there will come an inevitable point where you will need a solid understanding of linear algebra, and definitely an understanding of calculus. You don't need to be an expert in the subject, you have to be comfortable dealing with integrals and derivatives.

C programming is easy. You will pick that up in a week. You seem to have the time.
C++ is essential for the games industry. Unless you are writing games specifically for a Mac, C++ is the only way to get a job, though that may not be your intention.
Objective-C is essential for writing apps that utilise the Mac correctly. The Java bridge is dead, and good riddance to its corpse.

OpenGL is a gigantic subject. Getting a cube on a screen is easy. You don't even have to worry about co-ordinate systems. Getting objects to interact with each other and also have their own co-ordinates requires far more coding, e.g. switching between camera, world and local co-ordinates.

The Math is required when you want to perform object movement either in straight lines, boring, or using non-linear motion paths, such as quarternians.

Someone else pointed out that you should use an engine. That's true, but 3D engines aren't by definition easy. They have to understand all the math, and co-ordinate transforms, so before using one, you need to understand how one works.

Calculus is not essential. An understanding of coordinate systems and other pre-calc topics will be.

Eric5h5
Oct 3, 2008, 12:19 AM
Someone else pointed out that you should use an engine. That's true, but 3D engines aren't by definition easy. They have to understand all the math, and co-ordinate transforms, so before using one, you need to understand how one works.

No, not really. You should have a good understanding of 3D coordinate systems, but the point of using an engine is that most of the difficult math and programming has already been done for you. At this point in time, there's really very little point re-inventing the wheel unless you're either a masochist or you're into engine programming for its own sake.

The Math is required when you want to perform object movement either in straight lines, boring, or using non-linear motion paths, such as quarternians.

Quaternions aren't non-linear motion paths; they are complex numbers that are used in this case for storing rotational data, rather than euler angles (this has advantages such as avoiding gimbal lock). But again, you don't have to understand them...the engine does that for you; all you generally do is call a rotate command and not worry about it.

Which is not to say that a good math understanding is useless. It would help you have a better knowledge of what's going on behind the scenes, and what the limitations are, not to mention you might end up writing your own routines or extensions for things the engine doesn't support out of the box. However, saying that calculus is "necessary" is massively overstating the issue, unless, as I mentioned, you actually want to go into the game engine development business, but from what the OP has stated of his intentions, that's way off from his intentions.

Personally, I'd recommend a decent understanding of basic algebra as a good baseline.

C++ is essential for the games industry.

Untrue. It's primarily engine programmers who need to know C++. Level scripters, designers, animators, sound people, etc., none of them use C++. Most casual and indie games are made with a 3rd-party or standard in-house engine, which often involves no C whatsoever.

--Eric