enigma-dev / enigma-dev/RadialGM
Room Editor Features
- Dominant language
- C++
- Stars
- 48
- Forks
- 23
- PR merge metrics
- No merged PRs in 30d
Description
## 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.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by examining the existing RadialGM room editor and comparing its behavior with LateralGM and Game Maker. Read the EGM specification and the Overworld project proposal before scoping work across dragging, selection, property editing, groups, regions, and overworld support; done is not defined as a single bounded change.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop-dev, devtools
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100