Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Room Editor Features #219

Open
JoshDreamland opened this issue Feb 13, 2022 · 0 comments
Open

Room Editor Features #219

JoshDreamland opened this issue Feb 13, 2022 · 0 comments

Comments

@JoshDreamland
Copy link
Member

JoshDreamland commented Feb 13, 2022

As a small project

Complete the RadialGM room editor, bringing it to feature parity with LateralGM (our old Java IDE) and Game Maker.

This includes the following features:

  • Dragging and dropping instances and tiles
  • Selecting regions of instances and tiles to drag
  • Visually editing properties of instances, such as scale and rotation

These items can easily be completed within the 175-hour GSoC timetable. Remaining hours, up to the full 350, can be invested in other items below.

Mentors: Josh, Greg
Difficulty: Easy
Expected size: 175h (can scale to 350h)
Skills required: C++ fundamentals, UI Experience
Skills preferred: Experience with Qt, experience with custom UI programming

Features to scale to a large project

Custom instance properties

Allow setting arbitrary properties (variables) on instances.
Properties can have various types:

  • Coordinates (pair of x/y variables)
  • Regions (two pairs of x/y variables)
  • Corresponding instance (instance ID variable)
  • Path (array of coordinate pairs)

Instance and Tile Groups

Allow users to create groups, similar to in tools like InkScape and Microsoft Office. These groups can be manipulated as a unit using click and drag, or double-clicked to be entered.

Instance and Tile Regions

Think of regions as an optimized group.

The EGM spec supports defining regions of evenly-distributed instances, but the room editor simply unpacks these into an ordinary, dissociative collection of instances upon load. Saving reconstructs groups using connected components.

Add support for defining regions of instances in the room editor instead of placing each instance one-by-one.

Currently, all EGM-generated regions are rectangular, but the IDE should be able to define polygonal regions, as well.

Dynamic groups

A cool feature to add to instance or tile groups is placement semantics. That is, allow the room editor to dynamically fill tile groups based on preset patterns and roles of tiles in a tileset. Examples:

  • Fill a region with a grid of instances (the default behavior for a region).
  • Fill a region with an isometric grid of instances.
  • Randomly fill a region with a certain number or density of instances.
  • Fill a region with a grid of tiles, choosing particular tiles for corners,
    edges, slopes, inner corners, and filling.
    • Allow setting probabilities when multiple options are available for a
      given tile.

For randomized regions, the seed should be a parameter so that users can preview what the result will look like and choose a favorite seed.

Dynamic regions should be ungroupable so that the randomized output can be edited manually.

The EGM spec will need to be extended to support storing the dynamic format. The library that generates the filled ares must go in the ENIGMA Shared folder so that both the engine and IDE can use it.

Overworld support

Create a new resource to allow placing rooms inside a larger room, called an overworld. See the Overworld project proposal for more information.

@JoshDreamland JoshDreamland added the GSOC-Long Google Summer of Code - Long Project label Feb 13, 2022
@fundies fundies removed the GSOC-Long Google Summer of Code - Long Project label Feb 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants