Learning the Ropes (of programming)

This forum is for anything that doesn't specifically have to do with Better Than Wolves
Post Reply
User avatar
PureZaros
Posts: 151
Joined: Mon Jul 04, 2011 9:35 pm
Location: With a herd of alpaca in the La Raya mountains

Learning the Ropes (of programming)

Post by PureZaros »

I would really love it if FlowerChild could help me here, but anyone can answer.

I have an idea in my head for a mod that I want to create, but I have no knowledge of programming. Game programming is the career that I want to go into, but so far I haven't been able to learn a fig about it because internet tutorials suck :(. I was wondering, what is the best (not necessarily the fastest) way to learn programming/coding that will allow me to make this idea a reality?

Also, what kind of code does Minecraft use exactly? Is it Java? Or is it an offshoot of it?

Thanks for any input you guys have! :)

I changed your topic since it was a bit too broad and didn't say what this thread is about.
//Urian
Spoiler
Show
FlowerChild wrote:
Panda wrote:Edit: Thanks for the sticky good sir. <3
I really wish more women said things like this.
User avatar
Creepig
Posts: 71
Joined: Tue Jul 05, 2011 10:19 pm

Re: Learning the Ropes

Post by Creepig »

FlowerChild is probably far too busy to help you directly. Also, if he helps one person, then everyone will expect it.

Minecraft is indeed Java, but the modding is typically done through MCP. The best thing to do is probably to read through the guides and tutorials on the MCP website, and then if you're confused go ask carefully thought out and intelligent questions on the #mcp-modding channel at irc.esper.net.
User avatar
the_fodder
Posts: 345
Joined: Tue Jul 05, 2011 12:21 am

Re: Learning the Ropes

Post by the_fodder »

I got hooked by your subject, nice play on words, but was disappointed when it had nothing to do with the mod. I would suggest changing the subject to "learning the ropes of ...Game programming" or something.

/ Sorry one of my pet peeves is the uninformative subject line in forums. continue with your business.
It's FC mod, he just lets us play it.
User avatar
finite8
Posts: 587
Joined: Mon Jul 04, 2011 9:31 pm
Location: Melbourne, Australia

Re: Learning the Ropes

Post by finite8 »

PureZaros wrote:I would really love it if FlowerChild could help me here, but anyone can answer.

I have an idea in my head for a mod that I want to create, but I have no knowledge of programming. Game programming is the career that I want to go into, but so far I haven't been able to learn a fig about it because internet tutorials suck :(. I was wondering, what is the best (not necessarily the fastest) way to learn programming/coding that will allow me to make this idea a reality?

Also, what kind of code does Minecraft use exactly? Is it Java? Or is it an offshoot of it?

Thanks for any input you guys have! :)
You can learn to programme from the Internet and various tutorials just fine... but to be a good programmer requires dedication and study. I dare say when it comes to being a good programmer 25% is knowing the syntax, 25% is knowing the technology and 50% is discipline.

I can easily tell you how to sit down and write a program that can query a database, perform complex operations and do, well, whatever. Doing so in a manner that is reusable, debuggable, coherent and strictly follows an Object-Oriented fashion only comes with Education and Experience. My advice to you is:

- Buy some programming books. Java and C# are a great place to start (don't believe any of the VB.NET programmers who say that VB.NET is a competent language). If you learn one, the other is a piece of cake.
- Don't expect to make gold with your first endeavour! All the best programmers start off with a "Hello World" and progress from there. It's like expecting to be a Physicist but forgetting how to do addition. You gotta start somewhere, and progress your way to your goal.
- Consider a course in programming. While other careers like Network Administration and Systems favours practical experience, Programming really requires discipline. What you learn in a degree or course will stay with you all though your programming career. It's not like Lego where you can thumb your way through. Whenever you program, you HAVE to have some kind of plan. If you fail to plan, you plan to fail. IT Degrees teach you how to do this. Even if you follow the Agile methodology, there is still a plan involved.

Unfortunately, there is no short-cut to Games Programming, and Minecraft Modding is a messy place to start. Work your way through each step of the online tutorials, all they way from "Hello World" to the more advanced concepts.
Flowerchild (IRC) wrote:I'm not trying to stop you BTW ..., I'm saying that I think you're a piece of shit...not the same thing
User avatar
RegularX
Posts: 44
Joined: Tue Jul 05, 2011 11:35 am

Re: Learning the Ropes

Post by RegularX »

Modding used to be a great way to break into the industry, but modding got so commercialized it's nearly just the opposite now.

Still, fun way to program. Modding MC isn't the most straight forward I've seen, but MCP does make it at least easier to see how the code itself is structured.

There's one advantage to learning how to program by modding games though: it's always more rewarding when it's easier to see that your code can set things on fire.
User avatar
cheechako
Posts: 114
Joined: Mon Jul 04, 2011 11:40 pm

Re: Learning the Ropes

Post by cheechako »

PureZaros wrote:Is it Java? Or is it an offshoot of it?
Some offshoot that only Notch understands. Joking, of course - it is Java; it just seems like a strange offshoot at times.

Word of advice - everybody's hot for YouTube tutorials and stuff. That is great for learning Minecraft or showing off creations. But if your goal is to code, you are going to reading and writing code! Get used to reading. Videos can be decent learning aids when it comes to coding, but there is no substitue for good written material.
"That's the nice thing about mods. There's something for everyone. Some of us like to build functional elevators, while others want to run around with a bunny on their head."
User avatar
PureZaros
Posts: 151
Joined: Mon Jul 04, 2011 9:35 pm
Location: With a herd of alpaca in the La Raya mountains

Re: Learning the Ropes

Post by PureZaros »

Thanks for fast replies! ^.^
I would have replied sooner, but a series of unfortunate events forced me to wait.
Also, thanks to Urian for changing the subject title.

@Creepig:
Thanks for the info about MCP as I had no idea how to find it, other than google an I tend to get a lot of "spam" websites from there.

I realize it's not likely at all that he would help me, but I have to try :). I idolize him as the savior of Minecraft right now.

@the_fodder:
Sorry about that :/. I wasn't sure how to name it.

@finite8:
Thanks for a really informative post, big difference from the normal "OMG u n00b" type of thing.

I guess I've just never found a good internet tutorial then. Google tends to give me a lot of search spam, as I said to Creepig above.
Java and C++ (or C#, I don't know which is better right now.) are the languages I want to learn, so no arguments there!

Last thing, is Minecraft really a messy place to start? It seems simple enough, but what do I know. I just admitted to having next to no knowledge of programming :).

@RegularX:

Do I sense a kindred spirit in pyromania? Joking aside, thanks for your input. I've heard a lot of good stuff about MCP, and I can see why FlowerChild uses it if it makes his job easier. Not to sound insulting, I mean.

@cheechako:
With how FlowerChild described the piston coding, I'm not surprised.

I guess the biggest problem I have with this stuff is that I learn better when someone is talking to me. It goes back to what finite8 said about discipline, I just have to buckle down and DO it. Over and over again.
Spoiler
Show
FlowerChild wrote:
Panda wrote:Edit: Thanks for the sticky good sir. <3
I really wish more women said things like this.
User avatar
Razzle
Posts: 72
Joined: Fri Jul 08, 2011 3:54 pm

Re: Learning the Ropes (of programming)

Post by Razzle »

Here's a guide I found useful http://www.minecraftforum.net/topic/195 ... try2987480 and it tries to explain the java bits as well, it's the old case of learn by doing but from what I can gather it's not what a lot of minecraft modders do and is only for training purposes... but I found it helpful in understanding the code *shrugs*
muggsbud
Posts: 131
Joined: Mon Jul 04, 2011 9:31 pm

Re: Learning the Ropes (of programming)

Post by muggsbud »

like you I'm still learning programming, but i know enough to have figured out that java is not a good language for making a game; with the exception of free online games.

the reason for this is that it runs on a virtual machine. This is something akin to an 'emulator.' While it allows your program to run on any operating system, it also uses much, much more power than it would if you were using the os' native language (e.g. c or c++ on windows). it would be better to learn c++ and c#, even though Java tends to be more programmer friendly.

that aside, Notch chose java because he likes to use it.

As for modding i found a tutorial that i like, it's kind of outdated but if you can figure out the changes it's not bad. http://www.minecraftforum.net/topic/264 ... -beginner/
Haniale
Posts: 33
Joined: Sat Jul 09, 2011 1:37 am

Re: Learning the Ropes (of programming)

Post by Haniale »

Look at a program called "Gamemaker", if it's still around. Your biggest hurdle is going to be logic, not code, to begin with, and GM lets you make things with a drag/drop interface, which signficantly reduces this hurdle. Then, you move into it's scripting language which will help ease you into coding as a whole. Then forget everything you learnt, and go find another language.

Java isn't that bad - I'm spending more time trying to find MCP docs than figuring out the language, but I'm not a new coder.

Game programming is one of the worst to get into, given how heavy use very cryptic math gets. I strongly recommend middleware, as most of the time you can get away from that stuff and focus on actually making the game - I suggest unity3D, though I hear good things about shiva, unreal and XNA.

Java is used by MC, but most of the time you'll be interacting with MC as a library using java syntax from what I can tell.

As for tutorials.. well, it's tuts, books or classes, and I got more use from tuts.

Good luck - hard path.
User avatar
Senjai
Posts: 34
Joined: Fri Jul 08, 2011 6:16 am

Re: Learning the Ropes

Post by Senjai »

PureZaros wrote:Thanks for fast replies! ^.^
I would have replied sooner, but a series of unfortunate events forced me to wait.
Also, thanks to Urian for changing the subject title.

@Creepig:
Thanks for the info about MCP as I had no idea how to find it, other than google an I tend to get a lot of "spam" websites from there.

I realize it's not likely at all that he would help me, but I have to try :). I idolize him as the savior of Minecraft right now.

@the_fodder:
Sorry about that :/. I wasn't sure how to name it.

@finite8:
Thanks for a really informative post, big difference from the normal "OMG u n00b" type of thing.

I guess I've just never found a good internet tutorial then. Google tends to give me a lot of search spam, as I said to Creepig above.
Java and C++ (or C#, I don't know which is better right now.) are the languages I want to learn, so no arguments there!

Last thing, is Minecraft really a messy place to start? It seems simple enough, but what do I know. I just admitted to having next to no knowledge of programming :).

@RegularX:

Do I sense a kindred spirit in pyromania? Joking aside, thanks for your input. I've heard a lot of good stuff about MCP, and I can see why FlowerChild uses it if it makes his job easier. Not to sound insulting, I mean.

@cheechako:
With how FlowerChild described the piston coding, I'm not surprised.

I guess the biggest problem I have with this stuff is that I learn better when someone is talking to me. It goes back to what finite8 said about discipline, I just have to buckle down and DO it. Over and over again.
Okay first thing's first. DO NOT USE GAMEMAKER (have no idea why someone would suggest that), And do not start with Java.

Java is a fine language, and is great for portability but allows programmers the opportunity to develop bad coding habits (as Java doesn't punish you for doing stupid things.) The language you want to work up to is C++, it's the standard and also the most complex. Unlike Java, C++ teaches you how memory and dynamic storage management works. Java doesn't even have pointers. Secondly, once your competent with C++, any other language is cake. I do suggest becoming involved in Java, just learn C++ first. C# is kind of.... .NET whored? It was developed by Microsoft, and as such may not be the best place to start. I think there might be a problem with linux/mac in the future and C# (Windows is starting to get more and more proprietary). Nonetheless C# and Managed DirectX is great for windows game programming. Java is an interpreted language, It will never run performance-demanding applications at anywhere close to the level C++ can. C++ compiles into machine code, Java compiles to Java Bytecode, which then is run by the Java Virtual Machine. (hinders Java for games a lot)

If you can jump into C++ I reccomend Accelerated C++ http://www.acceleratedcpp.com/ Ask your questions in ##c++ on irc.freenode.net (they'll be glad to help). If the book moves too fast. Go to www.htdp.org. It's a free book that teaches you DrRacket (the first language I learnt at Uni). #racket is also on freenode and racket is a superset of #scheme. If AC++ moves too fast, Racket will teach you how to code, and code properly. It teaches you recursive and functional programming which seems a lost art nowadays among lazy programmers. Do that then come back to C++.

After learning C++ you have two choices, go to Java and start modding (Java is a weeks work if you know C++) or go more into the graphics side of things. OpenGL (nehe.gamedev.net) tutorials, directx etc. Start learning WinAPI (windows programming) GTK/KDE (Linux window programming) or Qt (for cross platform development). Then work your way to graphics libraries/engines (OpenGL, DirectX, Ogre, GDI even.).

Though along the way you'll have to pick up a math book or two to understand how graphical math works. (Vectors, matricies, planes etc). Shaders and lighting get even more complex (mathematically).

My learning curve went like this: HTML -> PHP/MySQL -> C/C++ -> WinAPI/DirectX -> STL -> Scheme (didnt realize how bad of a coder I was till I learnt this) -> Qt -> Java

If you start by using crappy tutorials your just going to learn basics and not understand the underlying mechanics. This produces hackish code that you.. essentially mess with to work. It should be design to work, not f- around till it works. Unfortunately many new programmers (even from uni) take the hackish approach.

Read a book, invest something in it. Get AC++.

Here if you need me.
Image
The person who risks nothing, Does nothing, has nothing, and is nothing. They may avoid suffering and sorrow,
But they cannot learn, feel, change, grow, love, live.
Only the person who risks can be free
User avatar
Senjai
Posts: 34
Joined: Fri Jul 08, 2011 6:16 am

Re: Learning the Ropes (of programming)

Post by Senjai »

Haniale wrote:Look at a program called "Gamemaker", if it's still around. Your biggest hurdle is going to be logic, not code, to begin with, and GM lets you make things with a drag/drop interface, which signficantly reduces this hurdle. Then, you move into it's scripting language which will help ease you into coding as a whole. Then forget everything you learnt, and go find another language.

Java isn't that bad - I'm spending more time trying to find MCP docs than figuring out the language, but I'm not a new coder.

Game programming is one of the worst to get into, given how heavy use very cryptic math gets. I strongly recommend middleware, as most of the time you can get away from that stuff and focus on actually making the game - I suggest unity3D, though I hear good things about shiva, unreal and XNA.

Java is used by MC, but most of the time you'll be interacting with MC as a library using java syntax from what I can tell.

As for tutorials.. well, it's tuts, books or classes, and I got more use from tuts.

Good luck - hard path.
You would never start with gamemaker. You learn the logic and you'll never be able to get away from it. You'll start developing programs so you can apply that logic, and won't be able to complete a project unless you succeed in that. Not a good idea. Start from basics. XNA and everything else you mentioned are APIs/Engines/SDK's. They help you out with a lot of the work, you still have to understand how it works though. Yes its heavy math, but thats a requirement, not an option.
Image
The person who risks nothing, Does nothing, has nothing, and is nothing. They may avoid suffering and sorrow,
But they cannot learn, feel, change, grow, love, live.
Only the person who risks can be free
Brainspackle
Posts: 6
Joined: Tue Jul 12, 2011 8:10 pm

Re: Learning the Ropes (of programming)

Post by Brainspackle »

My learning curve went like this: HTML -> PHP/MySQL -> C/C++ -> WinAPI/DirectX -> STL -> Scheme (didnt realize how bad of a coder I was till I learnt this) -> Qt -> Java]
Web development is a great place to start. It gives you a platform that everyone understands, the client is handled for you, you can get quick results and build a good set of fundamentals here.

I'd recommend getting into web development with Ruby or Python first as they are both very nice languages that are written in a very human readable way, which makes understanding how to read the code fairly easy for a noob. Once you understand what you're reading, start writing :)

Rails is a nice framework for doing web dev in Ruby and Django is the Python counterpart.
User avatar
PureZaros
Posts: 151
Joined: Mon Jul 04, 2011 9:35 pm
Location: With a herd of alpaca in the La Raya mountains

Re: Learning the Ropes (of programming)

Post by PureZaros »

Wow, I forget to check it and the thread gets a bunch of comments! Thanks for your input everyone!

@Rachey:
Thanks for the link! I only read through the first part of it, but already it sounds like a big help.

@mugsbug:
I realize Java probably isn't the best to start with now, because so many people have been telling me not to. I suppose it's just because Java is the language I hear about the most. Thanks for the link, I've only read a bit of it so far, but it seems just as useful as Rachey's.

@Haniale:
I'm not familiar with most of those :/
Thanks for input though, I will definitely look at Gamemaker, though I may not do anything with it.

@senjai:
Yeah, I was thinking C++ too, I just wasn't sure what I should learn first. I have done some (amature) HTML, so I'm kind of following the path you took! I'm not too familiar with the different languages, so I don't know what a lot of those are. Also, is the easiest way to get a good programming book the internet? Or should I go old school and get one from the book store? Last, I'm not planning on starting with Gamemaker, but it sounds like something I could look into a little after getting some experience with C++, etc.

@Brainspackle:
Well then, good thing I've already done some of that (somewhat, I think I kind of started getting lazy later on in that school year.)! I have heard good things about Python, but I'm not sure if it's a good thing to start with, judging by senaj's post. This "noob" has a lot of info to sift through! :)
Spoiler
Show
FlowerChild wrote:
Panda wrote:Edit: Thanks for the sticky good sir. <3
I really wish more women said things like this.
darknessLPs
Posts: 29
Joined: Wed Jul 13, 2011 6:42 am

Re: Learning the Ropes (of programming)

Post by darknessLPs »

If you are actually considering game programming as a career I would offer you the suggestion to start with simple programming languages which use real world keywords (like visual basic does) and then work your way up to more complex languages such as C++ and Java. If you are interested in learning the "behind the scenes" work that the code you're writing actually does, investigate the following in this order: High Level Assembly Language (acronym HLA), Assembly Language, Binary logic gates, machine language

Now, I'm sure with just knowing the basics of binary logic gates and HLA you can understand a LOT more then you would normally and provides an amazingly stable base for future programming. If you do choose to skip directly to very complex languages such as the aforementioned, please realize that you will be asking a lot of questions to a lot of people who will tell you to read the manual, and (by extension of the previous) reading many many texts on the subject. If you would like references to Web pages which you can begin your search for knowledge on please contact me via PM or on youtube(via the same username).
User avatar
cheechako
Posts: 114
Joined: Mon Jul 04, 2011 11:40 pm

Re: Learning the Ropes (of programming)

Post by cheechako »

darknessLPs wrote:please realize that you will be asking a lot of questions to a lot of people who will tell you to read the manual, and (by extension of the previous) reading many many texts on the subject. If you would like references to Web pages which you can begin your search for knowledge on please contact me via PM or on youtube(via the same username).
Read... read... read!

That's my suggestion. I see so many people asking for links to YouTube tutorials. Videos are great for lots of things. They can even be used as learning aids for programming. But they are no substitute for reading when it comes to learning how to program.
"That's the nice thing about mods. There's something for everyone. Some of us like to build functional elevators, while others want to run around with a bunny on their head."
User avatar
Senjai
Posts: 34
Joined: Fri Jul 08, 2011 6:16 am

Re: Learning the Ropes (of programming)

Post by Senjai »

Pure, get on IRC (its in a topic on the offtopic section, just below this one) and we can discuss it further.

Brainspackle made good points, python is an incredible interpreted language and is worth learning. It is considered the unofficial language of Ubuntu Linux. Though I don't know python. You never want to touch gamemaker. No major games were made with it. And you have to remember, these things are expensive, not in money, but in time.

Always buy hardcopy books, even if pirating seems tempting, you don't learn properly reading from a computer screen. We have not yet evolved away from paper books.
Image
The person who risks nothing, Does nothing, has nothing, and is nothing. They may avoid suffering and sorrow,
But they cannot learn, feel, change, grow, love, live.
Only the person who risks can be free
Post Reply