New!: FECK forums available for discussion

The code written here was mostly written by me, KevGlass, with a lot of help from the fine folks at freenode.net#lwgl and http://www.javagaming.org. Where source was derived from other works it should be noted, if it's not, let me know and I'll rectify it post haste.

Everything here is free, to use, copy or laugh at unless otherwise stated (i.e. if someone elses license says it's not). It's intended that you copy what you want out or use it as reference rather than getting dependent on this source tree that will always be changing.

Right now there is no plan for providing the code here a library, so be aware it will be changing frequently.

Please Note: This isn't an engine, scenegraph or anything else. It's a bunch of utility code useful for writing certain types of games using LWJGL.

The code is split into a series of chunks covering some of the stuff I've looked at in the past few months. It's all based around LWJGL but might serve as an example for any rendering technology. The complete source is available here. All dependent libraries should be available here.

ModuleDescriptionSourceJavaDoc
game Source code for the beginnings of a project named Always Summer Days. This includes examples of how to use the other modules source JavaDoc
render Everything for getting stuff on the screen including game state framework, model loading, textures, display list and vertex buffer handling. source JavaDoc
network A whole bunch of stuff wrapping up a message based networking layer over the top of TCP or UDP. Reliable transit, distributed simulations and message batching are implement. This is not a fully tested library and should only be used as reference source JavaDoc
sound A bunch of classes to wrap up playing of PCM data through OpenAL. A simple OGG decoder utilising jorbis and jogg and a simple manager for cached sounds. source JavaDoc
ui A framework for UI based on top of the render module. Includes bitmap font support and a bunch of components for creating simple skinned GUIs in OpenGL via LWJGL source JavaDoc
util Utilties - or rather the place things get put if they don't fit anywhere else right now. This contains a simple Log wrapper that can be implemented however you please, path finding and basic tilemap data support. Also contains a simple JInput/LWJGL Input wrapper for supporting controllers from the state (Thanks Onyx!) source JavaDoc
test A set of test code for some of the packages above. Sometimes ueful as example of how things are meant to work source JavaDoc

Hi, a lot of nice stuff you

Hi, a lot of nice stuff you have here. Being an amateur who hasn't coded much in five years, I thought I'd come by and check out how you did sound, as I knew you had a framework in place. Noticed something weird though, the Sound class' pause and resume functions use SoundStore.get(), while the Sound object has a reference to the SoundStore singleton, shouldn't they just use store.pauseLoop()/store.restartLoop() instead, wouldn't this remove about a nanosecond of overhead?

You're absolute right, fair

You're absolute right, fair point. I'll update later. As you say, it's more a style thing than a performance issue.

Kev

That's just cool! I am

That's just cool!
I am currently looking at "feck" and the Asteroids 3D tutorial and must say I am quite impressed!
So much impressed that I plan to create my own little LWJGL game framework based on stuff from feck and the Asteroids tutorial.
Things I realized: The Asteroids TextureLoader supports many file formats (using AWT), the feck TextureLoader only supports TGA. Why is that? To keep feck independent from AWT/Swing?
Also I tried to start the Particles test and it failed with my own particle.tga - some unexpected end of file error. Another tga worked fine. Are there different TGA formats?
Another thing: Seems the game loop in feck does not yet work like the Asteroids tutorial game loop in LWJGLWindow class with the usage of 10 ms updates and a final update for the remainder ms and a render. Do you plan to sync those?
And last question: How often do you update feck? I realized that my last downloaded version (yesterday) contains more and improved stuff than the version I downloaded months ago (out of curiosity).
And very last question: Would you consider creating a forum for feck?

Anyway, many many "thank you"s for helping LWJGL and OpenGL newbies like me with such wonderful tutorials and source codes! And the classes are well designed - it took me only a little while to get stuff working! Hats off!

Cheers,
Tommy

Tommy, thanks for

Tommy, thanks for commenting! :)

I've just opened some forums over at http://forums.newdawnsoftware.com/index.php so FECK discussion is easier. However,

The asteroids texture loader how no qualms about being dependent on AWT/Java2D (through ImageIO) - it makes it simple to understand and flexible for tutorial purposes. For my main code I don't want to be dependent on AWT/Java2D since I natively compile with GCJ to get the size down and don't want to be dragging in AWT. Additionally the ImageIO loading routines are painfully slow. TGA loading is really quick and once you've consider that you're going to be sticking the image in a compressed JAR in the end anyway - the size really isn't a factor. However, the FECK TGALoader only supports TGA's with no RLE (run length encoding) and only really in 32bit properly (i.e. with an alpha channel)

The game loop in Asteroids again is kept very simple for learning purposes - however, in my main games I prefer a fixed logic step - it makes physics/collision easier to handle and more importantly makes results repeatable on all platforms. I've learnt this the hardway with Tiltilation.

As you can see, I've just opened a forum for feck so feel free to come along and post more questions. I'll do my best to give you honest answers - even if the answer is "cause I like it that way" :).

Glad you found the code useful!

Kev

Hey Thanks, i was looking

Hey Thanks, i was looking for some sources,
and i found what i need..

Greetings from
Cali Colombia.

Awesome stuff, thanks a

Awesome stuff, thanks a lot.

A question, the resources used in the test classes are available for download?

Thanks again

Some of the resources are

Some of the resources are copyright so I can't officially distrubute. If you search around you might find them somewhere.

But where can I get the

But where can I get the models from? They aren“t includet in the jar - File...

to be honest, do you want to

to be honest, do you want to be spoon-fed all the way? the code is there to suport and model of the correct format, so why not just look around for a model that looks nice to you and mess around that way? you never know, you may even learn something else along the way :)

oops! . not able to correct

oops! . not able to correct typos so my apologies for that.

Comparison to Slick.

Comparison to Slick.

Hi Kev, how does FECK compare to Slick?

Cheers

FECK is/was a dump of my

FECK is/was a dump of my code base at the time. It's not supported a great deal and isn't updated regularly. There's no official build it's intended as a bunch of example code to hack about with. However, it covers a wide range of areas including 3D rendering.

Slick is regular library for 2D gaming. It contains alot of the 2D stuff from FECK updated and with a simplified interface. It's intended to be used a library and gets regular updates, bug fixes and feature adds. It is however totally focused on 2D games, nothing else.

Hope this helps,

Kev

Yes that's very useful.

Yes that's very useful.

I was wondering if I needed to use both FECK and Slick, but that answers that one. (being from the UK, I assume you watched Father Ted.. FECK? lol)

You should put an obvious link to Slick on this site because I am going though the test code and finding it very useful for a newbie ;) But it was only by pure chance reading about Kitipong that I found it.

Cheers
Rorige

FECK! ARSE! ETC! Yeah, I'm a

FECK! ARSE! ETC! Yeah, I'm a big FT fan :)

I'm not making a big song and dance about Slick yet, it's only been around a few months so I'm trying to build up a bit more stuff before rolling it out to any one on a large scale.

Even so, thanks for checking it out! :)

Kev