What to learn next?

I will admit that I’m really struggling to learn Java. It’s been about two months now (maybe closer to three) since I’ve started and I feel like the last whole month has brought me little advancement. I’m going to keep reading whatever I can find (and understand) and hopefully more “clicks” soon.

But, as for right now, I’m trying to look forward and set some goals. Eventually, I want to be able to make very simple games by myself, without copy/pasting code or following video tutorials.

I’ve read Java for Dummies (which I found to be of little help), I’ve done all of TheNewBoston’s beginner Java tutorials. I’ve followed along and tried to experiment with Cherno’s Java game making series. And, more recently, I’ve read Think Java by Allen Downey. Everything in these beginner books I can understand.

I can program my own simple math calculation programs (wage calculators, etc)-- Basically math based console stuff. I understand Classes and Methods and Objects, but it’s when I get into Graphics that I begin to get lost. All the material that I’ve found that covers it simply jumps ahead and dumps tons of information on you at once and suddenly you go from having a 1-3 method program, to a program with multiple things being imported, you have the JFrame, Canvas and a bunch of operations happening that aren’t fully explained-- Aside from “Add EXIT_ON_CLOSE here and set the canvas size here and voila”, where as every other element has been explained in such great detail up to this point.

So where do I go now? What’s the next thing to read? I’ve read people suggesting that the best thing to do is to just keep making small programs with what I know, but making little calculators get’s incredibly boring very quickly and I’ve pretty much run out of ideas for little programs to make.

Help me out. I feel stuck.

Swing is complex and most of it irrelevant and confusing to a beginner, so the writers intentionally skip over it.

Make console games, its what I did starting out with my first language (which was C++, terrible choice!). Console games aren’t graphical so you don’t have to worry about that stuff yet, but they are vastly more interesting than calculators. I remember I made a few small programs and then jumped right into console based text games, and I had lots more fun!

To be honest with you, three months isn’t enough time to learn programming unless you have a really good mindset to learn it. Programming is very different than anything else you’ll ever do, and it took me around half a year to reach that clicking point. Some people don’t need as much time, but I needed longer. Once you finally understand it though, you’ll know because suddenly you’ll understand how stuff fits together. You won’t magically be able to create games without tutorials though, so don’t expect that. I’ve been coding for three years and just a year ago I finally could code games by myself.

theCherno is really a great teacher (he’s part of the reason I actually still program!), but he does ramble a lot and you do need a basic understanding of Java first. Don’t do what I did and try to make games straight away, you’ll justvget frustrated and most likely stop programming for a long time. The people you have talked to are giving you good advice; stick to small stuff for now.

And, when you do finally get programming, you’ll know because you can look at documentation and new functions and you know how to implement them logically into your code. Notice I didn’t say you know what the functions do; no one knows everything about a programming language. But the best programmers can look at new functions and logically work out how to use it. They can look at problems and solve them themselves. Problem solving is a major part of coding, so try to work on it if you aren’t already good at it!

Good luck!

P.S. If you want to learn, just start coding! Sitting and thinking about code won’t help you learn, you actually need to get your hands dirty!

I suppose I’m just finding it difficult and frustrating being stuck to console games when my ambitions (which aren’t grand compared to others I see posting on these kinds of forums) are much higher (relatively speaking).

It’s just nice when you can see the time you are spending registering as progress, as apposed to seemingly wasted time. For instance, I’ve been playing guitar for 10 years now. From the start, I could always look at my time put in as small achievements. I came out of every session with something else, whereas with Java, it’s as though I’ve been chipping away at a cement wall, I turned around to have a drink and when I turned back I couldn’t even tell where I had been chipping… Just frustrating-- Especially when it’s something I want to do as a hobby, not professionally.

I would suggest jumping straight into making applications. You need to get away from the calculator based applications and jump into the Frame. To be honest, the best way to do it is to keep making small programs, but you want to move into bigger small programs. Like Tic-Tac-Toe, or Pong. Those types of applications actually influence you to do work as you can visually see your progress.

Sometimes that is enough of a motivator, sometimes it isn’t. You wouldn’t know until you tried it. :stuck_out_tongue:

I don’t know the first thing to do in order to make something like Pong or Tic Tac Toe. I could make a text based Tic Tac Toe given my current basic knowledge of Java, but I wouldn’t know how to make the Frame and generate the graphics without just copying code from someone else-- And I feel like that’s not properly learning.

Is there some material online that most people use to introduce themselves to the graphical aspect of Java, or is it normal to just “jump right in” and start using things despite not understanding why you’re using them?

Just jump right in. The way many of us started coding 30-40 years ago was typing in listings and then changing them to see what it did.

I recommend you give the LWJGL Space Invaders example a look. It’s a whole game, in very little code. Your first hurdle is finding and downloading LWJGL. Your next hurdle is to configure it to run in Eclipse. Your time starts now. Go!

Cas :slight_smile:

Just do it. Jump right in. It´s the best way to learn. I started out with LWJGL and I made a cube. Then I got it spinning. Then I got some wooden texture on it. Then I made a rectangle and I wanted to be able to move it. Three days later I´d made a Pong clone. I never set out to, I just got carried away in all the fun. So I guess my advice is to have fun and don´t focus on the fact that it´s hard. Be glad for the little things, like “Hey, I got a black screen using LWJGL”. It´s not much but it´s the foundation for everything to come. :slight_smile:

Oh, and another thing. Don´t copy paste code. If you´re using someone elses code, type it in yourself. I belive that this will sit better in your brain if you do.

Good luck!

I think the prevailing advice in the previous posts is spot on: just dive in, best way to learn.

The only thing I would add is choose a goal that you’re aiming for (even if it’s something you know you’re unlikely ever to achieve) because then you will have some focus instead of writing calculator apps :wink:

There’s nothing wrong with nicking someone game else’s idea and emulating as a learning exercise, maybe use a game or application you’ve enjoyed, or one of the WIP games or projects on this site as inspiration.

Oh and (on the whole) the JGO community is pretty good and helpful, even with complete noobs :wink: so don’t be afraid to post problems, ask questions, etc. - we all had to start somewhere.

TheChernoFtw.

:smiley:
My java experience was like thenewboston series for beginners about 40 or 50 tutorials. Than I started watching cherno. I stopped after 30 episodes and went to make games without these tutorials. You should try making games, not reading about it. When you encounter a problem, look for a solution on the internet! :smiley:

EDIT:

http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&uid=398

Read this source code instead of your school’s language class’s book.

I’ll speak from experience. Maybe it could help you.

Four to five months ago I started learning Java. I spent weeks reading the Java tutorials here. I kept making simple programs which allowed user input via the console. When I didn’t understand something I spent hours researching it. I looked for articles, forum posts; pretty much anything that could help me. After about 2 months I started watching Youtube videos thinking that I would learn faster that way. I was wrong. I spent a whole week wasting my time watching Youtube videos on inheritance not really understanding much. Eventually I realised that I should move on, so I decided to do some research on how to make games.

After about a month I’d done quite a lot of research into Java2D game development. I’d learnt how to set up a window, I’d learnt about game loops and did a few days research on the topic. I’d learnt about techniques like double buffering, sub pixel rendering, animation, scrolling a camera and the list goes on. I even managed to load a tiled map from a .txt file and I created my own code to load sprite-sheets. All of that seemed impressive to me at first, but then I joined this forum.

Yikes! OpenGL? LibGDX? LWJGL? 3D? It took me some time to decide what to do next but I eventually set up LibGDX with eclipse. I learnt simple vector maths and tried to load some sprites. I set up a tiled map, I did some other stuff, forgot how to use Java2D and then spent a month getting no-where. My problem is learning how to use pre-written code. Learning Java was a breeze. During my time experimenting with Java2D/LibGDX I’d mastered inheritance and polymorphism, abstraction, exception handling etc. I’d mastered the Java language… nearly. All I had left to learn was generics. Easy. I learnt generics in a couple of days by experimenting with creating a generic vector class (eww the code looked horrible). Once that was done I thought it would be easier to learn to use LibGDX if I learnt OpenGL, which I started to learn only last week…

And here I am today writing this post, slowly making my way along the basics of the fixed function pipeline and starting to enter the realms of the programmable pipeline, struggling to find information I can understand. The journey goes on…

Good luck.

Game development really requires knowledge in many areas, and while you can achieve some results with limited knowledge, it will take years (many …) to master even the basics.

  • The Java language itself
  • Program design, software architecture
  • Input output, data storage
  • Graphics handling, libraries
  • Sound …
  • Network …
  • Databases …
  • Physics …
  • Artificial intelligence …
  • Input devices …

Fruther skills needed as a game designer:

  • Story writing, story telling
  • Game mechanics, invention and evaluation
  • Psychology, player motivation

Further skills needed if you want to sell something

  • Publishing
  • Marketing
  • Business/economy, laws, taxes …

Note how much more there is other tahn just Java.

You can’t learn all this like you learned stuff at school. The best advice so far is the “just dive into it”. You’ll leanr by doing a few steps, run into problems, sole those problems, and do some more steps. You’ll learn in all areas, and you’ll earn exactly what you need. You can always learn some extra at any point, but I think it’s best to do “learning by doing” in case of game design.

It’s a hard way. The will be a lot of “it sucks” experiences. Persistence is valuable, but also know when you are riding a dead horse (i.e. give up a hopeless case before you waste too much time with it). On the other hand, don’t give up too early, you might be one or two steps before success. I consider this one of the most difficult things as an amateur developer, to know when to give up, or when to continue. I know I have given up too early in some cases, and I have continued too long in others.

regarding the whole marketing and publishing, i don’t fully agree with this per say. There are groups that you could go to in order to publish and market your game and while yes, when you want to know just how much market value your game contains you can’t always guarantee honest publishing companies to do it, so its best to shop around. Yes it would be quite useful to do research in it, but i don’t believe that you should stretch yourself as thin as that, remember that there are several factors that make your game a success, a good strong (that is not broken easily by bugs) game, drawing attention to your project and then effectively making the sales to make a profit. Getting the attention and making the sales requires a lot of time and sometimes that time could best be used elsewhere, also take into consideration that if your a solo games developer that is producing a game for commercial purposes, you have an obligation to your customers to fix bugs, if your the only person working on the project you are going to struggle with the pressures or advertising, bug fixes etc.

It’s been the last points in my list, and most likely the last to learn, if you ever come in the situation - you are kind of a game developer professional already at the point when you can sell your game. So forgive me, if those are not the quite most important points for a newby. I just wanted to give an overview what there is in the realm of game design and development, and that learning java and a set of libraries is only one thing, and that there are more.

But finally, if you are serious with the idea to sell your works, you should have some knowledge in the business area. You don’t have to be a pro at all of marketing, taxes/laws and such, but having a good idea of how a business works, definitely will protect you from a number of problems. Be sure you know the tax laws in your country, and have a good idea what trademarks are. Once money and other people (publishers) is involved, things get very serious suddenly. You can find numerous stories about artists, musicians and also game developers who were ripped off by their publishers or got very bad contracts, crippling them for many years.

ah yes good point IP ( intellectual property) yes there are several steps i would recommend on how to deal with this. For Authors you can protect your IP by sending yourself a registered post (it may sound stupid but by mailing yourself your work, that is registered, you will always retain an unopened copy of your work that has the date that the mail was sent) in the situation where your IP is being questioned you have evidence to back this up, obviously work on the internet is that bit more difficult due to Aliases, so it might make sense to do something similar to what an Author should do. You should also contact your solicitor about it, i am sure you may have to find solictor’s who have a specific understanding of the legal system for online IP’s etc.

Just as another technique for learning and keeping your knowledge; Make tutorials! Honestly, put tutorials up on YouTube even if no one watches them, because it requires you to plan out what you’re going to do in the tutorial, so you have to code it yourself, and most good tutorials have explanations that go along with the code, so you’ll have to learn what the code does so you can explain it properly. I have a YouTube series where I’m creating a voxel engine from (mostly scratch) in LWJGL, and I love doing it because I’ve already learned so much in the 10 episodes I’ve put out. I’ve realized things and I’ve dug deeper into OpenGL far more than I ever have, and I’m also starting to (kind of) get noticed for my videos, which really makes me want to make more videos, which in turn makes me learn more. Its very fun!

Learning Java2D (Canvas JFrame etc.) was very hard for me. I can understand the trouble your having.

And there isnt an easy way to quickly learn those things. I wish there was, but my experience is much like you said, people not explaining things about how Java2D worked that I wondered about.

And I didnt find a great tutorial or anything like that, I entered the world of 2D development copying code, not-understanding stuff, and I felt, very very confused. But with time simple applications came (not games). Just from tweaking code and doing whatever horrible practices I had to to get the job done. But it got easier.

My suggestion is to take code from whever, tutorials, other people, etc. and make a calculator app. But make sure your not useing a calculator tutorial.

And when you run into probloms email me, ill explain why it dosnt work, and how you can fix it! Email : VanAficionado@gmail.com
I check it every day at least.

Also if you dont feel comfortable emailing me or dont want to or whatever, go to stack overflow! Its a great place to post bugs in early development/ small program issues.

Good luck man!

I personally hate stackoveflow (even though I use it!) because many of the members on there will either ignore advanced questions, or they will just point you to a link that you’ve already seen. Some people on there do stop and explain clearly and tell you how to fix your problem, but most of them aren’t like that, and I’ve noticed some actively go out of their way to give you an answer that is partially correct, but not. For instance, a while ago I saw someone asking about a simple AABB implementation, and he was creating his own function for it, but was having a hard time with a small bug. In comes a veteran of Stackoverflow and he recommends that the OP use the Java rectangle class so he can test intersections using the .intersect method. While that’s correct, the OP was asking about a simple math problem, and actually solved it on his own in under five minutes without using the rectangle class. The “veteran” then proceeded to argue with the OP about not utilizing existing functions and he should specify in his question whether or not he wants the math way or the Java rectangle way. Like really dude, he posted a question about math, just answer the damn math question and be done with it!

So, yes I recommend Stackoverflow, but be prepared for people that spend way too much time misleading you and just throwing you links to other sites without helping further.

Wow, I just ranted!

Best piece of advice I can give in this thread is to ignore marketing and publishing and all that guff until you’ve actually, you know, finished a complete game. I mean really finished.

Cas :slight_smile:

How can we “really” finish a game? Theres always ideas, and ideas… Unless you get bored.

Im really serious about this question because im about to “finish” my game, but im always coming with ideas…