Monday 30 July 2007

Draft billboard tree

I will have to test it on for optimizations, but billboard trees are definitely nearing completion. Screenshots added. Lod modeling possibility in a simple way is included with this new feature.

Marketing meanwhile

Since the release time is ticking fast. freegamer has post about it with kind words again and a screenshot too. Thanks a lot! The project has got into the softpedia collection too, not a surprise as sourceforge projects usually get into it quick. By Charlie's advice I have started a Help Wanted topic on freegamer forum too. If interested check the topic there. Meanwhile I've been able to put together a partly billboarding vegetation Node for JMonkeyEngine and ngplant generated models. It replaces the TriMesh batch of leaves with billboarded quads. Tricky! :-) So expect soon some new (although similar) tree models that has billboarded and animated leaves (or better say foliage texture). Hopefully with that a whole lot of polygons will be eliminated, but still it will look better as you won't see foliage that doesn't face you. Screenshots soon!

Saturday 28 July 2007

All things put together

Yeah, it's release time again. Highlights: "many changes ranging from memory bug fixes, optimizations through new bloom effect, billboarded sinusoid moving vegetation to model casted shadows." Download from sf.net if curious. Hope you will like it. Check your config.properties if problems with performance!
P.S.: Don't forget to report back your experience! ;-)

Friday 27 July 2007

Beast of the Shadow

Hours and hours of suffering. Yeah. And more again. :-) And yet in the end I found the fountain of knowledge! Polished out, hunted down some memory monsters (put in some caches in for grass textures), and a recursive Occluder remover function...arrived at the Gates of Shadow.

The road was rocky to say, had to find some wiseman to help on the way. But knowing that lighting mode for the JME shadowpass must be Modulative instead of Additive if using transparent textures helped tones, and finally finding the stencil bits variable of the JME app put together all the pieces. Right after only small polishing followed...and the shots for you! Check SVN for live action, expect very low FPS! ;-D On my 8800GTS I had to keep it low with a 20 RENDER_SHADOW_DISTANCE and a 10 RENDER_DISTANCE with double grass, gave around 30-40 FPS, still usable, but I admit, not too good values... Yet trees and many things can have shadows now for the eyecandy (?) lovers, and that's something. Hope they won't hate its simplicity although! ;-) (Now only billboarded grass is my concern, and I visualize that once I will write maybe one dynamic tree generator too, if not will I be able to billboard the leaves of the current trees, which is still not impossible, we'll see...)
P.S: Under Windows with my 6200Go I had some opengl error issue, that may persist (although I think there may be some improvement I couldn't test yet but on my 8800GTS.). So if game (SVN version) would crash, turn Shadows off in conf.properties.

Thursday 26 July 2007

Hacking away

Huh, I've hunted down the cause of some weird blueness in the grass. It seems the textures alpha channel is not preferred by JME when alpha state is blending. I had to set a higher alpha reference value to the AlphaState of the grass quad!

Some new config.properties added, DOUBLE_GRASS and CPU_ANIMATED_GRASS. Vertex based sinusoid waves are being run by the top of the grass quads as NaiveVegetation has been further worked on. It looks much better than the previous wind effect, much like professional ones, hahh! ;-) Check out SVN repository for all the experience.

Wednesday 25 July 2007

Night darkening

Finally I've found the first simple solution for quad grass colorizing for light conditions! The vegetation quads are put in HashSet for easy access in 3d core and their solid color is modified with light conditions lightpower. Combining with the texture it looks usable! Also fogstate color is updated now to the lightpower. Screenshots for day and night follows... (Started to work on vertex shader programs too, maybe I will get something done later. Until then you have the CPU moved grass only! :-) )

Bookcase in the North

I've added one of Harek's contributions to the game. It's inside the house, on every north wall for now! :-) Thank Harek that we have that great sight now! I plan to add his table and chairs too later soon. Meanwhile I had problems with the grass not darkening with the lights going down... I will be working on the solution.

Tuesday 24 July 2007

Blooming panorama

JME gives an easy access to bloom render pass if your video card supports FBO and glsl. Let me show you two screenshots, one without and one with bloom on (you will be able to configure it in config.properties):

Video for the lazy

Someone asked for a video of the moving grass. Thinking about it, I've decided to record a demo video and share it with the ones not able or willing to check out SVN repository or people who just want to have a first look at the game without big downloads. Here you go!


I've uploaded it on youtube, it is rather low quality, but I hope it won't scare away anybody, [ironic] I assure you the game looks much better [/ironic]! :-D It was recorded on an Nvidia 6200 GO, RENDER_DISTANCE set to 5, RENDER_GRASS_DISTANCE also 5. fraps utility ate away my FPS ;-)

Monday 23 July 2007

Windpower to the grass

After some hacking around with the NaiveVegetation java code I couldn't find a nice way to improve the look of the grass. Tried to set quads' rotation with no success, so now I won't force it anymore. Anyway while doing this I found a simple way to represent wind on the grass. Now it's moved around small distance with a moderate or high frequency, depending on the power of the wind. Although we don't have the climate's wind connected into 3D space's windpower, but it won't be a hard thing now to do this at least to the grass. Check out the SVN repository to look at the dynamically oscillating grass! :-D I hope it will look cool with a high windpower and the lightning strike effect which I plan to add later (at least a flashing is planned be added to the storm effects if not the view of a lightning).

Sunday 22 July 2007

Camera please look there, right?

Huh, after some hours and hours spending with jme Camera settings finally I got it to the needs of a Classic Input Handling turning/looking this and that way... In the end (after many rethinking how it may work and how it should be done and several different coding approach that failed) I could create the right rotation matrix calculated from an origo direction vector and the new direction vector, thus I could multiply (rotate) the Camera's Left and Up axis (which is a must for culling the 3D scenario). The Left and Up and the Direction must be a valid X/Y/Z axis and must describe a correct view of the scenario in the given direction, or the culling will remove parts of the scenario that should be visible...Now let me share my final code that was good for turning AND for looking up and down (the last one needed a two step rotation) (notice that there is a tricky -1 multiplication if the to direction is the original direction's opposite):

/**
* Sets a camera's direction to a new x,y,z dir, setting its Up and Left too with rotation matrix with an internal direction setting,
* good for look up/down (needs a two step rotation).
*/
private void setCameraDirection(Camera camera, Vector3f internalDirection,
float x, float y, float z) {
Matrix3f rotMat = new Matrix3f();
Vector3f dirOrigo = new Vector3f(0, 0, -1);
Vector3f left = new Vector3f(-1, 0, 0);
Vector3f up = new Vector3f(0, 1, 0);

if (internalDirection != null) {
Vector3f dirNew = internalDirection;
dirNew.normalizeLocal();
rotMat.fromStartEndVectors(dirOrigo, dirNew);

rotMat.mult(left, left);
rotMat.mult(up, up);

up.normalize();
left.normalize();
dirOrigo = dirNew;
}

Vector3f dirNew = new Vector3f(x, y, z);
dirNew.normalizeLocal();
rotMat.fromStartEndVectors(dirOrigo, dirNew);

rotMat.mult(left, left);
rotMat.mult(up, up);

// this code is needed for Y axis bottom-down problem...
if (internalDirection != null && internalDirection.x == 0
&& internalDirection.y == 0 && internalDirection.z == 1) {
left.multLocal(-1);
up.multLocal(-1);

} else if (dirNew.x == 0 && dirNew.y == 0 && dirNew.z == 1) {
left.multLocal(-1);
up.multLocal(-1);
}

up.normalize();
left.normalize();

camera.setDirection(dirNew);
camera.setUp(up);
camera.setLeft(left);
camera.normalize();

}

To summarize this will mean correct culling (now with look up and down too!) and more FPS! :-D

For those who are under windows and want to try the pre-alpha snapshot release and don't want to buy rar to uncompress the jcrpg.tar.bz2 file I will post here a link to a free bz2 utility: http://gnuwin32.sourceforge.net/packages/bzip2.htm

New contribution to jcrpg!

Great news! Harek (also known as Shynko on ubuntuforums) has just submitted his first contribution to jcrpg! And thus jcrpg has got its first weapon ever, and Harek entered the Hall Of Fame of jcrpg!

Currently the 3D part is still being worked out, some minor issues must be addressed before going on...

Friday 20 July 2007

Mountainside view

Working hard on mountain and its steep sides plus the flora on it... Want to make it nice and resemble the other parts... now models can be said to be rotatedOnSteep and Cube tells if it is a steep and in which direction and flora tells if it grows on steep... check the screenshots! I've still some annoying problems with setting jme Camera viewpoint...upgraded up and down keys to move camera up and down and then don't turn back. All is checked into the SVN repository!

Thursday 19 July 2007

Did I say Release?

Yeah, again, 20070719... the headlines: "Optimization, added textured dense ground flora (e.g. grass), configuration file for performance related settings, some new models, and distance based fadeout fog." Go to sourceforge, and have a try! :-)

P.S.: A quotation from myself: "Second, pre-alphas are released to let people test and report such things as performance, opinion etc." Please consider reporting me! ;-)

Flower power

Colorized grass to make things a bit less dull. Do you like it? The colors and such. And yeah, check the jungle dense ground flora too... I've cleaned up SVN a bit too. That's all for today, folks, hope you dig it.

Performance concerns

We've just received comments regarding the performance of jcrpg. The grass recently added to the game has stirred up Harek's attention, and Harek along with DragonBait shared their ideas about the performance of the game. I want to make it more clear and remembered a few things about the issue, so I will publicize it as a blog post right now! :-)

Harek: "it would be a good idea to have a lot of options to how the game looks so people with slow computers can crank the options down so they can get frames per second instead of seconds per frame ,and people with high end computers can make a little more justice to the price they paid for thier computer. ..."

Me: "It's already a concern how to make it run on low-end gpus too! That's why I've put performance related options in a separate configuration file too. As you can see grass will be made optional and view distance of grass will be parameterized too.

Second, pre-alphas are released to let people test and report such things as performance, opinion etc.

So please use the pre-alpha, and if you can, report back your FPS values/system config specification. Soon, if most of the fauna will be complete and 3D perfection will be finished too, there will be a configurable pre-alpha binary release. There you will be able to test your config with jcrpg, and report back to me your experience."

Wednesday 18 July 2007

3D is like drug

I couldn't put down 3D enhancement programming (despite my planning so :)), and dig up some heap of infos about batch geometry, big quantity vegetation generation, nvidia white papers and finally I've found a solution on JMonkeyEngine forum for the needs of my grass generation! A simple big quantity of textured Quads will suffice my needs for displaying grass and such flora, combined with a simple NaiveVegetation captured from the forum. Now I've a prototype screenshot here for you... (but consider, you will need a better GPU for that to perform well! I've around 20-30 FPS with a dense forest Grass on, render distance of 5 and the GF6200GO, while without grass it is around 60-70 FPS. So grass will be optional, with settable distance and such.)

Monday 16 July 2007

jcrpg on Bard's Tale News!

Wow, jcrpg received attention on Cheek.Org's Bard's Tale site! :-) I've been reading the site lately so it's fun jcrpg made it into it! Thank them! Also thanks for linuxgames.com for posting my news submittal again! :-)

Configurable for the end-user

The project received its second configuration file. It's called config.properties, is in the root of the project directory, and currently contains 4 performance related settings. Feel free to use it, you have to check out the source from the SVN repository for that. Most important setting is RENDER_DISTANCE, you can set it to a lower value if jcrpg eats your GPU/CPU with higher values.

Also the memory eater has been located end removed, and some cache aging algorithm has been implemented in SharedNodeCache and (model file) BinaryCache for memory use optimization.

P.S.: The new great pine and distance based fog fadeout is in the is in SVN repository too.

Sunday 15 July 2007

Make it fast if you can

After realizing how fast jcrpg has reached a need for performance I spent the time with trying to optimize things a bit. I've put in some new caches for RenderedCubes, replaced the ground with planes with less polygons and experimented with other things like low quality textures. All is committed in SVN, with some newly colorized sky and grass for making continental parts more lively...and also a serious memory eater is there too unfortunately which I will have to find later... I hope I can finish the optimization soon, as I've already begun to mess with climate and weather dependent environment models... which will be a tricky part... and then on to the next big chapter: wild life. Huh, hope to reach it soon... The results for today is a lowest 40-50 FPS with mipmaps on a 6200GO (mipmaps off is a bottleneck around 15-20-30 FPS), and around a lowest 60-70-80 FPS without mipmaps on a 8800GTS.

Saturday 14 July 2007

Release me one more time

Yeah, I've had enough of modeling trees with ngplant and blender, so after finalizing the basic tree models and adding one bush to the collection it's occurred to me that it is high time for a new release! Please not that on my low-end test card gf6200go it is beginning to have rather low FPS, around 30-40-50 near forest. The release also contains the novelties in the 3D core like mipmap, LOD models, use of alphastate. Here are the finalized tree shots too:

Friday 13 July 2007

Going on with plants

Some shots, and seemless tiled ground textures by the advice of Charlie: Edit: Added new screenshot with mipmap enabled rendering (which boosted performance a bit too) by the advice of Mark (read comments)...

Thursday 12 July 2007

Trees reborn

I've spent several hours with creating the new trees...they aren't as perfect as they could be, but for now they will server their purpose for a time. We have the acacia, the cherry tree and the pine reborn. Look at the screenshots. Created with ngplant plus uv mapped with blender. Some ground textures have been replaced too.

Wednesday 11 July 2007

Back in the business

Hey, people! The blog continues. I've no new screenshots only one interesting link, and the fact that I have shot a lot of nature pictures and many images probably suitable for plant textures. Now to the link. jcrpg has been mentioned on blendernation.com, which resulted in a thousand hits in the last days. Thanks a lot the author and the page for giving attention to our early-stage project! That's all for today.

Thursday 5 July 2007

Bonus content

...from my garden's leaves a new transparent texture. See you next week!

Trees revisited - transparency

After several hours of hacking around with JME and the suggestions here and there that the trees are just not good enough, finally I cracked the nut of transparency! :-) Later this week and next I will shoot tree foliage with my camera, so that we'll have nice trees and bushes maybe. For now see this simple example tree with transparent texture generated with ngplant @ sf.net. UV mapping done with blender, and exported to 3ds. Perfectly working.

Notice that I will be away from tomorrow till next weekend, so expect no updates meanwhile. Until then, dream about classic rpgs and collect your ideas that you may share with the community of jcrpg framework, or check out the sources from SVN repo for enjoying the new tree in action too. ;)

Thank freegamer @ blogspot.com again for mentioning the progress of jcrpg.

Tuesday 3 July 2007

Fighting through JME

I have had some mostly frustrating but successful battle against the pitfalls of JME 3D programming. I had hard times learning it and I am still a noob... finally I got some optimized 3D bounding and culling (with some things to fix yet, but working), lens flare effect, and the new rotating SkySphere. Check SVN and/or the screenshots!

Monday 2 July 2007

Misteries of Astronomy

Yeah, the World's on its who-knows-which day of creation got Night and Day with orbiters around. :-) A number of arbitrary orbiters can be added to the World's WorldOrbiterHandler and the 3D core will take care to display it. The code needs some cleanup and more robustness, yet it has visible signs of its workings already! Here are the shots... ( look at the changing shadows, yeah, but don't look into the sun for too long! :-) )

Sunday 1 July 2007

Combat System

A few weeks ago I've posted about races and classes, based on some comments that I didn't want to remain in the darkness of the comment pages...the same now with the combat system discussion in yesterday's post's comments:

Dragonbait: "Eye of the Beholder trilogy was great with the exception of having to be quick with the mouse, and also be mouse click trigger happy. No future hand/finger clicking medical problems please.

Best to be able to use the keyboard for all functions and to be able to take your time when needed. Though while still having the ability to use the mouse would be nice.

Keeping that in mind it still would be nice to have some "time element" to it much like Bard's Tale II when you have to finish a specific quest or puzzle within a certain time, like having Hit Points Drop while figuring out a puzzle etc.

Also having the more tougher monsters come out during the night hours is a must."

I like the ideas found in DB's comment! Although yesterday mentioned "Time" element was primarily meant on the changing weather/light conditions, but it was the right comment on which I could start to write down my ideas about combat system and time relation:

Me: "First of all: the combat system that I intend to implement firstly (there may be various other combat systems implemented in jcrpg, as this is mainly a framework, so more then one combat systems may be contained in it), so what I intend to implement is mainly the legacy of Wizardry 7 and with your (blog readers' commenting - Paul) precious advice other games like Devil Whiskey and Bard's Tale (in which I am not too professional, although I played both of them to a certain extent, Wiz 7 is the one which I played over more then once.)

For those who don't know it, it is basically a turn based - tell what you want to do in advance (stateful programmed automaton like) combat system. So place for strategies, different variations. :-)

One more thing that I want to add surely is the way to play the game through without actually the need to kill anyone. There will be good alternatives, instead of killing one you may make him unable to fight, throw him in jail, or use your diplomatic/thief skills etc."

Twitter