Wednesday, 12 June 2019

Bringing the POX cross-platform

- or a few things on the extended RTTI and new inline variables presented in 10.3.



Having figured out the internals of the POX file format used in the game Siege of Avalon, and it's sibling from the modding community: Ashes of Avalon, Pillars of Avalon and Days of Ahoul to name the larger ones - enables to revise the tooling used for the engine - most of it closed source or requiring jumping through hoops while juggling.

So the first thing I brewed together is a POX file viewer/player with an export function. A preliminary test was done in the previous post, but I redid it using the FMX multi-device UI framework that comes with RAD Studio/Delphi/C++Builder - so that modders using for instance macOS, do not need to run in a virtual OS - and it all comes for "free" when using FMX.

Saturday, 8 June 2019

Cure for POX found in Avalon

- or how reverse engineering makes a game engine portable.



One thing that can stop software from being portable and surviving the decay of time, is when closed and proprietary file formats block any chance of progress - the game Siege of Avalon has the POX.

Wednesday, 5 June 2019

Take a "leak"

- or introducing Deleaker - now available for Delphi/C++Builder/RAD Studio



Since we in RAD Studio need to be able to master the fine art of manual memory management - things might leak if you do not pay attention and follow the rules. The most basic rule being: What you create - you must "destroy" (read free).

Saturday, 23 March 2019

Siege of Avalon lifted

- or an example of migrating old source code to newer grounds.

Compiled with latest Delphi (10.3.1 Rio) - Nice inventory graphics.

This post is just about the few steps I did on migrating the Delphi 4 source of Siege of Avalon to Delphi 10.3.1, and the intentions and road-map I have proposed to the players and modders of this nice game.

Wednesday, 18 July 2018

Delphi and C++Builder Coming Everywhere

- or it finally happened - a Delphi and C++Builder Community Edition!


The great thing about these editions is that they are free to use without being amputated like the Starter Edition was, feature-wise they are identical to the Professional Edition - with mobile now included.

I have personally been looking forward to this move, and that should help a lot of hobbyists get out of their Delphi 7 stasis and discover how much Delphi has evolved over the years.

The restrictions that has been applied has a lot to do with common sense - if you earn money and profit from the use of the CE license, you can afford and must convert to a paid license that includes some extra license benefits.

Wednesday, 14 February 2018

JSON Find / Rewind

- or using the TJSONIterator without wearing a Cardigan.


Working with JSON files has been made easier over the years with Delphi - which btw turns 23 today - by either third-party libraries or especially within the RTL.

The System.JSON and the REST.JSON units have added the one-lines ObjectToJSON and JSONToObject, which can add a tiny bit of fat to the JSON generated to enable to get it back into your TObjectLists - but makes your code cleaner to read.

Another way is the adding of the TJSONWriter and TJSONReader which by using the TTextWriter and TTextReader mimics the .Net equivalents.

The TJSONWriter includes easy formatting of the output and in the System.JSON.Builders unit there are a couple of extra goodies, two of these being the TJSONObjectBuilder and the TJSONIterator.

I will dig a bit into TJSONIterator, since only its Recurse, Next and Return methods is mentioned on its DocWiki page here.

Saturday, 16 December 2017

Update Your Documentation

- or an unofficial temporary fix to the documentation tab in RAD Studio 10.2.2.


Update (16. January 2018): The official hot-fix can be found here: https://cc.embarcadero.com/item/30818

There is a lot of things that are fixed in update release 2 for RAD Studio 10.2 Tokyo - but one thing that is broken - and which is not crucial, but just a plain stupid oversight before RTM - is the documentation tab in the IDE.