Espresso 3D

You all may already be aware of this, I found it on GameDev.net:

http://www.espresso3d.com

Espresso3D is a high performance real-time 3D engine for the Java™ programming language. E3D is not just a scene graph. It aims to be a complete solution for your application with OpenGL rendering, OpenAL audio, collision detection, input, and rendering support. For a complete list of features, visit the features section.

Java, OpenGL, OpenAL, and LWJGL

I suggested they send their details to be included on the JGF tech page a while ago, but I don’t remember if they did or not (I think the answer is “not”, but maybe they did and it got put in the queue of “stuff to do once jgfv3 goes live”).

IIRC I couldn’t see any reason why it was any better than jME and Xith, even though it costs money for commercial use ( http://www.espresso3d.com/license.php ), but that might just be because it’s young and immature.

EDIT: that sounds quite scathing. All I really meant was that, like William, I couldn’t see the point (and yes, I did ask the author what the differetiator was, but IIRC he wasn’t yet familiar with the others, so couldn’t really say). Which of course doesn’t mean there’s anything wrong with it (althought there’s always a million and one new OpenGL 3D engines written each year, most of which have the sole purpose of being 3D practice for the main developer).

Looks quite young to me. Not sure why we need another java scenegraph, does it fill a void that Xith3D or jMe doesn’t?

Will.

Hello all - I’m the author of Espresso3D, and saw this thread so I thought I’d give a little feedback…

I suggested they send their details to be included on the JGF tech page a while ago, but I don’t remember if they did or not

I haven’t submitted the details to JGF yet. However, it is on -my- list of things to do so I don’t want anyone to think its JGF’s fault :slight_smile:

IIRC I couldn’t see any reason why it was any better than jME and Xith, even though it costs money for commercial use ( http://www.espresso3d.com/license.php ), but that might just be because it’s young and immature.

E3D is a young engine, so it is lacking some features found in Xith and jME. However, better is in the eye of the beholder. E3D certainly does contain features found in the other engines, but that doesn’t mean their implementations are identical nor are the interfaces to those implementations. Therefore, there may be many developers that are comfortable using E3D’s API for their graphics development, and others that are more comfortable with Xith or jME. IMO there is room in the market for more than 2 or 3 Java scenegraphs*. Each has its place and pros and cons with each implementation. *E3D isn’t just a scenegraph BTW, it provides collision detection, input support, and will support many other features an engine should including sound support, networking support, etc. as it matures (I know xith and jME provide some of this as well).

Also, I feel lots of resentment from the Java community about E3D being a commercial product, so I just want to clarify, E3D doesn’t cost a penny to use for projects that are free as well. But, if you expect to make a profit from a project built on E3D, why shouldn’t you expect to have to pay a slight licensing fee to the product that enables your project to make you that profit? I am spending 25+ hours a week on E3D after working a 40-60 hour week as a Java application developer for my regular job to provide this engine to the public because of my love for graphics/game programming and the Java community. I am also an avid supporter of the Open Source community and use many open source projects and donate to a couple efforts. Even though E3D isn’t OS, I provide everything Espresso3D related (Pong clone, tools as they are introduced, etc.) except the engine in an open source form. All I ask for the time I’m putting in is for you to help support the work if others support your work built on E3D.

The other reason its not OS’d is that I want to be involved in all aspects of the engine in its current state. I feel that as young as E3D is, if its OS’d it could go totally down the wrong path. And, I really like working on all the pieces of it so far.

So, yes, E3D is a young engine. It has only been in development by a single developer for a few months, but it is progressing at a steady clip. Even though it doesn’t have all the features of some other engines yet, what it does do, it does well and does better and better with each release. So, I hope people try it out and I would -love- to see a community of free software built on E3D.

So, try out E3D and report the bugs you find! I’m sure there are some at this point (v0.2 had many new features added) and any feedback will help guide E3D’s path as it matures! I look forward to working with many of you helping you make your dreams come to life. :slight_smile:

I don’t think it is so much resentment as healthy suspicion.

The java community has been ******ed before because someone released a scenegraph 3D engine with hardware acceleration and then got bored, stopped releasing it - and left all the users with nowhere to go. That someone happened to be Sun; if this can happen to Sun, what hope is there to trust that one single developer will not have the same problem?

Scenegraphs are not OpenGL: they are not part of a massive standard, so if your SG disappears then porting to another is likely to involve considerable work (unless you have specific knowledge otherwise; c.f. how much work it can be to port Java3D to Xith3D even though they’re supposed to be the same!).

Xith3D was started largely because Sun dropped their API and left people with nowhere to go. Even Xith’s main developer had to bow out and leave it unsupported for a while - but, because it was open source, others picked up the baton and brought it back to life. Even so, there was significant cost - there were lots of pieces of code that no-one really understood.

So, even if you weren’t to charge money for an SG, the first question is: how do you guarantee you won’t disappear? If you’re expecting money then it’s fair enough for developers to expect of you that you have a team of many people, a real company, and some insurance against you going out of business unexpectedly. Of course, since most people would like ultimately to make some money out of their games etc, they are likely to evaluate any new tech as if they were using it commercially. It’s no good saying “but hey, for most of you it’s free!” because most people want the option of going commercial eventually, and the last thing they want is to have to change SG at that point in order to carry on doing it for free.

Finally, anyone can make an SG. It’s pretty simple, almost trivial, to get a fairly good working SG up and running. You could spend probably several years on it before you got to the point where you ran out of free sources for every algorithm and technique you ever wanted to add. Most things are documnted dozens of times over, for free, all over the net. Sure, it takes time, and more advanced features take a lot more time, but … it means the barrier to entry is low.

LWJGL is not an SG but at least it’s begining to be mature enough, it’s now widely used (compared to many other 3D APIs), it’s very performing, robust, simple and I forget other good points.

I mean, we already have a very good and solid 3D API combined with Xith3D. Why looking for another one?

With any product/project, there is a risk of it failing or the author getting bored. Can I guarantee that won’t happen… Well, no, can anyone really do that? What I can guarantee is that if that every did happen, E3D would be open sourced immediately. If I find that I can’t progress E3D any further, I’ll open source it. But, currently, I have no plans of that happening anytime soon.

Also, if you are worried about the project freezing, I don’t recommend licensing or maybe even using E3D in a “commercial possible” project until it has the featureset you are looking for. Once it has all the features you need, it wouldn’t affect you if it stopped progressing. Like I said, I’m not out to make huge licensing $$ right now. I’m out to provide an engine to Java developers to evaluate (or use in free projects!) and use “as is” as it progresses through its lifecycle. If it doesn’t suit your needs in its current version, then it may not be right for your project right now. But, if v0.2 (for example sake) has all the features you need, then there should be no worries about its progress stopping – it already has what you want!

With any product, I’d discourage someone from licensing it with expectations of getting some future features. Features are dropped in high profile projects with 1000’s of developers all the time. You can’t count on the future with anything, you can only count on what’s there. I try to make it very clear that E3D is a young engine and that it doesn’t have every feature you may want. But, just as clear, I tell you what features it has and for many people what it has right now may be enough, in a couple months when its progressed more, that may be enough for others, etc. On the same note, I wouldn’t recommend licensing any engine until you’re sure YOUR project is going to succeed. For every failed engine, there are 10x as many failed games/applications.

You don’t have to license E3D to use it to develop your commercial project. You only have to license it before you release your project and attempt to make any money from it yourself. E3D will always be provided free to free projects, so you’ll never have to switch sg’s because of the lack of that from E3D, and if the version you evaluate has the features you want, then you’ll never have to worry about it failing.

And just as an aside, there are several things that can be plugged into E3D - new collision detectors, new renderers (E3D doesn’t have terrain yet, but you could write your own terrain rendering algo. and plug it into E3D’s rendering pipeline), and it still allows you to make straight lwjgl calls. So, you can use E3D for what it has, and if it doesn’t have something, you can build that in yourself.

My only guarantee is I love engine development and don’t see myself stopping this. If I get “bored”, can’t push it any further, or whatever it may be, the source will be released freely. But until then, E3D will progress and no one has to worry about it stopping if they are happy with the features found in the current release. A good developer should never buy or jump in with expectations of features to come. They should pick the best solution for their problem -right now- with what is being offered -right now-.

I agree with you 100% If you are developing a technology and others find it useful and want to develop with it, why not charge for it? There is nothing wrong with being compensated for your work. Period. There seems to be this thought in the open source community that anything within it should be free. This is not so because everything has a price. Development time has a price (time away from families, other pursuits, etc.) Under this rational, why should your employer pay you for doing any work at all? Doesn’t make sense.

With regard to BlahBlahBlah’s comments, while the lapse in support of Java3D is more complicated than people outside of the company could fathom, he is essentially correct. Even big companies can lose projects and support for established technologies (although Doug did turn it around :slight_smile: ). However, if the author of a particular product/technology does not specifically state that your purchase price includes x number of future releases, then you are paying for a point product. You as the purchaser should not expect anything other than what you paid for. After all, when I purchased my last video game, I didn’t expect to get the sequel for free. This is no different.

-Chris

Actually there is no reason why you can’t combine open source and commercial licenses. Just release your project under GPL and everyone that distributes a game using your library must release their source code to the public. If someone charges money for their game, they must pay you for a commercial license.

I don’t see any big advantages of a closed source project, unless your code contains top secret algorithms. :slight_smile:

Just release your project under GPL and everyone that
distributes a game using your library must release their
source code to the public. If someone charges money for
their game, they must pay you for a commercial license.

No. :slight_smile:

You can sell your game and distribute your source freely at the same time. You cannot make a game out of it, if the media is missing.

[quote]With any product/project, there is a risk of it failing or the author getting bored. Can I guarantee that won’t happen… Well, no, can anyone really do that? What I can guarantee is that if that every did happen, E3D would be open sourced immediately. If I find that I can’t progress E3D any further, I’ll open source it. But, currently, I have no plans of that happening anytime soon.
[/quote]
Just to be clear, my previous post was simply an attempt to outline the state of general feelings towards 3D engines, to help explain why you perhaps get a generally non-positive reception.

In the same vein (i.e. I’m not personally concerned, but I feel you’re misunderstanding the people who are/might use your engine)

But a problem you don’t seem to appreciate is that people tend to want to decide on a 3rd-party tech NOW and then not have to change it. People are terrified of being locked-in to “the wrong thing”. Whether or not that fear is justified, it’s very much there. A lot of people can afford to try 3 engines in parallel, or switch back and forth lots of times, but most can’t.

Games are usually not deliberately written as one-offs, never to be improved upon or added to - that is the dark ages of when software re-use was so expensive it wasn’t even considered. So, people do not / cannot bank upon “we know now everything we will ever need”.

Nowadays, there is ALWAYS a big chunk of code that is salvaged from one game project to the next. In each re-use, your requirements change, sometimes a little, sometimes a lot. Usually, the chunk re-used is much smaller chunk than the developers would like it to be. In some cases, it’s a massive boon: e.g. for Unreal Tournament, the chunk of Unreal that they kept enabled them to make the new game for under $2million. i.e. very cheap.

Some groups got screwed over when licensing Quake 1 and hoped to be able to upgrade to Quake2’s engine.

Right or wrong, people don’t aim for obsolescence. Maybe they should - but the general consensus at the moment is that we should all be re-using as much code as we can.

A 3D engine is not merely a product, it’s a platform. Platforms are only useful if they evolve over time. There is a strict difference between something like OpenGL (platform) and Quake 1 (just a product). When people purchase a platform, one of their base assumptions is that it will evolve; a huge part of why they buy it in instead of rolling their own is that they see value in having a platform that evolves wihtout them having to pay for the evolution. In many cases, the evolution of the platform is the deciding factor that convinces people not to re-invent the wheel: “we know we can develop a new X cheaper than we can license it, BUT…we also know that continued development of X is going to cost us far far much more in the long-run, hence it’s cheaper to license than to re-invent”.

Indeed. There is nothing wrong with it.

However, there are plenty of reasons (many of them good) why other people should not use it, and you need to address these or else face ignominy. I’m simply trying to hilight some of these, because curmo states he feels “a lot of resentment”, and I think if he understood the reasons better he could either deflate that more effectively or would just see it in a different light: I genuinely do not believe that there is as much resentment as he thinks, but just that he’s misinterpreting reactions because he doesn’t understand what’s going on in the other people’s heads.

;D Nothing is ever as simple as it appears on the outside…

Whatever the truth behind it, a lot of people really did feel like they’d been “betrayed” and were left with code and knowledge that looked like it was going to be largely useless. It’s now a convenient example very close to home of what people (rightly or wrongly!) can be afraid of.

In order to appreciate how people react to a new SG, you need to look at what experiences they’ve already been through to date…even if they shouldn’t feel the way they do :).

[quote]>You can sell your game and distribute your source freely at the same time. You cannot make a game out of it, if the media is missing.
[/quote]
Well, ok, I think that would fulfill the GPL requirements, but I don’t think anyone creating a commercial game is willing to release the source code under GPL while the game is still selling (yes, I know about Quake etc. :)).

[quote]I’m simply trying to hilight some of these, because curmo states he feels “a lot of resentment”, and I think if he understood the reasons better he could either deflate that more effectively or would just see it in a different light: I genuinely do not believe that there is as much resentment as he thinks, but just that he’s misinterpreting reactions because he doesn’t understand what’s going on in the other people’s heads.
[/quote]
I understand the threat that people face daily of their software choice going belly up. I’m a software engineer for a decent sized software development company during my day job, and we face the risk of having our choices of software/platforms/etc halting everyday. We have to weigh those risks vs. the benefits of using what is there now. We then use that as the basis of “What’s right for us right now and in the near future”. All I can say, is that at some level you have to depend on someone else. If you truly want your code to be completely reusable, you’ll build that into your software’s model and write an abstraction layer over E3D. That way, if E3D goes away, it will be much simpler to switch your code to use a different engine. E3D makes the assumption that LWJGL will stick around. If it doesn’t, it will have to be modified to work with another GL solution (JOGL, etc). However, E3D was written keeping that in mind as to keep that potential switch as painless as possible.

Nothing is forever, especially in tech/software. We are currently choosing Java as our language of choice for our projects. Who’s to say 5 years from now, that you won’t want to start writing “Your Game v5” in the latest greatest X language? That would require significant porting and time as well.

I understand investing in/choosing a platform. I hope to provide a platform that people will feel comfortable with in time. I understand right now its new, its immature, it has 1 developer, etc, but doesn’t every project start that way? If I fail at that, people won’t be left in the dark, I’ll bring on more people,or I’ll open source it. Every project will fail if people are too reluctant to see it for what it is now and try it. There is no “perfect” product/platform that will be available forever and will provide increasing features forever. Everything will change, its just a matter of time.

[quote]Well, ok, I think that would fulfill the GPL requirements, but I don’t think anyone creating a commercial game is willing to release the source code under GPL while the game is still selling (yes, I know about Quake etc. :)).
[/quote]
Cas released the source of AF and he’s also planning to release the source of SD soon-ish.

There are also some indies who gonna pick up the Q3 engine when it gets GPLed by the end of the year. They’ll make a game with it, sell it and they will of course release the code to the public.

I don’t see a problem with that.

Everyone can get a crack if he/she wants to. And if you can buy the game for 20$, why should you spend several hours for getting an unrestricted (but still incomplete) game? It wouldn’t make any sense. So, you won’t lose any sales at all.

Most people won’t pay the price of GPLing their code for things like a small library, but with Q3 you get a complete solid engine together with a nice toolchain and tons of tutorials. GPLing your stuff is a really small price in that case.

Too bad that I dislike C so much :slight_smile:
Too bad that JC didn’t pick Java for the VM stuff :wink:

I’d also like to chime in and say that the actions of having the source code available and charging a license fee are not at all mutually exclusive.

It is a nice protection having the source code available whether or not you have to pay to get it.

I am working on a commercial project where one developer decided to keep the source on his computer, and provide only obfuscated binaries for a while. Before he had a chance to send the source code, his hard drive died. This is highly unprofessional, but it did happen.

Will.

[quote]A 3D engine is not merely a product, it’s a platform. Platforms are only useful if they evolve over time. There is a strict difference between something like OpenGL (platform) and Quake 1 (just a product). When people purchase a platform, one of their base assumptions is that it will evolve; a huge part of why they buy it in instead of rolling their own is that they see value in having a platform that evolves wihtout them having to pay for the evolution. In many cases, the evolution of the platform is the deciding factor that convinces people not to re-invent the wheel: “we know we can develop a new X cheaper than we can license it, BUT…we also know that continued development of X is going to cost us far far much more in the long-run, hence it’s cheaper to license than to re-invent”.
[/quote]
This is an extreemly important point.

In fact this is a big advantage of the Java platform itself. It doesn’t matter what direction computing takes, Java will (or at least can) be there. If in five years, Linux or Mac has 20% of the market – no matter. When the CPU companies introduce new features or change architectures – Java can take advantage of this.

The Java3D fiasco has certainly made me very wary when looking at closed source technologies. It seems that the size of the company is not nessesarily a guarantee either.

For this reason, in my game, I am careful not to tie myself too closely to any one API. In terms of 3D graphics at the click of a button (literally), I can swich from LWJGL to JOGL and likewise for input. My project is quite tied to Xith3D, but as I have the source code and am capable of make changes, this does not concern me.

One must asses the risks involved with adopting any technology. The cost of porting your code to a new API should the one you are using go belly-up is extreemly high, and this risk must be accounted for.

Will.

Very nice summing. That’s exactly why I love Java and already became exited the first time I heard about it (back on the Acorn Archimedes it’s been).

To E3D:
First I think it’s great when there’s another high level 3d API for Java - welcome onboard, Curmo. :slight_smile:
Second I think that closed source projects and open sourced projects can well live next to eachother. However I see your point in suggesting that a “platform” like a SG be open “in some way” to its customers. Maybe for the future some kind of “commercial open source E3D” would be interesting.
Btw if you use one of these full blown commercial high-level 3d APIs for Cpp, you usually also get the source code. But it’ll take you a lot of time to delve into it. How many years did it took Raven Software to gain the knowledge to change the Quake2/3 source code to their needs?