While I have been learning the past month or so, I have found myself wanting to learn more and more, but due to that enthusiasm and excitement to get closer to creating a little 2d game engine that I can expand upon and create games off, I find myself having drifted away from efficient learning techniques, and just trying to go through as many tutorials as possible, hoping that I just pick things up along the way (which is happening, but I question if it is really a good way of learning).

I have been through the entire Beginners section of TheNewBoston's tutorials (One day, when I'm making plenty of dollars, someone remind me to give that guy a hefty donation).I have also been through a few of his intermediate tutorials before getting a tad bored and moving onto something I can see results out of.

I have just been through Van Zeben's tutorials for Java 2D game engine development, but it's very full on and I really didn't learn much about specific functions and so on, but I did get an idea of the complexity of even the most basic of game engines. I believe that if I want to be a great games developer, I need to get an understanding of the low level stuff and understand what is happening behind the scenes rather than jump ahead into something like Game Maker where I really don't think I would learn much at all about programming (I could be wrong however).http://www.youtube.com/watch?v=VE7ezYCTPe4&list=PL8CAB66181A502179

To begin with, while learning Java through TheNewBoston's tutorials, I was practising the code several times over and over so that I could understand how the code works and how it could apply to game situations, which I think worked well, but as the code got longer and longer, and each video had about 10 different things to learn in it, I stopped practising the code and just tried to understand it at the time. If I didn't, I would watch the video again until I did understand it, but it's not the same as writing out the same code off the top of my head after doing the tutorials.

Anyway, i'm rambling now...

So, while I know that everyone is different, and everyone learns differently, and that there is no sure-fire way of becoming a master programmer/games developer. I AM curious to know of the learning experience of other programmers, I am interested in knowing things such as:

- Why did you want to start programming? (What was your motivation?)- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?- How long ago did you get started? And where are you at now?- What learning methods did you employ personally to help you develop your skills in programming?- What advice could you give to other programmers who might be feeling a little lost in what direction to take?- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).

1) Not good at other fields, nor programming too. Darn!2) Class forced me to learn VB6, then switch to Java because about 5 years ago before Android came Java programmer is rare species3) Still starting4) Just challenge yourself to do something that you know you can't but you will to know how5) Just leave it for moment and come back later6) Start from something simple so yes, those will do.

A little advice from me, don't learn something for the sake of learning it (I'm talking about topics within programming btw) Only ever learn something because you find you need to know it. When I went through the java tutorials, I thought I had it figured. I read the topic, did the examples, made a few examples of my own etc.. But then when it came to using, for example, threads, I had no clue how to use them because when I had learnt them before I didn't understand the reason for using them and what functions they could serve. I had to learn several things all over again. This is actually where I think game programming becomes quite a good beginner topic, because there are all these topics you have to address like concurrency, oop concepts, io etc. but because you have a context to learn them in, you understand them far better at the end of it.

I had always been more interested in computers than anything else. I started with the hardware, building my own rig etc, and got more interested in the software not long after.

Quote

Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?

Started with....OOP: Java. Started in highschool because that's all they offered at the time.Scripting: HTML and PHP.

Currently using...C# and Java. They're similar in many, many ways. I personally like C# better though.

Quote

How long ago did you get started? And where are you at now?

Started around age... 12... I believe. I started a clan with a friend for BF2 and Counter-Strike, that's where the HTML and PHP come in. Made a website for the clan lol. I didn't learn Java until I was 14-15.

Quote

What learning methods did you employ personally to help you develop your skills in programming?

I'm a learn as I go kind of person. Not sure if 'Trial and Error' count as a learning technique but that's how I tackle most tasks. I also Google a lot... lol

Quote

What advice could you give to other programmers who might be feeling a little lost in what direction to take?

Decide on a simple, single program you want to write. Write it in a few different languages and see which one you enjoy/understand the most.

Quote

Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).

You must break into Fort Knox with code alone. But seriously... I don't consider people "programmers" unless they know OOP. But maybe that's just me being mean...

Was about 7 i think. The demo computer had lots of games. Dad shelled out the 3000 odd dollars for it but not for any games. Told me if i wanted games i had to write them myself. Well i showed him!

Quote

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?

pips3 basic. Because that is what that machine did. Then machine code (there was no assembler). Then assembler (i got it imported). Yea i was still only about 8 at the time. I didn't realize how much Dad paid for some of this stuff. Even the assembler was a few 100.

Quote

- How long ago did you get started? And where are you at now?

Well i was 7. I am now 38. So that is like a really long time. I am now in Science where about 50%-80% of my day job is programming. I did a bunch of contracting for a few years on mobile network stuff, for banks and even some rather odd technical jobs. Probably the most odd was porting a bunch of assembly to C.

Quote

- What learning methods did you employ personally to help you develop your skills in programming?

By writing a lot of programs. I had a need (i wanted to play games). I tried to fill that need. That was it. Even when i was doing demo stuff it was to fill a need. In this case write something cooler than that guy. I have always been mostly goal orientated. Ironically i lost a bit of that when i came back to game programming.

Quote

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?

But for game devs in particular i would say Don't write engines, write games!. Repeat that about a million times.Even better write it out a million times. This is where i went wrong when coming back to game dev work. I won't do that again.

Quote

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).

Yes. Finish a game. Most of us here have failed under this rite of passage. But it is something i intend to fix soon.

I have no special talents. I am only passionately curious.--Albert Einstein

Everybody learns differently, and at different paces. However, I've found that concepts in programming are a lot like learning a spoken language: if you don't use it, you lose it. You can learn all the abstract concepts you care to, but you have to put them into action and see their results or it will eventually slip out of your mind.

Don't stop learning new things, but it looks to me like you've read enough tutorials: use that knowledge to start writing real things now.

I wanted to write my own "Colossal Cave" which was the first game I had played on a computer.

Quote

Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?

I used BASICA because that's what the IBM PC had, and I didn't know there was anything else. Now I use Java because it is what I am most familiar with and it has good enough performance for the type of games I want to make.

Quote

How long ago did you get started? And where are you at now?

I think I was around 8 or 9. Now I work at a pharmaceutical company and do data programming in SAS as well as application programming in Java and Scala.

Quote

What learning methods did you employ personally to help you develop your skills in programming?

Personally, I learn best when I understand things at a more theoretical / abstract level. Code examples don't help me as much if I don't have the foundation ahead of time, so someone pasting in some code and saying "do it like this" is not as helpful as it might be with others. Recently I have gotten a lot out of the books Object Thinking and Holub On Patterns. They showed me that although I was using objects and classes, I wasn't really taking advantage of what OOP has to offer. I was really just doing procedural programming in Java. Going over my game/work code with these books in mind have been a revelation for me. My code has immediately gotten more readable and more understandable.

Quote

What advice could you give to other programmers who might be feeling a little lost in what direction to take?

Write something small.....trivially small, but finish it.

Quote

Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).

I actually didn't want to start programming at first. I started programming when I realized that I wanted an easier way to teach my fellow students about Geometry in High School. So I wrote a program using my TI-83 Calculator to do just that. It was then I realized that I was pretty good at it, and continued learning and writing small programs ever since.

Quote

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?

I chose BASIC because that is what was on the TI-83 calculator at the time. Ever since then, I dabbed in a lot of other languages like Perl, C++, JavaScript, etc. The reason I'm sticking with Java now is because I think Java has a lot of untapped potential. If people can just start writing more games in it, it might be able to take off as a very solid contender to the top languages. (Well, as long as Oracle stops messing the security up...)

Quote

- How long ago did you get started? And where are you at now?

I started coding in high school around 13-14. Now I know multiple languages and have been coding small applications and games for them. At the moment, I'm working on a small scripting engine for JavaScript. Real-life wise, I'm delving into machining and mechanics to see what methods can be employed to make tools like AutoCAD run better.

Quote

- What learning methods did you employ personally to help you develop your skills in programming?

To be honest, I used my projects as a learning experience. Every project I created, I treated it like a challenge and used the challenges of the game to figure out what I should do next. This allowed me to finish my applications/games, but as a bonus, I also learned a lot about the programming languages and the similarities they all have with one another. As a programmer, I find that splitting up your work load is invaluable. Tackling your jobs in small pieces vastly improves the chances you'll get something done. "Divide and Conquer... and all that jazz."

Quote

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?

- Well, first and foremost is, don't give up on the task of finding a direction. - Secondly, always do something that will interest you.

Not everyone is going to feel motivated to produce snake, pong, or pac-man. The most important thing is to find a project that you would like to put onto the screen, and work to do that. Direction, time, and motivation all fall into place once you have a goal you want to achieve. (Well, as long as the goal is a very manageable one, like making a simple screen saver ).

On that thought, don't set your goals to be unmanageable. It is important that you pace yourself as you program so you can actually absorb the techniques. Like all exercises, programming is best taken in small chunks. Treat programming as a journey, and treat the project you create as a reward.

Quote

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).

Finish something. Then, finish something else. Treat each finished program as a trophy.

Awesome stuff guys, thanks for taking the time to respond. Any time I read of the experience and/or success of other game developers, programmers, 3d modellers etc, I get a little bit of inspiration and in some cases, a lot.Reading those responses is giving me plenty, which is great considering right now i've got the man flu (which is making it hard to do programming, but I've found myself pulled towards it rather than repelled which is great!).

I will give a little bit more info on myself, it is a lot, but i'll only post this once haha.

I've always been interested in Games Development, even as a kid, but due to many things including depression, anxiety and insomnia, I didn't start games development until about 2005-2006 when I finished High School.I didn't know where to start, but thankfully knew some people who were doing 3D modelling using Maya, and at the time, I wanted to develop a zombie total conversion mod for the game "S.T.A.L.K.E.R." (like every upstart game developer/modder wants to create the ultimate zombie game after watching a few zombie flicks lol).Despite working hard at that project and creating a whole bunch of weapon models, prop models, item models, and level models, the developer clearly stated that modding was not supported, and will never be supported. (The developers went bankrupt funnily enough).I pretty much gave up for a while, and didn't know what direction to take, and thus wasted a lot of time doing nothing, or very little in games development. I did create some very amateur music however in that free time. I didn't follow any tutorials though, which would have helped, but I used "Reason 3" which was easy enough to just jump in and use).Here are some samples of the work in progress music I worked on (but never finished)(NOTE: I have never done any music classes or anything, these were just what played in my head and it was an itch I had to scratch).http://www.moddb.com/members/otreum/videos/jurassic-park-snes-song-remake-1#imagebox

(You can move between the different songs there by clicking on the thumbnails and using left right arrows to navigate the songs there)

Eventually I got myself a job in sales/retail, got myself a bit more of an income, some independence. I then got interested in learning C++, so grabbed myself a whole bunch of books to learn from, the one I actually went through completely and learnt a LOT from was "Beginning C++ Through Game Progamming 2nd Ed", but once I finished the book, I lost direction and gave up soon after, due to depression.During that time of depression, I spent a lot of time making maps for Far Cry 2, such as the D-Day Invasion map pack, and some other quirky maps for a moddb competition, which become so popular that the competition went from judging a few hundred maps on the official judging servers to having servers dedicated to my maps that other people created...The judges did not like this however, and despite popularity in the community, the maps were completely dismissed, this made me pretty upset, so didn't help with the depression.

After that, I got back on the horse again so to speak, decided to work on a first person Roman Gladiatorial game, inspired by watching the movie, Gladiator and doing some Roman themed maps for Far Cry 2. And I really got stuck into that project, I even spent several months trying to make a full 1:1, accurate scale model of the Roman Colosseum, including interiors. First 3 weeks I made a really bad Colosseum, scrapped it, started again with newer information and measurements. Unfortunately, while it took 3 months to get to the point I got it to, I forgot one single measurement to begin with, which stuffed the whole thing up in the long run.I decided to showcase the failed WIP attempt at the Colosseum anyway, which landed me a bunch of job offers, I took up one offer that seemed the most serious, but contact with the developer was very sparse, I was in contact for a month or so, then suddenly, the developer dropped off the radar and this kept happening.Here is the video I put online: http://www.youtube.com/watch?v=Oer77K_-94o

I decided to work on some other projects during that time, but none which were all that serious, more just learning experiences with using the Cryengine.I then got back in contact with the game developer again, eventually got a contract, signed it, did some work (but did not submit it to them) and they disappeared off the radar again. I have not heard from them since.After that, I felt really let down, but strangely, more so determined to finish that Colosseum.So I started working on a new Colosseum, with new measurements, but didn't get far with that when I upgraded to CryEngine 3 which only supports 16bit floating point, ruining the model whenever I imported it to the game, so this put me off.

I decided to get a bit more realistic with my chances in the games industry, I have the desire to be an independent developer, but with my job at the time, I was stressed, and depressed, and always tired, so told myself that I need to learn 3D modelling properly, and get really damn good at it, not just good at the basics. So started doing human models, sculpting and a bunch of other 3d Related things to better my skills in game art, but still found I had unrealistic expectations of myself.But I changed job, and still felt that what I was trying to do was still such a huge task, and after seeing such small, simple games making independent developers craploads of money, I thought "If I am to get out of sales and retail, I need to look even smaller again than what I'm doing, why don't I get into Android Games Development?".So then I started looking for resources on how to create Android games, bought a book called "Beginning Android Games" by Mario Zechner.While reading through, I got to some code and didn't fully understand what was going on, so figured I needed to take yet another step back and learn the basics, so I went out and started learning the basics of Java using the resources I mentioned in my original post.

Now I find myself here. I figure I should get involved with a community of other programmers and people who share a common interest and goal.

Sorry for the really long post, but that's pretty much my experience in a nutshell I guess. Sorry for the kinda messy post, I guess it sort of represents my brain at the moment with this man flu

I am new to this site but no new to Java Programming. I start learning Java at College and after that i always loved video games. And Java was the only program language i knew. Although like you my excitment to make something awesome makes me just to hard part immateriality it learn that thats just impossible. So i started with some small tutorials on how to make video games in java. Although that didn't really work either. What i found out that kind of work is make simple games like a pong,tetris,arkanoid. Games that are kind of simple but offer challenge. I red a article at GameDev not long ago that was explain on how someone can start with game programming which was really interesting.

What i am doing at the moment is code something simple and when you finish with one simple game go to something more advance and when you finished with the second go back to your first and see what you can improve. And after you finished all this then all games are kind of the same. You just reuse code from one game to another.

- Why did you want to start programming? (What was your motivation?) -> I started programming in Java (First language!) because of Minecraft (Probably the most commonly used reason/inspiration) back when it was 1.6 Beta or something. Obviously, once I learned that I couldn't make a Minecraft clone in 10 seconds, I dropped it for a bit. but I eventually came back and worked my way up.

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now? -> Sorta answered that in the last one. I chose Java because of Minecraft, and afterwards because it was (To me), really simple and I was already in a Java state of mind.

- How long ago did you get started? And where are you at now? -> Started back towards MC Beta 1.6, so give or take a year or 2 (I have a HORRIBLE sense of time!). I am currently up to the state where I can make a sort-of Mario clone (With physics and stuff!)! This is counting my on-off periods of inactivity (Of which I am currently in Limbo, and out of ideas, my worst enemy).

- What learning methods did you employ personally to help you develop your skills in programming? -> Here's my primary reason for replying. My way of learning is very odd (As far as I can tell from my class mates and stuff). Other people, far as I know (Very limited, Go social life!), learn by connections, visualizations, and generally having an idea of what it does. When I learn something new, I take a while after learning a rather large chunk, and actively think on what it can do. I could summarize it as, well, stripping it to it's base form and knowing EXACTLY what it can do. This is in contrast to tutorials that have a very specific goal, and don't generalize, like "This method lets me create a rotation around the player!", but not the general principle behind it.

- What advice could you give to other programmers who might be feeling a little lost in what direction to take? -> I was SO lost, up until the past stretch of time. What you want to do is settle into a sort of... niche? Find something comfortable, camp in it a bit, and stretch it to it's full potential, then move on. This way you have a SOLID background of fall-back options if you ever get stuck. The pyramids wouldn't work upside-down, now would they? You need a strong foundation and support.

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc). -> In my brief and personal belief about programming and it's "Rite of Passage" is that there is none. There are milestones and personal achievements. Nothing else matters, really. Everything is all personal. If you like a game, and are proud of it, then you have made a "good" game (In your belief). This obviously doesn't carry over to other people. Now, I think I've not answered the question. On the topic of "Rites of Passages", I personally have made several, for lack of terms, milestones. 1)Text-Game, 2)GUI Game (Buttons, text boxes, etc. No graphics), 3)2D Simple, as in controlling a person, graphics (Non-interactive tiles, top-down are simple!), etc 4) 2D Semi-Complex, by which I mean several different things happening at once. AI, Player, Bullets, Graphics, Sound, etc 5) Not determined! This is how I rate myself. I make a game of whatever "section" I am on, and go from there. I share with friends, ask for input, and program it to my liking. Anything else is moot, because if you aren't motivated to finish a "finished" project, then nothing will budge and it's done, because you like it as-is.

In general, programming (or coding) is what you make of it. If you are motivated, you can do pretty much anything with the right tools and experience (Plus advice, of course!). I believe that Edison is a perfect example in this case, "I have not failed 1000 times, but simply found out 1000 ways that it doesn't work." This occurs plenty of times in programming, where you're just throwing hands in the air and wondering why you even started this. Motivation, advice, and experience helps you power through this.

Now, I could probably turn this into an essay, but I hope that I've explained myself adequately and hope that I haven't missed something insanely obvious, or over-did anything. I'm still pretty self-conscious of these sorts of things, being such a wonderful social butterfly [/sarcasm].

- Why did you want to start programming? (What was your motivation?)I started with HTML & PHP.

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?I started real programming by modding Minecraft. But shortly after I decided to make my own games.

- How long ago did you get started? And where are you at now?I started on Minecraft 1 and a half years ago.I started my own games 1 year and 1-2 months ago.

- What learning methods did you employ personally to help you develop your skills in programming?Read ahead of what I am capable of. 'Learn' it all.Then when I get to that stage, I know how things need to work, and it's easy to work out.

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?Play more games. You need inspiration.

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).After Hello World (well, actually it said "MUAHAHAHAHAHA!!!"), I made a platformer (or at least the engine part of it). I don't recommend this.Hello World is a good start. Anything else is up to you.

Currently I am trying to learn just very basic top down engine creation, or even side on.Ideally, I would like to create a top down game engine that uses 16 bit or 32bit graphics (in which case i'm probably looking at LWJGL), rather than 8 bit. Once I have a base to work off, I could use it for a variety of different ideas (of which I have too many! As soon as I open the ideas door in my brain, my brain gets flooded with them lol).

My current learning method is:1. Read/Watch video and copy the code down.2. Read/Watch video again to understand what the code is doing further. Leaving comments on just about every single line of the code that I already copied.3. Break the code down into sections that I can try to write off the top of my head.4. If I can't write the code off the top of my head, or don't understand it, I don't continue, I delete it, and do step 2 again or refer back to the comments in the code I left.5. If I can write the code off the top of my head and understand what it is doing, I continue to the next chunk of code.6. Then I will try and write down several chunks of code down on my own, and do more and more chunks of code until I can write the entire program on my own.

It seems to work well, but requires a lot of time and a lot of focus. I normally study at LEAST 4 hours a day, and at most 10-12 hours, doing roughly 60 hours of study per week.

Right now I am going through the DesignsbyZephyr tutorials I mentioned earlier, and while I think that the way I'm learning the tutorial might be the right way for me, I keep wondering to myself (when I pause for a moment) "What other places can I look towards to learn engine creation"?

I have now purchased the book "Developing Games In Java" by David Brackeen, but must wait for it to arrive.I have also thought about buying "Killer Games Programming in Java" by Andrew Davidson, but it's had some pretty mixed reviews. Any thoughts on the book? Anybody read it?

Also, so far i've found these websites to learn from (I think these may interest a few other newbies out there like me):http://www.gameprogblog.com/generic-game-loop/ (this was posted by one of the forum users here, but I went to read through and either I couldn't get through it to begin with because I am sick, or I just got confused).http://zetcode.com/tutorials/javagamestutorial/ (I took a look and it seems great, but I remember reading on these forums and other forums, people saying not to use the paint() method, which is used in those tutorials.)http://www.gametutorial.net/ (these tutorials look to be pretty good, I haven't gone over them just yet, but I had a quick squiz and they looked to be great for me, i'll probably stop looking at this video tutorial and get crackin on this tutorial).http://www.cokeandcode.com/info/tut2d.html (This looks really handy as well, I like that it is a short tutorial, in comparison to spending about a week going through 7 hours worth of tutorials and not learning as much as I would like).

What are your thoughts on my learning technique?Has anybody else applied that same way of learning?Has anybody done any of those tutorial links, or read any of those books?What resources have you used personally to learn from?

I have now purchased the book "Developing Games In Java" by David Brackeen, but must wait for it to arrive.I have also thought about buying "Killer Games Programming in Java" by Andrew Davidson, but it's had some pretty mixed reviews. Any thoughts on the book? Anybody read it?

I have it lying just right next to me. I've read it.

It's really an intresting read and shows lots of game programming techneques, but all the code in there is pretty much outdated. It uses Java3D, not-anymore-existing timers.

It's really hard for me to decide whether to recommend or not recommend the book... All I can say is:

It won't help you with code you can copy n' paste mostly. (It works probably, but it's showing old libraries and old versions)

It will definitely show you how games are structured in an abstract way: It'll show you how you could write platformers, isometric games and even a little 3D programming.

My programming backround may be one of the odds on the earth. First of all the fact is that I'm not a computer science student. ( I would be joining cse in this august. )

My father bought a computer when I was 8 which was running windows me. But I started using it when I became 12. The reason is that we are taught C at the school which I didn't like well. At that time, I started playing online games and wanted to make one.

To distribute the games I learnt NSIS and I liked its syntax well. I made a trainer sort of app in NSIS which removed the AI from it.

When I became 14 a friend of mine introduced to me GameMaker. My target became making a clone to it. So I started searching for game development tutorials on online in YouTube. The first of them I found were of the NewBoston tutorials on java. So first I started learning java online. To understand it easily I started writing tutorials on it. They're online at http://easyjavatutorial.weebly.com/.

Next I read David Brackeen's book and implemented a game engine by modifying some parts. The next tutorials helped me are the space invaders series by Kevin Glass.

Then I ported the engine into c# and now started working on GameForge my own GameMaker clone.

Sorry for this long text but I think you've already read needed. Just try to implement.

SHC I love your website, just looking over it now, it's straight forward, simple, it has game orientated descriptions (that is a must for me, so that I can understand where things apply in games), and overall is really really well done. I think this morning I will be checking out your website first and foremost.

Most tutorials seem to be based on Minicraft's code which is not a bad thing as they all describe parts of the code differently, some don't describe parts at all, where others do, which is handy.

Personally, I think i'm all confused about the maths behind creating a stable and consistent FPS across different systems. Perhaps it's my limited knowledge of mathematics (I am very basic but can learn crazy quick when I want and need to). I would like to know how to go about creating my own timing method (unless Notch's implementation is used everywhere by everyone and is the best method possible). I would like to be able to alter code and do "my own way" so that I understand how the code works basically.At this stage, I think i'll not call it quits or get too frustrated about not knowing how to do a timing/run method (whatever you call it) on my own, because I am still waiting on some books which I have been told, and I have read are great to explain what I need to know.

Thanks Otreum for posting links of those two tutorials. They are worth of seeing. Thanks for seeing my website. (I'm having very less page views. 3-6 per day). As I already stated, just try to implement what you know. (I don't know any 3D stuff nor OpenGL 2D nor LWJGL or anything). This is the order I followed.

Searched on how to make my own game engine. Bought Brackeen's book and studied it well but failed to understand the 3D techniques as the code didn't compile on my computer. (I would have passed in distinction if I had studied my text books).

Tried on making my first game engine ( TileEngine. It didn't work with uniform speed on different platforms. )

Again started on a game engine from scratch and made it opensource here at Google Code in git repository.

Brought GEJ to version 0.7 and written tutorials at JavaGameHeart. (Engine is currently 0.9 R2)

Started learning HaXe but failed to target other than flash and neko

Learnt C# by porting GEJ as GECS. (It'll be uploaded to googlecode repository soon after I found a free to include sound library)

- Why did you want to start programming? (What was your motivation?)I learned Scratch one summer in a 2/3-day class because I do some learning thing with your grandparents each summer and I picked Computer Science one year. After making a pretty good zombie game in Scratch, I bought the first Humble Bundle Mojam. In it was a game called Catacomb Snatch by Mojang and it was rather buggy. Jeb posted an article on how to set up a workplace to fix the bugs yourself, so I decided to try to do so. Upon looking at the code though, I realized that it wouldn't be very easy at all. From there I started doing console stuff and slowly worked my way up. I was also motivated by Minecraft, as I made a mod that sucked in it a month or two into learning. In the end I never really worked on Catacomb Snatch at all. I'm also probably never going back to Minecraft just for fun; making my own games is more fun for me. I am not ruling out looking at the code to get an idea of how it works and all though.- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?I chose Java because Catacomb Snatch and Minecraft were programmed in Java. I use Java now because C++ seems a lot more complicated for no use, and my friend who uses C++ harasses me if I use C# (not really, just tells me it's not multi-platform and that it is not good for programs). Apparently it's not easily multi-platform which is upsetting for him since I use Windows and he Linux. I am slowly trying to learn C++ now though. I basically know C# since I know Java. I felt right at home working with C# after learning Java. I have made stuff in Python as well. I'm going to work with F# likely today since I want to test it out and use it for a math study program. But I use Java the majority of the time, C# next, then C++. Python is very rare for me to use, but I do kind of like it.- How long ago did you get started? And where are you at now?I started Java in February of 2012. Whoa, it's been over a year! That's tremendous! I learned C# in early December I believe, and started learning C++ in early January I believe. I've been progressing extremely slowly however and I might just wait until July when I will likely take a class on C++ (my first ever programming class) to really get into it. I'm planning on using it for 3D tests right now, and will likely just use it to test OpenGL concepts in the future.

Now I am making two games, a strategy that my friend told me he would help me with but hasn't and PixelZombies. I am also transferring my first game's code to OOP, as I didn't quite understand the concept upon making the game. Now I fully grasp OOP, so I will use it to its extend in all my future games. My first game is HungerGamesBoardGame, and it is pretty decent. After I fix PixelZombies' code (it's not very OOP right now) and implement some new features I will likely start making a basic side-scroller. In terms of libraries and other miscellaneous programs, I made a GamePatcher library that will help you in making launchers for your games (you can see these launchers at the topics for my two games) in Java and C#. The Java version is a lot better however since I haven't updated the C# version as much as the Java version. I also made a bridge simulator program in C# for a science project at the end of 2012. It worked very well except for that the SmartBoard (big touchscreen) used in class didn't activate the mouse click method and that made me have to direct someone over at the computer with what to do. It was a disappointing bug that I forgot to test for. You can see more of my projects at my GitHub page. I put most anything of value onto GitHub.- What learning methods did you employ personally to help you develop your skills in programming?Whenever I get a problem, I go to Google. Then if I am stumped further, I make a topic here. Though the latter barely ever happens. My way is probably not a very good way to go. If I had done it and started out with C++ I probably wouldn't be programming because I would've gotten so confused.- What advice could you give to other programmers who might be feeling a little lost in what direction to take?Talk to your friends (ideally those who play games and don't program) about what they want to see in a video game! Or, in my case for my first game, take a board game that you and your friend made and translate it into a video game.- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).I feel like if starting a new language, at least start by printing something. It doesn't have to be "Hello world!" but just something will do. It's the best starting point to get going.

Interesting replies - Why did you want to start programming? (What was your motivation?)In some ways it was because I had been playing Minecraft a lot and thought it was awesum that one guy could have made it. The other part had to do with depression/feeling like I wasn't good at anything and a childhood dream of being a coder(plus a long boring summer break).- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?Because of mc basically, plus the tutorials were there for Java. I've looked into C++, but certain features like forward declaration and header files just grind my gears, I use c# with unity and have no trouble (as it's practically Java), also picked up vb.net for college (but did not prefer it at all :/).- How long ago did you get started? And where are you at now?The summer before last summer I believe (going from secondary to college). Currently I have started developing: top down shooter x1(J2D), side scroller x1(J2D), tile based multiplayer games (J2D/vb.net) x2, Random unity games x5. And have finished: LD23 entry (Unity)http://youtu.be/W7EbrPMPbgk , Multiplayer RTS/FP? Thronewars http://youtu.be/LwrvPDVEG1k (Unity), OpenGL Heightmap renderer (semi old vid: http://youtu.be/20uNfLZs_zU ), OpenGL Roguelike (latest video is really old). I'm currently developing a 2D sprite creation tool that I plan to make a post about at some point (why I was browsing here hehe) ^^ You can see most of my old projects at my old YouTube channel: http://www.youtube.com/user/618Lonewolf?feature=mhee- What learning methods did you employ personally to help you develop your skills in programming?I'm not someone who can read books for knowledge easily as I get bored, prefer to use them as a reference; so having video tutorials (thenewboston) that I could follow along and were very well explained helped a mega ton. Google is your friend, and I found that most of my questions had been answered before; most of the poor programmers I know from college are that way because they refuse to look anything up/think and so have to have their hand held: I feel independent learning is a vital skill for programming.- What advice could you give to other programmers who might be feeling a little lost in what direction to take?Think of a mechanic that would be cool, and write a program that does it; it doesn't matter if it doesn't turn into anything (I never finished anything I started when I started out), because it will give you experience and confidence that will help you make bigger, better things in the future (plus maybe finish something). Also when starting a project that seems to complex, start small; e.g. when making a voxel engine, learn how to render a single cube first.- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).Top down/sidescroller -> raycasting 2.5d -> OpenGL/3d game engine maybe -> Building a custom gui library and state system because sick of hardcoding stuff ^^Doesn't really matter to be honest.

- Why did you want to start programming? (What was your motivation?)I've always been fascinated by video games since I was little, playing on the Dreamcast When I got an Xbox 360 for Christmas ~6 years ago, I was blown away by the graphics and became more determined to learn about programming.Then I got my very first computer: a laptop, the next Christmas. As I tinkered and tweaked with errors sometimes exploding in my face, my technical knowledge grew at a very rapid rate. When I started with actual programming is best related to the next question...

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?Well for the first year that I had my laptop, I wandered around not knowing where to start. I was always at the local bookstore reading programming books, feeling ever more hopelessly lost. Then just my luck, I failed to discover the programming class offered at my high school! Luckily, I had a friend who signed up for it and he told me what language they started with and shared with me some code: Java.And so I decided that I shall start with Java: I bought a Java book at the bookstore, and began coding using the Windows Notepad and the command prompt. I never began using an IDE until a whole year later!I have since learned other languages along the way but I still stick with Java because of its ease of use and attractiveness (and kickass IDEs! )

- How long ago did you get started? And where are you at now?I started teaching myself 3.5 years ago. I now fully know the language and am very experienced with OOP and code design. I don't have many games to show for my experience, though, as I am more focused on learning now than actually making games. My website has a few games I made a long time ago, one of which (JDoodle Jump) got hugely popular and I was forced to remove it by the original creators of the game. This game helped me the most with game design, as it allowed me to gain experience in entity management and code design/layout. It also spawned a relatively fully featured Java2D library with a networking, UI, and entity systems that I think are awesome. I've used it for all my LudumDare games too. It can be found here.

- What learning methods did you employ personally to help you develop your skills in programming?Notepad+Command prompt for learning *all* of Java's syntax. I never had any editor help, which also helped me develop a strict set of formatting rules for myself so the code doesn't get messy IDE's are for experienced coders who want to see results *fast*. As a beginner, you are in no rush to see results: you just want to learn.

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?I believe I wrote an article in the wiki section of this forum: How do I start Java Game Development?

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc)There are no definite "Rite of Passage" programs, although I do strongly recommend recreating classic simple games such as Snake and Space Invaders.

- Why did you want to start programming? (What was your motivation?)Like many others I was amazed by Minecraft. And seeing all those 2D Minecraft-remakes and even more important: Terraria I wanted to create my own 2D Minecraft / Terraria... Yes I began writing a clone. I called it "Terraria clone" back then. Now it's WorldOfCube. But I somehow abandoned that project, sadly, I guess, but sometimes you just stumble upon Problems with your current design of code, making it - almost - impossible to add, for example, multiplayer support... Fixed now in my new Project! Ruins of Revenge.

- How long ago did you get started? And where are you at now?2 years ago I started creating games using Game Maker. 1.5 years ago I started learning java. Since then I learned several programming languages, like C/C++, scheme, lisp and scala. I advise you to learn some other languages after learning java, too, especially 'functional' languages.

- What learning methods did you employ personally to help you develop your skills in programming?Mentioned in the above question, learn different languages with different paradigms. Especially functionally languages.Read code from others. Github is awesome! Look for projects of your kind (I guess games?). Minicraft and Notch's Ludum dare entries were nice to begin with. Bigger projects are harder to get a head around, but Terasology is still 'an intresting read'. Other than that I could only think of practice.

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?I expect 'what direction to take' to be of terms like "What to do now? What game should I write?". If you have no Idea, start looking around, play games, and If you found something with a nice game concept, which you think you could recreate, try to make a clone at least that's how I started (somehow).

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc)Oh. No. Definitely not in my opinion. People start in different ways. I created a platformer, other people created little music players, even other created a vocabular learning program. Just write what you feel like you are able to write, and do it!A "Rite of Passage" might be writing a realtime networked game. But that comes pretty late. I've found that it's needed to structure your code a lot differently, when I tried to network physics... MVC patterns then start to make sense...

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?Oh this is a nice story.It began a long long time ago... maybe not too long ago ^^ 2 years and 31 weeks ago (bam! the exact time! ). Back then I got a game: World of Goo (yeah WorldOfCube is inspired by that game's name. I felt it somehow deserved that tribute, since Its what made me start game developing).Back then I was so amazed by that game I started visiting the modding community 6 days after I got the game. They provided an Editor to make levels for World of Goo and even made possible to publish them on their website. Take a look!, they're probably the best community I've ever seen (except for you guys, of course ). These are my creations from back then.

Someday one guy from that forum posted a game made with game maker. I was amazed by that. "What? I can make games with that? This doesn't look more complicated than WooGLE!" (the World of goo editor). So I downloaded the Lite version of Game maker and began learning how to use it with Youtube videos. (So great times if I think back... even though it's only 'bout 2 years ago...')For about half a year I learned Game Maker so fast, that I feeled like 'A SUPER BADASS' coder, not using the drag-n'-drop features anymore, but actually writing 'ULTRA ABSTRACTED SCRIPTS LIKE A BOSS' now. Back then I was productive... I also learned the first basics of creating a Platformer (the physics n' stuff), which came in quite handy when starting with WorldOfCube.

Coming to WorldOfCube, this was the time I started with WorldOfCube. Back then it was 'Terraria' in Game Maker. Using advanced techneques like "grid"s and runtime-tile-generation (I had a terrain generator!) instead of Objects. I was trying to get it work fast. It didn't fulfill my needs. It was slow, and I was sure it wasn't my fault (the problem was, that rendering time was map-size dependent, even though it shouldn't be! It's always drawing the same section of the screen, always the same number of objects. Usually it shouldn't slow down...), additionally I had a rather intresting problem: In Game Maker you can't really hold references to certain objects. Acessing objects is done statically, though you're somehow still only accessing a single instance... strange somehow... Didn't understand it back then, not understanding it yet, since I didn't take a look again ^^.

That's why I moved on to Java. It was a rather easy process for me to learn java, since I already knew GML (Game Maker Language). In java I then created another version of WorldOfCube. This is where it got it's name. I worked out the basics of Chunks, did optimization again... Using VolatileImages in rather strange ways. Yes. It was Java2D back then, but it isn't anymore, I promise! I lost interest in WorldOfCube about 2 months after that. I had lots of learning projects aside in that time and WorldOfCube was 5k lines big. I wrote while the other children were playing games, and even much, much longer.Seeking for even more performance I started learning C++ in my winter break. (I argued with my brother (who is programming, too) about GC's. I said "GC's create irregular pauses in my games, doing the garbage collection manually is much better!", well... I stand corrected ^^) I even know the night where I started... It was 4 am when I finally got C++ with Eclipse CDT working, tough it didn't want to run... I had to run it in the CMD... 10 minutes later I had it working in Linux with Eclipse CDT... Btw, it was the same night I switched to Using Linux almost only, as long as I was having a programming period.

Now, the 3rd version of WorldOfCube was written. This time in C++. (First time Github and Git for me back then =) ). Shortly after that I understood that I should take a look at OpenGL (still trying to optimize stuff). I started writing a simple 3D OpenGL demo in the beginning using immediate mode, later display lists. When I tried using VBO's I come across some weird errors. After finding out I need to 'enable' OpenGL version from beyond 1.1 somehow, I struggled setting up libraries so they make this available. I didn't know GLEW and EGL back then...

That's the reason why I switched back to java. Frustrated I did some fun projects which finally let me strand here, in JGO. Good, but somehow embarrassing first experience (I had a lot major problems with my new program back then) But after some time I found out about LWJGL. An OpenGL wrapper for java. Awesome! I started writing my 4th version of WorldOfCube. I just couldn't stop it So that one is the last one. As I said I've already abandoned it. But my fingers tickle! I will probably start a new version in Scala this time... seriously...

Here in my story is a big black hole. I didn't program for a couple of months. I know those times when I stop programming for a week or some days, because I didn't want to... but this time it was different. There is not much to say about it than that you should know those exist. Some people even don't program for years and then start doing it again. You shouldn't worry about it. It's up to you how to handle such situations.

Continuing in the long, long story, after getting back I continued writing WorldOfCube. It was a rather ... not so fun time. I just had to refactor it. And It was very very hard to get rid of all those errors. And I couldn't even playtest my game, because it wasn't compiling. Of course the errors itself weren't really a problem, but if you just rip your building apart you need some time recreating it, so it doesn't rain inside. And sometimes - when you think you've finished - there is still water coming from somewhere. I had really major bugs in WorldOfCube. In the beginning it didn't even draw anything, and it didn't get better quickly. But I got over that time and got everything working. Though I now still have abandoned it.

Now a story of programming languages follows:My brother was always a language engineer. He didn't like Java at all... a point for friendly bro-arguing with my brother there, but now... *arg* I even agree him in some points.He had a look at almost any language I know (or knew back then). He jumped from one language to another. Beginning at Java or C/C++ ending up with Haskell now. Everything you need to know about haskell is: Haskell is f*cking different from Java and (in comparison) is from another world.He tried to explain me languages like Scheme, especially racket scheme and guile scheme, which he used himself. They already differ a lot from Java simply by their lisp-y syntax. I didn't come around learning it.Now - we're only about a couple of months away from today - my brother gifted me "Land of Lisp". I really took a look and read half trough the book, but I started taking a look at scala aside instead. I already knew the libraries so scala was easier. I took a look at scala before, but back then all I did was translating Java code into scala (this is an incredible mistake! You need to think functional, not imperative. It's another way of thinking, a new way of programming. It's the reason why there is such a big difference between Haskell and Java). But this time I was really starting to think in scala.

This is where I am. The long story is over. By the way I created Ruins of Revenge (see signature) a couple of weeks ago as a major project in java before I switched to scala. I didn't find it necessary to be mentioned.

<edit>Reading through this whole story again it feels like being impossible to have experienced so many things in only 2 and a half years. There is even much, much more. Wow, I'm happy that I've written that down. Programming life is awesome!</edit>

This turned out to be more of a biography than an answer, but I think that's okay. This might not help you out at all, but I think it's quite an entertaining read. I could have written it shorter, but whatever... Now stand up and create your own story!

Thanks heaps for that guys, a biography is actually really good to put down here, give you guys a chance to tell everyone a bit about yourself and your background while at the same time providing them with insight on your experience in programming and perhaps inspiration too, you guys have given me some!

I think it's kind of strange though, that a lot of people out there say they run out of ideas or don't have many ideas, so it's hard to keep going, but I think i'm the complete opposite, my brain is flooded with ideas, I can make up random arsed ideas off the top of my head right now if I were asked, and then turn it into a cool game concept, or most likely a quirky one....that's actually how most of my ideas are born, through brainstorming, or through general conversation with other people, even about non game related topics.

Anyway, I thought I would share a little something with you guys of what I was working on yesterday. It is basically a bunch of 32x32 tiles, which I could probably just do as 16x16 tiles, for a project I would like to do later on. Full details on the project aren't really fleshed out yet, I could really take any direction I want. But the main priority right now, to be honest, is to just work out how to load images and create a level out of them.

Here are some pics of what i've been working on. And nothing is really final, I just wanted a break from programming to create something colourful, rather than reading and typing black and white for 14 hours

The first one is just a compilation of 15 different tiles out of 28 that I have made, the next 2 images are of a shark concept in shallow and deep water.

(Ignore the fact that the shallow water shark has a shadow which seems to be more appropriate to an isometric game, I only added that for showcase effect )Now something I have been trying to find out is if it is feasible to use 32x32 tiles with alpha (ARGB?) for Java2D without huge performance loss? If it's not, then i'll prob jump over to LWJGL.

Anyway, you guys don't have to answer the random question, but thought i'd show a little art that i've been working on.

- Why did you want to start programming? (What was your motivation?)In the blood? My father worked for IBM and programmed the Mormon geneology database in the 1960's. There was a lot of encouragement from him around things like math, probability and games.

- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?BASIC was what was available in a classroom at the time. But it really didn't inspire me that much. I like Java because it is a language that performs at a high level enough level where I can dabble in sound synthesis, because it is free, and because it makes sense to me as a language. Built-in support for multi-threading seemed to indicate there is still a future for the language. We'll see.

- How long ago did you get started? And where are you at now? Got started with Java 3 years ago. I am close to qualifying for a Java Associate--my last practice test was a score of 73. Am pretty good with 2D and sound and getting better with aspects of functional programming and multithreading techniques. The Java Associate test has been a HARD challenge, maybe due to being over-reliant on Eclipse, maybe because I don't tend to "think like that"--am more attuned to patterns than rules of syntax.

- What learning methods did you employ personally to help you develop your skills in programming?1. There is too much to learn. Period. So I try to put on blinders and only learn what is directly needed for a specific goal on a game or project I am working on. Hasn't really worked, as I still am having trouble finishing things. (Related: agile programming philosophy--don't put in capabilities into the code until there is a clearly demonstrated need.)2. Simply reading or observing doesn't work for me. Unless I run test programs and try to break things and find out their tolerances, I will forget 90% of what I read if it pertains to syntax or abstractions.

- What advice could you give to other programmers who might be feeling a little lost in what direction to take?I will limit myself to advice for YOU based on the little I've learned reading this thread. And I may be "projecting" like crazy. That said, given that you have lots of ideas rather than a dearth, I'd suggest consider pursuing aspects of programming where brainstorming is a plus--e.g. something with a design element. Also, you have artistic talent and enjoy using it, you have some right-brain skills (just demonstrated!), so it makes sense to me that you might gravitate towards roles that provide a bridge between artists and programmers. In this sense, working on game engines, or game-art tools might be a good fit. But I don't know enough about larger game programming companies to know if there is hiring for such a role or exactly what that would look like.

- Is there anything you believe should be a "Rite of Passage" for programmers (such as the need to create hello world, or a snake program, etc etc).I like to make a bouncing ball. With gravity.Finishing a game is a good rite of passage, probably, especially if the finishing is to the level of marketability. There is a world of difference between something that works and is fun to play personally and something which can be sold. I did this as a Basic programmer and a FORTH programmer back in the 1980's (I split my time between database contract work and musical composition now). But I'm still working to complete my first Java game ("Hexara") and got side-tracked working on a texture generating tool to help with procedural graphics, and another side track is an audio tool (FM synthesis) that is half-way there for use in generating sound cues dynamically. These topics are passion-fueled for me, so I've let the "finish a frigging game already" advice slide. I'm also NOT employed in the game field, yet. But when I do get there, I want it to involve an aspect that I am passionate about, not just ANY game programming job. We've had some comments from folks working IN the game industry that are kind of strapped down, and dabble here with Java games, as independents, in order to keep their creativity alive.

"We all secretly believe we are right about everything and, by extension, we are all wrong." W. Storr, The Unpersuadables

I'm happy to ask the questions so long as people are happy to answer them

I think everyone benefits from this thread. People get to talk about themselves and their experience (which most people enjoy doing, but don't get asked), and people get to gain inspiration and insight on other programmers' experiences.Not only that but knowing about the experience of other community members helps bring the community closer together, and have a better understanding of one another (I sound like such a hippie ).

Feel free to ask questions of other programmers in this thread if you think it is relevant to the topic

Also, just thought i'd share some more work in progress game art assets to show off (tease).

I also got Developing Games in Java by David Brackeen in the mail today, so I will be working through that book for however long it takes me now rather than trying to jump ahead and get frustrated like I have been.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org