WecTools - A program that helps you make some RPG maker resources

Wecoc

Veteran
Veteran
Joined
Jul 4, 2021
Messages
79
Reaction score
216
First Language
Catalan
Primarily Uses
RMXP
WecTools is an RPG maker XP project I started back in 2014 that allows to use RPG maker as a program to apply some tools that allow the creation of resources for your RPG maker game.

Those tools are normal scripts based on a new script base. They can be included over the script Main as always or as a TXT file inside the folder Tools. You can also import "engines", which are little tool-based external codes.

In other words, WecTools is like an open-source graphics design software but made entirely in RPG maker XP and with options that specifically help you make resources for RPG maker.

You don't need to have RPG maker XP installed to use it, and some of its tools can be useful for any RPG maker version. That being said, it's mainly based on XP, and it's very useful to have XP installed, because that allows to see all the code, and also include extra features on it.

The initial idea was defining a DLL so rewrite some of the more consuming functions so it would work better, but that hasn't been done yet, so sadly the program will be a bit slow in some cases.

Its current version is 0.85b, and has some tools already integrated by default.
You are free to change it as you want and expand on it with new tools, which you can also share here. I also have a list of discarded ideas in case someone is interested on that.

Download:
English - WecTools 0.85b ENG.zip
Spanish - WecTools 0.85b ESP.zip

Tools included
  • Simple Image Editor
  • Sprite Sheet Editor
  • Palette Editor
  • Autotile Templates
  • RTP Doors
  • RTP Roofs
  • Moss Brush / Snow Brush / Lava Brush
  • Floor Switch
  • Easy Dithering
  • Animation Viewer + Animation Extended
  • Troop Positioner
  • WecTex Ultimate (BETA)

Features available

  • Eron's Default RTPs
  • Load Tile Support
  • Eron's File Window [Deactivated]
  • FPS Window
  • Run-Time Script Caller [Deactivated]
  • Recorder Console [Deactivated]

Wecoc - WecTools lead author
AWorks, Nishikawa, Yasuhiro - AWorks Library
newold - Point Class and Bézier method
Selwyn - Window Hidden Class (Base)
vgvgf - Input module
Glitchfinder - Keyboard and Mouse Support
Eron - Some Features and Tools

Thanks to Ledai and Eron for contributing with some interesting ideas.
Also, thanks to Orochii for helping me with some technical issues on the early phases.

Screenshots:
Here's just a few

wectools_screenshot01.png

wectools_screenshot02.png

Guide:
Currently, the guide is only partially available in Spanish here. Probably you won't need it at all.

Instead, I'll simply include here a list of some main things you can do with the default tools.

Simple Image Editor
- Basic image control: Flip, rotate, resize and change canvas size
- Apply some color control with the option to mantain the current palette
- Set the current transparent and translucent colors and activate/deactivate them on the image
- Load an external palette to the image
- Convert character format between XP/VX
- Convert autotile format between XP/VX/WolfRPGEditor
- Convert cliff format between XP/VX
- Convert windowskin format between XP/VX/MV format
- Generate XP-like cliff from a wall single tile (or group of tiles)
- Generate XP-like deep wall from a single wall tile
- Generate waterfall autotile from a water autotile and a wall tile
- Apply XP-like transitions to a graphic and save its frames individually
- Get the index of a specific tile from a tileset
- [Engine] Deconstruct an autotile to its 48 individual tiles (XP, VX, Ace)
- [Engine] Convert a RPG maker 2k/3 Windowskin to XP or VX format
- [Engine] Auto-convert blackness to transparent value in any image (for animations)
- [Engine] Apply a wave effect to a tile so it can be used as an animated water base

Palette Editor
- Swap manually colors of a palette without altering it
- Apply some color control with the option to mantain the current palette

Autotile Templates
- Create autotiles from singular tiles using templates
- Create new templates directly from default autotiles

RTP Doors
- Create XP-like doors from a closed door and (optionally) a background and a frame

RTP Roofs
- Create inclined tiling roofs from a single roof tile
- Apply the roof tiles to full tileset templates
- Make a dome using roof tiles

Floor Switch
- Create XP-like floor switches (178-Switch01 and 181-Switch04)

Animation Viewer
- Adjust frame size, and center each frame manually with a visualizer
- [Engine] Convert an animation from 2k to XP format

And more!

I hope you find this useful!
 
Last edited:

BlazeCrimson

Warper
Member
Joined
Jun 30, 2021
Messages
2
Reaction score
2
First Language
Español
Primarily Uses
RMXP
I just wanted to say I recommend you guys giving this a chance if you can.
I have been using this tool with my dev team for a while, and it helps a lot to make graphics more efficiently, specially autotiles, doors, and some tiles.
I'm attaching an example video on how to create an RTP-like waterfall in just a minute.

 

Wecoc

Veteran
Veteran
Joined
Jul 4, 2021
Messages
79
Reaction score
216
First Language
Catalan
Primarily Uses
RMXP
I'm attaching an example video on how to create an RTP-like waterfall in just a minute.

Thank you for the video, I appreciate it! :awink:

New version 0.85b available!
I basically updated it with a few new things I've been doing recently.

Here's the list of changes. If you already have the 0.85 and are not interested in any of those, you can perfectly wait until 0.9 (which I don't know when will release...)

- New option on Simple Image Editor: Generate Water
- New autotile format for the Autotile converter on Simple Image Editor: TileD
- New Engines for Simple Image Editor: MZ Alpha Bugfix, Smart Resizer
- New Engines for Autotile Templates: Autotile Corners, Autotile Sides, MGC ISO Autotiles.
- New Engine for Floor Switch: Break Floor.
- New Engine for Easy Dithering: Dithering Blur
- New default palettes for Load palette: 2k and MV
- Load palette option in Simple Image Editor now allows combining palettes
- Get Tile ID now supports the tileset formats of VX/Ace and MV/MZ
- The Engine Wave Effect now also supports MV tile size
- New MV roof template for RTP Roofs

Generate Water allows creating an animated autotile from a static one, using a different water autotile as template.

MZ Alpha Bugfix converts all the near-black shadows of MZ tiles into pure-black shadows like those in MV. More info here.

Smart Resizer uses a pattern-based algorithm to double the size of the current image. It has a lot of configuration.

Autotile Corners allows to automatically create the cross-like tile containing all four small corners. Autotile Sides uses a rounding template to do the same but with the big corners of the autotile, using only its sides.

MGC ISO Autotiles converts an RPG maker XP autotile into its MGC ISO version (MGC ISO Engine is an isometry script for XP)

Break Floor takes a tile and tries to "break" it using an algorithm. It works better with tiles that are already irregular, like cave floors.

Dithering Blur blurs the bitmap, applies the current dithering on the most changed parts, and indexates the palette back again. It's like a brute-force dithering.

Sadly I also had to discard some ideas, but remember WecTools can be extended as you want, so I'll include some of those crazy ideas here.

Particle Engine

The idea here was building animations similarly than with the tool Animation Extended but using particles and formulas like in Particle Engines, a bit like the page Explosion Generator.

RTP Roofs Extended

The tool RTP Roofs has an option to make pyramidal domes using skewed roofs, the idea here was using those skewed roofs more generally, for example for buildings with a bit of perspective like those in David Browne videos.

casa_wectools_desc.png


Autotile Brush

The idea would be converting an autotile to a template (which can already be done in Autotile Templates) and then using those two colors as a parallax brush to paint any shape with that autotile and using some algorithm so it looks good.

autotile_test.png
 
Last edited:

Wecoc

Veteran
Veteran
Joined
Jul 4, 2021
Messages
79
Reaction score
216
First Language
Catalan
Primarily Uses
RMXP
I made a new Engine for Simple Image Editor that allows creating domes. The tool RTP Roofs already has an option to create domes, but it's a bit special in some cases, so you may prefer using this instead.

Paste this as Dome Builder.txt in the Engines folder (it's already available on WecTools 0.85b)

Ruby:
"Simple Image Editor"

# The engine 'Dome Builder' allows to construct the round rooftops of towers
# like those in the RTP of VX, Ace, MV and MZ. It has many other options as well.
# The tool RTP Roofs also has a dome builder integrated, but it works different.

# ----------- Configuration ----------------

# Dome width (in tiles)
DOME_WIDTH  = 2

# Dome height (in tiles)
DOME_HEIGHT = 2.5

# Examples:
# - Normal dome         [2, 2.5]
# - Normal dome (circular)     [2, 2]
# - Big dome             [4, 5]
# - Big dome (circular)        [4, 3.5]

# Set here the dome type (by default :conic or :octogonal)
DOME_TYPE = :conic

# Slope type (by default :linear, :circular, :gothic)
DOME_SLOPE = :linear

# Proportion between depth and width (by default 0.65)
DOME_DEPTH = 0.65 # With :octogonal, 0.5 may be more appropriate

# Stretch the texture (smaller tiles on top, bigger on bottom)
STRETCH_TEXTURE = true

# Apply a shadow on each side for a better 3D effect
DOME_SHADOW = true

# ----------- Configuration ----------------

SIMPLE_IMAGE_NIL = "You must load a image before running this engine"

def run_engine
  if @simple_window.image.nil?
    MessageBox.set(SIMPLE_IMAGE_NIL)
    return
  end
  image = @simple_window.image.clone
  palette = image.get_palette
  mid_color = palette[palette.size / 2]
  dw = (image.width * DOME_WIDTH).to_i
  dh = (image.height * DOME_HEIGHT).to_i
  roof = Bitmap.new(dw, dh)
  for iy in 0...DOME_HEIGHT.ceil
    for ix in 0...DOME_WIDTH.ceil
      roof.blt(ix * image.width, iy * image.height, image, image.rect)
    end
  end

  p "Create texture - COMPLETE"
  Graphics.update

  bitmaps = []
  result = Bitmap.new(roof.width, roof.height)
  for iy in 0...roof.height
    dx, dy, dw, dh = *get_roof_dimensions(iy, roof)
    if STRETCH_TEXTURE
      str = Bitmap.new(dw, 1)
      str.stretch_blt(str.rect, roof, Rect.new(0, dy, roof.width, 1))
      roof.blt_bitmap(dx, dy, str.width, str.height, str)
    end
    result.fill_rect(dx, dy, dw, 1, mid_color)
    bitmaps << get_shape_template(dw, dh)
  end

  p "Shape templates - COMPLETE"
  Graphics.update

  for iy in 0...roof.height
    template = bitmaps[iy]
    dx, dy, dw, dh = *get_roof_dimensions(iy, roof)
    for ix in 0...dw
      color = roof.get_pixel(dx + ix, dy).clone
      y_inc = get_y_increment(ix, template)
      new_y = (dy - (y_inc)).ceil
      target = result.get_pixel(dx + ix, new_y)
      if DOME_SHADOW
        color.lum = (color.lum - y_inc / 4 - dy / 8) + 16
      end
      result.set_pixel(dx + ix, new_y, color)
    end
  end
  template = bitmaps[0]
  for iy in 0...template.height / 2
    for ix in 0...template.width
      if template.get_pixel(ix, iy).alpha == 0
        result.set_pixel(ix, result.height - iy - 1, Color.new(0, 0, 0, 0))
        result.set_pixel(ix, result.height - iy - 2, Color.new(0, 0, 0, 0))
        result.set_pixel(ix, result.height - iy - 3, Color.new(0, 0, 0, 0))
      end
    end
  end

  p "Apply texture - COMPLETE"
  Graphics.update

  cloned = result.clone
  for iy in 0...result.height
    for ix in 0...result.width
      color = cloned.get_pixel(ix, iy)
      next if color.alpha == 0
      dark_color = color.clone
      dark_color.lum = color.lum - 20
      result.set_pixel(ix, iy + 1, dark_color)
      result.set_pixel(ix + 1, iy + 1, dark_color)
      result.set_pixel(ix, iy, dark_color)
      result.set_pixel(ix, iy - 1, color)
    end
  end

  @simple_window.image = result.clone
end

def get_roof_dimensions(iy, roof)
  dy = roof.height - iy - 1
  case DOME_SLOPE
  when :circular
    dx = (iy ** 3) * (roof.width / 2) / (roof.height ** 3)
  when :gothic
    dx = (iy ** 0.5) * (roof.width / 2) / (roof.height ** 0.5)
  else # :linear (default)
    dx = iy * (roof.width / 2) / roof.height
  end
  dw = [roof.width - dx * 2, 1].max
  dh = [(dw * DOME_DEPTH).ceil, 1].max
  return [dx, dy, dw, dh]
end

def get_shape_template(dw, dh)
  shape = Bitmap.new(dw, dh)
  case DOME_TYPE
  when :octogonal
    for i in 0...(dw/2)
      dy = dh / 2 - i
      shape.fill_rect(i, dy, 1, dh - dy * 2, Color.new(0, 0, 0))
      shape.fill_rect(dw - i - 1, dy, 1, dh - dy * 2, Color.new(0, 0, 0))
    end
  else # :conic (default)
    circle = Bitmap.new(dw, dw)
    circle.fill_circle(-1, -1, dw, dw, Color.new(0, 0, 0))
    shape.stretch_blt(shape.rect, circle, circle.rect)
  end
  return shape
end

def get_y_increment(dx, template)
  for iy in 0...template.height
    return iy if template.get_pixel(dx, iy).alpha != 0
  end
  return 0
end

run_engine

As many other Engines, there's some configuration on the very start. The program allows opening the file from there and modifying those options each time you want to use it. With that you can create domes of any size from a single roof tile, and those domes can be conic, octagonal, circular, gothic...
As you can see, I did my homework :aswt:

Execute WecTools.exe and open the tool Simple Image Editor.

Go to File -> Load and search a tileset with the roof you want (using Ctrl+R will go to the RTP folders if available). Pressing Shift and clicking the image allows picking a subset of tiles from the tileset, in this case the roof. As you can see here, I defined a subtile size of 16px (it would be 24px on MV/MZ)

wectools-tuto01.png


Then go to File -> Load engine -> Dome Builder.txt
If you click on the little icon on the right it will open the file, so you can there change its configuration.

After clicking the engine, the tile will transform into the desired dome (if you don't like it you can always press Ctrl+Z and try again with a different configuration)

wectools-tuto02.png


Then you can simply screenshot or save that image with File -> Save and use it somewhere else. Even if you have to polish it later, I think it saves a lot of trouble, since it's not a transformation common software can do, so you would have to do it manually.

That being said, there's a little cheat you can do as well.
If you execute first the Engine called Smart Resizer, it will double the tile size first, so the resulting dome will also be double its size, the algorithm will have been applied on a greater scale. Then you can change its size back on your graphics software, and you'll get a smoother result. Bear in mind, if you do that, the Engine will take more time to execute (approximately four times more).

You can compare the results here.
wectools-tuto03.png

Important: WecTools 0.85b has another Engine called Tower Bulder.txt which allows building the wall of the circular tower as well. All you have to do is combine both parts later.
 
Last edited:

fizzly

Veteran
Veteran
Joined
Mar 23, 2012
Messages
981
Reaction score
619
First Language
Polish
Primarily Uses
RMMV
Why is no one said this is AWESOME!? I said that. And again. THIS IS AWESOME.
 

Latest Threads

Latest Posts

Latest Profile Posts

Still alive! Totally did not finish in time for the Jam (boy that's late) but tl;dr of the last half a year is Work term -> Covid Lockdown -> Sick... again -> Full time Employment. Game stuff has been on hiatus but got a new graphics tablet so hopefully updates again soon. =D
Going on hiatus. Won't be back until mid October.:LZSoops:
Just read the English lyrics for Despacito. Ramen aint innocent no more! :kaodes:
Well today was blown away with nothing to show for it. I made a new character to my game who I was going to have a protection mechanic where he protects my main character randomly unless it's a critical, and no matter what, to check if an attack received will be critical, means checking the apply method. This means rewriting the entire method and I refused to do that.

Forum statistics

Threads
115,316
Messages
1,088,888
Members
149,961
Latest member
MrSunshine
Top