Saturday, April 13, 2013

April Progress Update 1

Ludhermia is coming along nicely, and it's almost time for a feature alpha test. I've mostly been focusing on graphics for the last month, but also made some major changes script-side.


After lots of playing around with the material editor to try to achieve the visuals I'm going for, I've implemented a physically based custom lighting model that greatly improved my materials. I made several versions of it, including one that has faked light transmission for leaves. For those that don't know what physically based shading is, it's a more accurate representation of the way light interacts with materials than the standard Phong shading that is widely used in games. I'm still tweaking it here and there, but I'll put some screenshots up shortly.

Character models are coming along, as well. There are now 2 human characters (male and female) with several variations of clothing, a backpack, 2 satchels, and a wolf with texture variations. 


The biggest scripting change I made in the last month was a rewrite of my old AI system:

The new system uses acceleration instead of moves, which gives me more control over their behaviors and pathfinding conditions. I've optimized the AI's pathfinding by having them generate new paths less frequently and reuse old paths. AIs also now handle obstacles more efficiently by using traces when required and by making use of heavily modified Touch and Hitwall functions.

Each AI now has a squad/group that is currently limited to 4 members that it is assigned to on creation. Each group has a leader that handles the group's targets, main pathfinding and delegates any appropriate tasks to group members. The rest of the group is limited to following the squad leader's orders and notifying the leader if injured or otherwise in trouble. I've been able to speed things up quite a bit by keeping all the heavier script calls on the leader while dumbing down the rest of the group.

Target Selection/Aggro Management:
Each group of AIs maintains a list of enemies and target priorities (basically aggro). Certain actions increase/decrease each target's priority, and different playstyles have different multipliers attached to them, allowing AIs to accurately pick whether, for example, the healer or the primary attacker is a better target.


Player character creation has been completely overhauled. I've decided to scrap the ability to pick a class on creation, and have the skills you pick/advance determine how the character turns out. AIs are still based on class-like templates, and some of these will be available during character creation. This change was made mostly to accommodate another change in character creation: A random check that determines if the created character may use magic or technomancy. You won't know if your character can use either until you try (or by checking the character menu after starting). I feel like this change interacts well with the ability to create multiple characters in the same world.

Another feature from older games I'm implementing at the moment is a potion identification requirement. When the player picks up a potion, it will be marked as an 'unknown potion' unless the player has identified it before or has gained knowledge of the potion type in another way. The ability to actually identify potions is linked with the Alchemy and Nature Lore skills, as well as books that can be found in appropriate places. Something I'd like to implement with this, as well, is the ability to identify ingredients of a potion to be able to craft it later.

That's it for now. Expect at least one more update this month, most likely with some screenshots and videos.

No comments:

Post a Comment