Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Symmetricality, more symmetry!  (Read 10420 times)

jaked122

  • Bay Watcher
  • [PREFSTRING:Lurker tendancies]
    • View Profile
Symmetricality, more symmetry!
« on: January 03, 2016, 09:52:15 pm »

Symmetricality is a fort planning tool that allows for designations and building commands to be built graphically automatically designating and building symmetrically.

If you want an unmangled overview of this program, then please go to this page.
If you just want the most recent release go here

This page is so mangled because the wysiwyg editor on this forum does not handle anywhere near as much formatting correctly as it should, so my apologies for that inconvenience.

Basic Usage
Symmetricality supports some very basic mouse input at the moment. Basically you can mark areas for designation quickly using a mouse, at the moment, it does not support building, switching designations, or anything of that sort. This too will change with future updates.
KeyEffect
F5Save File (.ser)
Shift-F5Export to Csv
F6Load File (.ser)
Arrow KeysMove around
Shift Arrow keysMove around in increments of 10
ReturnStart Designating.
Shift-ReturnStart Designating circle.
Control-ReturnStart Designating a line.
rAdd Radial Symmetry at cursor
9Add Rotational(at 90 degree increments) symmetry
xAdd X axis Symmetry
yAdd Y Axis Symmetry
=Change Designation type
-Change Designation type
Period(.)Move down a Z-level
Comma(,)Move up a Z-level
F2Take a screenshot.
F1Toggle the text overlay.
bToggle build mode

[/t]


The primary cause for the lack of Csv import support comes from the difficulty
of adapting a 3d representation of a blueprint into a 2 dimensional file
format(Yes, quickfort does have support for 3d plans), however supporting that
as an import format is more difficult than exporting because it has to accept
most mistakes that a human designer would make in their creation of a Csv file.


As such, the Csv files that this program generates are not quite up to the
highest orders of the standard, but given the simplicity of the format, most
spreadsheet programs should handle the output without issue.


How does the Symmetry work?


Symmetries in this are not merely toggled on and off, with this, multiple
symmetries across each axis may be used at once. The Symmetries are applied one
at a time, with the points produced cascading across each symmetry in the order
applied.


As a result, the number of inserts called is at least 2n, so use cautiously.


Rotational Symmetry is the most complicated. It rotates the point around it's
center 3 times.





Radial Symmetry is the next most complicated(but not by much).








Next up is X Symmetry.





And last is Y Symmetry.





Symmetry is applied in the order added. So adding 90 degree symmetry before an X
symmetry will mirror the complete symmetry of the rotation before mirroring
across the point on the x axis.


This can produce effects like this








Telling Symmetries apart


In this program, due to a very rapid development period in the beginning, the wonderfully expressive symmetries that existed in symmetricity are shown instead by featureless rectangles. These triangles are not configurable at the moment, nor are they textured.


Here's a table explaining what each color means:
ColorType
Pink90 degree rotational (counter clockwise) increments
BlueRadial
GreenX axis
RedY axis

[/t]


What's this dumb white triangle?


That's the point in the blueprint which the exported CSV starts designating or building from.


Turning the damned things off


Radial symmetries must have the cursor over them to toggle.


X axis symmetry may have the cursor anywhere so long as the x-coordinate is the same.


Y axis symmetry is the same as the x axis symmetry excepting that it cares about the Y coordinate.


Rotational symmetries must also have the cursor over the same spot as the symmetry.


Configuration


Configuration support is provided by GetPot,
and therefore the issues that come up in configuration may prove to be best
answered in its own docs. Other than that, it's not terribly complicated.


The configuration file is
Code: [Select]
Symmetricality.pot. It must be in the working directory of Symmetricality(As will the assets such as the linked libraries(for windows only), the font, the texture files, etc).


The only top level directive is
Code: [Select]
default_path which defines where the save/export/open dialog opens to. If it is not a valid path, it will open the empty path, which is generally not terribly convenient.


The file is divided into sections which work a bit like directories(again, go to the GetPot documentation).


For example, this defines the color of the dig designation:
Code: [Select]
[colors/dig]
R=200 G=200 B=255


The color components are fairly straightforwards here, the subsection names for the designations are
Code: [Select]
downward_stairs,
Code: [Select]
up_down_stairs,
Code: [Select]
upwards_stairs,
Code: [Select]
ramp, and
Code: [Select]
channel.
The section names in full should be
Code: [Select]
[colors/<designation_type>] or if following another designation
Code: [Select]
[../<designation_type] is acceptable.


The
Code: [Select]
[designation] section contains information specific to the configuration of a texture for rendering designations in addition to colorizing them.
The item
Code: [Select]
use_textures toggles this functionality.
The
Code: [Select]
width and
Code: [Select]
height directives are the width and height of each designation "glyph".


If you are creating a different texture for the designations, they must appear on a horizontal arrangement across a single image in the order(left to right)


1) dig
2) down stairs
3) up stairs
4) up/down stairs
5) ramp
6) channel


These glyphs are colorized by replacing the color white in the texture during runtime, so the interface retains the custom colors when using the designation texture.


Buildings are significantly more complex


Buildings


Not all buildings that exist in Dwarf Fortress are also in Symmetricality. The editor is designed so that it is possible to
create building entries without editing the code and recompiling. They exist in the same configuration file that is used to
set the designation colors and glyphs(right below them actually).


Buildings are more complicated because they are populated by number instead of by name, as
Code: [Select]
building/building_count determines the id ranges that it checks.


Also of note in the toplevel building section is
Code: [Select]
building_sheet which is the path(or name of) the image file that contains the sprites.


Each building is defined by six variables at the top level.


1)
Code: [Select]
Buildingname specifies what the editor calls it on the gui
2)
Code: [Select]
key_sequence defines the string which builds it in Dwarf Fortress
3)
Code: [Select]
size_x specifies the width of the building(in grid units)
4)
Code: [Select]
size_y specifies the height of the building(in grid units)
5)
Code: [Select]
center_x specifies the center of the building(not used right now)
6)
Code: [Select]
center_y specifies the y center of the building(not used right now)


After that, there is another section called
Code: [Select]
texturecoords that is inside the
Code: [Select]
[building/<id>/] section.
This defines the area of the spritesheet that are shown when the building is drawn.


1)
Code: [Select]
X1 is the starting point on the left hand side of the sprite(starting at 0)


2)
Code: [Select]
X2 is the right side of the sprite.


3)
Code: [Select]
Y1 is the top of the sprite.


4)
Code: [Select]
Y2 is the bottom of the sprite.


Strange things happen if any of these are not defined, so check these values if the building is not displayed properly.


Error reporting on the configuration is extremely sparse, and often the only sign that a single syntax error has been made is the absence of buildings or unusual or inaccurate designation colors.
« Last Edit: January 12, 2016, 08:00:34 pm by jaked122 »
Logged

jaked122

  • Bay Watcher
  • [PREFSTRING:Lurker tendancies]
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #1 on: January 09, 2016, 09:57:14 pm »

Made the first post explaining it more informative and helpful.


Also reserved just in case.

cephalo

  • Bay Watcher
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #2 on: January 12, 2016, 04:27:18 pm »

Start by explaining, in summary, what this is. It appears to be a designation tool. I can't guess how I would go about using it.
Logged
PerfectWorldDF World creator utility for Dwarf Fortress.

My latest forts:
Praisegems - Snarlingtool - Walledwar

jaked122

  • Bay Watcher
  • [PREFSTRING:Lurker tendancies]
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #3 on: January 12, 2016, 07:44:09 pm »

I'm mad that I hadn't realized that I had failed to mention what it did directly.

Arlax

  • Escaped Lunatic
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #4 on: February 07, 2016, 11:49:23 am »

I posted before in the old post, sorry. Now I've been actually able to try this tool, and must say it's amazing. Thanks!
Logged

jaked122

  • Bay Watcher
  • [PREFSTRING:Lurker tendancies]
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #5 on: February 07, 2016, 02:36:07 pm »

I posted before in the old post, sorry. Now I've been actually able to try this tool, and must say it's amazing. Thanks!


Well I'm glad to hear that. Any suggestions, desires, issues, etc?

expwnent

  • Bay Watcher
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #6 on: February 20, 2016, 10:26:56 pm »

Posting to watch.
Logged

jaked122

  • Bay Watcher
  • [PREFSTRING:Lurker tendancies]
    • View Profile
Re: Symmetricality, more symmetry!
« Reply #7 on: February 25, 2016, 08:33:16 pm »

Well, I'm not ready for a new release yet, but the code has been cleaned up a little bit. Some functionality separated into different classes.