Tuesday 23 December 2008

Musical Focus

Me still composing full-free-time, so no updates regarding code, only goq669 is coding for the options menu thing when he has free time. Till today I've created four new tracks to serve as background music for each of the current climate belts. I'm planning to create 1 more for each belt, then I'll consider it a complete first iteration of composition for jCRPG on behalf of me. :)

Thursday 4 December 2008

New Music on Jamendo

Okay, so here we go! I've committed the new soundtracks to the SVN plus made it available on jamendo.com, the CC licensed music share site. Here you can listen to all the three new tracks created by me for the game. I have used rosegarden + dssi-vst wrapper (vsthost) + vst plugin to create and play the music (recording was done with sound-recorder). Integrating the music into the game is mostly complete though with some known replay issues, that I still have to investigate a bit more. Anyway, you can fight and do the character leveling with music playing the latest SVN version. :) PS: Consider it a Santa Claus surprise ! Good or bad surprise? Share your opinion here or on jamendo. ;)

Friday 28 November 2008

Music creation update, carnivore plant

In the last post I mentioned that I've started to read about music theory and to compose some pieces. Well, since that I've not coded a single line for the game. It took away all my free time, but probably it was not worthless. Some tracks have been put together for combat, plus a victory fanfare thingy has been born. I'll clean up a few things, license it and will publish it here one of them soon and integrate them into the game. Meanwhile goq669 is coding to improve the configuration/options setting/storing/loading part. tidbit has created a brand new monster again, this time a carnivore giant plant! So things are going on their right way! :)

Sunday 16 November 2008

Bit of progress in Options menu and Unlock window

The Options menu is gradually taking shape, some options in it are already working like audio volume and some effects' setting on/off. Meanwhile I've started the create the concept of the 'Unlock UI' for locked objects like chest. It's gonna be skill based and will require no action, only a bit of luck + good skills. Thievery and spell based inspection/unlocking, nasty trap types are in the plans. The pace of progress this week is a bit slow as I have started to dig myself a bit into music theory and am trying myself at creating some items that may resemble something like music. It's quite fun, and I'm trying to make it useful for jClassicRPG as well by trying to create pieces in a suitable style for fantasy - hopefully sooner or later something not too horrendous to listen to might born. :)

Saturday 8 November 2008

Moving back to LGPL license

Since creating the new license will take much time I've decided to go and switch back to LGPL license till it's gonna be ready. Time told that switching the GPL was not as much a good idea as I thought it first. The different interpretations that are around the media<-> code relation made me change my mind. In jClassicRPG there are already such media that might be dubious to use with GPL in such circumstances. For example the new music by Jasper is CC-BY-SA-NC which is not compatible. Anyway, SVN now contains LGPL source code again. So you can use jClassicRPG as a separate library again if you manage to do that. ;) BTW, I'm back to coding again after pushing the license thing to a lower priority level. New music theme by Jasper is intergrated to game and committed to SVN!

Wednesday 5 November 2008

Main Menu Theme ready, and the 'fresh air' of License struggle

DarkStalion has just finished creating the complete version of the Main Theme for jClassicRPG! It's very well worth the listening, so don't hesitate to follow to his blog and grab it! I love it!

The big silence here at the blog for a longer period is due to the process that I'm currently in. The process of creating a new free & open source license for supporting easier free game development (easier from my point of view and with my considerations at least). There are already draft versions of the two planned flavors of it. Both are copyleft license flavors based on the Apache 2.0 license, appended with copyleft part. Copyleft means that it is required to distribute the sources of a work as well if someone distributes such work under the copyleft license.

The new licenses which are in the works offer patent license part, GPL compliance, non-conflictive nature, separative nature, copyleft nature, open source: the things that I consider important. I'm willing to use this new open source license for later releases of jClassicRPG to make it easier for those contributors to contribute to the project, who can't cope with some of the aspects of GPL-compliance for their media. Check this thread here about the creation of the licenses. (There's another lengthy but interesting thread about interpretations of GPL too here.)

There is two flavors of this new license we're creating: one is called Strong Flavor which contains stronger restrictions to make it stronger copyleft - redistributors of original work and derivative works has to make publicly available or distribute the source too. The other is the Weak Flavor, weaker copyleft - the redistributor only has to distribute or make the source publicly available if he distributes a new Derivative work.

If you're good at lawyer stuff, and willing to read it and suggest things, please visit the forums and reply!

PS: ah, after a half hour of thinking just after writing this post, we've concluded that the Weak Flavor is useless, so we've just dropped it (because redistributing a one copy distribution of a Derivative work would mean no source redistribution required only the very first time it's released, so it is basically very easily lost in the chain.)

Monday 27 October 2008

Good News on Music Department

Recently (if you read the forums carefully you already know the name) Jasper aka DarkStalion has come to spend some time composing a main menu theme for jClassicRPG. He told that he'll help out and he now has returned with a fantastic piece of epic fantasy music. He's still working on it, but it's already 3 and a half minutes long. I'm a big fan of music like this for fantasy RPGs, and this one just fits so well. Jasper at his blog (which has other interesting contents as well) has shared the unfinished version so you can hear and comment on it. Go and check out!

Meanwhile another musician has contacted the project just today through one of my friend and he already sent some samples.

So hopefully soon we'll have new music in jClassicRPG!!

Wednesday 22 October 2008

Storage Points for the Economics, 3D model integration

Working to add storage point generation to economics. Currently this means that I coding in the labyrinth part to scatter around chests in the depth of the mazes. :) It will lure the player in probably! :D The economics will know about their number of storage points. Also they are generating the world coordinates by overriding the base getStorageObjectPlaces method of Economics superclass. The storage points are where the so called Entity Common Wealth (the usable properties of the group that are not currently equipped on members) will be stored in different quantities in different storage objects (currently only chests). This implies that you will find only things in those storage objects that the group is possessing - or possessed til you've put your hands on it. :D

goq669 the new developer who joined to help out in some tasks is working on some enhancement of the UI part creating a SimpleLayout for easier page definition. Also he has started to work on the Options submenu of the main menu. It's going to serve for modification of game settings obviously.

Also I've integrated some old contributions (eyebat monster by Scofield and shortsword by andycon). Also added a model found on quadropolis created by deathguppie with CC-BY license, hellpig2. Luckily it's animated and in md5 format. :) Thanks for your precious work all out there!

PS: Forgot to mention a bunch of new audios were added as well. All in SVN for the testing. :)

Friday 17 October 2008

Small steps - shaders, bugfixing, integrating contributions

A short list what's being done: I've been working to provide normal maps for already used textures with gimp's normal map plugin. It's not as good as I would like it, but it's usable with some experimenting. A few bugs (like slowly flying arrow/knife bug) on the list has been hunted down meanwhile. Parallax Shader has got some improvement like pointlight/attenuation support. Also tidbit has provided his nice new model green lizard (labeled 'Lizzie' on the forum :)) with a texture and after some community feedback and eyeballing it has become a part of the SVN repository! :) Thanks go to tidbit, and ppl on the forum!

If you happen to be good at 2D texture creation (for 3d models), and/or have talent or already created normal/specular map textures for some generally usable textures + you would like to help jClassicRPG then it would be highly appreciated if you help the project with some new wall etc. textures with normal/specular maps.

Also animators would be much welcome as we have multiple models that would need rig and/or animation! Come visit to forum for more info.

Tuesday 14 October 2008

Parallax/Normal mapping support added to static batches

Been working on upgrading static batch elements with some shaders currently to make the maze parts looking good. Started with a new column with diffuse / normal map textures by Zphr. He used blender to model a high polygon column and then with the help of blender's baking and normal map facilities he created the diffuse texture and the normal map texture, and made a low poly undetailed version of the column. (After that seeing that the shader needs a specular map, I've created a very simple one out of the normal map texture by making it black and white and adding a bit of contrast to it.) Basic versions of a normal and a parallax shader of jME has been tailored to integrate into jClassicRPG. Check the screenshot, how low polygon walls and column can be made look more like high poly models with GLSL shaders.

Saturday 11 October 2008

Yay, got it running with latest AMD fglrx driver

Finally, the testing on AMD/ATi is made possible! I've found my mistake, I was not cautious enough when was removing old remnants of volatile kernel modules (restricted drivers of ubuntu). I just renamed the dir to fglrx__, which apparently ruined my whole upgrading process, DKMS kernel module of higher version was ommitted... But now I rule the box again! Though seems that only the latest version (fglrx 8-9) lets me start any jme applications, like jcrpg. And so it is running on the brand new card...ready for boarding!!

Thursday 9 October 2008

Monster leveling added, Struggling with ATi Card

Thanks to the generous first two donators of jClassicRPG I bought the AMD video card. It's a good working card, 2D is functioning now very nicely under Linux with the fglrx driver, but I have had no luck with the 3D part yet, so still struggling to fire it up...I bet it must be something related to some installer / configuration problem + the fact that I've previously installed nvidia drivers manually on that PC. (I even tried EnvyNG to no avail yet.)

Meanwhile I was programming the basics of so called GeneratedEntityMember leveling up, which should be called monster leveling for easier understanding. The creature's level (that are not PersistentMemberInstances = NPCs) will be depending on the group's level they belong to. Be aware: the boarman thugs and mages are appearing before you now skilled and with boosted attributes! :D - according to their level. All in SVN along with some concurrent use of hashmaps fix!

PS: okay, 3D is working now! I had to reinstall xorg parts (nvidia driver stole libglx.so :)) and do some reinstall of fglrx driver. But unluckily jcrpg crashes jvm upon staring with that card + driver. I haven't seen such thing. I'm trying to solve this new mistery now with the help of jme forums.

Tuesday 7 October 2008

[EDIT] Money donations reached limit - lead dev will purchase an AMD ATi card

This thread and this older discussion (MacOSX part) is pushing me to purchase a video card that otherwise I wouldn't buy (an AMD Sapphire Radeon HD3450 256MB DDR2 PCIe). (I mostly buy nVidia to make life easier as a linux user.) If you want to support the project's development and testing on AMD/ATi cards then consider donating some bucks with paypal. That way you can make me believe that there's a chance that open source development can nullify costs with the help of Free Open Source Software loving people and also I could continuously test the game on AMD/ATi cards. :) The project hasn't got any donations yet, but this is the first purchase that I would do only because of the project's need. The card would cost around 42$ or 30 Euros so the bar isn't raised too high. I do have that amount of money, but that purchase would represent my personal need only. Instead, let's see the real need of the project by own as you'll or will not show it to us. Can you people jump over that bar? I bet so (I'm superoptimistic)! :)

PS: As a first step I will add donation listing here in form of comments. (I plan to create a full list of donators as well.) First I will add them without name. If the person is willing to be listed with some kind of name (real or not), please drop me an email to illespal at gmail dot com with your real name (that should be in my paypal transaction log) so that I can verify, and add the name requested by you to the list of Donators. (It will be added to the SVN as well and to the releases.)

EDIT:
The donations have reached the limit needed for the video card and even got over it just in 5 hours!! (Read comments.) Big thanks to our first donators in the history of jClassicRPG!! I will buy the card in my favorite store.

Monday 6 October 2008

Still around the maze + Use Skill/Item window

With help of our great modelers we're progressing in adding new contents to the labyrinth. While doing so I've created my first more complex texture for tidbit's treasure chest. I've exported the outline from blender and used gimp to cut something together. :) The maze code has been improved to contain the new Greek style columns made by tidbit.

Some fixes here and there plus the new Use Skill/Item window (key F6) are committed to the SVN. The trick was (as I've learned today it's something already done in an old c64 game Mars saga) to use a UI where all the characters are listed and you can set what you want to do with them separately (like in the combat window), and fire all the events in a single event. If you do so it will play like a combat round, all the effects and logs are the same, as the same function is called as in combat. It works nice and now it's possible to drink some potions, cast some spells on the party. :) You'll surely find it weird as modern games doesn't handle UI like that but personally I think it's quite comfortable - because you don't have to repeatedly select chars and it also remembers last choices.

Tuesday 30 September 2008

Maze Doors and Textures

Slowly progressing towards a more complex and better looking maze. It's already easy to get lost - though you can always find a way out, as generation code is sooo lighthearted on the player. :) But heading the right direction. Little coding to include the doors into generation. tidbit's door models and texture and Zphr's new wall texture addition rounds up a real classy classic atmosphere. Thanks go out to them again! :)

Thursday 25 September 2008

More of tidbit's contributions + Work on Dungeon/Labyrinth

tidbit's continuously contributing miscellaneous models/textures that the project is in need of. Great job! Nice new textures for the misc objects, a new cyclops model, new pavilion for the storage area, fence, trunk-bench etc. I'll try to integrate them all as time passes. You can check the shot of the already integrated part.

Currently the main focus of my dev time is to create the randomly generated dungeon/labyrinth parts that will be scattered around the world of the game. Planned to be infested with monsters and loaded with ancient treasure. First the abstract generation part has to be perfected. Currently it's just starting to shape up but it's graphics is quite ugly. For this a new art concept is under work as well.

Thursday 18 September 2008

mediawiki downtime - only direct download

Due to SF.net migrations the project's mediawiki is down. Till it will be back please use this link if you want to download. I hope they'll get over with it soon... will update this post if so.
EDIT: good news, wiki seems to be working again!

Wednesday 17 September 2008

Publicity Sawteeth

We have had some booms of publicity around this month. Two major web nodes had published some lines and links on jClassicRPG.

The first in this short line was the popular RPG site rpgwatch with a longer article based on my submission. Our thanks go to Dhruin and the staff for giving some spotlight for us! Besides the nice number of webhits and the more fame -- unfortunately it has not attracted new contributors till now.

The second was again due to my submission on the famous blendernation. jClassicRPG was already mentioned on the site another time before, somehow they found us when the project was just a few months starting out. :) Thanks! This time it brought lotsa hits again and luckily one new contributor too! tidbit has already added nice miscellaneous handcraft objects (boxes, barrels, signpost and more) and a new cave entrance at the forum which is very cool as towns and cave entrances' look should have bigger diversity. Big thanks go out for tidbit!

Thursday 11 September 2008

Migrating jME version from 1.0 to 2.0

A long pending aspiration of mine has come to fulfillment! JClassicRPG's full sourcecode and dependency have been converted / changed to JMonkeyEngine 2.0 by me. :) JME 2.0 is called alpha but it is as stable as it should be by the overall experiment of the community. It also uses the new major version of lwjgl (2.0), which is also containing major improvements.

The conversion is mostly about using Enumerations instead of static int constants, removing multiplicity of the buffers of TriMeshes, removing the now non-existent TriangleBatch class usage, convert AlphaState to BlendState, use some new classes like Texture2D instead of the now abstract Texture class.

It wasn't too hard to migrate because in the end it turned out to be not such a hard thing to migrate the opensource md5reader2 library as well. It's a separate library which jcrpg depends on created by other nice jme people at jme forums, but who seems to be a bit away, so me had to do the conversion of it. You can grab the modified jme 2.0 version of it at the forums here.

You can get the whole new jcrpg with jme 2.0 compatible source code from SVN.

Tuesday 9 September 2008

Background thread for area loading, optimizations, bugfixes

Finally after two previous attempt to realize a working and fast parallel load of map I have succeeded. Now a separate thread is starting to load the area when you reach the middle of the previous render distance, so while you keep walking around it will load the things and with high chance you won't reach the limit of loaded area before the load of the newly needed area finishes in the background thread. It generally doesn't happen yet the rendering is prepared for that, if you reach the limit the background thread is stopped and a new foreground loading starts halting you walk. But this case happens really rarely if you selected the right level of detail for your PC's performance. Thus you will be able to walk freely without pauses with a dynamic background loading - in the next release that will come. Or if you check out the latest SVN you can test it right now.

Bugs...Long lurking culling problem of tree foliage now I could eliminate - GeometryBatchMesh spatial instance needed a buildMatrices to have the correct world rotation before being locked. Also I could fix some other annoying bugs - foliage of bushes rendered at high above the trunk sometimes and texturestate vegetations were wrongly repositioned while you walked around (both problems were related to reuse and wrong modification of position vectors).

A new RenderedArea implementation was born to fasten the loading of area - and it was a successful rewrite! Now it's 3 or 4 times or even 8 times faster than before in some cases. It includes a smarter calculation of areas to newly load and to remove. It calculates the newly needed and removable areas based on the disposition to the last rendered location vector. The other big thing was to define and implement a new getFilledZonesOfY for the Place superclass. Every Place extension (Geographies, Economics, Waters, etc.) now tells what Y height intervals are parts of them at a given X/Z location of the World. The information is collected and combed together and is used to determine what Y intervals to include in RenderedArea's rendering. This way about 4 or 5 times less World.getCube call is needed - only the really filled cubes are being requested by the loading process, empty positions are skipped. Naturally this leads to a much better loading time because of the nature how a world's surface is only consisting of a few cubes height even considering economic upon them.

Cool! :) Listing the things done since starting the optimization session: much more stable memory use (less overall memory needed), continuous appending of 3D scenario, background process for loading areas with no pauses, important bugfixes, better 3D performance/loading times.

Friday 5 September 2008

Improving Performance/Memory/Rendering

I've added a new kind of scene graph appending mechanism parallel to the normal screen update/render cycle! This needed hell of a lot changes, bug hunting, refactoring. Now it is done in little time slices between the draw of the frames to add a smooth walking experience. While you move in the world the new parts are added/updated/removed. This clears out the small pauses between each step that was present in the game before.

The whole thing is done in class J3DStandingEngine which is mostly reorganized to support iterative calls to different parts like organizing the addition/removal to batches, the actual update part where batch buffers are rebuilt, cleared, and finally locked. The J3DCore class (extension of jME's BaseSimpleGame) in its simpleUpdate function (which is run upon each update before drawing a frame) checks what iterative function must be still called in J3DStandingEngine. Thus gradually the whole appending/updating of the scene graph is being done.

Also a series of changes were made to the GeometryBatchMesh to optimize it further for my needs. Memory consumption is lessen by some of these changes. I've removed its unneeded tmpVertexBuffer, now it is commiting the batch instances vertex buffers directly (saving a lot of temp buffer allocation). Also removed its special AABB bounding box updater, and use the standard bounding volume update mechanism of jME. Yet I'm still hunting for optimizations and bugfixes. :)

All the progress and optimization made possible smooth rendering of much bigger view distances than before, although it can consume much more memory when extreme distances are set.

Monday 1 September 2008

Direct memory buffer pool and DDS

Well, it's been a long time since I had checked some really important aspects of the 3d core of jClassicRPG, and looking at that part I was a bit scared. :) Now it's not a secret, it's the memory consumption ratio of the game. But don't fear -- ways to improve are at hand.

With the long ago addition of an extended version of GeometryBatchMesh (created by Snylt @ jme) a new factor was secretly creeping into the memory usage of jCRPG: the direct memory buffers are heavily allocated especially because of the dynamic nature we use the batches, adding new batch instances every step walking around in the 3D world. In Java 5 and 6 there's this thing called direct memory buffers which is handled out of the heap of jvm for quick direct access e.g. by video cards. This speeds up things a lot with jME, so it's a handy thing. But there's a small problem with that (just like with the normal garbage collection), and it is that it's freeing is out of control of the programmer. This is not necessarily bad but in a game you would aim at controlling it - and allocate as little as possible because it takes time, fragments memory etc. jCRPG could end up with a big size of memory allocated to it rather quickly while walking around in the game.

Now my solution to circumvent the inability to free the buffers is the same as always: pool them! :) And it's mostly done committed to SVN repository. I've tuned GeometryBatchMesh to get and release its buffers from/to my BufferPool object. The handled buffer's size are always multiples of bigger numbers (say 500) and are limited down to the needed size (this helps the reusability of the buffers for different capacities). Thus the consumption is more or less stable and adds less stress on to the jvm's decision mechanism (how to allocate/free/reallocate). It's a good thing! :) I've even written a speedy QuickOrderedList to store the buffers in order of capacity with quick lookup/put/remove functions.

The other thing to lessen the consumption is the good old ace of using DDS files (which possibility I was not aware of till some days ago). DDS files are by default compressed (in sys and video memory too) and with pre generated mipmaps, quickening the load of them. I've started the process to migrate the textures to .DDS format with the help of GIMP and the GIMP DDS plugin. For use with jME I had to tweak the plugin's source ( mipmap.c's get_num_mipmaps() ) to add more mipmaps (jME DDS loader is picky about it, and accepts only an exact number of mipmaps for a given image size).

So the bugfixing, optimization phase is still going on... ;) (PS.: added two screenshot of my improved Depth Of Field render pass with 'bleeding' prevention.)

Saturday 23 August 2008

Texture Atlas technique plus better working Shadow map

Well, jcrpg now has texture atlas technique integrated. It's currently used for the tile system only. It means that a big texture is used for different tile ground types instead of multiple textures. This requires tweaking of the texture coordinates of a given tile before adding it to the batch. The bonus is that I can add different looking tiles to the same GeometryBatch (which has to use the same texture for all its polygons). Needless to say it means really a lot in performance - less meshes, less CPU load, and for the extra effect render passes it means less spatials to process. Big step ahead! (Probably I'll try to add it to foliages as well, mostly to grass effect.)

Also some tinkering around with the shadow map resulted in a nice screenshot. Beware - only nvidia cards have the smoothing effect by default, ati cards won't do this only if a shader is added...which I don't know when will be done because I'm noob at such things (as well). :) Also it is not perfectly integrated yet, it needs some more work and experimenting with it (when to add occluders, spatials to render pass etc.)...

Depth Of Field, extensive VBO, partially ShadowMap

After previously getting some good advice from MrCoder @ jme, now I've discussed a few things with Momoko_Fan @ radakan.org plus again with some hints from MrCoder - two major things could be achieved in one day - meanwhile a third is on the way to perfection. First it's depth of field effect. I love it definitely, far away things get blurred - and it's really nice that the shader used is a merge of bloom + DoF effect - two things at once! :) Now at last it pushed me to add a better handling of UI in a separate RenderPass so that bloom/shadow and other effects won't conflict with each other so much.

Also previously I've tried to use VBO but I remember having problems with it, some crashes or so, but now again by the advice of Momoko_Fan I revisited it and it seems things have become cleaner in jClassicRPG because now VBO seems to work pretty well... meaning a boost of FPS again! The situation is that it has come really at the good time 'cause I removed a 'cut off of rendered parts behind you' optimization to be able to reenable mouse-look.

So yeah, mouse look is also enabled now.

Meanwhile a new user contribution to jme is being done, so as a test I've integrated it - the ShadowMap render pass created by kevglass @ jme! It's working quite good although it has some smaller problems yet - probably they can be solved soon.

Good! :D All in SVN.

Wednesday 20 August 2008

Continental Renewal

I've changed some models, added some new textures and models in continental climate area to shape things to the aesthetic level of the jungle probably. Maybe it can suffice the needs of the classic style, some better base bush + small bush texture could be added later, but for now I'm rather content.

Sunday 17 August 2008

Starting Echoes

The released snapshot is starting to get some attention around the net. Some of you may have tested it, some of you certainly did and even reported me back with suggestions or bugs. This is really nice. We hope to get much feedback - even if you just tried and have something to say or just report success - that would be cool!

Qubodup at freegamer is one of the testers - a thorough tester indeed! :) He even made a video of it and made it public on freegamer blog! Thanks! I will embed it here too. On the suggestion of an anonymous reader I've added jcrpg to the retroremakes.com's list of games and forum.

Now here's the video at gamerstube.com for the ones who want an indirect look at the game:



PS: jClassicRPG has been listed on a recently created good looking Linux game database site LGDB. Check it out, new design and nice features!

Wednesday 13 August 2008

The 'Vigilante Eye' Release

Yes, we're ascending to the next level of our destiny through the obstacles of the great dev-eater beast of Tiredness and Desperation. We have entered the sanctuary of the miraculous Release again. Here we stand astounded and in silence, holding back breath. We are aware that something great surprising and of elemental effect may happen anytime. As we are there awaiting for some never-ending minutes, a booming sound starts to cite something strange, slowly - pressing each word. Listening carefully you try to memorize what's being told:

"
- Turn based playable Combat phase added
- New animated models (boarmen thug and mage by Zphr)
- New house and town models (by Zphr)
- New static monster model (kobold by Surt)
- Total redesign of jungle plants, new plants for continental,
- New Encounter Ground system that separates the encounter scene
- Inventory enhanced (equip,attach,give,drop)
- New Loot Window after combat
- Character leveling
- New ground tile generation system with smoothed ground
- New 2D elements, some refactored UI images
- Optional support for secondary ground textures
- Optional texture splatted ground tile blends
- New spells, skills, items, artifacts, objects
- Bard instrument concept available with one implemented item
- Particle system with lights for spells added
- Support for continuously playing sound sources like waters, forest ambient
- New environment & humanoid sounds added
- New Body Part system that enables critical impacts
- Optimizations: tree trunk batching, cutting of non-visible interior parts, more locking
- Bug fixes
- Far view mode is disabled till fixing it for the new ground system
"

Right after finishing these words, a glowing globe elevates from out of the darkness of Sanctuary. Yeah, now you know what awaits you, jcrpg next sneak-peek enchantment is in your hands like a crystal ball. It may be that it helps you to look into a distant Future... let the Trial begin!

Great Heroes, come and test your wits - play the game or create your own tormenting beasts! It's high time - because combat is ready to begin NOW!

Candidates for Testing and Modeling - don't hesitate!

PS.: Just this moment I decided to reupload the release with a bugfix - it was a major problem with non disappearing 3D models. The old one I've deleted so from now on the new and only one is the good one.

Sunday 10 August 2008

Complaints, New Models and Optimization

Zphr and me were working hard to finish the facelifting of jungle. Meanwhile Zphr provided the game with some extra nifty palm and bush models, I've started to look at optimization again. My new idea was to add billboardpartvegetations' trunk part to the ModelGeometryBatch. It is now handled separately of the foliage trimesh geometry batch - the trunk trimeshes are commited to a batch containing several other tree's trunk. This reduces number of meshes - reducing CPU and GPU load.
Also I've found a better way for handling internal Cave parts - there's now Cube's internalLight field which is used for cave entrance only. That part will use a turned off sky, while you move into the cave. This transition part will lead into the cave cubes' part which is now unnecessary to be rendered while you are totally outside (not in an internalLight cube) with the 'three-state' solution of ExternalCube / InternalLight / InternalCube. This whole boosted up performance again so much that I'm a bit happier with it running on my 6200Go.
Bad news is that I had to remove farview option because with the new smooth tiling generation the farview water is not working well just as the welding of farview geo and normal geo is not solved at all.

There were some complaints about the game on freegamer blog and here. About crash on OS X. If someone happen to test, please help out us on jcrpg forum!

Friday 8 August 2008

Jungle Plants Facelift

It happened to me that the jungle trees are not cool enough, especially the foliage was lacking some perfection. Check the shots for the new version. Meanwhile some bugs were resolved. One more bug till we're ready! PS.:Don't miss the texture based new vegetation shots either - I've added some.. :)

Wednesday 6 August 2008

More Sound is Cool

I've been working a bit on adding looped environment sounds and their sources. Now mostly all kinds of places have a gentle background sound - town, waters, jungle, forest. A lot of other new single time played sounds were collected and added - walking in snow, dog barking, crickets in the grass. It's pretty nice now walking around and listening to changing sounds. I love it! :D The new sounds are from freesound.org with no exception. A great place indeed! Zphr's been working a while to make his wooden house model even better! Now it's less polygon and the same good look. He's done a great job again! This is all in SVN. There are only a few bugs on my list now that separates us from releasing... Hurray! :)

Saturday 2 August 2008

InfrastructureBlockChecker - WaterChecker

These are a solution for not generating town blocks (street, houses) where a given geography part is not suitable for that. I've added some nice architecture for this: Economics (streets, houses, bridges) can provide a list of Checkers which are used upon generating the town structure in the AbstractInfrastructure class. The Population type also provides a list of checkers that should be scanning the geography at the creation of the Population at the given geography. Those results are stored and upon generating a given size level for the population the unavailable blocks for the given checker types of the Economic are checked and so it wont generate the Economic to unsuitable blocks. Now Rivers and Ocean is no longer overwritten by Residences and EconomicGrounds. But the nice is that Bridges will be able to be built upon the water - later, when we'll have them. :D

Now only a few other bugs till the release...

Thursday 31 July 2008

House fully reborn

Here we go again! :) WoodenHouse class is born to add some variety...you'll be able to spot a boarmen town based on the rooftype. :P Now only a bunch of things to fix on the to do list and we'll bombard you with the heavy weight release...

Wednesday 30 July 2008

Town Update #2

Walls and such have been replaced by Zphr's models. The roof is still the old, because that's the hardest part to replace - it has some 3 different models in the old version which should be carefully replaced later. :)

Tuesday 29 July 2008

Zphr's new town models, texture splatting in SVN

Check the screenshot, it tells the story! :) Soon, I'll add more parts of the already complete town model set done by Zphr. Texture blended with alphamasks is working now. So the town, steep mountain sides and climate edges look way cooler now. :)

Sunday 27 July 2008

It can't get any smoother :)

With a mindslicing TerrainBlock tricky extension the tiles are now using the normals as if it were a big normal TerrainBlock, not several ones - one per ground tile exactly.

In our cube based architecture the tiles have to be generated one by one, so normals were missing from the ground tiles because the separated TerrainBlock meshes cannot calculate with the vertex positions of the neighbouring tiles. Now the trick is - use the full RenderedArea's cube elements to get neighbor opposite/adjacent Cube's already present height data, create a one size bigger (9 points 3x3) heightmap and build vertices/normals from that heightmap for the original 4 cornered (2x2) heightmap's normal buffer. Uh, crazy to write down, but it's working. The shot shows how gooood. :) And it's not slow either luckily! :)

Friday 25 July 2008

Tiling on a next level - smoother slopes

No, not releasing yet. It will take some more time because after discussing the tile based ground thing with Zphr who were in big favor of some better non-45 degree ground gen, I've found a quite goodly fitting way to add smoother slopes to the game - using jme's TerrainBlocks on a per tile basis and adding some additional 'cornerHeights' to the geo generated Cube class I could reach something like a thing seen in Transport Tycoons' tiled ground - quads with an angle. Check the screenshots. Some more tailoring will be needed before it's completely usable (trees, grass and such, plus override for economics), but I think it worths the time! :) We have been discussing this every now and then since the addition of 45 degree slopes, but now finally I could find the way that fits the classic cube based architecture of jcrpg! I'm quite happy about this fact...

Monday 21 July 2008

Polishing before release + new 2D elements

Many small fixes and minor enhancements are being added to the codebase. New 2D elements were created by Zphr meanwhile. HUD main log is now 2 rows longer thanks to the 2D changes. These are all in SVN. Light effect was added to spells, turn act window inventory lists are supporting item icons as well now. Some new sounds were added. Encounter Grounds generation was perfected, adding Cave Encounter ground for example. Logging to console was moved completely to text file logging to help later bug investigation.

Thursday 17 July 2008

Nearing the next release

Well, although we're in summertime so I should expect low interest and low feedback still we're heading for the next release with ultra speed! Countless changes and improvements - again especially around combat. New sounds for spells, new UI graphics effects to easily spot who is doing things, flying 3D impact point counter for the enemies. Now you can quite easily follow the happenings of the combat with the cool turning encounter camera mode. :) Character sheet was improved too, added resistance point output to it. You can also try to leave a combat - in that turn you won't act, and if you survive enemy attacks you can escape. Neutralization social skills too have received real effect - you can neutralize enemies with social skills like Reasoning. :D Also some popups before starting a combat is added for better understanding of the situation. Zphr's actively helping out in the graphics part. Also Tranberry has created point bar graphics for the HUD bar elements! Thanks for them a lot!

Monday 14 July 2008

Zphr's BoarMage ready to kill + Encounter Grounds :)

Zphr's übercool new Boarman Mage model is ready to rock the battlegrounds of jcrpg! It's completely suitable for a great battle - shooting fire sparks at you if you don't put them to sleep with your Fumes Of Twilight alchemy spell. :D

Another big change has been invented! Discussing encounter visualization with Zphr, we ended up with the idea to introduce Encounter Grounds. The tiled labyrinths and cities where you'll be walking around won't be enough empty and clear space for a goodly visible scenario, so it's a reasonable solution to have a separate 'walked zone' dependent Encounter scenario. Your view will be switched to a 'battle' ground like in many other classic games you were - but still you won't walk on that scene either, we still have the first person view and 'battle line' philosophy of Wizardry 7 and predecessor, instead of the 2d walk-around of other games like the Gold Box series AD&D game. The encounter scenario generated will depend on your actually walked ground's climate/economic zone. I've added a test screenshot with the jungle Encounter Grounds AND the BoarMage. Enjoy! :)

Meanwhile there's now a camera changing method too, in encounter mode, the camera will switch to the actually acting unit and after act the target unit. Cool, isn't it?

Saturday 12 July 2008

90% ready Skill Act Form architecture - skill/spell tree to design!

Well, the good thing is a really big part of the Skill Act Form system (at least for Turn act phase) is quite ready! This means that we have:

  • basic impact form to decrease or increase all kind of points with the given act form - so you can create normal spells or combat attack forms that decrease stamina or health etc.
  • weapons / ammunitions with BonusSkillActForms for spell and such effects - for creating artifacts (of course with attribute/resistance bonus modifiers too if you want that)
  • armors body part dependent, that can also contain bonus Resistances/Attributes for enchantment
  • State effects - so you can create long time effects for spells like sleep, poison, an elemental shield, long term burning spells etc.
  • act forms can specify contra attributes/resistances that help the attacked resist them
  • usable objects with bonus act forms - to create potions, kits etc. even with long term effects (with the help of the new State effects)
So basically it's time to create the different State Effects (like I've already added Sleep, ElementalResistance, PhysicalResistance), the system of spells and combat forms, a long list of artifacts, armors, potions and the like. Nice, isn't it? And the prettiest thing is - this all works well with the combat system - although AI is lacking a refined choice algorithm yet, it will bash you with the most powerful skill it has at hand. :D (Not that it won't prove efficient - you can easily die! ;-) ) But that AI decision mechanism too will change soon!

Thursday 10 July 2008

Qubodup's recent Boarman/Particle/Combat demo Video

Steady progress in the turn act phase/combat mode calculations. Armors, enchanted artifacts, potions, some new spells, more complex calculations were added in the meanwhile. You can check it in SVN. Qubodup @ freegamer has given a shot for a recent SVN revision and created a video on vimeo.com. It shows well off what's going on in jcrpg nowadays. He said it's a bit boring (boaring? :)), but I say it's cool that blog readers can have a look at this, so here it is!


JClassicalRPG revision 1279 from qubodup on Vimeo.

Wednesday 2 July 2008

Inventory and BodyParts in the works

Equipping/unequipping armor to a certain bodypart is now working. Also there's now Body part and Body definitions for different creatures, so they may have different Body build-up. Body parts like legs, torso etc. define their size and criticality upon injury. In a combat chance of body part hit will be based on size of a body part. The criticality of injury is also defined by body part. A lot of inventory thing has been developed, working Give, Drop, Attach (ammo type to a weapon). There's even a draft Inventory Object Detail page to see details about an item.

Also party order can be changed now so the lineup in a combat can be different. It can be done by pressing F5 on the Party Character Order window. A lot of small fixes, and a memory optimization for UI text generation were done (it was eating away a huge amount of memory, I've added caching for font quads now). Steady progress for now, I think! :D

Friday 27 June 2008

First Particle Effect, EntityMemberState (HP,SP,MP and such) + many updates

Well, we're progressing at steam power level, my RPG-fan friends! We already have a thing we can proudly call a progressing and functional combat. You can die, you can have a Game Over, you can run out of Stamina so you have to wait, or run out of Mana so you can't cast spells. Yes, we have now an extensible effect program thing for the Skill Act Forms (spells, shots etc.) that uses J3DMovingEngine to handle jME based particle effects! Check the screenshot.

Also there's now a Camping button. If you press button 'C' in normal mode you switch to a camping mode with quicker passing time, Interception switched off, replenishing points like health and stamina (until you press C again or an AI initiated encounter surprises you at the start of the turn). The list of new things is not finished yet: we've just introduced Resistance values against skill act form impacts: Pierce, Bludgeon, Chemicals, Cold, Fire and Mental resistance for now! A new font is also replacing simple Verdana for a better more RPGish typography.

Well, yeah, we have now Experience Points as well, and it is accumulated upon each use of a skill! If you can get enough now you can even do a leveling of you experienced character! It's done with the help of the new shiny Character Leveling Window where you can pump some attribute points (which can raise Health, Mana, Stamina, Sanity, Moral points as well) and some skill points - which may lead to addition of new Skill Act Forms to you character if you've hit the right skill level needed for them.

Zphr is still working heavily on new 3D contents for jcrpg. The Boarman Thug is mostly complete with pain and death animation! He's working on a Boarman Mage currently. You've a more complete shot here about the tough thugs!

Much progress, working ahead to version 0.1 steadily. So loyal jcrpg people, get on and do some trumpeting around about jcrpg on forums you are at. We're about to get some serious innovated classic-RPG fun here! :D

Friday 20 June 2008

Working on EncounterLogic Turn Act Phase playback

We're continuing the accentuated work on turn act phase! Several new things designed to make it a working system. Just to mention a few: added multiple animation type definition for MovingModels, boosted the EncounterLogic with a real turn plan listing choices that units and player made ordered by the EvaluatorBase speed evaluator code. Success of a given skill use is now calculated by EvaluatorBase too. Another new thing is Impact and ImpactUnit that is calculated by EvaluatorBase - modifies actor's points and target's points (like health, stamina) on success.

Based on results different sounds and animations (etc. attack, pain) are played now when available for the model/skill. It's starting to round up well, although this part just needs tones of work as you can imagine. Ugh, not even mentioning the particle system and such that will be needed for spell effects. Lots of work ahead. But it's FUN! Watching the enemy attacking and struggling when hit by player's party members - a visual turn based game logic is (will be) just right before the nose of player. :D

Check the screenshot for a preview - also a faint glimpse at Zphr's brand new fantastically looking animated boarman thugs (modeled in Blender again) and the text box in the bottom shows combat messages of the previous round... Thanks Zphr for doing a great-great job with the boarmen! I will post more about the boarmen when it will be more complete.

All in SVN!

Monday 16 June 2008

Boosted, boosted encounter code

Dozens and dozens of little and bigger changes are being made to the encounter code, especially the part which abstracts the description of encounter unit topology - lineups in encounter information (containing all information of units and topology of the encounter), encounter unit (common superclass for EntityFragment [roaming groups] and PersistentMemberInstance [NPC]), encounter unit data (for representing a unit with more detailed data in a given encounter, temporary data like generated member instances, current lineup line) -- lotsa lotsa changes I'm not patient enough currently to describe (most of them are a lot of helpful classes to make encounter logic code's calls more uniform, adding generalizer helper classes etc.) ...

Well, the most important change that has been made is that now EntityInstance groups are refactored to contain only one type of units each, thus in an encounter a group can be represented with only one 3d unit (like in Heroes of might and magic for example). In 3d view now you'll see a 3d unit with billboard labels describing unit lineup line/type and current size to help easy measurement of encounter/combat situation. Check the screenshot. So lotsa changes, yeah! :-) And still working a lot now on the turn act phase logic + its visualization. Tough designing and coding times.

Also to make it a little more nicer, I've added partial transparency for the encounter and turn act phase windows - you can see the units behind the window giving a more aesthetic look, probably.

Friday 30 May 2008

The "Anniversary Boom" release attacks!

One whole year, 365 days have passed since leaving the safe harbors of non-game-developing times. It's been a long one, with many joyful and many painful moments. At start I thought that one year will take much further in completeness but 15 releases did not brought its fruit that easily - every corner brought new ideas and new things to code with hours to spend on them. As progressing from thing to thing it became more and more relevant that the undertake, the scope of the project needs a whole lot more of work hours than projected at start. But every step taken made the progress more and more unstoppable, rounding up such a concept in my mind that lures it further and further to completion. Every step taken made the vision clearer and me more eager and curious to turn the vision into reality. And so we progress further every day.

The big revelations while doing the design and development through the months - as far as I remember - were the following things...first the Magnification of the stored world into bigger blocks using hashing and other surface calculus algorithms to fill up the world with detailed content on the fly. This brought the possibility of relatively large lands to store in little data. Second came the idea of "Magnification" of living things into Entities, groups of beings with a common intelligence and keeping EntityMembers as special persons with more detailed personal intelligence - this will make large populations available even with less memory and cpu consumption, and bring a real edge to the things happening around the player..you won't mess with a whole population of 200 members around, "you'll try to keep a good reputation" if you want to live in the town one might guess. Yet powerful NPCs (special members of an Entity) can serve as a hook to these groups who can serve as a strengthening channel between player and a community. And these masses can serve as basis for big scale historical happenings between rivaling Towns and so on...who knows what other possibilities yet. Third came the idea of adding a set of Social skills to rule the problems of life in the game by more peaceful means - social skills with act forms like spells in a magical book yet different, Reasoning -> Deduce like Elemental Magic -> Shocking Grasp :) - which gives more color to the encounter situations with the help of such points as Morale and Sanity along with normal Health, Stamina and Mana Points. And fourth came the idea of dynamic relations and dynamic economy with Ecology and Economy updates which will bring a dynamic progress to the world of jcrpg - a turn in the game when whole town districts may change their face, new buildings and streets, new agriculture around. Along with these things we cook the cool things what the legacy of classics like Wizardry, Bard's Tale and lastly Dune 1 (because of its group based + personal "strategy-rpg" likeness) - multi-member party, turn based encounters, strong skill system, 6 direction only movement, 3D tile based graphics. Well, well many of these things are really partially complete, but these ideas serve well a game that I would like to play. And probably will...

Especially because such a big and good community like Freegamedev.net was and is helping this thing to get ahead! Many names could be named who helped to keep up the things and my faith on the way, all of those great people's name are carved on the walls of the Hall of Fame of jCRPG... Thank them a lot again! :)

So here we are on the road of development, standing at the time of first anniversary... let this be celebrated with a new release! A big lot of new things are pushed into this one, all of them of much importance. Check it out downloading, testing, commenting, bug reporting and so on and so on. Oh, and probably feel free to be the first person ever to donate to the cause of this project through this Pal of Pay at the top of the blog. ;-)

Highlights:
"New UI windows for Encounter Phase, Turn Act Phase, Character Sheet (F3 key) and Inventory (F4) were added. New Population generation algorithms (GrownInfrastructure, DefaultInfrastructure) were added along with new integration level of named Towns for friendly populations to unite in. Economy Update Turn implemented for growing or declining population changes. Basic level Entity relations and Entity states (level and points) and Entity fragments (roaming entity groups) were added. A few Objects for inventory were added. Skill system further implemented with object dependencies and Skill Act Forms (like some spells and some combat forms etc.).
New animals heron and deer were added and wolf replaced (glestanimals of wciow at glest.org). Smaller bugfixes, optimizations (culling works again now correctly). This is the First Anniversary Release!"

Downloading here, forum here.

PS: if you've downloaded it before this post you should download it again, I've found two major problems in the previous tar.gz, so I re-uploaded it!

Thursday 29 May 2008

Character Sheet - first draft but working version

As you can see I've decided to put much info into one page with the help of drop down lists again. It's good enough for a first version, isn't it? All other character data have received place on the sheet, and still room for more values later. Also point bars (health, stamina, morale, sanitz and mana) are present beside the HUD character portraits - with some minor problems with update yet. All in SVN. You must create new characters and a new game - changes made to the character classes require it!

Monday 26 May 2008

Inventory Window in the works - 4 days left till jcrpg birthday

Coding, coding when possible. Few hours in the night, yeah, trying to squeeze minutes out of the small free time I'm left with. And just passed another day - 4 left till the jcrpg birthday release! :-)

Regarding the inventory I cast my vote for a preorganized (not player organized) categorized inventory. As you can see, I've already added categories and multiselect dropdown lists for items. You can multi select items and later the window will have options like move objects to another party member, drop selected items and such. I've also added small icons to the multiselect list representing the item. I bet it's classic yet easier to use because of the categories. Always sorted, always categorized but a classic look.

Sunday 25 May 2008

Abstract Inventory, Objects and Object dependent Skills

These are the things for today: Inventory, objects, weapons, inventory dependent skills and skill dependent objects -- some weapons with some basic parameters (attack modifier, defense modifier, damage, speed) were created. Objects can specify "use skills" and level of that skill so only those can use them that have those qualities.

I've appended Object selection to the Turn Act phase window too, so that you can select in every turn what object you want to use with an object dependent skill. Also only those object dependent skills show up in the skill select for which the person have a usable object in inventory.

Important thing is, that I've decided to leave out the "equipping round" for weapons. You don't have to equip weapons to your characters before using it in a round, you can use them anytime you want. (It's more convenient and less frustrating), yet don't forget your enemies neither have to make an equip round for changing weapon! :) The Wizardry series had this equip round which finally I've decided to leave out of jcrpg.

Now we'll need an Inventory window too along with a character data sheet... I hope to get to implementing those soon(er or later).

Saturday 24 May 2008

Full set of Encounter windows prototyped

Nearing the first birthday of the Java Classic RPG project the drive to get to a prototype version is stronger than ever and seemingly it is more possible than ever too. The lot work put into different core aspects of the game engine under the hood, it is beginning to bring its first fruits on the UI part too as it is dragging the interface design too with its substance layn down already. Day by day we are getting nearer to a coherent game logic concept and creating/designing/programming the UI for the player's party gives a lot boost to the planning of it. So I'm trying to keep the documents up to date, game logic and architecture google docs received a bit more of input nowadays too.

I'm really happy to tell you that the different encounter phases (Interception, Encounter and Turn Act phases) have gotten a complete set of "first version" prototype windows in the game. Input fields are filled up now, so you can try out with SVN version how an encounter will look in jcrpg. So we are heading with full steam towards the first real combat / social rivalry situation ever in the history of this project... :-)

As much as time leaves will be put into the game till the first anniversary day (this 31 may), and a birthday release will be rolled out! Keep up reading, commenting and such and don't forget: you can still be the first one to donate some bucks here! ;-)

P.S.: I've forgotten to mention that we are in great need for 3D mythic monster models. This will help a lot to get close to the end of the roadmap for version 0.1 of jcrpg which road is currently tread upon.

Tuesday 20 May 2008

netbeans 6.1 project settings added to SVN

While experimenting with netbeans 6.1 java IDE I've set up jcrpg project to work with it. I've committed the results into SVN. You can checkout and use/compile/run it easily in netbeans.

Sunday 18 May 2008

EntityFragments - multi-roaming EntityInstance parts

"An EntityInstance can be fragmented to roam in specific fragments around, and these fragments can rejoin the entityInstance." - for specific tasks and goals EntityInstances will split themselves up into fragments. A base fragment is created upon EntityInstance setup, then later the Instance can create other smaller fragments of the base fragment or unite two fragments. For example a town's fighter group instance can decide to go for a trip around waging war against the enemies of the town. This EntityFragment is very low on contained data, restricted to size and RoamingBoundaries plus a special followingEntityMembers list that contains those NPCs that decided to follow the fragment for a while.

This all will serve as a small physical memory consuming solution for different multi placed operations of an EntityInstance. All the related codes were refactored this afternoon in SVN. A huge step in defining the game logic concept of entities. (I've even removed subEntities list of the EntityInstance class, because no hierarchy will build up of entityInstances, it would be an unnecessarily detailed Entity granulation! Instead EntityInstances consist only of small information containg fragments, and EntityInstances can join alliances or higher level integration groups coded in specific purposeful classes). More such concept definition will follow I'm sure.

Like EntityRelations, it has already been added to EntityInstance class, serving as relation quality storage for inter-entityInstance relations.

Saturday 17 May 2008

Districts' integration: 'Town', new Grown Infrastructure

Population instances are to be considered fix sized blocks called district of a Town object. Now integration of neighbor districts to one Town is made possible. Also different population owner groups can name their town and district upon settlement. We'll just need a better world map that shows town names to make it funnier later. :)

I've implemented a new AbstractInfrastructure extension called GrownInfrastructure. In this one things are grown together from block to block flowing in random direction inside a Population. It looks better than just shuffled DefaultInfrastructure.

Twitter