A 2D Terrain Tool for Godot 3.2

SmartShape2D

Sample Image Sample Gif

SmartShape2D + Aseprite tutorial can be found here (Thanks Picster!):

VideoTutorial

SmartShape2D tutorial can be found here (Thanks LucyLavend!):

VideoTutorial

About

This plugin allows you to create nicely textured 2D polys. Simply place a few points then create / assign the shape material and you should have a good looking polygon.

The textures used are similar to what you would use if making terrain using TileMaps/TileSets

This plugin is under ACTIVE DEVELOPMENT! If you find any issues, by all means let us know. Read the section below on Contributing and post an issue if one doesn't already exist

If you enjoy this tool and want to support its development, I'd appreciate a coffee :)

Support

  • Supported and Tested on Godot 3.2
  • Should work with later versions of Godot 3.x

Demo

A Sample Godot Project can be found here: https://github.com/SirRamEsq/SmartShape2D-DemoProject

Documentation

Contibuting

Issues

If you have any suggestions or find any bugs, feel free to add an issue.

Please include the following three bits of information in each issue posted:

  • Bug / Suggestion
  • Godot Version
  • SmartShape2D Version

Some Guidelines for Issues:

  • Attaching a sample project where the issue exists is the fastest way for us to see what's going on
  • Try to be as descriptive as possible
  • Pictures and screenshots will also be very helpful

Issues can be added here

Development

We have a set of tests we run against the code (courtesy of GUT). If making a merge request, please ensure that the tests pass. If the tests have been updated appropriately to pass, please note this in the merge request.

Discord

We have a Discord server for the plugin. https://discord.gg/mHWDPBD3vu

Here, you can:

  • Ask for help
  • Showcase your project
  • Speak with the developers directly
Comments
  • Control point lines to follow contour

    Control point lines to follow contour

    Might look better if control point lines followed the contour of the shape. Plugin.gd doesn't have this info though so it might be necessary to move the control point line rendering into RMSmartshap2D.gd close to where the Draw edge quads exist (since the right information is available at that point).

  • Bezier Curves

    Bezier Curves

    Implement Bezier curves by holding down shift and dragging a point, like the built-in Path2D tool. The code for this exists in the Godot Source code and can be found at:

    • editor/plugins/path_2d_editor_plugin.cpp
  • Godot 4 alpha 2 Porting Attempt

    Godot 4 alpha 2 Porting Attempt

    Hello, Since I was using this package in 3.4, I decided to give a try to port it for Godot 4. Just posting this for FYI and maybe main contributors able to look at and maybe fix some code since I have never written inspector plugin. And yet, waiting for a beta release or RC also correct idea.

  • Tool icons disappear after shape is created in Godot 3.4+ Linux x64

    Tool icons disappear after shape is created in Godot 3.4+ Linux x64

    Hey there,

    After the shape is created the tool icons disappear when the shape is clicked, so the shape can't be edited properly. The icons "blink" in the menu every time the shape node is selected and disappear. This does not happen in version 3.3.4, jus 3.4+. There seems to be some kind of weird compatibility issue. I'm not sure if it happens on other OS, I'm using a Linux x64 machine.

    Thank you in advance.

  • Normal maps have wrong orientation on shape edges

    Normal maps have wrong orientation on shape edges

    When a normal texture is added to a shape edge and wrapped around the shape, the rotation on the normal map is not taken into account and the shading them becomes visibly wrong.

    Example image where the light direction is incorrect on the shape

    image

    One solution to this problem is encoding the orientation (tangent and binormal) of each vertex into it's vertex color, and use a shader to decode this information and properly transform the normals, which can lead to more visually accurate results.

    Example image where the light direction is correctly reflected on the shape

    image

    This solution, however, introduces other issues. For example, if the user doesn't apply a material to fix the vertex colors and rely on the default material, the shape will look something like this:

    Example image showing the vertex colors modulating the final color

    image

    Thus, I opened this issue to discuss the implementation of this fix (or some other) in a way that wouldn't harm the ease of use or quality of the asset.

    My own fork at https://github.com/crazyStewie/SmartShape2D has a basic implementation of this, that was used to take the screen shots.

  • Ensure Tessellated points are rendered based on surrounding verts Properties (tex,width,flip)

    Ensure Tessellated points are rendered based on surrounding verts Properties (tex,width,flip)

    Have tex, flip, and width affect tessellated polygon points

    We only have control over the user created verts, not the tessellated points in between For the width value, tessellated points could be interpolated between the two verts that it lies between For Texture and Flip, just use the value of the previous point

  • SmartShape fill/edges behave really strange in combination with Light2D

    SmartShape fill/edges behave really strange in combination with Light2D

    Hey, thanks for the amazing plugin! My game uses a lot of light and shadow effects, so I observed a really strange behaviour with edges and fill when combined with a Light2D.

    I created a minimal reproduction project that I attached. It looks like the edges are almost transparent? It's hard to describe. When the "weld" is turned off on the edge material - the edges seem to overlap and "add" to each other.

    I poked around in the code, but found nothing that could be the culprit on a first look.

    My guess is, it has to do with the draw_mesh() function. If I add a canvas_item shader to the SmartShape and just use COLOR = COLOR in the fragment function, it completely breaks down. So I think combining the Light2D with the mesh drawn in the draw function is somehow bugged out...

    But I am not a primary coder, more a swiss army knife/artist...

    SmartShape2D_light2D.zip

  • add inverted shape mode

    add inverted shape mode

    add a mode that inverts the shape rendered the fill outside of the shape, the edges flipped, and the collisions outside

    ferr2d has this feature: https://www.youtube.com/watch?v=7QMRYddFeME&feature=youtu.be&t=279

  • Cannot add any points to polygon

    Cannot add any points to polygon

    SmartShape Version: 2.0 Godot version: 3.2.2

    I seem unable to create any points of the polygon. I select the closed shape I just added, and points tool is selected, but when I click it just deselects the closed shape.

    It definitely worked in the last version I had (both say 2.0), with the same Godot version, so I think something was broken recently.

    SmartShapeCantAddPoints.zip

  • Invalid set index polygon

    Invalid set index polygon

    Hi, you have created a great tool except the demo does not work. When I ran it on 3.1, I got an error on line #726 "invalid set index 'polygon' in the RMSmartShape2D.gd.

  • randomize texture choice in edge material

    randomize texture choice in edge material

    Hi,

    This small edit adds a checkbox "randomize_texture" in the Edge Material. If this bool is true, instead of choosing the texture from the point property, SS2D will randomize the choice of texture inside the textures array.

    atn

  • Invalid get index 'normal Range and additional Errors when using SS2D Material Edge

    Invalid get index 'normal Range and additional Errors when using SS2D Material Edge

    Using Godot 3.5.1 Stable Edition. When ever I go to add the edge to a closed shape I get the following error in my output log.

    image

    Every time I move a point in the shape, also the textures disappear as soon as I do this, the new edge material doesn't show and the fill texture disappears as well

  • rare texture bug?

    rare texture bug?

    There is a bug where the texture instead of duplicating itself simply extends the edge pixels as a result:

    editor_screenshot_2022-09-01T095640-0400 editor_screenshot_2022-09-01T095709-0400

    is it a bug or did I do something wrong in the configuration?

  • Add ability to create hollow shapes with shape 2D?

    Add ability to create hollow shapes with shape 2D?

    Making levels with closed spaces feels close to impossible with this tool, though in any other regards I feel like this tool is perfect! making levels have never been easier, but sadly we can't seem to find the ability to create a hollow shape with this set up sadly :(

  • SS2D_Shape_Closed with collision on outside instead of inside

    SS2D_Shape_Closed with collision on outside instead of inside

    Howdy, is it possible to generate a closed shape with collision on the outside keeping things in rather than collision on the inside keeping things out?

    The use case I have for this is actually for creating top-down rooms, where the walls and floor are repeated textures. The floor would have the fill texture, and the walls fade out to the background color of black.

  • Ablity to split shape into two smaller shapes

    Ablity to split shape into two smaller shapes

    I really like this addon, but I've found a LOT of times I've been making a level, I'll end up finding out that the large shape I was working on really needs to be two smaller shapes. (e.g. I want to add a second path through the level by tunneling through an existing shape.)

    So I'll have this: image But want this: image

    Right now to do that, I have to manually duplicate the shape and delete all the points on one side, then on the duplicated shape delete all the points on the other side. It means I have to delete every single point in the shape I want to split by hand. (That process was annoying enough with the ~24 points just to make this example, let alone doing it on a level I just spent a couple hours on.)

    What I'd like is to have the ability to input two point IDs and automatically split the shape into two separate nodes based on that.

Related tags
This is a tool that allows you to check minecraft names availability, this tool can do around 3000~ names a minute or more!

Checker This is a tool that allows you to check minecraft names availability, this tool can do around 3000~ names a minute or more! Tutorial To instal

Feb 13, 2022
Traefik config validator: a CLI tool to (syntactically) validate your Traefik configuration filesTraefik config validator: a CLI tool to (syntactically) validate your Traefik configuration files
Traefik config validator: a CLI tool to (syntactically) validate your Traefik configuration filesTraefik config validator: a CLI tool to (syntactically) validate your Traefik configuration files

Traefik Config Validator Note This is currently pre-release software. traefik-config-validator is a CLI tool to (syntactically) validate your Traefik

Dec 16, 2021
Server-tool - A simple tool to run and create Minecraft servers

Server Tool A simple tool to run and maintain different Minecraft servers. This

Dec 15, 2022
A C/S Tool to Download Torrent Remotely and Retrieve Files Back Over HTTP at Full Speed without ISP Torrent Limitation.

remote-torrent Download Torrent Remotely and Retrieve Files Over HTTP at Full Speed without ISP Torrent Limitation. This repository is an extension to

Sep 30, 2022
Jazigo is a tool written in Go for retrieving configuration for multiple devices, similar to rancid, fetchconfig, oxidized, Sweet.

Table of Contents About Jazigo Supported Platforms Features Requirements Quick Start - Short version Quick Start - Detailed version Global Settings Im

Jan 5, 2023
Command-line tool and library for Windows remote command execution in Go

WinRM for Go Note: if you're looking for the winrm command-line tool, this has been splitted from this project and is available at winrm-cli This is a

Nov 29, 2022
Small TCP benchmarking tool in Go-lang

Simple TCP benchmark tool in Go =============================== This package provides simple command line tool to benchmark number of concurrent TCP

Aug 16, 2021
A TCP throughput measuring tool written in Go language
A TCP throughput measuring tool written in Go language

tcpmeter - a tool for measuring TCP upload and download speeds and RTT latency. Build go build Run start the server on the remote machine: tcpmeter -s

Apr 17, 2022
A tool for IDN homograph attacks and detection.

Ditto is a small tool that accepts a domain name as input and generates all its variants for an homograph attack as output, checking which ones are av

Dec 26, 2022
📦 Command line peer-to-peer data transfer tool based on libp2p.

pcp - Peer Copy Command line peer-to-peer data transfer tool based on libp2p. Table of Contents Motivation Project Status How does it work? Usage Inst

Jan 5, 2023
Network Diagnostic Tool

myLG, Command line Network Diagnostic Tool myLG is an open source software utility which combines the functions of the different network probes in one

Dec 30, 2022
mdmb is a tool for simulating Apple devices interacting with Apple MDM servers.

mdmb mdmb — short for MDM Benchmark, à la ab — is a tool for simulating Apple devices interacting with Apple MDM servers. mdmb creates sets of fake Ap

Dec 1, 2022
A tool to analyze and troubleshoot a Go binary size.
A tool to analyze and troubleshoot a Go binary size.

goweight A tool to analyze and troubleshoot a Go binary size. For more, see this blog post ✅ Get a breakdown of all modules inside a binary ✅ Supports

Dec 26, 2022
bodyclose is a static analysis tool which checks whether res.Body is correctly closed.

bodyclose is a static analysis tool which checks whether res.Body is correctly closed. Install You can get bodyclose by go get command. $ go

Jan 6, 2023
Go tool to wrap and fix errors with the new %w verb directive
Go tool to wrap and fix errors with the new %w verb directive

errwrap Wrap and fix Go errors with the new %w verb directive. This tool analyzes fmt.Errorf() calls and reports calls that contain a verb directive t

Nov 10, 2022
Subfinder is a subdomain discovery tool that discovers valid subdomains for websites. Designed as a passive framework to be useful for bug bounties and safe for penetration testing.
Subfinder is a subdomain discovery tool that discovers valid subdomains for websites. Designed as a passive framework to be useful for bug bounties and safe for penetration testing.

Fast passive subdomain enumeration tool. Features • Install • Usage • API Setup • License • Join Discord Subfinder is a subdomain discovery tool that

Jan 4, 2023
Go implementation of the traceroute tool

tracesite tracesite is a simple Go implementation of the traceroute tool Check out the blog post on explanation Install : Download binary from release

Dec 9, 2022