Data Driven, enter Component branch

The last 6 months we have been experimenting with and prototyping data driven entity systems as well as writing boilerplate for a completely new codebase.

Current code has statically defined entity types which were tedious to expand functionality for, large if else statements defining logic for each entity type lingered through out the code.

Now, the entity class is just a list of components and components just a list of properties. A property basically is a key-value pair. All just data.

When an entity is created/loaded it's components are registered to manager classes which subscribed to that component type, the managers define the logic for those components.

For example a 'ResourcesManager' (resources being a collection of health/stamina/willpower) would just iterate all it's registered components and regenerate points in each resource.

The real power of all this is in assembling components, as the logic is independently defined by the managers and not lingering throughout the code, you can throw all these components together to easily form new entity 'types'.

You add some components to form a basic item, then you add damage and equipable components, to form a weapon, give it the name 'Sword of Justice' and then, just to go crazy, add a dialog component. You now have a talking sword, handy for those pesky settings people defined quests :)

A template system with inheritance support makes all of this user friendly.
So you don't have to write templates from scratch each time, you can define an item template and then the weapon template would inherit from that, so the weapon template only has to define the damage and equipable components, templates can overwrite property values defined in parent classes so an 'Alpha Wolf' can easily up it's strength from it's parent class 'Wolf', to make the picture complete.

To wrap things up, we're currently finalizing the network design which will synchronize property values between server and clients, this will abstract the actual network usage, so instead of sending a network message to change a property, you just change that property.

We hope to have a chat client out soon, to prove the concept and for you developers out there to experiment with.

See you in-game!


Snow accumulation

Turning the world into another season with a slider! The snow plugin is fed a precipitation rate for snow in mm/h it then creates a snow particle effect with an emission rate that resembles the current snow fall. It keeps track of how much snow has fallen, based on this value a snow depth value is calculated that is passed to the shader. The plugin also allows for setting temperature and other atmospheric conditions that will determine the melt rate. Based on the polygon normal angles the shader decides how much snow a surface will receive, this is then multiplied by the snow depth value to calculate the snow coverage. In the near future a geometry shader could give actual volume to the snow layer. Accumulation and melt rate were sped up for the purpose of this video.


Based on Recon69's work, a few CS and CEGUI changes later; You can now use 3D meshes in CEGUI widgets. Handy for those inventory avatars and items. The perspective calculation is still a bit off(making the models a bit stretched) will be fixed soon, but I couldn't wait sharing this. So behold.


Thanks to Tim (AKA Mr. Giggles) we now are building a pretty solid amount of music to include ingame. There are 12 songs in SVN and I will be uploading 13 through 18 fairly soon (whenever svn quits timing out!). Along with the code rewrites this is a pretty exciting time. Do yourself a favor and check the art repository for the new music and give it a listen!


Happy Nanny Day

While not traditional news in the Peragro Tempus world, today has been spontaneously deemed "Nanny Day" at least in Tonganoxie Kansas where I reside. That Belgian guy who works on PT (sue or something) has a girlfriend (circeavalon) who resides with me (Induane). During the day she acts as a fulltime caretaker for my two daughters Lillian and Arianna who are ages 3 and 2 respectively. This is a job she performs fantastically and in the past months with my divorce, this has been one of the main sources of genuine comfort for me.I will probably never be able to repay that debt in full.


A Sad Day for Peragro Tempus

For personal reasons and a severely comprised amount of time, Cyanox has decided to leave Peragro Tempus. As one of the founding fathers of PT he's been with us from the beginning; he will be missed. In his kindness he will still continue to host all our services, for which I'm grateful.

In his absence I will temporary take over management.


Data-driven GUI

The option GUI code was getting kinda bloated, so I wrote two classes SettingSlider and SettingComboBox to help clean this up. These abstract the setting and automatically save it to the configuration file, there can also be an optional event that is send on change to notify the engine and take appropriate action. The widgets can just be defined in the GUI-layout xmls and don't need any code what so ever. This removes about 85% of the code in gui/option/!

World Editing

Some more progress has been made on the new World Manager. Unlike the old paging tile loader, where you were limited to the tile size, geometry queries are now made within a customizable sized sphere around the player. So the 2D tile boundary checks no longer apply, this also means the loading direction is in 3D(For those that want to do flying into outer-space).

Core Updates

The website was down for a bit because of a few minor updates to the core components of the CMS we use. Its all fully patched now with the latest security updates to the core and modules. Sorry for the downtime!



The PT crew has a regular meeting at 20:00 CEST (18:00 GMT, 12:00 CST) every Saturday their IRC channel (#peragro on Freenode).

Syndicate content

User login