Giter VIP home page Giter VIP logo

dddeditorgms2's Introduction

DDDEditorGMS2

Made with GameMaker Studio 2

I have it in my head that making a general-purpose game editor will save me time in the long run, as opposed to falling into the trap of this, which it almost certainly already has. But on the other hand, I've had fun working on this, so maybe that's okay.

(With that said, it's bee nice having this base of code to use as a starting point to spin other tools off of.)

The design of this editor borrows a lot from RPG Maker, although there are a number of places where it obviously deviates - all events are functionally Common Events - and some stuff that's totally new, such as 3D meshes.

By the way I'm chronically behind on updating this readme, I hope you understand.

Media

The main game editor: you can slap down entities of different types (characters, tiles, models, some other things). You can modify their properties, give them behaviors and some other things. (Click to expand the images.)

There's also a 2D mode if you're into that kind of thing, although the underling code is almost exactly the same.

Game data types can be created. Some generic stuff like "sound effects and music" is built-in, but anything that's specific to your particular game has to be defined first.

Once the custom data types are defined, you can assign values to them.

And then there's the event editor. It's essentially just a nodal version of the RPG Maker event editor. It took a lot of work to make but it works pretty well, and I'm happy with how it came out.

There are some miscellaneous property editor form UI things.

A long time ago I made a 3D terrain editor for Game Maker. Several of them, in fact. It's not directly related to the rest of DDD but it uses a lot of the same code, the renderer, etc so when someone asked me to re-make it recently I decided to include it.

Upcoming stuff

  • Overhauling the save structure, giving more control over how (and what) gets saved and enabling data files to be swapped around more easily
  • Autotiles (for both 2D tiles and 3D meshes)
  • More map stuff, especially verticality
  • Certain data structures inside the editor are garbage so i'm going to spend a bit of time refactoring
  • Off-grid map editing (both in 2D and in 3D) - although the main grid-based functionality will obviously take priority

Stuff I'm considering adding

Obviously I want to fully implement and / or expand a lot of the things that are already included, but there are also a few completely new things that I want to get to eventually that aren't part of the program yet.

  • UI blueprints: they won't be fully scriptable or anything, but they should make laying out menus and whatnot in-game easier than they otherwise would be
  • Proper documentation (beyond the tooltips)

How development for this works

For the time being, I'm compiling updates once a week or so, or perhaps more often if I find a bug that breaks things entirely. If I don't have much to add at the end of a given week I might skip one, or if I finish off something major I might release it as soon as it's done. The versioning system I'll be using goes year.quarter.release.build, so 2019.4.3.22 would be the third release in the fourth quarter of 2019, and the twenty-second time overall I created an executable.

Unless something seriously bad happens and I'm not able to make the Yoyo Compiler work, there will be two versions: one with the regular Game Maker interpreter ("default"), and one made from the Yoyo Compiler ("YYC"). The interpreted version will be somewhat slower but should be more stable, and the YYC version will be faster but potentially buggier.

I've learned the hard way that having large amounts of bad code inevitably makes it really hard to develop a project, which means I refactor things fairly frequently. As a result, things that used to work break from time to time. If you're using this, that means you want to save your work and make backups frequently, and as a general rule verison control is never a bad thing.

In addition, the data format evolves over time. For the most part the editor is backwards compatible and will be quite happy to read old version of the data files, but to fend off the aforementioned code rot I kill off old versions periodically (now that I'm publishing releases, I'll probably be doing that once a quarter or so). I'll say when I put out an update that kills compatibility, and if you try to load an old data file the editor will tell you and ask you to save it through a more recent version that it will accept.

Usage

The game I'm making in tandem with this editor (and using this editor) is currently in a private repository so you can't look at that to see how you use the data files, although the serialize_load_* scripts should give you a good idea of how the data's stored. Except for game maps and a few places where a number of related bools are smashed together into an int32 it's mostly just a bunch of data types stored in sequence.

Contributors

Original project

The original GMS1 repository can be found here, but I won't be updating it in the future because GMS2 is really good and I don't plan on going back.

dddeditorgms2's People

Contributors

dragonitespam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dddeditorgms2's Issues

Program Resizing

E.g. you resize the window, the sidebar stays the same and the viewport changes size

Whitespaces after usemtl statement in .obj export breaks dotobj

After exporting a textured terrain as .obj, the 3rd line looked like so:
usemtl terrain

The horizontal tab (\t) at the end of the material name causes an error in the gms .obj loader library "dotobj" from JujuAdams, unsure if there are any more libraries/software that this issue breaks.

Menu item double highlight

There's a single pixel space where two menu items seem to overlap. If you go over that space with the cursor, you can highlight two menu items at once.

All Entities list doesn't seem to work

Describe the bug
The All Entities list (Stats tab) doesn't seem to work

To Reproduce
Steps to reproduce the behavior:

  1. Try to do anything to the All Entities list and it probably won't

Expected behavior
The list will respond and behave like any other list

Additional context
The nuclear option of "getting rid of the entities list" probably wouldn't be the end of the world tbh

Speed up entity deletion

Describe the bug
Deleting entities from large maps is quite slow. This is all right for individual entities, but when you try to do actions in bulk - for example, clearing an entire map in order to load another one - it can take quite a long time.

It would be pretty cool to, at the very least, have a special way to speed up map loading, and at best to speed up entity deletion overall.

To Reproduce
Steps to reproduce the behavior:

  1. Open any large map.
  2. Go to the Maps tab and try to load a different one.
  3. Wait.

Expected behavior
You don't need to wait literal minutes to do things such as this.

Program flashes when certain UI things are interacted with

Appears to be related to #5 , although I'm equally unsure why that would be.

Describe the bug
When you click on any of the buttons that spawns a dialog in the Animation editor (only the ones that are part of the editor - dialogs spawned from the menu bar do not do this) the 3D camera vanishes for one frame before coming back

To Reproduce
Steps to reproduce the behavior:

  1. Open the animation editor (F9 or from the menu bar)
  2. Enable one of the dialog-spawning buttons ("layer properties," etc) through whichever means are necessary - usually by selecting a relevant piece of data
  3. If you click on said button, the 3D camera vanishes and reappears

Expected behavior
Not this

"Data/Game Data" menu item causes crash

___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object Camera:

DoConv :1: illegal undefined/null use
 at gml_Script_ui_init_game_data_activate (line 4) -     Camera.ui_game_data.active_type_guid = sorted[| ui_list_selection(Camera.ui_game_data.el_master)].GUID;
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_ui_init_game_data_activate (line 4)
called from - gml_Script_momu_editor_data (line 33) - ui_init_game_data_activate();
called from - gml_Script_menu_render_element (line 31) -         script_execute(argument0.onmouseup, argument0);
called from - gml_Script_menu_render (line 59) -             script_execute(thing.render, thing, mx1, my1, mx2, my2);
called from - gml_Script_menu_render_main (line 17) -         script_execute(thing.render, thing, xx + argument0.element_width * i, yy);
called from - gml_Script_draw_editor_menu (line 11) - script_execute(menu.render, menu, 0, yy);
called from - gml_Object_Camera_Draw_0 (line 11) -                 draw_editor_menu();

Edit External File buttons in YYC

For some reason, trying to click a Code Edit button causes YYC versions of the editor to crash. This currently isn't too much of a roadblock since I mostly use it inside the IDE anyway, but if I want this to be a generally useful tool I should probably find out why.

(Update: YYC only, apparently)

Resizing window causes fps camera to turn

Whenever you click scroll while hovering over the camera it locks your mouse and you can freely fly around, this breaks whenever the window is resized, resizing window to the left causes camera to spin left, right causes to spin right, up causes to pitch up, down causes to pitch down.

Desync'd Mouse positioning

Describe the bug
The selection of the mouse cursor and where the position of where it actually is, is offset by a massive value.

To Reproduce
Steps to reproduce the behavior:
Constant Issue, on Startup

Expected behavior
Selection sync'd properly with the mouse cursor.

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: [Windows 10]
  • Version [1909]
  • DDDEditorGMS2 | Version 01.01.2020

Additional context
I'm going to assume its relevant to the screen resolution. I run in 1360x768.

Potentially add a launcher that allows you to select resolution? Or potentially a .cfg option.

Viewport movement

Viewport movement (holding down right click + WASD keys) appears to not work diagonally, only in straight lines (either A and D or W and S work)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.