Sony servers are restarting in:
.
They should be back up in approximately .

Where can I learn how to program/create games such as Path of Exile?

"
maybe start out small and build up to something as big as PoE.
Starting small is indeed the thing to do. I was linked to this on twitter today, and it's a good summary of why you should start with small, manageable projects.
"
Where do I begin? What programming language should I start with?
You'll likely get a lot of different answers to this depending on who you ask, but here's mine, based on my own combination of experiences - learning myself, both initally self taught and later in university, teaching as a lab demonstrator at my university for several years for first-year and second-year papers, and working as a research assistant with one of the lecturers researching how people first learn to program in the first-year papers.

First off, and this isn't meant as a slight against Juicebox360 specifically, but rather because you'll hear this a lot:
"
Juicebox360 wrote:
probly java
FUCK JAVA. Right in whichever orifice is least comfortable for it. Maybe the nostril.
In all seriousness, Java is a fine language, and you can certainly learn from it. It is not, however, a good first language. It can be an adequate one, but the point of initially learning to program should be to learn to program - you need to get familiar with the basic things like function calls, branching, repetition and recursion - and once you understand these things, you can fairly quickly apply them in any language, it's just a matter of learning the specific ways that language applies them.
Java, however has enough boilerplate code for even the simplest programs that learning the basics of programming either gets bogged down and confused in also learning what all that extra Java code means, or you just have to accept "you'll understand this later, try to pretend it's not there" about 70%+ of the code in your simple programs, which isn't, in my opinion, a good attitude to be reinforcing early on in someone's programming education.

In my university courses, Java was the language of the first-year papers, and it was the one being run when I helped with the research project on programming education, and I saw this happening first and second hand as I taught people in the labs and reviewed the feedback we were getting from students. I myself would probably have had a much harder time with it had I not been previously self-taught in BASIC.
After that research project (not necessarily because of it), the university introduced a new paper for first year teaching Python, intended to be taken before the first Java paper. I volunteered to help in the labs for that one (mostly because I was interested in learning python myself), and did the lab demonstrating for the Java paper in the following semester as well, and the students who'd done the python paper definitely seemed to grasp things better.

So as a first language, I'd recommend Python. It's not what I used (QBASIC for the win!), but it's a lot less out-of-date, and it lets you get straight to the actual programming without having to deal with the extra boilerplate that Java has:
"
Java wrote:
public class HelloWorld {

public static void main(String[] args) {
System.out.println("Hello, World");
}

}
"
Python wrote:
print "Hello World"

Object Oriented programming is great (and python does that too), but Hello World shouldn't need to be a class, and neither trying to explain to a starting programmer what "public static void main(String[] args)" means, nor telling them to ignore it, seem adequate to me.

I'll go a step further - the lab book used for the Python paper at Otago University is available online as a PDF here - It might not be the best, but it's not horrible (or at least, the versions of it I saw a few years ago weren't, and I can't imagine they've ruined it too hard since then. I'd highly recommend getting that pdf andPython (the text uses Python 2.7, for reasons explained in the introduction), and working through the book at your own pace. Should you choose to do so, you can feel free to contact me if you find anything you get really stuck on and can't work out yourself - I helped teach the paper for two years, so should be able to sort you out.

Once you've done that, you should have a good basic introduction to most programming principles, and be able to write your own programs. From there, there's a few ways you could go.

If you're really keen to get straight into games, you could make some fairly simple games in Python with what you know, or go ahead and install the Pygame library for your OS and version of python, which would be everything you need to do some decent 2D games - some (not many, to my knowledge) commercial games have even been done in python. I'm not familiar with what stuff exists for 3D in the language.

You could instead (or after, or as well) look into learning Java, which is better to learn once you have the basics under your belt, and will beat you over the head with Object Oriented Programming until you've really learned it (the Python book, or at least the old versions, did cover the very basics of OOP, but not in much detail, because that paper was to be followed by a Java one in the next semester. You could always try to learn more on your own in python as well).

And if you're really looking at doing games, c++ is where you want to be. You could try going straight here from python, although I suspect at least a basic learning of Java is a good intermediary step. My university courses covered straight c before c++, but that may not be necessary. I don't have specific resources to recommend currently for c++ off the top of my head, I'll go digging in my archives and come back if I find something useful - I have vague memories of some decent tutorials for OpenGL using GLUT.

I could upload somewhere the code for the small game I made and sent to Chris with my CV to get this job, but you should probably learn from looking at actually good code, and that doesn't really qualify.
Last edited by Mark_GGG on Apr 1, 2014, 7:58:58 PM
"
Mark_GGG wrote:
I could upload somewhere the code for the small game I made and sent to Chris with my CV to get this job, but you should probably learn from looking at actually good code, and that doesn't really qualify.
This has been requested in PM, so I've uploaded the aforementioned game and source here: http://www.mediafire.com/download/qosc0iprre48v59/Puzzle_Game.zip

Runs on windows, requires OpenGL (also uses the GLUT library, but the dll for that is included in the game folder so shouldn't need installed separately). Unfortunately when I went to my primary archived copy it had regressed and developed a weird bug where the edge of the level/spaces with no tiles didn't prevent movement, which makes getting past the ice level impossible. This version (copied from the email attachment I sent to Chris years ago) didn't have that bug when I tested it, but beyond that all I can say is it worked when I last looked at it years ago.

Technically, I misspoke above - this sample game wasn't (directly) related to me getting the job, but rather it in combination with my CV, and Rhys putting in a good word for me, got me an interview (where I was given a different programming task to demonstrate my skills in person, as well as the actual interview and getting to meet Chris and the team).

This should not be taken as an example of good code - there's a lot wrong here, but I don't have time to fix it up, nor to do an annotated version with comments berating my past self for foolishness, and pointing out my mistakes for new readers.

I've learned a lot about coding since then, and no-one should be using this as an example of how to do everything. However, it shows perhaps an example of the size and scope of project someone could make over a month or so of spending most of your free time on it, while working a real job during the day (or in my case in the evenings) and hope to complete - I stole the image loading and displaying the tile grid code from one of my previous projects and adapted it, but everything else (such as it is) was done from scratch.

All the source files are there for anyone who wants to compile it themselves or play around with it, but I'm afraid you'll have to sort out setting up a visual studio (or other IDE of choice) project, linking the libraries, and getting it to compile, by yourself - I can go look up specific things if asked, but I haven't touched this in so long that I don't want to work all that out from scratch again. My version which had all those files is the one with the weird bug that's cropped up.

Arrow keys to move, R to rest, ESC to quit. Yes, the final level is possible.
Last edited by Mark_GGG on Apr 29, 2014, 5:48:58 AM
"
Bunnu wrote:
I have to ask - was that game inspired by Chip's Challenge?
No, never played it. The mechanic of pushing crates into water to form walkable platforms was taken from Rescue Rover, and the crate-pushing level was stolen in it's entirety from Paganitzu (where it was boulder pushing).
The rest was me coming up with a few mechanics that made sense for a grid-based game of moving and pushing things on the way to the exit, making a level to showcase/teach each in turn, and then a final level that brings it all together into an actual puzzle - while I'm not proud of much of the code, I am fairly happy with how that turned out. Without coding text menu displays and things I had to teach the game mechanics through the levels, and with the other than stealing the crate one as mentioned above (I knew and loved that level from long ago, and saw no point trying to do better than it for a level about pushing things around), I think I did quite well. If I recall correctly, when I showed up for the interview I was told Jonathan had played the whole thing and spent a decent amount of time trying to figure out the final level* :P

*To be fair, it's partially a bitch because of the fact that you can't undo, so any mistake means you have to restart the whole level. Anyone who can work out how to edit the level files (not hard) is free to change the player's starting position to any point they've already reached in order to skip the bits they've already completed - most likely to the bridge just before the big ice area, to skip the initial crate bit.
Last edited by Mark_GGG on Apr 29, 2014, 6:40:04 AM
"
lumisphere902 wrote:
"
Mark_GGG wrote:
]FUCK JAVA. Right in whichever orifice is least comfortable for it.

Hey, I use Java. :(
I have no problem with Java in general, only as a first language to learn, which far to many people recommend it as.

Report Forum Post

Report Account:

Report Type

Additional Info