DDDDD     AAAAA   EEEEEEE  DDDDD     AAAAA   L        U     U   SSSSS

D    D   A     A  E        D    D   A     A  L        U     U  S     S

D     D  A     A  E        D     D  A     A  L        U     U  S

D     D  AAAAAAA  EEEEEE   D     D  AAAAAAA  L        U     U   SSSSS

D     D  A     A  E        D     D  A     A  L        U     U        S

D    D   A     A  E        D    D   A     A  L        U     U  S     S

DDDDD    A     A  EEEEEEE  DDDDD    A     A  LLLLLLL   UUUUU    SSSSS

 

                         **  VERSION  2.3  **

 

This file describes the new features, changes, and bug fixes in Daedalus 2.3, that weren't in the previous version. It is only useful if you're already familiar with Daedalus 2.2 or before and want to know what the newest version offers.

 

For a quick demo of some of the cool things Daedalus 2.3 can do, start the program, press Alt+1 to start the "Daedalus demos" script, then press F2 to animate yourself running through a Maze.

                                                                                                                                                                    

NEW FEATURES

 

A list of new features in Daedalus 2.3, i.e. new commands and settings that weren't present in the previous version:

 

1. Recursive division Mazes: The Recursive Division command on the More Perfect submenu of the Create menu creates a Maze with the recursive division algorithm. In this algorithm, the area within the Maze is divided by a randomly positioned horizontal or vertical wall with a passage opening within it, and then each subarea is recursively divided with more walls until all areas are filled.

 

The Random Settings dialog determines whether each area is divided horizontally or vertically. If the Random Run field is 0, then divisions are based on the area’s proportions, where short and wide areas are more likely to be divided vertically and vice versa. Such division is adjusted by the Random Bias field, where positive biases increase the chance of horizontal divisions and negative biases vertical divisions. If the Random Run field is non-zero, then divisions are purely based on the Random Bias field, where that field will be the percentage that each division will be horizontal, ranging from -50 (all vertical) to 0 (equal chances) to 50 (all horizontal).

 

2. Custom Labyrinths: The Custom command on the Labyrinth submenu of the Create menu draws a unicursal Labyrinth with a custom specified circuit sequence. Each circuit fills an entire ring of the Labyrinth, each circuit alternates direction from the previous circuit, and the Labyrinth always starts on the outside and ends in the center. Like the other commands on the Labyrinth submenu, the circuits will be the widest possible that fit within the current bitmap dimensions. The circuit sequence comes from the Custom Paths field in the new Labyrinth Settings dialog.

 

3. Labyrinth dialog: The Labyrinth Settings command on the Labyrinth submenu of the Create menu allows accessing settings that affect the Labyrinth creation commands on that menu.

 

Current Labyrinth: This radio button group determines the type of Labyrinth to draw when the Current Labyrinth command is run. The six options here (Classical, Chartres, Cretan, Man In The Maze, Chartres Replica, and Custom) map to the corresponding commands on the Labyrinth submenu.

 

Circle: This is a radio button in the “circuit shape” group. When selected Labyrinths will be drawn entirely using curved circuits.

 

Rounded: This is a radio button in the “circuit shape” group. When selected Labyrinths will be drawn rectangular with horizontal and vertical walls, except the corners will be rounded.

 

Square: This is a radio button in the “circuit shape” group. When selected Labyrinths will be drawn rectangular with horizontal and vertical walls everywhere.

 

Flat: This is a radio button in the “circuit shape” group. When selected Labyrinths will be drawn flattened if possible, with circuits unfolded into rows.

 

Classical Size: This field indicates the number of circuits to include when the Current Labyrinth type is Classical or Man in the Maze. Setting this to 0 will result in a 3 circuit Labyrinth, 1 will result in the default sized 7 circuit Labyrinth, 2 will result in 11 circuits, and so on with each later number increasing the number of rings by four.

 

Classical Size is Circuits: When this is set, the number in the Classical Size field will indicate the exact number of circuits to use in the Classical or Man in the Maze type Labyrinths. This value will be rounded up to the nearest number that’s one less than a multiple of four, e.g. 3, 7, 11, and so on.

 

Custom Paths: This string indicates the custom sequence of circuits when drawing a custom Labyrinth. Circuits are specified in navigation order, where circuit 1 means the outer edge. Circuits may be specified with numbers where letters are used for circuits 10 and beyond, or circuits may be specified with just letters where “A” is the outer edge circuit.

 

The equals sign followed by a number will be mapped to the first Labyrinth with that many circuits, e.g. “=3” means “123” with sequentially increasing circuits. The equals sign followed by a negative number will be mapped to the last Labyrinth with that many circuits, e.g. “=-3” means “321” with sequentially decreasing circuits. The string “=Classical” will map to the circuits for the default classical seven circuit Labyrinth, namely “3214765”.

 

Custom Autoiterate: When this flag is set, each time a custom Labyrinth is generated the Custom Paths field will be updated to a different valid Labyrinth. The Labyrinths will proceed in sequence through Labyrinths of the same number of circuits, skipping any circuit layouts that are invalid based on the Fanfolds Allowed and related settings. This feature can be used to display and count the number of Labyrinths possible of a given size.

 

If Don’t Autostart Infinite in File Settings is on, then automatically iterating Labyrinths will stop after the last valid Labyrinth of a given size is displayed. When that flag is off, progression loops back to the beginning or the initial Labyrinth with sequentially increasing circuits.

 

Fanfolds Allowed: This field determines whether extraneous circuits are allowed in autoiterated custom Labyrinths. A fanfold passage is two adjacent circuits (e.g. ...34... or ...65...), surrounded on either side by circuits moving in the same direction (e.g. ...4567... or ...8541...). In such a case the middle adjacent circuits can be considered extraneous since they don't add anything important to the structure of the Labyrinth, since they amount to a "hiccup" along the way of the traversal between the circuits on either side of it. If there's a direction change (e.g. ...6547... or ...6125...) then you can't delete the middle adjacent circuits since they're an integral part of the Labyrinth's structure (or at least every Labyrinth has at least one sequence like this). When this value is 2, all Labyrinths will be shown regardless of fanfold circuits. When this value is 1, Labyrinths with obvious fanfolds involving 3 or more adjacent circuits (e.g. ...3458... or ...9654...) will be skipped. When this value is 0, only Labyrinths with no fanfold circuits anywhere will be shown (e.g. skip ...2569... and ...8541...).

 

Asymmetry Allowed: This field determines the asymmetry allowed in autoiterated custom Labyrinths. A Labyrinth is symmetric if it has the same circuit sequence when flipped inside out. When this value is 2, all Labyrinths will be shown regardless of symmetry. When this value is 1, only one of the two combinations of asymmetric Labyrinths will be shown. When this value is 0, only fully symmetric Labyrinths will be shown.

 

Circuit Partitioning: This field determines whether partionable Labyrinths are allowed in autoiterated custom Labyrinths. A Labyrinth can be circuit partitioned if at any point (other than the outer and innermost edges) there's only one opening in the wall between two circuits, i.e. it can divided between any two circuits into two smaller Labyrinths. When this value is 2, all Labyrinths will be shown regardless of partitioning. When this value is 1, Labyrinths with trivial levels at the entrance or exit will be skipped, where such a situation is simply a partition involving a 1 circuit section on the outer or inner edge. When this value is 0, only Labyrinths with no partitioning anywhere will be shown.

 

Radius Partitioning: This field determines whether Labyrinths partitioned along the axis perpendicular to circuits are allowed in autoiterated custom Labyrinths. The only way to have a radius partition in a Labyrinth is next to the entrance or exit, by jumping from the entrance to the innermost circuit, or jumping from the outermost circuit to the center. When this value is 2, all Labyrinths will be shown regardless of radius partitioning. When this value is 1, Labyrinths with two radius partitions that both start with the inner circuit and end with the outer circuit will be skipped (but one of those radius partitions is allowed to be present). When this value is 0, only Labyrinths with no radius partitioning anywhere will be shown.

 

Radius: This radio button in the “custom align” group draws custom Labyrinths such that the main radial wall that’s adjacent to the entrance and exit and marks where circuits change direction is always centered within the Labyrinth. This will cause the entrance and exit to be offset half a passage width to the left or right of the main radial wall.

 

Entrance: This radio button in the “custom align” group draws custom Labyrinths such that the entrance is always centered within the Labyrinth. This will cause the main radial wall to be offset a half passage width to the right of the entrance.

 

Exit: This radio button in the “custom align” group draws custom Labyrinths such that the exit is always centered within the Labyrinth. This will cause the main radial wall to be offset a half passage width to the left or right of the exit.

 

Balanced: This radio button in the “custom align” group draws custom Labyrinths such that the entrance and exit are both centered as much as possible within the Labyrinth. For odd sized Labyrinths this will behave like Radius alignment where the radial wall will be centered with the entrance and exit offset on either size of it, and for even sized Labyrinths this will behave like Entrance and Exit alignments where the entrance and exit will be centered and the radial wall offset to their right.

 

Custom Center Size: This field determines the diameter in passage widths of the center area in a custom Labyrinth. Some circuit sequences, circuit shapes, and entrance/exit alignments require a certain minimum center size to display properly. If the desired number is too small, the actual diameter used when drawing the Labyrinth will be the smallest possible. If this value is zero, the diameter will be the smallest possible that all Custom Path circuit sequences of that size can display within. This option allows automatically iterating through Labyrinths without the center changing sizes during the iteration.

 

4. Setup program group: The Program Group (User) command on the Setup submenu of the File menu will create a “Daedalus” folder on the Windows Start / Programs menu. In this folder will be shortcuts to the Daedalus executable, shortcuts to the three documentation files (standard program usage, scripting, and latest changes), and a shortcut to the Daedalus Web site. It will also contain a Scripts subfolder containing shortcuts to the 22 scripts that come with the program. This program group will only be visible to the current user.

 

The Program Group (All) command is identical to the Program Group (User) command, except the folder created will be visible to all users logged into Windows instead of just the current user. The former command should always succeed, while permission to create a program group for all users may be restricted on Vista and newer versions of Windows. Hence Daedalus may need to be run as Administrator to avoid this command failing and displaying an error message.

 

5. Setup desktop icon: The Desktop Icon command on the Setup submenu of the File menu will create a shortcut on the Windows desktop pointing to the current location of the Daedalus executable.

 

6. Setup file extensions: The File Extensions command on the Setup submenu of the File menu will register Daedalus as the owner for the file extensions .ds (Daedalus scripts), .d3 (Daedalus 3D bitmaps), .dp (Daedalus patch files), and .dw (Daedalus wireframe files). Double clicking on such files will have Daedalus launch and open them. These files will also be given a Daedalus icon of a simple Maze. This command edits the Windows registry, which is protected on Vista and newer versions of Windows, meaning the command may fail and display an error message. Hence Daedalus may need to be run as Administrator in order for the program to have permission to edit the registry.

 

7. Weave Maze display: The Clarify Weave command on the Maze menu should only be run with a Weave Maze in the bitmap. It will convert the Weave Maze into an image that looks better (which usually means making the passages thicker relative to walls), zooming the passages and walls appropriately.

 

Clarify Weave Passage Bias: This value in the Maze Settings dialog determines how many pixels wide passages will be in Mazes that have had the Clarify Weave command run on them.

 

Clarify Weave Wall Bias: This value in the Maze Settings dialog determines how many pixels wide walls will be in Mazes that have had the Clarify Weave command run on them.

 

Clarify Weave Railing Bias: This value in the Maze Settings dialog determines how many pixels wide railings or separator walls next to overpass passages will be in Mazes that have had the Clarify Weave command run on them. Normally this value should be less than one half of the Wall Bias setting, in order to allow some of an underpass passage to still be visible between two parallel overpasses. If this value is too large (or zero) then overpasses and underpasses will instead be indicated with a block of on pixels in the middle of the intersection.

 

8. Sparse Caverns: The Cavern Sparseness setting in the Create Settings dialog will cause Mazes created with the Cavern command to be sparse, where the algorithm won’t fill in all available space with passages or walls. The setting determines the minimum interior wall thickness in pixels for passage carved caverns, or the minimum interior passage thickness for wall added caverns.

 

9. Picture Mazes: The Kruskal Based On Picture flag in the Create Settings dialog affects Mazes created with the Kruskal’s Algorithm and Kruskal Passages commands. This causes the wall and passage layout within the Maze to resemble an image in a color bitmap, assuming that bitmap exists. The Kruskal’s Algorithm command will make the Maze resemble the main color bitmap, and the Kruskal Passages command will resemble the temporary color bitmap (because the main color bitmap has a different effect on the Kruskal Passages command when present). Passages will be biased to appear more often in areas of high contrast in the picture, or in other words the more distinct the edge, the more likely a passage will be present at the same pixel in the Maze. Specifically this causes Kruskal’s algorithm to attempt to carve walls in order of contrast between the colors of the adjacent cells. This will cause certain passages and walls to always be present, where only areas of equal contrast will be randomized.

 

10. Carleton Maze simulation script: The Carleton Farm Maze command on the Run Script submenu of the File menu will run a new script to simulate the 2009 Carleton Farm corn Maze in Everett, WA. In this Maze you seek out 10 checkpoints in any order to spell out a hidden message.

 

11. Mouse Maze game script: The Mouse Maze command on the Run Script submenu of the File menu will run a new script to play a game where you move the mouse pointer through a mostly unicursal Maze as fast as possible, while avoiding bumping into walls.

 

EXTENDED & IMPROVED FEATURES

 

A list of improvements to existing features, i.e. new things you can now do with old features that you couldn't do before, or ways existing features work better than before. Note some change existing behavior in ways users of previous versions should be aware of:

 

1. Labyrinth settings moved: The Labyrinth Rounded Edges checkbox in the Create Settings dialog has been removed. This functionality is now covered by the Circuit Shape radio button group in the new Labyrinth Settings dialog, which offers four possibilities instead of just two for the shape of Labyrinth circuits. The Labyrinth Type field in the Create Settings dialog has been removed. This number is now covered by the Current Labyrinth radio button group in the Labyrinth Settings dialog, where classical Labyrinths with an alternate number of circuits are indicated by the Classical Size field in Labyrinth Settings.

 

2. Eller’s Braid algorithm: The Use Eller’s Algorithm flag in the File Settings dialog affects Mazes created with the Braid command. When set, braid Mazes will be created with a variation of Eller’s algorithm. This alternate braid Maze algorithm, when compared to the standard algorithm, will result in braid Mazes with a slightly higher loops density, will have a slight diagonal bias from upper left to lower right in the solution path, and will occasionally generate wall poles in the upper corners, however it’s also six times faster.

 

3. Color Pyramid: The Render Pyramid command on the Draw menu will generate a color image if the color bitmap is active. The colors used will be taken from the Obscure Draw Settings dialog: The background will always be white, lines will be in the Edge Color setting, the front face of blocks will be in the Object Color, and the sides of blocks will be in Sky Color (High). If the Shade Objects flag in Obscure Draw Settings is on, then the color of sides of blocks will be based on which way the side is facing: The top side of blocks will be in Sky Color (High), the bottom side of blocks will be in Sky Color (Low), the left side of blocks will be in Ground Color (High), and the right side of blocks will be in Ground Color (Low).

 

4. Color Save Text: The Save Text and Copy Text commands will generate a plain text version of the color bitmap if the color bitmap is active, producing a crude ASCII art version of the image. As with text monochrome bitmaps, one character represents one pixel, where the character used for a pixel is based on the darkness of its color. The characters used will be one of the following 16, ranked in order from darkest to lightest: #MN@O$7%?*;:+,.[space]

 

5. Color Teleport Dot: Commands on the Teleport Dot submenu of the Dot menu work on color bitmaps where they didn’t before. The UL Corner, UR Corner, LL Corner, LR Corner, Middle, and Random commands consider the size of the color bitmap if active, which will give better results if the color bitmap is differently sized than the main monochrome bitmap.

 

6. Non-cell Random Teleport: The Random command on the Teleport Dot submenu of the Dot menu will, if Solve Fillers Check Every Pixel in Maze Settings is on, teleport to any random pixel within the bitmap area, instead of only teleporting to pixels corresponding to the centers of cells.

 

7. Positioned Entrances: The Add Entrance and Add Exit commands on the Add submenu of the Maze menu will consider the Entrance Positioning setting from Maze Settings. If Entrance Positioning is set to Corners, Add Entrance will try to select a location nearest the upper left corner for the entrance, and Add Exit will try to select a location nearest the bottom right corner for the exit. If Entrance Positioning is set to Middle, Add Entrance and Exit will try to select a location nearest the middle of the top and bottom edges for the entrance and exit.

 

8. Larger bitmaps: Daedalus bitmaps may now be up to 32767 by 32767 pixels in size. Note the largest bitmaps, especially color ones, may cause out of memory errors in allocating the bitmap itself, or errors in displaying such bitmaps in a window.

 

9. 32 bit bitmaps: Daedalus can now load and paste color Windows bitmaps that store 32 bits per pixel. This should avoid error messages about a wrong number of bits when trying to bring certain bitmaps into the program.

 

10. Perspective improvement: The perspective inside view is slightly faster, where floor textures take less time to draw. Rendering of scenes containing many floor textures will take roughly 2/3 the time as before.

 

11. Improved documentation: The Daedalus documentation files as displayed with the Open Documentation, Open Scripting, and Open Changes commands are now HTML files (meaning they make use of color and other formatting) instead of just plain text files.

 

12. Improved icons: The Daedalus program now has 256 color icons, where the main program icon of a perspective inside view no longer has dithered walls on standard displays. The program also has larger 48x48 pixel icons, which allow the Tiles view in Explorer to have its own icon instead of showing a rough magnified version of the old 32x32 pixel icon. Daedalus owned files (Scripts, 3D bitmaps, patch files, and wireframe files) now have an icon of a Maze, instead of a generic file icon with a small version of the main Daedalus icon within it.

 

13. Color N-Dimensional Mazes: The 5D Mazes script now draws Mazes in color. Each axis has passage edges drawn in a different color of the rainbow as defined in the Replace Color dialog, making it easier to distinguish the different dimensions. Pressing the “a” key will toggle to a mode that highlights edges based on their distance from your location, where nearer locations are in earlier colors of the rainbow. Pressing the “k” key will toggle to monochrome mode where the entire Maze is in a single color. In addition, pressing the “b” key will toggle whether vertexes are highlighted by 3x3 pixel spots, making them easier to see.

 

BUG FIXES

 

A list of bugs and other problems in Daedalus 2.2, all of which have been fixed in Daedalus 2.3:

 

1. Eller hang: The Eller’s Algorithm command would hang when creating a Maze one passage wide.

 

2. Eller bug: The Eller’s Algorithm command would produce garbage when creating a Maze one passage tall, if Create With Wall Adding in Create Settings was set.

 

3. Infinite Eller bug: When Use Eller’s Algorithm in File Settings was on and there’s no active infinite Maze in progress, the Continue and End commands on the Infinite submenu of the Create menu would produce garbage instead of creating the first section of a new Maze.

 

4. Fill Single Dead Ends error: The Fill Single Dead Ends command would display a dot fault error if a dead end passage led off the top or left edges of the bitmap.

 

5. 3D Teleport bug: The Random command on the Teleport Dot submenu of the Dot menu would, when Bitmap Is 3D is checked, always place the dot between levels instead of within a level. This wasn’t visible when in the perspective inside view, which snaps the viewing location to the nearest cell, although it did mean teleporting would never place one on the bottom level.

 

6. Open Website bug: The Open Website command on the More Help submenu of the File menu would do nothing on Windows XP systems.

 

7. Pyramid blemish: Perspective images created with the Render Pyramid command would have minor blemishes where edge lines wouldn’t be fully present, but would have pixels missing. These areas would tend to be where roughly parallel lines would be close together, such as near the vanishing point.

 

SCRIPTING ADDITIONS

 

A list of new operations, variables, and functions added to the Daedalus scripting language. This only affects those who write their own macros or scripts, and should be ignored by everybody else:

 

********************  Operations  ********************

 

CustomIterate: Changes the Custom Paths field in the Labyrinth Settings dialog to the next valid Labyrinth. This does the same as creating a Custom Labyrinth with the Custom Autoiterate flag set, except this doesn’t draw the new Labyrinth. Afterward @z will contain whether incrementing failed because Don’t Autostart Infinite was on and there were no more Labyrinths to create of the current size.

 

MoveCloud <cloud> <distance>: Moves one or more clouds horizontally in the perspective inside view. The <cloud> parameter is the index of the cloud to move, where if invalid (e.g. negative) all clouds will be moved. The <distance> parameter is the offset to move the cloud(s) to the right. Clouds can have 16384 different positions, where the offset may range from -16383 to 16383. If the distance is invalid (i.e. a large positive or negative number) then the cloud(s) will be moved proportionally based on their index, with farther or lower index clouds moving slower.

 

Thicken2 <pixels>: Like the Thicken command except thickens each on pixel in the main monochrome bitmap by the specified number of pixels. If No Corner Hopping in Dot Settings is off, then each pixel will become a <pixels> by <pixels> square instead of a circle of <pixels> diameter.

 

Convex: Looks at the on pixels within the main bitmap, and fills in all concave inlets, holes, and areas between disconnected sections within it. In other words, this does the same as wrapping a rubber band around the set of on pixels, and filling in everything inside the band, leaving a convex shape.

 

2ndLineUntil <flag>: Draws a line on the main monochrome bitmap from the dot to the 2nd dot, in the Drag Is Erase color from Dot Settings. If the line bumps into an existing pixel of the color of the line, drawing stops. Afterward @x and @y will contain the coordinates of the pixel that was hit (if <flag> is True), or the coordinates of the pixel immediately before the location hit (if <flag> is False). Either way, @z will contain whether the line drawing hit an on pixel and stopped prematurely. This is used by the “Mouse Maze” script to draw lines that stop if you run into a wall.

 

Setup: Sets up the program in the Windows environment. This is a shortcut for a combination of the Program Group (User), Desktop Icon, and File Extensions commands.

 

********************  Variables  ********************

 

nHorizon: Indicates the offset of the horizon line in the perspective inside view, as a proportion of the vertical size of the window.  The value 0 is the default of the horizon centered in the middle of the window, 1000 has the horizon at the bottom of the window, and -1000 has the horizon at the top of the window.

 

fFrameDelay: When set, the perspective inside view will show an indicator of the frame delay on the fourth row from the bottom, or how long in milliseconds it took Daedalus to render the scene in question. Note this value is rounded to units of approximately 15 or 16 milliseconds, so not all numbers are possible.

 

nFrameDelay: Contains the most recent frame delay number as displayed when fFrameDelay is set. If the value is -1, no perspective inside view has been rendered yet with fFrameDelay on.

 

nAllocsTotal: Contains the total number of memory allocation buffers ever held by the program, incrementing each time a new buffer is allocated, and never decrementing. Combined with the nAllocations variable, this can be used to analyze memory usage behaviors of the program.

 

nAllocsSize: Contains the total size in bytes of all memory allocation buffers ever made by the program, increasing each time a new buffer is allocated, and never decreasing. Combined with the other memory allocation variables, this can be used to analyze memory usage behaviors of the program.

 

 

IMPORTANT NOTICE: Daedalus and all Maze generation and general graphics routines used in this program are Copyright (C) 1998-2010 by Walter D. Pullen. Permission is granted to freely use, modify, and distribute these routines provided these credits and notices remain unmodified with any altered or distributed versions of the program. The user does have all rights to Mazes and other graphic output they make in Daedalus, like a novel created in a word processor.

 

More formally: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful and inspiring, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, a copy of which is in the LICENSE.TXT included with Daedalus, and at http://www.gnu.org

 

O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O

*       Walter D. "Cruiser1" Pullen :)       !       Astara@msn.com       *

O Find your way through life's Maze: http://www.astrolog.org/labyrnth.htm O

* "Who am I, What am I?  As I am, I am not.  But as we are, I AM.  And to *

O you my creation, My Perfect Love is your Perfect Freedom. And I will be O

* with you forever and ever, until the End, and then forever more." - GOD *

O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O