Hello, my problem is What should i learn and use to create a client/server rpg world with turn based battles? using java of course...My main concerns are 3d graphics (FSEM with Java3D?), audio (JOAL?) and networking (plain UDP?).

Now you know my problem you might want to read this if you need more information...

Well, it would be tile-based 2d, but i would like to move to 3d whenever i had the rest working (never?), so i would use java3d or similar for my 2d game. I dont exactly remember what kind of objects you can draw using java3d but in the worst case the images can be put on cubes... Using java java3d would also let me add 3d'ish attack effects.

So i was reading this book http://fivedots.coe.psu.ac.th/~ad/jg/index.html (buy it if you read it =/ ), to understand the basics and it was fine until i started reading like 6 different libraries that do the same thing (maybe they dont, but im new and confused...) Java3D, Xinith, JOGL, and others, plus the networking chapter's TCP, UDP, RMI, CORBA, JNI, etc

I was going to do this with just html, css and php but then i couldnt have a character moving on the screen without having to click an hyperlink, and PvP being nearly impossible.

Then i thought "i can add java for the animations", but soon after that i realized i didnt need php if i was going to use java, it could be an applet, which leads to "it could just be a regular fullscreen client application" and no need of browser.

Now, my priority is learning the right stuff, then comes finishing this game quickly, and last its resources usage. So i would like to know what is actually used on java games / what is best to use.My main concerns are 3d graphics (FSEM with Java3D?), audio (JOAL?) and networking (plain UDP?).

How would the game be? You create an account, login, start a character (choose its name, class, etc), and start playing. The world would be 2d, tile-based with top-down view.Inventory and data stuff would be stored on a database (SQLServer7 until i can use Postgre). Any user can only see up to X players in a room (like 8 per room/zone, they arent that big), and battles are turn based with 3d attack effects so i give the 3d library a use (like a rotating cube with a purple translucent texture).

If you say eg "RMI for networking", please tell me what RMI is and why it is recommended over other approaches thank you ^^Now i must sleep...

Hello qgpr!Actually, I have been trying to learn all the concepts I need to know to create an online RPG myself. I have pretty much all of these same questions, but I am a little clearer on some of them.

As for 3D graphics, many people choose the Xith3D Scenegraph/Rendering API over Java3D.This is for a at least few reasons.1. Xith3D is targeted at game developers.2. Sun's support for Java3D appears to have faded away, while Xith3D is currently still in development (not by Sun, however).3. Xith3D is generally faster than Java3D and has less "quirks".

There is a downside to using Xith3D for your 3D graphics, and that is the lack of documentation. The Getting Started Guide is pretty good, but its a little rough learning the advanced topics.

As to sound, I would recommend JOAL even though I don't know much about it simply because it seems like it works, and well .

For networking, its really a toss-up between TCP and UDP. Long debates have dragged on and on over this issue, some saying to have a TCP-like layer applied over UDP, others saying UDP's packets cause too much data loss.

One more thing, and this is the most important of all. Please, please, please, please PLEASE! Do not try to "finish this game quickly". You will only frustrate yourself heavily. (Believe me, I wasted alot of time trying to hurry up and start up my game).

Thank you. I had this rpg working, but it was a VBScript MUD (sort of MiRC), the networking was already built so I didnt have to code that. It didnt have direct keyboard/mouse input, audio or graphics though, it was a chat room.

By quickly I mean not having to learn libraries I will never use with this game and in the future. I will check Xith3D.

But, what's better on networking, UDP or RMI (if they arent completely different). I understand RMI can call methods on remote machines, that means I can forget about TCP/UDP and instead sending messages I would call remote methods (??).

If that is possible that would simplify everything (I think), but despite I dont care if the game isn't fast I dont want it to lag the machine. Would that be too slow for a game? (RMI's overhead).

First do it with Java build in sound, then give option for user to switch to some more reliable sound (OpenAL) It's always nice to have choice between downloading another file and seeing everything right away.

Have you ever listenened words packet storms? TCP or UDP in this purpose they seemed rather equal. UDP is sligtly faster and you'd have a lot of work to do synchronization. Of course you should test lag between server and client machine.

Quote

But, what's better on networking, UDP or RMI (if they arent completely different). I understand RMI can call methods on remote machines, that means I can forget about TCP/UDP and instead sending messages I would call remote methods

You don't want to call methods on users machines, you want to send information about state of game server, possibly delta, to other machines.

I might worry more about speed of the database, than about other things, you might want to cache a lot.Input and output is rather easy in Java, when I was learning keyboard input, I was able to create small game in 3 hours, just with help of API documentation. Biggest problem would be artwork and other things.

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