enigma-dev / RadialGM

A native IDE for ENIGMA written in C++ using the Qt Framework.
GNU General Public License v3.0
47 stars 21 forks source link

Room Editor Features #219

Open JoshDreamland opened 2 years ago

JoshDreamland commented 2 years ago

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:

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:

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:

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.