jKılavuz - a guide in the polygon soup

Hello,

I’m proud to announce the first public release of jKılavuz: the first and only available path engine for Java.

jKılavuz consists of an extensible set of tools for collecting pathfind data and finding and executing paths. Despite the complexness of subject it is designed for ease of use.

jKılavuz is written in Java 5 and is pure Java.

jKılavuz can work on almost arbitrary geometry. To collect pathfind data, it flood fills over surface starting from a set of points on ground. This way a kind of 2d grid in 3d space is created which can take us up or down slopes, across bridges and over and under overpasses. The process also takes care of jumping over obstacles and gaps. The default implementation uses jPCT’s collision detection system but a custom implementation may be plugged. Later this massive information is collapsed into sectors and portals which are then converted into a very compact form to use in runtime. All the process is automized although users can intervene. Custom portals can be defined for elevators, teleporters etc.

Pathfinding is performed among sectors and hence can be considered as a hierarchical approach. This makes it quite fast and efficient even for very large maps.

jKılavuz provides the necessary methods to actually execute the found path. It provides a clean and uniform interface to iterate over paths over time. The iterator is suitable for both fixed and delta time approach. Paths can be merged and customized in certain ways. Users can still create their own executable paths by using Lego like path segments.

More can be found on http://www.jkilavuz.com

Here is a web start demo where jKilavuz is applied to a Quake level.

Move the camera around and click anywhere on the map. If the clicked point is reachable, markers will be placed on the corners of the path and the avatar will follow them. Press F to follow avatar and return back to free camera mode again. Although very unlikely if avatar stucks press R to reset to starting position. Use arrow keys, A, Z, S, X to move the camera around, Control to strafe, V to visualize path finding sectors.

Here is a shot from demo. Top view with sectors visualized

http://img157.imageshack.us/img157/8393/topviewke8.png

And this is how our grid looks like. Notice how the found path goes upstairs passing over itself. You can see the cells (the small circles), transitions between cells and sectors and portals here

http://img265.imageshack.us/img265/4803/gridpanelpw4.png

r a f t

here is an interesting A* application: nowadays a puzzle is traveling with email: take a car out of a maze where turn directions at corners are restricted and predefined. below is an image of the puzzle:

http://img249.imageshack.us/img249/66/carpuzzlexo1.png

a copy of the original interactive power point version of car puzzle can be found here

and this is an A* based solution of puzzle based on jKilavuz’s generic A* implementation :wink: it’s a demonstration of how A* can be used for different search problems

r a f t

I’m really impressed with the API you got there, and it seems you target it at the professionals on your website with those licenses.

There is one thing that should be quite easy to fix:

[quote]As grid storage depends on java serialization and future versions may
not be compatible with current version, it’s also recommended to backup code
or script pieces which creates the grid.
[/quote]
Get rid of that - not only the text, just fix it. If you’re pointing out the downsides to potential customers that might just be about to spend that $1000, you’re really are making it hard for yourself.

thank you Riven, i’m glad you liked it ;D and yes i aim for professionals although jKilavuz has a limited freeware option

you may have point here. indeed there is nothing to fix. most possibly such a version break will never occur, i have serial version id’s set , in case of a data structure change a conversion is almost always possible etc. what i was trying to say was like a disclaimer. there is a minimal chance that this may happen, but if it happens dont blame me then… just like the statement in almost all licenses: we dont accept any responsibility if you get harmed by this product