tzachshabtay / MonoAGS

AGS (Adventure Game Studio) reimagined in Mono
https://tzachshabtay.github.io/MonoAGS/
Artistic License 2.0
27 stars 8 forks source link

Editor Framework #137

Open persn opened 7 years ago

persn commented 7 years ago

Have you made any thoughts about what framework(s) to build the editor in?

tzachshabtay commented 7 years ago

Well, in terms of UI, I had this crazy idea in mind of having the editor be an "AGS Game" itself, so it would dog-food the engine, so to speak. This would make the editor work in all platforms that the engine works in (at least the UI part), will push the engine to have a really powerful UI system in place (with consistent UI experience for the editor and the games), and will also allow of showing editor UI components from within the game for real-time editing. Those components will then be composed to an editor with 2 flavors: an add-in to existing IDEs (like, for example, visual studio, so it would handle text editing, compiling, debugging, refactoring, etc), or as a standalone without the text editor/debugger/etc (or maybe a very very very simple default one?) which you would then be able to use with your favorite text editor/ide (assuming that text editor/ide supports c#).

rocifier commented 6 years ago

hmmmm

tzachshabtay commented 6 years ago

good hmmmm or bad hmmmm?

rocifier commented 6 years ago

Well personally I have interest to hear about this more. But recently I have been talking with some AGS users and they are saying that their editor is really good, and in fact is perfect how it is.

Can you explain the idea a bit more fleshed out? Are there any examples out there of similar things?

ghost commented 6 years ago

But recently I have been talking with some AGS users and they are saying that their editor is really good, and in fact is perfect how it is.

TBH I've been hearing opposite things too; and also found myself extremely irritated by the room editor in particular when tried using AGS for actual game development again. Guess this is also a matter of habit.

On other hand, MonoAGS may have differences that may require different approach when creating game, making it harder to compare with original AGS editor.

tzachshabtay commented 6 years ago

Long post warning- So I'll list all of the problems/missing features in the current editor I can think of right now, some of them can in theory be added to the current editor, some really would benefit from a rewrite, and some don't make sense with the current engine, but are specifically intended for supporting MonoAGS features:

  1. Cross-platform- AGS editor is Windows only. It's built on top of Windows Forms, which does have some mono support, but from what I've read it's very buggy.

  2. Debugging and code navigation- The debugging experience is terrible with AGS. You can set breakpoints but when you break you don't really get any useful information. Code navigation is also minimal. By hooking up the editor to a real IDE (and with a fully fledged coding language) you get the full rich experience. A lot of AGS users did not do any other coding so they don't really know what they're missing here IMO.

  3. Importing assets- the whole process is very cumbersome with the current editor, the plan is to follow what most of the other game engines do here (for example, Unity and LibGDX)- have an assets folder which automatically binds, and the file explorer in the IDE will show it, and we can change the texture configuration per file (currently, with MonoAGS, you can set the scaling filters and wrapping per image- https://github.com/tzachshabtay/MonoAGS/blob/355fa820bb7e24664535bb8d26861efb3932e5df/Source/AGS.API/Graphics/ITextureConfig.cs#L75). Also to allow to easily create animations (and directional animations- my version for AGS "Views") from image folders.

  4. Animation editor- speaking of animations, I want to have, in addition to the classic per-frame animations, a timeline with the ability to tween any property you'd like (like Flash and Unity, for example).

  5. Room editor, like CW said, is not ideal currently. First, you cannot see everything together. The "room editor" in game-maker, for example, has visibility and locks per layer, and you can select and choose which layers you see. Another issue, is that while you can see the characters & objects in the room, you can't see their scaling (if you have area scalings). And you can't walk around in the room in the editor. This might sound minor, but it's huge. Just watch one of the dev streams out there, for example- https://www.youtube.com/watch?time_continue=1133&v=YkY8hgNLO7k, and see how much time is wasted in setting walk points and walkable areas, compiling and then testing the game, see that those points are not accurate, try again, and repeat... this could be much much simpler and faster if you can walk with the character in the room within the editor. Also related to that, is I want to be able to define walking points, and then access them in the code by their name, so you won't need to have all those co-ordinates in the script if you don't want to. Another thing I want in the room editor: you can create and move objects on the canvas, but you can't scale and rotate them. I plan to have the interface here similar to what InkScape is doing. Area creation is another experience I want to change- to be more like path creation tools which I believe makes things easier (also similar to what InkScape is doing, and iirc, Adventure Creator and Xage have similar experiences as well).

  6. The properties window, which I'll refer to as "Inspector", as that is how it is referred in most other engines I saw, is very lacking. It doesn't show all of the properties you can set in the script, and it seems that to add something, you have to specifically add it in (as an editor developer). I'm currently working on the inspector, and have it just read all of the properties by default (i.e the developer will have to specifically remove things, instead of adding). Also the inspector in AGS is not extendible at all afaik. I want it to be relatively simple to edit your own objects with their properties and create your own editors, etc (Unity has that, for example). Also, the inspector only allows you to get/set the properties while in edit mode, but not when the game is running. I want to be able to set properties when the game is running and then have it "stick" (optionally) when you stop your debugging session (Godot have something like that, for example). And another thing, as MonoAGS uses an entity/component system underneath, the inspector needs to be able to support that.

  7. Deployment- I don't actually know how the mobile deployment experience (or for any other platform that is not Windows) is on current AGS, but from what I've heard it's not simple. I want to make it relatively friendly.

  8. Interaction editor- Old AGS had that, but it was removed at some point (not sure why, I think because it wasn't properly maintained?). Bladecoder is an example of an engine which have something like this today. I want to have a rich but simple interaction editor which will allow you to code about 90% of a standard adventure game without the need to code at all. And it will have special super fast shortcut for the one thing that I'd say covers 70% of interactions in a standard game, which is have the player say something.

  9. Interaction matrix- An issue with current AGS, is that it's hard to track if you have missing interactions you haven't coded for. I want to have a matrix window which will show you all the different interaction combinations in the game and make it easy to see if you missed some interactions (and will also allow for interaction coding "marathons"). You'll have all of the verbs you defined for your game (look, interact and talk, for example) and inventory items as columns, and all of the objects as rows, and each cell is an interaction. You'll be able to double click a cell to edit its interaction (either with the interaction editor or as a script) or explicitly set it to revert to default behavior (and maybe mark a cell as a "bug"- i.e this interaction is never meant to happen, which the engine can then alert you when you debug if you do have this interaction).

  10. Editor & Engine dependency- with current AGS, you cannot create the game with just the engine. The editor creates "hidden" code which you can't touch, and you can't detach from the editor. I intend the editor to just "spit" code which you can see, so that you'll be able to use different tools at any stage you want during the development.

  11. Dialog editing- dialog editing can also use improvements, it shows a flat dialog, and not a tree.

  12. Speech- speech is a pain with current AGS and there's nothing in the editor to really help with it. There's a commercial plugin that makes it easier, but I want to have something built in. Also, I want to have the ability to record & edit takes while you run the game which will help immensely. For my games which had speech in them, it took me hours and hours of cutting the takes and testing it in game, it was probably the worst productivity killer for me, so it's something very dear to my heart.

  13. Outfit editor- MonoAGS have the concept of outfits, which is similar to what Visionaire has, to "package" animations for a character (i.e you can have idle, walk and talk animations in an outfit, then changing the outfit implies changing all of those animations), so there's a need for an outfit editor to support this.

There's probably more stuff, but that's what I remembered now.