Skills....

Hi all,

Just felt like posting something and was also wanting to find out more about the community on here.

I have taught myself Java through books, experimenting, internet etc. but I dont actually know any Java programmers to compare myself to so it would be good to hear from you all and see what sort of level I should be aiming for :wink:

The first thing is I find myself refering to the documentation more than I would like to and my IDE points out errors more than it probably should, do you guys still do the same from time to time or is it just newbies like me?

Another being what sort of positions are you in, do you do it as like a hobby, do you make money out of it, is it your full time job?
Id like to take it further but I might have to build my skills first :stuck_out_tongue:

Also if you where going to give advice to a newbie as to what to learn and how much they need to know as a minimum what would you say?

Hopefully I will get a better idea of what a Java programmer should be :wink:

Thanks,

Ken

I certainly use the Java manual frequently (after 6 years using Java), but I rarely to never have compile errors anymore.

I am actually in the job market and have recently been offered 2 very different jobsā€¦ Iā€™m deciding tomorrow. I will either be a game developer using C# or a retail web developer using a lot of different technologies. One thing that helped me a lot in looking for a job and got me a lot of offers (even though I have no prior professional experience) is having had dedicated that I really like to code. A lot of people looking for software engineering positions actually donā€™t like it too much. If youā€™ve got a large portfolio of stuff youā€™ve made in your spare time, that will really help you.

Iā€™d tell you for Java game development to take a look at LWJGL or a different OpenGL binding (JOGL) at your earliest convenience. Java2D is too slow for almost any live action game - OpenGL is significantly faster. You can also take a look at a lot of the open source projects posted on this site.

Thanks for the reply!

Very helpful and interesting indeed. Ill take alook into that, Iā€™ve heard it mentioned alot on these forums but have never heard of it before. Is there any purpose for Java2D at all? Maybe applications?

Yes whe I do see jobs in Java they always ask for lots of stuff, especially experiance in the industry.
Sounds like you have a good choice there but your right they are very different and its great you have the skills to go into both.

Ken

Well, I chose the game development job with C#.

Java2D definitely has its place and its purpose. Iā€™d say on most games that arenā€™t live action and donā€™t require complicated effects, Java2D is a better option. Itā€™s simpler and you can use a lot of the built in components and the like. You also donā€™t have to worry about including natives in your code, which can make distributing your games a little difficult if youā€™re not using Webstart. So if youā€™re making a card game or something like that, use Java2D.

Also, Java2Dā€™s image manipulation is a lot better because you can work with raw data instead of textures. You would probably want to do a game like Worms in Java2D so that you can mess around with the bitmap more directly.

You can also use a combination of both for a lot of things - a lot of people use Java2D to generate OpenGL fonts, for example. Another case is in my most recent game where I want to draw an image representing the final game state, which is a compilation of everything in the scene. Java2D is not fast enough to run the entire game, but in order to make the final image I translate the OpenGL textures back into Java2D images so that I can directly access the raster data.

So there are obviously a ton of reasons to use both. I typically start my 2D projects in Java2D because itā€™s simpler and has more features, but probably 90% of the time I notice slowdown pretty early, so I convert it to OpenGL. This typically takes me about a half hour to an hour to make the conversion, so itā€™s not a huge time waster. It might be a good idea just to start with Java2D and make the switch if and when you need it.

That is a brilliant explanation of both and it helps alot thanks!
I think I will stick with Java2D for now as Im not exactly an expert at that lol
Im guessing Java3D is a similar situation (although Im not considering learning that anytime soon).

Another question I forgot is how do you plan out your games/programs? Do you just sketch them down in your own way or use UML?
Im guessing UML is more for people doing it proffesionally who need to show others easily whats going on in a formal way.
At the moment I dont plan at all which isnt good but its stuff small enough to just make it up as I go along lol

Ken

I donā€™t typically use UML, but itā€™s a good idea to keep in practice when looking at careers. That doesnā€™t mean I donā€™t plan, however. One good non-formal approach Iā€™ve found is to do a sort of expansive list of features. First, start with a good description of what your game will do and any requirements it may have (simple requirements gathering). Then, use that list to begin to list out specific features and classes you will need. Then you will expand that list as you encounter the different things the listed classes will need. Youā€™ll end up with a tree of necessary features and which class needs what, which will give you a very good idea of how to proceed. Then you can guess how long each part will take you, and try to lay out a basic plan that covers week-by-week, day-by-day, or whatever works best.

I enjoy doing it this way typically because it gives weekly goals, and so I can know if Iā€™m ahead or behind. It really enables me to get more done and slack off less.

Thanks thats a good idea and I need to start doing something like that because not only do I slack off sometimes but I go off at a tangent and start making stuff for it that isnt really too important and could wait till Iā€™ve actually finished the program lol

How much programming have you done proffetionally then, how many years etc.?

This was my second day programming professionally. :stuck_out_tongue:

But Iā€™ve been programming in one fashion or another forā€¦ 11 years or so.

Iā€™m working with the guy who was lead engineer on Stubbs the Zombie and a project lead on something else, and he told me that he never uses UML. As far as I can determine, doing something like I suggested above is how they often do it in the professional world as well.

Congratulations, thatā€™s really something that you managed to break into the industry! keep us posted on how youā€™re finding it :slight_smile:

Must be great to get that job, 11 years is quite awhile!

Even if I never turn it into any kind of career I still enjoy doing it and it comes in handy with my job anyway :stuck_out_tongue:
Now all you have to do is learn all the tricks of the trade off them :wink:

Traitor. :wink:

Seriously, though, I actually donā€™t mind C# as much as most of what comes out of Redmondā€¦are you guys doing XNA stuff for console? How have you found it so far, esp. compared to doing games in Java? I keep meaning to actually sit down and see how it is as a game platform, but I donā€™t have an XBox360 and I rarely use Windows, so Iā€™ve been spending most of my non-Java time doing iPhone stuff (great device for games, btw - far better graphically than youā€™d expect from a phone!).

Hey, thanks for all the congrats on my job. Iā€™m very happy with it so far. ;D

Weā€™re currently using Unity for this project, which can use C#, JavaScript, or Boo for the scripting. We decided on C# because itā€™s fast, object oriented, and less hokey than JavaScript, and none of us know anything about Boo. So because itā€™s with Unity, we donā€™t need to worry about XNA.

I think C# is pretty good. From what I understand of the technology (and the syntax), it is remarkably similar to Java. It uses a JIT compiler and everything, and the differences are very very small. Most of us would actually prefer Java (including the CEO), but Unity doesnā€™t support it. Iā€™m not sure why the creators of Unity made this choice, seeing as C# is for Windows specifically, and Java is very much cross platform. In either case, Iā€™m pretty much programming in Java.

Unity is okay to work with. Itā€™s great not having to worry about some of the more complicated tasks like physics, 3D, model loading, networked play, etc., but there are a lot of hokey choices that can be annoying to deal with. I suppose any SDK is like that.

UML is essential in working on medium or large game projects. Lots of programmers donā€™t know how to use it. Game teams will happily hire them but then expect them to learn it fast. Teams that spurn it, well ā€¦ it usually shows fairly quickly in the lower quality of their builds and the longer dev times to get stuff working.

In mainstream game dev its value is mostly nothing to do with planning, itā€™s all about being able to rapidly communicate to other people (and other teams within your studio) WTF you have done, are thinking of doing, and are about to do. Medium and above teams tend to have code planning meetings where youā€™ll have 3-10 people in one meeting, and so every minute you waste is potentially wasting ten times that much coding time. Efficiency of communication is very important. Everyone should be able to read a class diagram (heck, even people who donā€™t know UML can usually read one with a few moments thought about what those arrows must mean), but when everyone can also draw them without having to look up teh symols you can do code-planning much much faster.

With network programming, some of the other diagrams become just as (or even more!) valuable, e.g. deployment diagrams take a vauge, hard to describe, easy to misunderstand situation (what versions of which libs are we installing where and which APIs are we going to remotely call on which machines and why?) and makes it clear and easy to understand at a glance.

This matters a lot when you have half a dozen programmers working on one system. When you get later in the project and you have 5 or even 10 programmer working on one FEATURE (or fix) that crosses many systems, and only have that many people because itā€™s that complex or that pernicious a bug, then it matters even more :).

EDIT: so ā€¦ I highly recommend you keep your UML knowledge fresh, sooner or later it will come in very handy for you :). Although you may have to educate a lot of colleagues along the way, there are a lot of people who started games programming before basic software engineering had gone mainstream, and missed out on things that are considered ā€œbasicā€ today. IME they are mostly very happy and rapid to adopt new things if someone turns up with genuine examples of why they should bother, based on stuff theyā€™re accutally doing on a day to day basis.

I agree that knowing UML is a very good thing to do (I interviewed at 4 places and 3 of them asked about UML), so donā€™t hesitate to learn and practice.

But, Iā€™m working with 3 guys from the original Halo team, and they said that they didnā€™t really use UML at all. And I wouldnā€™t call that game low quality.