Ongoing Support for jPCT?

Started by elias4444, October 17, 2008, 09:21:16 PM

Previous topic - Next topic

elias4444

Wow, I've been hanging out on the lwjgl forum for years now and never knew about this project. I must have missed it.  :P

Anyway, I've been desperately looking for a solid 3D java engine for my next game (I wrote my last engine from scratch, and would prefer to focus on content this next time around). Before diving into jPCT though, I have a few questions/issues:

I'm a little nervous about not having access to the source code (the infamous, "what happens if you got hit by a bus?" question arises). But more importantly, how long do you plan on supporting your engine? I know some projects come and go and occasionally die quietly in the night. What's your future plans for jPCT?

How do you recommend implementing sound with your engine? Sound is logically attached to spatial orientation and position, so it's kind of hard to separate the two. I noticed a sound project in the project forum... is that "officially" supported, regularly updated, and stable?

Does your engine automatically sort for render order (to get translucent objects rendered correctly)? And does it filter out the drawing of items offscreen? Or do we implement this ourselves?

Does your engine have physics? I noticed the Bullet demo, but couldn't find information on whether or not the physics are built into your engine.

Does your engine support cel shading? (or other types of shading for that matter)

Does your engine automatically detect whether VBOs (or whatever) are supported by the local drivers and automatically adjust tactics? (I hate Intel graphic chips, but understand that I have to live with them).

Any answers are appreciated! I feel like I've been searching for a while for a good foundation to work off of. I kept going back to jME only to be frustrated by their "everything and the kitchen sink without documentation" approach. If jPCT doesn't work out, I'll have to spend the next year or so building up my own "from-scratch" engine to do what I want, so please, "Help me Obewan, you're my only hope!"  ::)



Melssj5

Well, jpct is more a 3d engine than a game engine. I Mean, with jpct you can manage the 3d part of your project. The bullet demo uses another API for the physics and jpct for the 3d stuff. About the sound, jpct has no sound on it by now but you can of course use open AL to have audio 3d, the sound is linked to the space as you say, becausse objects that make sounds existes in the space, but inside a computer the linking is virtual. Anyway Paul Lamb (paulscode) make an audio API easy to use and 100% compatible con jpct and is free.

About getting the source code of jpct, well you cant. JPCT is not open source, is just free.

About the future of jpct well, I dont know but I discovered jpct some years ago and its an API that is always getting better so you can be sure is not a short term project.
Nada por ahora

EgonOlsen

#2
Quote from: elias4444 on October 17, 2008, 09:21:16 PM
I'm a little nervous about not having access to the source code (the infamous, "what happens if you got hit by a bus?" question arises). But more importantly, how long do you plan on supporting your engine? I know some projects come and go and occasionally die quietly in the night. What's your future plans for jPCT?
Well, i'm maintaining it for years now (some code dates back to 1999!!). I have no plans to discard it any time soon. I'm going to support it as long as i or others are still using it...unless i get hit by a bus, of course.

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
How do you recommend implementing sound with your engine? Sound is logically attached to spatial orientation and position, so it's kind of hard to separate the two. I noticed a sound project in the project forum... is that "officially" supported, regularly updated, and stable?
What i can say about paul's SoundSystem is, that i'm using it with great success and i haven't noticed a single glitch so far. But i have to admit that i'm not using everything it offers. He has also written a jPCT-friendly kind of binding or wrapper that eases use in combination with jPCT, but i'm using my own wrapper for this.

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Does your engine automatically sort for render order (to get translucent objects rendered correctly)? And does it filter out the drawing of items offscreen? Or do we implement this ourselves?
Yes, it does that. It also does state sorting as well as culling based on octrees (if used) and bounding boxes.


Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Does your engine have physics? I noticed the Bullet demo, but couldn't find information on whether or not the physics are built into your engine.
jPCT has different collision detection capabilities but not a real physics engine. The JBullet-demo was a quick hack of mine that mimics OpenGL's state machine on top of jPCT...really hacky because i just wanted to see how it looks like without going deeper into JBullet.

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Does your engine support cel shading? (or other types of shading for that matter)
No. There is a cell shading demo somewhere floating around that creates a similar effect, but it's no real shading.


Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Does your engine automatically detect whether VBOs (or whatever) are supported by the local drivers and automatically adjust tactics? (I hate Intel graphic chips, but understand that I have to live with them).
Not for VBOs, but it does similar adjustments for other things like FBOs, where it falls back to frame buffer captures if FBO are unavailable and it adjust it's multi texturing to number of texture stages available...etc.
Edit: About the Intel chips: They suck, but jPCT works quite good with them. It has to, because they are so wide spread (see the hardware statistics that i've posted in the Robombs-thread in the projects section). I even got screenshots from Robombs running fine on S3 onboard graphics and similar strange chips. Even a Geforce2MX runs it fine (without shadows of course...).

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Any answers are appreciated! I feel like I've been searching for a while for a good foundation to work off of. I kept going back to jME only to be frustrated by their "everything and the kitchen sink without documentation" approach. If jPCT doesn't work out, I'll have to spend the next year or so building up my own "from-scratch" engine to do what I want, so please, "Help me Obewan, you're my only hope!"  ::)
To understand jPCT and it's API, one has to know where it came from and what were (and still are) its goals. jPCT is a software/hardware hybrid that still is Java 1.1 compatible (not the hardware part, only the software renderer) and very small. The API is build around the two monolithic classes Object3D and World. That makes it look less OO than it could be, but obviously it makes it easy to use, because there's no searching and/or confusion and a gazillion of different classes may cause. The software/hardware hybrid makes it work similar to the first incarnation of the Unreal engine with all the pros and cons. It's highly flexible when it comes to assigning textures to objects for example. On the other hand, it's not a polygon pusher. If it fits your needs depends on...well...your needs... ;)

paulscode

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
How do you recommend implementing sound with your engine? Sound is logically attached to spatial orientation and position, so it's kind of hard to separate the two. I noticed a sound project in the project forum... is that "officially" supported, regularly updated, and stable?
The SoundSystemJPCT class integrates nicely with jPCT.  I am relatively new to the jPCT forums, but I intend to stick around.  I will continue to provide support for the SoundSystem engine as needed (limited support for the "SoundManager" class, though - that was ultimately a flawed concept IMHO).  Since I started the project, I've been fixing bugs as they appear.  I take all suggestions seriously, to the point where I have scrapped major portions of code and started from scratch on a few occasions.  Currently the library is stable - I have run numerouse tests on various machines without a problem, and my wife and I have played Egon's game for hours at a time without a glitch.

elias4444

Great! Thank you for the feedback everyone!

Just a few more specific question for you...

Do you sort back to front on a per-object basis, or a per-polygon basis?

Also, do you think you'll ever release the code openly? (like if the time comes that you're tired of maintaining it)

Thanks again!


zammbi

I believe Egon has said that he would release the code if he was tired of maintaining it.
Egon make sure you have in your will that the source code gets released  ;)

EgonOlsen

Quote from: elias4444 on October 19, 2008, 04:43:03 AM
Do you sort back to front on a per-object basis, or a per-polygon basis?
Depends on the used renderer. The software one sorts front to back for opaque polygons (to minimize overdraw) and back to front for translucent ones. The hardware renderer does some rough state/texture sorting for opaque entities and the same per polygon sorting from back to front  as the software one does for translucent ones.
Quote from: elias4444 on October 19, 2008, 04:43:03 AM
Also, do you think you'll ever release the code openly? (like if the time comes that you're tired of maintaining it)
As zammbi said: I'll release them once i'm not maintaining them any longer, but i have to idea when this might happen...



.jayderyu

Quote from: elias4444 on October 17, 2008, 09:21:16 PM
Does your engine have physics? I noticed the Bullet demo, but couldn't find information on whether or not the physics are built into your engine.

I spent some time trying to understand how JBullet works. Let's just say the samples with JBullet are more complex than they need to be to have it working. This maybe some form issue with it working with LWJGL.

The physics engine doesn't need graphical output. It's not bound together. Which is nice, really. What you will need to do is
verify that your RigidBody(jbullet) and you Object3d:model(jpct) are matched in size and orientation.
Then on your update after you have taken a update/step in jbullet.
get the bodies that were updated, then update the Object3D corrospondegly.