Wiki

Clone wiki

autoRealm / Introduction

Introduction

Autorealm is a drawing free open source software for windows, designed to create maps and plans (mostly, for but not limited to, RPG games). It's main bigger advantages are:

  • very easy to learn. Far easier than The Gimp or inkscape by example.
  • fractal lines, which are a kind of "broken lines" (very useful to draw all kinds of natural lands)
  • vector-based, to allow modifications of things at anytime, and to keep a drawing without dirty pixels at any zoom.

The original version, on which development stopped many years ago, was written in Delphi. Since Delphi is a proprietary (and not really popular) language, and because it works only on windows, people tried to remake autorealm from scratch in other languages to make it works on all systems. Another problem is that the code started from a simple drawing software and evolve in a code-base more and more bigger by the years. This, with a lack of code documentation, resulted in a complex structure which does not easily allow new programmers to make the code alive.

previous forks

There were at least 3 previous attempts in different languages and different frameworks (parts of software that helps it's development, mostly used for GUI):

  • python / wxWidgets
  • C++ / wxWidgets
  • C++ / Qt They all failed some years ago (I do not have dates about when their development stopped) and the only one I have seen which reach some results were the 3rd one, but unfortunately, I do not really understand (nor like) Qt, and it gave me the feeling that the complex and undocumented (comments are not really documentation) code errors were repeated, instead of using well-known design patterns where they could have made things easier to manage. The last problem of the 3hd port is that the user interface, the rendering system, the data model, and the serialization are highly coupled. I guess that this is what happen when you use a unique library (aka: framework) to do everything.

So, I made this rewrite.

This version

I have started this attempt with few ideas in mind, to try to avoid my predecessors 's errors:

  • send code to repository which is known to work without regressions (I should place a test development structure to make things more reliable)
  • put many efforts to the software's architecture. It means by example keeping a low couple between components to make code reusable in case I should stop to work on this project. This reason is why it took me so many times to have the first alpha, but things should go faster from now, because most complex things are implemented.
  • maintain a code documentation as close as possible to the code-base
  • using specific libraries for each task, instead of using one big framework for all the stuff. This choice makes it easy to replace a component by another, improving code re-usability, but makes things a little more complex to compile (the developer have to understand the role of each library to link them correctly)

To be honest, those objectives were not always respected: sometimes I had to implement dirty workarounds and I made conception errors, but they does not happen very often, and it is expected to fix them as soon as possible, and anyway before the beta version (which will be 3.1.0 beta) .

Milestones

Previous versions

3.0.0

  • [done] render : basic features (rendering group, shapes and lines)
  • [done] config : reading configuration (still some crashes when it is absent but correct configuration is correctly read).
  • [done] plug-in : basic structure
  • [done] plug-in : drawers support (plug-ins to add rendering styles, like shaded lines, fractals, lines,...)
  • [done] GUI : dynamic menu.
  • [done] plugins : normal lines plugin
  • [done] plugins : read files (different format from original autorealm)
  • [done] plugins : save files (different format from original autorealm)

"On work" version

Next version will be 3.0.1 (see version number system for more details).

3.0.1

mandatory

  • GUI : dynamic toolbars
  • build : create cmake build system
  • render : support of tessellation (to allow concave polygons, needs a OpenGLU usage)
  • documentation : update to follow the real code

nice to have

  • build : create windows Code::Blocks configuration
  • general : code cleaning and refactoring of "dirty hacks"
  • config : allow loading default parameter from file "config" instead of only default drawer plug-in
  • plugin : find a more relevant tag name for the LineMonoColor 's drawer
  • plugin : implement curved lines GUI
  • render : render curved lines
  • general : translation system

Future versions

3.0.2

  • render curves
  • render fractals
  • render text

3.0.3

  • select shapes and groups
  • [need GUI] moving shapes
  • moving groups
  • moving the window position
  • resizing shapes and groups

3.0.4

  • adding shapes to groups
  • dismiss groups

1.0.0

  • read original's autoREALM files
  • save original's autoREALM files Having all features of original autorealm implemented.

far versions

  • Add SVG support
  • Fill shapes with graduated colors

far, far versions

  • Add basic 3D features
  • Add lights
  • SVG native support

Updated