I have a good understanding of condition statements etc. as expected Also, I have a good understanding of classes and OOP related terms, exceptions, multithreading (need some more knowledge though), basic I/O, generics, String manipulation, collections, basic Swing and hence event handling, and some Image methods. And it would be fair to say I have pretty good understanding of java.lang libraries. I might have forgotten some stuff.Of course, I am not the best about these and may not be able to answer some questions you'd ask about these. Probably wouldn't be able to write a GUI app without my friend Eclipse. I did not memorize methods etc. And sometimes I can miss the most basic and obvious thing and start coding the whole class over from beginning Now I am looking into design patterns hoping to improve my code efficiency (Or less buggy or less insecure - Let's say trying to improve my coding style - Hoping to have less unnoticed obvious stuff). I think next thing after patterns will be decided on this thread. I was thinking of networking.

I got my hands on Java2D. But I am not very good at it right now. However I don't think it will take too much time for me. What I am concerned is that, at some point while I'm trying to learn game programming, I might think "Damn, I had to know this before trying to code a game". Not a particular method or class, but a whole concept.

Besides, you should have some knowledge in Java to understand what a tutorial is trying to tell, right? Or I should be able to understand what you're saying when I ask a question.

So, what else should I know? Are there any skills or knowledge that a program designer doesn't need but a game designer needs?

As for where to start, I saw tons of resources and threads in this forum. Of course, any new starting point suggestions and guidance is appreciated. But I need to know when to start game programming.

PS: I'm not a computer engineering student or something related to computers. I am just a programming enthusiast. But I can allocate my time to this (and am allocating).

Start game programming right now. With the knowledge of java you say you have you will be fine. The most important thing imo is to have a solid concept of OOP as a base point. With that, you can start learning how to make game loops, separate logic from rendering, etc. You don't necessarily need to know how to use all the java classes necessary for game programming, learning as you go has always worked for me.

Thanks for the quick reply.I was exploring the Gaming Wiki right now. I feel like it does not have the most basic stuff as tutorials but has resources to it?

And I feel a little lost when I try to think a way to write a game. How do you guys start writing a new game? What's your starting point?

G'day kutucuk,

I come from a similar background to you; I'm not involved in the industry but am a programming enthusiast. I've been at it for about two years now, but still consider myself a noob.

As for writing your first game, I suggest at this stage you stick to something simple that has been done before. Even something like solitaire!? That way you know the basic rules of the game and how it should work, and there is plenty out there to compare it to. Once you finish writing it, compare it to other similar games, and think about why (if at all) it is different, and how you can improve it. You will learn a bit through that process.

As for the 'starting point', I first write all my ideas down on paper, including horrible little sketches etc. Write down the core concepts of the game, i.e. how you want it to play. Once you know exactly what you want to program, then you can start worrying about how.

Following that, start thinking about what classes you will need to create, and how they will interact with eachother, and write it down. I also find that 'state diagrams' can really help with your design. Even if you don't physically draw state diagrams, visualise them in your head. Generally speaking, everything in your game will have a state including the game itself, and that state may change either from user input, or events within the game.

Once you've got all that business out of the way, start writing! Write a solid game loop, then go from there.

As Jimmt said, dive in and learn as you go. I've got lots of small projects on the go, none of which are very spectacular or complete, but most of them explore a particular concept that I wanted to learn and try out. I usually abandon them once I've learnt what I wanted to, but keep them for reference. I've finally got myself to a point where I feel competent enough to write a 'full' game.

Yeah, just get started. It's really the only way to learn. Get something simple up and running, like a Snake clone for example, so you get comfortable with the game loop, collision detection, controlling the player.

I got my hands on Java2D a little bit. When I feel more comfortable about it, I'll start to worry about the mechanism of the game and the ideas etc.

Actually I got into Java just to write a program for me which would store my notes etc. My school grading system is a little different, so I couldn't find anything useful for that. That was easy for me and the Java was fun.

After I cover basic Java2D, I'll go deeper in that as well philfrei. Thank you.

I feel like having a solid Java2D knowledge can help me with the other graphics&game APIs. Is that really the case here?

So far, I never used any other libraries other than Java default ones. I think all of the other APIs put something on the default APIs, so I need the default APIs and libraries anyway.

Java2D doesn't seem to be a good gaming library, I can see that. But I want to learn the basic game concepts before jumping on a game engine. Plus, it will add more to learn whereas I need to learn a lot.

So here is my map for game development: Feel comfortable in Java2D, at least be able to understand when you see a complex code snippet of Java2D --> Learn game development concepts and build at least one or two easy games without referencing somewhere (I give myself the right to ask questions ) --> Learn one or two (Is two much?) game libraries --> Meet someone who is good at art or prepare to pay for art if you gonna release

Depends how deep you plan to go into Java2D. Seems to me just getting a game loop working is a very important step. I'm not so sure the other graphics APIs always build directly on AWT & Java2D. Some rely on their own native code. Deciding on what graphics to use can be put off for now. (I still haven't decided.)

A game loop is not a game engine. All that a simple game loop requires of graphics is a drawRect(xpos, ypos, width, height) or similar drawOval or drawImage method, and a place to draw (JComponent or JPanel for starters is fine).

But if you want to poke around with other things for a while, I guess that is fine, too. As you are noticing, there are a lot of details to fill in along the way, even with something that "should" be simple like loading an image to display it (and likely would be in a game engine). That's part of why I recommend bouncing a box first.

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

Well, if I am going to learn game loops and concepts, I think I need to know at least how to print an image (which I am having a weird issue right now). Hence, Java2D for a while. I won't mess with other stuff until I feel like another API would help my game performance or my coding period. Now it just adds another thing to learn. So for a while, I will put it off. Because no APIs would cause my game loop to change, I guess.

And actually, I think that is where I will struggle most. I mean, you can figure writing the right class, learn the right method in a shorter time, but game loop seems like more detailed than "draw-get changes-redraw".

I have done three years of a computing with games design course, i find that courses never seem to delve deeply into games design (ironically), however my studies have helped me to understand the concepts behind designing a game.

You asked when is a good time to start games developmentSimple answer: whenever you want.More complex answer: Whenever you have a grasp on OOP, design patterns, datastructures and algorithms. OOP is the core to java and OOP is very powerful in the construction of programs (preaching to a choir here), once you have an understanding of OOP you should have enough to begin some basic games development, as you will understand API's that bit more. Someone mentioned having a grasp on art, this is not neccessarily as important to a game developer, in my opinion i consider the art aspect the "slapping the makeup on the finished product".

I wanted to touch on data structures and algorithm'sNo one has yet mentioned AI, so i thought i'd give it a mention, if your designing a game an understanding of data structures and algorithm's will help you towards creation of pathfinding and other forms of AI learning that will give your games some life. Graphics like OpenGL are great but i think that a dedicated games programmer will focus on making a good Games Engine backed up with AI system. The art can be focused on near the end of development (unless you really need to see things graphically).

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