If you do not know how to use it see the respective section
in my map-making tutorial.
A simple text file listing the object codes and their corresponding object types
for the C
attribute of the object element in maps. I compiled this
very early after the launch of the map editor by trying the different values for
the attribute.
The following applications are used by dragging and dropping a XML map file onto them. The format of the output XML file is likely to not be compatible with the map editor due to tabs used for indentation. Reformatting it by removing those tabs might be required.
The applications require the .NET framework to run, if they do not run properly try downloading the newest version.
The software is provided "as is" and you may use it at your own risk. I shall not be held accountable for any damages resulting from the use of the software.
This application converts all grounds and objects in a transformice map that are
defined via polar coordinates to grounds and objects defined via cartesian coordinates.
This is mainly useful for circular structures.
The attributes you will need to specify instread of X
& Y
are:
CX
: The center of the polar coordinate system on the X-Axis.
CY
: The center of the polar coordinate system on the Y-Axis.
D
: The distance of the point.
R
: The rotation of the vector leading to the point.
An example:
<S CX="400" CY="210" D="165" R="30" L="100" H="10" T="0" P="1,0,0.3,0.2,0,1,0,0"
/>
Converts to:
<S X="542.89" Y="127.5" L="100" H="10" T="0" P="1,0,0.3,0.2,0,1,0,0" />
If your map file was called "IceAndLavaLulz.xml" the output file will be called
"IceAndLavaLulz.conv.xml". (Note: If your map is crappy it will not become better
by doing this.)
Note: This application has been updated to adopt the Transformice coordinate system (Y-Axis based, positive rotation clockwise), the old version (X-Axis based, positive rotation counter-clockwise) can be downloaded by clicking here.
An application that mirrors your map vertically. If your map file was called "SpawnAtTheRight.xml"
the output file will be called "SpawnAtTheRight.flipped.xml". (Note: If your map
does not follow the orientation convention this will
make the map better.)
Possible uses:
The application takes into consideration:
As the name says this application will shift a map. The offsets have to be specified
in the P
element of the map file. The attributes are named xShift
& yShift
. For example <P xShift="0" yShift="300" />
will shift the map 300 units down. If the map file was called "HiddenStuff.xml"
the output file will be called "HiddenStuff.shifted.xml". (Note: Uhm, nevermind...)
Possible uses:
While at first the map generation was almost completely random, this now probably
should be called Procedural
Map Generator because there are many restrictions on how grounds and spawns
are placed, which game modes may occur and how strong or weak the gravity can be.
The application can be used without any settings or parameters but the results will
be quite, well, random.
Right now there are only three command line arguments available, those are:
/ls=string
Loads the settings from a XML file with the specified path./silent
Runs the application in silent mode, the console output will
be very limited./ws=string
Saves the settings to a XML file with the specified path.
Since there are no arguments implemented for setting the settings directly, it is
advised to save the default settings somewhere with the /ws argument which then
can be adjusted.
The settings XML file is made up of many elements that I will explain now:
SettingsFileVersion
If this version does not match the programs version
upon loading a warning message will be printed, since different versions may cause
errors.RestartCountWarningDisable
This can disable the warning that will be
printed when the application fails to produce a valid map after a certain number
of tries.RestartCountWarningLimit
The number of restarts that may occors before
the program is paused and a warning is printed (if not completely disabled with
the element above).RandomizedGravityProbablity
The probablity that the gravity will be
randomized at all.RandomizedWindProbability
The probability that the wind will be randomized
at all.NightModeProbablity
The probability of night mode being enabled.CollisionModeProbablity
The probability of collision mode being enabled.PartnerModeProbablity
The probability of partner mode being enabled.WindBounds
The minimum and maximum value the wind parameter may assume
if it is randomized.GravityBounds
The minimum and maximum value the gravity parameter may
assume if it is randomized.GroundNumberBounds
The minimum and maximum number of grounds that will
be placed in a map.GroundConfigArray
An array of ground configurations, the child elements
are called...
GroundConfig
...and contain settings regarding ground position, dimensions
and parameters. They are mainly used to have certain settings that only apply to
ground of the type ice for example. A GroundConfig has the following child elements.
ApplicableTypes
A list of types to which the config applies.ZoneArray
An array of zones that specify the range of coordinates the
ground can assume. Its child elements are called ZoneOfInt32
, logically
only integers should be used as values. You can define many zones to govern more
strictly how ground is distributed.LengthBounds
The minimum and maximum value for the length of the ground.HeightBounds
The minimum and maximum value for the height of the ground.RandomizedRotationProbability
The probability that the ground is rotated
at all.RotationBounds
The minimum and maximum value for the rotation of the
ground.GroundTypeProbabilityArray
An array containing the five probabilities
for the respective ground types to occur, the order is: Normal, Ice, Trampoline,
Lava, Chocolate.MarkerMaxCoordinateRecalculationCount
I call the "mice stuff" marker,
this sets how often random coordinates are calculated if the previous coordinates
were taken. (If this amount is exceeded the generator restarts)HoleZone
Specifies where the hole can be placed.CheeseZone
Specifies where the cheese can be placed.MouseZone
Specifies where the mouse spawn can be placed.ShamanZone
Specifies where the shaman spawn can be placed.PlaceMouseSpawn
Specifies whether a mouse spawn should be palced. (Mice
spawn at hole if there is none)PlaceShamanSpawn
Specifies whether a shaman spawn should be palced.
(Shaman spawns at mouse spawn if available, if not the hole will be used for spawning)HoleOnGround
Specifies whether the hole should be placed on a ground
as opposed to somewhere in space.CheeseOnGround
Specifies whether
the cheese should be placed on a ground as opposed to somewhere in space.
MouseOnGround
Specifies whether the mouse spawn should be placed on a ground
as opposed to somewhere in space.ShamanOnGround
Specifies whether
the shaman spawn should be placed on a ground as opposed to somewhere in space.PreventMarkerOnGroundTypeArray
An array that contains the ground types
on which markers may not be placed. (Spawning mice on lava often leads to the death
of beginners who carelessly jump for example)PreventMarkerPlacementOnRotatedGrounds
Specifies if markers may be
placed on rotated grounds. (NOTE: Disabling this may lead to invalid maps because
a corner of the ground can block the marker if rotated by 45 degrees for example.
It is recommended to leave this setting as it is)ValidateShamanPath
Specifies whether the generator checks if there
is a path between the markers. (This prevents markers from being completely enclosed
and unreachable)MarkerSpaceCheckZone
Specifies how much space is needed for a marker.
Using default values is recommended.NodeSpaceCheckZone
Specifies how much space a pathfinding node takes.
Using default values is recommended. (Or paths may be found that mice do not fit
through)
That is about it, minor elements should be comprehensible from the element name
alone.
Settings can be loaded via drag & drop as well if you do not want to use the respective
command line argument.
There are many ways in which this application could be improved, for example one
could introduce design patterns like balancing platforms or calculate the difficulty
of a map so you can set bounds for that too. However I currently do not have the
time to do anything like that but procedural map generation surely is an interesting
topic and I might come back to it some time.