Saturday, 7 May 2011


Uhm, the first PlanExecutor, for Exploration is a working code now in SVN. Units outside the home populations are moving around, collecting positioning information of other entities/economic units, and making war if in the mood. Basically this will generate all the other political happenings, relationsship changes, spring plans based on positioning and historical memories of those battles/peaceful happenings. So it's time to create the 'Planning brain' code to add more than exploratory tasks to the plan list of entities -- and their respective PlanExecutor implementations. Lot of work to do, so progress isn't gonna be the quickest thing, guarranteed. If those are ready, next stuff is to create an information exchange part and information listing for the player in game, now again including new UI parts. The player should be able to view the position of those pieces of information and plan target places. That would be a point of code readiness where I will consider a new release so you can dig your teeth in exploring entities and their history and plans, how this might look in the later releases.

Saturday, 30 April 2011

PlanExecutionHelper, Plan types

Yeah, these two are now under development. Some Plan types were invented, so different events and behavior based impulses of the entities can use those types:
public static final byte PLAN_TYPE_EXPLORATION = 0;
public static final byte PLAN_TYPE_SPYING = 1;
public static final byte PLAN_TYPE_PEACE_MISSION = 2;
public static final byte PLAN_TYPE_ENCOUNTER_TRADE_AND_INFO = 3;
public static final byte PLAN_TYPE_PLUNDER_EASY_PREY = 4;
public static final byte PLAN_TYPE_MASSIVE_ATTACK = 5;
public static final byte PLAN_TYPE_SIEGE_POPULATION = 6;
public static final byte PLAN_TYPE_KILL_PMI = 7;
public static final byte PLAN_TYPE_PACIFY_PMI* = 8;
(*PMI = PersistentMemberInstance aka "Non-Playing-Character")
These will have different Executor implementations used by the PlanExecutionHelper. The helper class is also mapping available units of the entity for the tasks based on priority of the plans and the power level of the units. So these plans gonna be in the InformationContainer of the entities serving as incentive and source of information towards other entities like the player.

I imagine that the EntityInstances (large groups of similar beings) will by default have some Plans like exploration/encounter/plunder easy pray based on their set of Behaviors specified for their 'race' in the HumanoidEntityDescription of the EntityInstance. Those plans will lead to meeting with other Entities and thus relations will start to change leading into alliances and massive attacks/sieges etc.

Monday, 25 April 2011

Lesson learnt: Fate of world sealed. plus some AI concept.

Things progressing further: HistoricalEvents stored after won or lost or left battles; more refined decisions can be programmed for Humanoids (of type HumanoidEntityDescription) when they think about choice for encounter (choice: Hide, Attack, Indifference, Encounter (exchange info, commerce)) based on their Behavior patterns, and when they think about how to interpret a relationship level with another group of beings (e.g. based on their Behavior they can be forgetful, raising the relationship level a bit higher) -- these will have a huge impact on the AI vs/pro AI/Player happenings later. Now for test purposes the humanoid races are all quite nasty, attacking each other almost always, downgrading relationships and thus giving more aggressive battles turn after turn, railing down the entity groups around their hometown... Of coures this will receive more care and folks that are peaceful are always going to try to negotiate neutralization, commerce and info exchange with friends etc.

Now to the lesson learned: I had to root out all the HashMap.keySet() or values() method calls for iterating lists of those maps and replace HashMaps with TreeMaps in the encounter/ecology part. Otherwise a random order crawled into the happenings of the historical test application run. EncounterInfo was the culprit, full of HashMaps featuring EncounterUnit as the key, now I use TreeMap instead, and EncounterUnit implementer classes implement the Comparable class as well.

...And randomness was replaced with the Hash based quasi-randomness, and thus the fate of jClassicRPG test worlds had been sealed and unchangeably progressing the same route test run after test run with the same TreeMaps to Eternity. ;P

Friday, 22 April 2011

BattleCalculator, InformationContainer, Positioning

Progress is slowly continuing on the matter of '(Artificial) Intelligence -> Information/Dialog/Quest' field. Events are now starting to shape up with the simple decisions of EntityInstances. Aside the UI based combat/encounter involving the player, now AI vs. AI happenings are being tested out with the IntelligenceSystemTest runnable (you can find it in the codebase in SVN if you want to test, and look for your log file under /.jclssicrpg/logs). Firstly BattleCalculator is mostly done that does a simplified, weighted combat calculation with impact of death toll and neutralization (making the enemy give up/surrender). Simple stuff, but for the time being it will suffice and serve well the history creation / plan growing of jcrpg's seed based worlds.
Also first memories are being put into AI information containers, first of all Positining information that mirrors the knowledge of a unit about the location of other entity instances. A lot more to add (like the Historical events that will serve as a backgroundish spice for the conversations, and Plans that will serve as a joining point for the Player to do things related to other other words do some quests ;))
I can say it's really a tiresome process with a lot of stuff to plan and realize, but it's at the same time rather interesting. A snippet of log for you, as this doesn't involve a screenshot yet: - *INITIATOR MEAN: martial 1.0 - #TARGET MEAN: martial 1.0 - rollOfInitiator = 961 - rollOfTarget = 2500 - Absorbing ratio 1 Warthog (4) 0 : 1.0 Impact ratio: 0.0 neutralization: 1.0$EntityFragment - AI BATTLE DAMAGE fragment of size 29 - Warthogs 496 = 0.0 / Neut.: 0.0 - Absorbing ratio 1 Plant'o'Bite (0) 0 : 1.0 Impact ratio: 2.0 neutralization: 0.0$EntityFragment - AI BATTLE DAMAGE fragment of size 7 - Plantoid Horde 495 = Infinity / Neut.: 0.0$EntityFragment - Plantoid Horde - decrease relation by 1 level for Warthogs RESULT 0 - EntityInstance destroyed Plantoid Horde 495

Tuesday, 19 April 2011

AI getting care, which is planned to result in dialogs

New things are getting into place, EntityInstances (group of beings) are being beefed up with decision making (based on behavior and additional relation data plus informations later) and quick battle calculus is being created to let things happen in the world/history generation phase and later. A lot of placeholder TODO's are placed, which means it's a much wider task than that I'm currently wanting to implement. I'd like to get to the first test of history flows and AI decision flows as soon as I can, leaving the less crucial (but important) parts for later.
After this first part will get it's first iteration of development finished, next stuff will be to add a capability to beings to flush out information streams to other beings (like the player) based on their relationship level. That stream of information tokens will be converted into meaningful dialog by a layer of 'info types to nice text' engine that needs to be created. Also player should be a source of information stream too, of those information that the player gets hold of while communicating beforehand. So you might be kind of resolving gameplay things by sharing information you got. Most probably player shouldn't be able to resolve a communication without the proper informations in the party's 'information container'. So the choices for dialog will depend on both sides' possesed information tokens and relation ship levels.
At least now we have a plan and some of the codes are already being forged. :)

Monday, 18 April 2011

Unified Feed for hardcore jClassicRPG fans

Using yahoo feed pipeing system, I've unified all the available RSS feeds of jClassicRPG. If you're a hardcore fan of the project you can use the following url from now on: This one contains all blog posts, forum posts and trac project management events going on in the project.

Sunday, 17 April 2011

RSS forum feeds added. Working on ecology AI.

Global RSS feed and individual ones are now served on forum by Smartfeed phpbb module. Works great so far. Global URL if you want to subcribe in your Reader app: link. READ edit2 part for the really good ATOM/RSS feed choice down below. :)
Continuously working on AI. A test suite is now working, in console mode, spitting out turn by turn, entity by entity what's going on in their decision making. Soon to add more, like a quick combat/impact scenario tool for them, appending of history. Entities can now hold information in their 'container' which are past HistoricalEvents or future Plans. (All these are yet placeholder classes to be filled with real content on the long.) Additional Behavior types were added a bit like those that Civilization I of Sid Meiers had, so these traits can have an effect on how different races/populations act in the turns. So... it's under construction... :)
EDIT: indivudual forum/topic RSS feeds doesn't work yet, I'd need to tweak the CSS/style files more as it turned out.Sorry! Global RSS is working well, so use that for now. Thanks! :)

EDIT2: Oh, just found out that phpBB3.0.7+ has ATOM feed by default. *FACEPALM* Anyway, I've enabled it, and now you can subscribe to virtually any part and subpart of the forum, and to New topics too as a separate feed. phpBB coolnes, kudos! Global phpbb based feed: link

Friday, 15 April 2011

Forum registration corrected

Forum got some troubles preventing registration. Now theme is corrected, you can register hopefully without any trouble.

Tuesday, 12 April 2011

Seems like we're dead. But no, undead we are. Updating.

Hey, folks.
SVN just got dependencies updated and code updated to work with it. Well, it's quite quite here to say the least. Because this one bus factor project's solo dev at these times felt like he has to continue some chillout time. Promise was not much kept, the ideas about quest/dialog system was not perfected since the last posts. No excuses.
But yesterday I was kind of say...unnerved by the brainless console fight of dragon age 2. And then I told myself, hey, why don't you friggin get your ass moving and finish those few things that need to be done to get jcrpg into alpha stage... and so I cleaned the dust out of the svn directories and see what's going on in ardor3d first. Now that that's done, I should finally design that brilliant quest/motivation/society's weave generator system. So let's see...
First of all it must be quite simple. Keeping the KISS design (some of you well know it, dear readers) here as well, till we get to a gamma stage. So simple and stupid.
We need a Pattern interface. Patterns should be weighed by importance. These should be blended together into a 'Social Tension Field' so the stuff in them can kind of 'inter-lock' with each other. You should be able to get info about the 'Patterns' and how those interrelate between the different 'Entity' groups. Then you can decide yourself what you want to do. Patterns should materialize in kind of 'Quest Points' where you go and resolve Pattern related tasks. These by the way should be 'player' independent so these stuff should be accessible to other AI parties or just simply put other 'Entities' aka groups or 'Persistent Entity Members' aka NPCs. So all the stuff should be just plain generated on grand level, no pestering with small details. Let me conquer the those Patterns. After all that's what you mostly want in a good ol' RPG?! Have your say.

Wednesday, 19 January 2011

Forum got skin, come drop a thread in the pub

Hereby I invite you to join the recently moved forums offtopic pub with an intro or about your experience with the game. It's got its new style set and modded for readability. I think it prety much resembles the ui of the game itself too, so glad i've found it on the 

Monday, 17 January 2011

Updated to ardor3d 0.8-snapshot

So to base out on developing the game again I've updated the 3d engine dependencies of jcrpg namely ardor3d (to 0.8-snapshot) + lwjgl (2.6.0). It was a long time ago when last time I did this, so I run into two issues one of which is already resolved (screenshots for save games were not taken). The other (far-away terrain rendering) will remain open for a while (unfortunately it's a big chunk of the visual appeal). For now we revert back to use the usual short distance terrain only. I'll try to catch up with ardor3d's steam powered progress in this and other areas (like atlas texture technique and animation), but right now i'd rather concentrate on dialog, trade and quest system as it was planned in some of the previous posts. In which regard I stand like a boarman in the dark, ain't I? ;) All the updated stuff are in SVN, so you can grab it and give it a go. Just use 'mvn install' in jCRPG-engine project, and use the respective sh/bat to run it.

Friday, 7 January 2011

Forum moving again... *sigh*

Well, as you might have noticed the jcrpg forum was down for a while. Unfortunately the server it was running on is dead and I decided to 'move' it to (So it's technically not the default hosted phpBB service provided by, but a fresh hand-installed to the web storage part of the project hosted by and the hosted mysql database.)

This means we second time lose the forum contents...bad news, but now I reckon that this is the final movement as will always be there to host it, just like the project. :) So the new URL is:

I'll try to at least fire up the old forum and move some parts manually or will try to find a tool etc. for it, but don't count on much more than moving bug reports and contribution threads in a quite blunt and simple way.

Well, also a big silence around the blog too, since long. Hopefully I'll get back into this business soon...fingers crossed. ;)