[java] Topic #2: State of Java Game Development
Original Post: I thought that it might be interesting to start a series of discussions on the state of Java game development. I’ll throw a question out and if everyone seems interested I can continue to throw out additional topics every couple of days. If we get some good comments I will sum everything up in an article (maybe add a little additional research) and submit it to this board.
Topic #2: Java Game Development For the Amateur
- What does Java have to offer for the First-Time or Amateur game developer?
- What are the major “gotchas” that less experienced developers should be aware of when approaching a game development effort in Java?
- What, if any, skills would an amateur learn developing games in Java that would be transferable to more sophisticated projects typically developed in C or C++?
1) IMHO, in pure Java there's less of a hassle with graphics initialization than in C/C++ with DX (or espescially in DOS) which allows a newbie to focus more on the aspects of good gameplay, AI, physics, tile engine techniques, etc... Most Java books I've seen teach basic sprites and double buffering.
My first game was in Java and was much simpler to get going than my first Dos C game (until I got Allegro
) For me, it was a good thing. For others, I don't know.
2) The only pitfall I hit in my early Java days was optimization. Getting the framerate to an acceptable level isn't so tough, but getting it to a GOOD level is (or I guess was) not an easy thing for a newbie. I'm sure things have changed by now. I haven't written any performace crtical Java stuff in a while. But while optimizing Java may not be easy for a newbie, it still has the added benefit of being a good learning experience.
3) Transferable skills? Optimization!!! Also, I believe it's easier to learn good OOP skills (in the traditional sense)than in C++. The design skills I picked up in Java aided me in applying OOP to my C programs as well. While I don't use classes much with C++, my design is still distinctly OO, a skill you can't help but pick up when using Java.
Edited by - Aldacron on 2/7/00 7:30:11 PM
My first game was in Java and was much simpler to get going than my first Dos C game (until I got Allegro
![](smile.gif)
2) The only pitfall I hit in my early Java days was optimization. Getting the framerate to an acceptable level isn't so tough, but getting it to a GOOD level is (or I guess was) not an easy thing for a newbie. I'm sure things have changed by now. I haven't written any performace crtical Java stuff in a while. But while optimizing Java may not be easy for a newbie, it still has the added benefit of being a good learning experience.
3) Transferable skills? Optimization!!! Also, I believe it's easier to learn good OOP skills (in the traditional sense)than in C++. The design skills I picked up in Java aided me in applying OOP to my C programs as well. While I don't use classes much with C++, my design is still distinctly OO, a skill you can't help but pick up when using Java.
Edited by - Aldacron on 2/7/00 7:30:11 PM
--- Official D Blog | Learning D | The One With D | D Bits
Hey, optimization is cooool!!! I love to do it!! I think one of the biggest pitfalls is choosing between applet and standalone... It sucks, because most of the books teaches only applet stuff and just scrath standalone and it''s swing I had to learn this tough way, When I moved my first worm game to standalone I had to work almost a week to get it working..
Java is much simpler and with less "hairballs" than e.g. C++. Of course same could be said of many languages likes Visual Basic, but what Java offers is real object oriented programming.
I myself have learned first Java several years ago, then moved to C++ programming, but have now returned "back to the roots" of Java programming. What I noticed that having learned OO in Java gave me a slight edge to those people moving to C++ from C/Pascal/Basic coding.
The main gotchas are IMHO the graphics oddities (that fortunately are explained in almost every Java programming book), like having to make sure a "window peer" has been created before you can create an image using dimensions.
Transferrable skills are (to name a few): OO programming, interface based programming, multithreaded programming, event driven programming. Also every programming pattern can be applied under Java and C++ in more or less similar fashion.
I myself have learned first Java several years ago, then moved to C++ programming, but have now returned "back to the roots" of Java programming. What I noticed that having learned OO in Java gave me a slight edge to those people moving to C++ from C/Pascal/Basic coding.
The main gotchas are IMHO the graphics oddities (that fortunately are explained in almost every Java programming book), like having to make sure a "window peer" has been created before you can create an image using dimensions.
Transferrable skills are (to name a few): OO programming, interface based programming, multithreaded programming, event driven programming. Also every programming pattern can be applied under Java and C++ in more or less similar fashion.
-Pasi Keranen
Java is easy. New game developers already have enough to learn…
- timing loops, data structures such as b-trees, mathematics involved in vectors, optimizations such as collision detection, etc… –
…the last thing that you want to have to worry about is complex language syntax and structure.
If your game has any kind of multi-user support you will find network programming in Java heaven compared to what you will experience in C++.
I have seen a couple of posts mention VB as a possible way to get into game development. They site the ease of use and the power of DirectX. Having built a 2D Isometric engine in VB and DirectX, I can tell you that I disagree with this point of view.
While it was initially easier to start a game in VB it turned out to be a major pain in the south side. The language is too limited and you end up developing a lot of extra code as a work-arounds for the lack of constructors, implementation inheritance, and the inability to implement commonly used programming patterns (like the singleton pattern). My experience was that as my game progressed it became more and more difficult to effectively implement new features in VB. Within the scope of one game project I “out grew” the language. Even if you are interested in using DirectX as your multimedia library you could still use J++ rather than VB.
I can’t say for sure (since I learned to program in C++ before Java), but I think the skills you learn in Java are more transferable to C++ than Visual Basic.
The biggest problem I have had getting into Java game development was the lack of reference material. I have only found two books on Java game development (“Black Art of Java Game Programming” which is almost 5 years old and the excellent “Java Game Programming for Dummies”). Neither of those books addressed using the more advanced graphics capabilities of the Java 2D API or Java 3D (they were written before those API’s were available). I could only find 2 books on the Java 2D API, and only one of those was really useful. There are NO books available on Java 3D. This is compared with a couple of shelves full of books on C++ game development and DirectX.
The references available on the Web can be useful, but the material is not organized very well and may be very hard to find if you are new to game development.
- timing loops, data structures such as b-trees, mathematics involved in vectors, optimizations such as collision detection, etc… –
…the last thing that you want to have to worry about is complex language syntax and structure.
If your game has any kind of multi-user support you will find network programming in Java heaven compared to what you will experience in C++.
I have seen a couple of posts mention VB as a possible way to get into game development. They site the ease of use and the power of DirectX. Having built a 2D Isometric engine in VB and DirectX, I can tell you that I disagree with this point of view.
While it was initially easier to start a game in VB it turned out to be a major pain in the south side. The language is too limited and you end up developing a lot of extra code as a work-arounds for the lack of constructors, implementation inheritance, and the inability to implement commonly used programming patterns (like the singleton pattern). My experience was that as my game progressed it became more and more difficult to effectively implement new features in VB. Within the scope of one game project I “out grew” the language. Even if you are interested in using DirectX as your multimedia library you could still use J++ rather than VB.
I can’t say for sure (since I learned to program in C++ before Java), but I think the skills you learn in Java are more transferable to C++ than Visual Basic.
The biggest problem I have had getting into Java game development was the lack of reference material. I have only found two books on Java game development (“Black Art of Java Game Programming” which is almost 5 years old and the excellent “Java Game Programming for Dummies”). Neither of those books addressed using the more advanced graphics capabilities of the Java 2D API or Java 3D (they were written before those API’s were available). I could only find 2 books on the Java 2D API, and only one of those was really useful. There are NO books available on Java 3D. This is compared with a couple of shelves full of books on C++ game development and DirectX.
The references available on the Web can be useful, but the material is not organized very well and may be very hard to find if you are new to game development.
Remember that some parts of the console code are actually faster than in C++, The biggest bottle cap what you''ll meet is the UI, it''s code is slow. I got this one from one guy from another board and I don''t know if he wants to release his name, well I won''t do it...
I wish they could build something like directX to java in crossplatform version, It would really get some oldest C++ dudes to look at Java...
I wish they could build something like directX to java in crossplatform version, It would really get some oldest C++ dudes to look at Java...
1) First time game developers have an easier time with Java, especially in the graphics department. If I were going to write a C/Direct X program, I would need to write the core system, a bunch of drawing routines, image loading routines, GUI stuff, and all sorts of stuff that are built into the AWT. I can put up a working game in a matter of hours from scratch, and it will be 100% JAVA, work on all non-wacky JVMs, works on all resolutions and color depths. You can''t do that with Direct X. Granted, you don''t have to start from scratch.
2) I think when people start programming Java, they mistakenly approach it from a C++ point of view. They spend their time lamenting its lack of templates or multiple inheritence, and go to great efforts to build that into the system. I''ve seen a lot of people whose first project for Java was to write Direct X drivers.
There is a lot of really neat things that you wouldn''t think of if you approached from a direct x/c++ background. For instance, you can use Canvas components to create modular interface components. By adding and removing these components, you can make things very dynamic. For instance, in an RPG, you could remove the map Canvas and replace it with the inventory Canvas. This is a great Object Orientated way of approaching graphical areas. Rather than drawing on a single applet, this modular approach can be VERY neat. Check out JavaWorld for the ..what was it called... some sort of BBS system using a Card Layout. Geez, can''t remember what it was called.
3) Java isn''t as nice as C as far as letting you get away with the wrong thing. It is very well organized, and it requires you to follow suit. By having experience using Java, you will get a better structured environment to learn and grow with Object Design. Believe me, Java will make you a better programmer....Hell, I won''t program in C++ anymore because it has just become ugly...
2) I think when people start programming Java, they mistakenly approach it from a C++ point of view. They spend their time lamenting its lack of templates or multiple inheritence, and go to great efforts to build that into the system. I''ve seen a lot of people whose first project for Java was to write Direct X drivers.
There is a lot of really neat things that you wouldn''t think of if you approached from a direct x/c++ background. For instance, you can use Canvas components to create modular interface components. By adding and removing these components, you can make things very dynamic. For instance, in an RPG, you could remove the map Canvas and replace it with the inventory Canvas. This is a great Object Orientated way of approaching graphical areas. Rather than drawing on a single applet, this modular approach can be VERY neat. Check out JavaWorld for the ..what was it called... some sort of BBS system using a Card Layout. Geez, can''t remember what it was called.
3) Java isn''t as nice as C as far as letting you get away with the wrong thing. It is very well organized, and it requires you to follow suit. By having experience using Java, you will get a better structured environment to learn and grow with Object Design. Believe me, Java will make you a better programmer....Hell, I won''t program in C++ anymore because it has just become ugly...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement