Pages: [1] 2 3
  Print  
Author Topic: What now?  (Read 1791 times)
Offline (Unknown gender) SaulGoodman
Posted on: November 03, 2016, 11:39:06 PM
Member
Joined: Nov 2016
Posts: 5

View Profile
What happens now that GMS 2.0 Beta has been released?

Does Engima now try to emulate a legacy product forever (being 1.4)?
Logged
Offline (Male) Garo
Reply #1 Posted on: November 04, 2016, 06:32:08 AM

Member
Location: Szczecin, Poland
Joined: Sep 2014
Posts: 26

View Profile
If I recall correctly, one of the devs who was actively working on it announced plans to slowly shift ENIGMA into it's own thing, using C++ for scripting the game instead of EDL. See here: http://enigma-dev.org/forums/index.php?topic=2656.0

Of course, at present the fully functional IDE for ENIGMA, was designed largely off of Game Maker 8, from what it seems. Pretty sure it'd be a step in the right direction if anyone decided to either fix the bugs in LateralGM, or pick up/write a new one.

EDIT: Looking at recent commits, TheExDeus lives!
« Last Edit: November 04, 2016, 06:38:03 AM by Garo » Logged
Offline (Unknown gender) faissaloo
Reply #2 Posted on: November 04, 2016, 07:17:42 AM

Member
Joined: Jan 2013
Posts: 71

View Profile Email
Almost all of the changes were IDE related, all we need to do is kill off LateralGM and we'll largely be good I think.
Logged
Offline (Male) Josh @ Dreamland
Reply #3 Posted on: November 14, 2016, 11:21:21 AM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2953

View Profile Email
As I've thought more about why ENIGMA and Game Maker were ever good, it's occurred to me that the projects are really only good for making simple games, while a few simple features would drastically increase the scope of what you can do well in that system. GML sucks, and half of what EDL added to it is broken. That's an easy fix, at this point, ignoring the fact that JDI's ability to keep up in the C++11 world is not very good. Replacing the entirety of that system would probably take me a month.  But the question of "then what" is very real, and it's a lot of what's prevented me (motivationally) from working on doing so.

I now believe two things:
  • Everything that made GM good was in the IDE's organizational structure;
  • GM's IDE had somewhat poor organizational structure.

I see immense room for improvement, there: improvements that could make ENIGMA as much better than GM as GM was better than your typical game engine/RAD kit.

My greatest examples of that are Overworlds and Design Mode, which I've detailed on the Wiki. I think Studio has started implementing the latter. The former would make development of late NES and SNES-era games as easy as ATARI/Early NES games currently are. The thing that makes those hard in Game Maker now is management of simple scripting, game story control, and world layout. It's so ridiculously hard to make a script trigger when you enter a given spot in a room. It's so preposterously hard to make a door lead to a given door in another room.

Maybe you're thinking, "No it isn't! I know how to do those things!" Well, good for you; so do most veteran Game Maker users. That doesn't mean it's easy. In fact, the single best way to do triggers right now is as follows:
  • Create an object.
  • Have its create event zero out a region and set a script number to -1.
  • In that object's step event, if (script != -1 && obj_player.x >= x1 && obj_player.y >= y1 &&) script_execute(script);
  • Create a script that does the thing you want to happen in your trigger.
  • Place the object in the room, and in its room creation code, assign x1, y1, x2, and y2 to specify the region you want, manually, and set script to your new script's name.

When I was little, I got clever, and I made two objects to represent a region. Instead of setting x1, y1, x2, and y2, I simply set an other_bound instance to the ID number of a separate instance in the room. Rather than an ugly (?) object in the room, this gave me two corner sprites, so I could sort of tell what they represented. Dr. Overmars likes to use a script sprite on the object, or a little computer sprite. Whatever. You can trade more work for aesthetics.

The point is, this is the single cleanest, most modular, scalable approach achievable in ENIGMA today, and it SUCKS. (Also, I wouldn't be surprised at all if script_execute was flaky.)

Door control has a similar solution; you use an instance creation script to tell the door where it's sending you. But there's no link! You have to maintain a room ID and an instance number or room coordinate yourself.

If you can't see why this approach is bad, you don't appreciate GM/ENIGMA for what they are. Implementing this wasteful approach has polluted your dev environment with an object that serves no purpose, a script whose purpose is so specific and nichey that it isn't worth an entry in your resource tree, and a weird, ugly instance in your room that you have to control-right click and hit Instance creation code to understand. Not to mention the magnitude of effort it took to set all this up.

The workflow for triggers should have looked like this:
  • Click a button
  • Drag a region
  • Type your code
  • Hit "save."

The workflow for cross-room doors should have looked like this:
  • Place a door in room 1.
  • Place a door in room 2.
  • Create an overworld.
  • Place the rooms in the overworld.
  • Hit a button.
  • Select the doors you placed in room 1 and room 2.
  • Hit OK.

My hope is that one day, they will.

Unfortunately, no one enjoys doing IDE work. We've got a ways to go before anyone's ready to commit to making a decent game editor a reality. This is why there's no communication and no roadmap. ENIGMA doesn't put bread on the table; that's why I work at Google. But I'm still planning.
« Last Edit: November 14, 2016, 11:29:07 AM by Josh @ Dreamland » Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) Goombert
Reply #4 Posted on: November 14, 2016, 11:47:12 AM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 3063

View Profile WWW
What I don't like there Josh is that it seems when it comes to cross-room doors you've bumped up the number of steps. But I generally agree with you, the hard part is generalizing that functionality enough to apply almost everywhere, and I think you've done that. However, I think you may be missing the part where instances can be named like other resources now. But after so many doors and rooms, that could get cluttery. Definitely an area worth some more thought.

I like that everyone is experimenting with their own ideas lately and I think everyone should continue to do so for a while. I think we really all need some time away from ENIGMA to look at the future.

PS: I also got a side project that will be released soon and I think GameMaker fans will like it!
Logged
Offline (Male) Josh @ Dreamland
Reply #5 Posted on: November 14, 2016, 10:57:58 PM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2953

View Profile Email
It does appear that I've added steps, but that's not really the case. You're thinking about steps 3 and 4 as though they're something unnatural—something you do once to make a door. They're not; this is something you'd do in general to organize the layout of your game world in real, coherent space. Not to mention, steps 1 and 2 are mandatory, regardless. Let's look at the old steps:
  • Place a door in room 1.
  • Copy its instance ID.
  • Place a door in room 2.
  • Control+Right click, open its creation code.
  • Assign the other door's instance ID and room number to locals for this door.
  • Save and close the door's creation code, and copy its instance ID.
  • Open the first door's instance creation code.
  • Assign the other door's instance ID and room number to locals for this door.
  • Save and close this door's instance creation code.
Not to mention, the real benefit is the fact that you're not hard-coding door IDs, anymore. That link is maintained for you, as part of the Overworld's state. Overworld contents can be automatically maintained as easily as any other resource link.

The bigger question here is how we standardize the variables these two systems set/modify. I think I explained my ideas for this in detail elsewhere, but the short version is annotations on variables to tell the room/overworld editors that this particular constant (be it a coordinate, a region, an instance ID, a vector, a segment, a mesh... whatever) is meant to be modified per-instance in the editor. This opens up so many possibilities. Even just looking over Mark's own examples set, it's amazing what this system would simplify,
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) Goombert
Reply #6 Posted on: November 15, 2016, 01:30:55 AM

Contributor
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 3063

View Profile WWW
Well, this could also function as a literal overworld, as in Mario, which was my interpretation of this idea long before you spelled it out.

Logged
Offline (Male) Josh @ Dreamland
Reply #7 Posted on: November 15, 2016, 11:36:48 AM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2953

View Profile Email
This layout can make use of overworlds, but it's really not a shining example of how they will help you. I think this design lends itself to five rooms: one to show exactly the contents of that image (Butter Bridge, the Donut Plains, and Chocolate Island), then another two rooms for Yoshi's Island and the Forest of Illusion (which are rendered in low-detail on that map view), and then two more for Vanilla Dome and the Valley of Bowser (which only appear on that map as entryways).

Where the overworld would come in, here, is creating a virtual layout of those worlds and links between them (the bridge/ladder to Yoshi's Island, the door and pipe to Vanilla Dome, the paths leading to the Forest of Illusion, and the mouth entrance to the Valley of Bowser).

The reason I don't like this example is because it doesn't leverage the real strength of Overworlds, which is the ability to create an ENORMOUS game space using entire rooms as building blocks. You're really just fabricating an impossible virtual layout, because the valley of bowser doesn't fit in that tiny hole on the map, and the vanilla dome is every bit as big as the path through the Vanilla Plains, and I think anyone can tell Yoshi's Island has been shrunk on that map... the point is, these areas don't occupy a real space. They're linked artistically on a map. Overworlds can help you with the doors, but you've already failed a big part of why Overworlds would exist.

What you want to think about is Super Metroid.


This is the map to Super Metroid. It is enormous. Leviathan. It's not completely true to 2D space, but that's not for a lack of trying. Every 16×16 cell on that map is the equivalent of a 256×223 screenful. This is a 200 Megapixel world map, any way you slice it. That's what makes Super Metroid so immersive. (Related: Super Metroid is approximately the greatest game ever created; if you haven't played it, you should go correct that.)

The map image above serves as a literal in-game map. It's how players know where they are at any given time. Overworlds offer both the ability to organize individual rooms into this map, as well as the ability to programmatically generate that map image. They take the guess-and-check out of this process. I'm sure the original Super Metroid team would have killed for such a mechanism; this was probably extremely difficult for them to organize by hand (and code up in Assembly). As one of the few people who has written a Metroid clone in Game Maker, let me tell you: organizing the doors on the sides of each room is an impossible pain in the ass. Just like before: is it doable? Yes! Is it fun and easy? Fuck no!

Doors in Super Metroid are different from doors in, say, Super Mario World or Kirby's Adventure in that they actually attempt (as I've said like six times now) to preserve a coherent 2D space. That's why it's possible to create a map layout of Super Metroid at all. Overworlds seek to facilitate this by providing a "global" coordinate system over a plurality of rooms arranged in space. There's no more complicated transition logic, this way; you simply change rooms, which triggers the loading of objects around your character. Because absolute coordinates are managed by the room system, they can exist multiple times in this virtual space without redesign. And because you've encapsulated pieces of this huge world in modules called rooms, you can load and unload them painlessly, as a unit.

On that topic, the wiki has some other ideas of mine about resource management (such as bulk loading/unloading of resources fitting a particular theme or area). No sense rehashing that right now.

The point of all of this is that we need a better IDE, but I don't feel like writing one right now. Talking about this is good for my sense of motivation, though.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) Yambam
Reply #8 Posted on: November 17, 2016, 11:29:59 AM

Member
Location: The Netherlands
Joined: May 2016
Posts: 71

View Profile WWW
I love Super Metroid, the map is just great! I initially thought GMS2's node system would help with this, but... not at all! What do you think of this one:

I hate the visual node system, it's harder to see the flow of the program and it's slower to navigate.
This is so true. I'm thinking though, that it would being able to add visual links between resources would be a big help with a lot of things! Unfortunately that's not how the current GMS2's node system was ever supposed to work. :/

You could link rooms together 4-6 ways (maybe even 8-direction). Then when you zoom out you could see the connections & reorganise.

This way, the zooming out and seeing linked nodes would actually make sense. And when you focus on one room, you should only see some visual connections/links with no other visual representation of the linked rooms, except their names and possibly their colors taken from the room's color palette... I'm making a quick "interactive mock-up" now, so I'll keep you updated on this. :D
Logged

Offline (Male) Josh @ Dreamland
Reply #9 Posted on: November 20, 2016, 04:31:59 PM

Prince of all Goldfish
Developer
Location: Ohio, United States
Joined: Feb 2008
Posts: 2953

View Profile Email
Visual links and value editors are exactly what I'm describing, yes; I want you to see where rooms are in space, see which objects are linked together, which regions or points are being monitored or used, etc, etc.

Doors are an example; in reality, the Overworld editor wouldn't know what a door is. It would just know that an object wants to know about an instance of another object.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) time-killer-games
Reply #10 Posted on: November 21, 2016, 07:59:47 AM

Member
Location: Virginia Beach
Joined: Jan 2013
Posts: 1064

View Profile WWW Email
What's next? The ENIGMA project finally dies. It's been suffering severed legs and continual blood loss over the years. It's for the best. (Y)
Logged
Offline (Male) Yambam
Reply #11 Posted on: November 21, 2016, 12:47:43 PM

Member
Location: The Netherlands
Joined: May 2016
Posts: 71

View Profile WWW
Write the base of a story,
Make a sketch of an overworld that goes with it,
Sketch some moves the player can make (walk, walk some more, jump, double-jump, climb-a-ledge, etc.),
Drag them all over the place,
Organise it all into seperate rooms:

This is what an IDE should be made for, a.k.a. a convenient quick-start place for making your own game, which is still recognized by some as a privilege. :cool:

This is my advice and that should do. :pseudo:
« Last Edit: November 21, 2016, 02:51:45 PM by Yambam » Logged

Offline (Male) Yambam
Reply #12 Posted on: November 21, 2016, 12:49:49 PM

Member
Location: The Netherlands
Joined: May 2016
Posts: 71

View Profile WWW
What's next? The ENIGMA project finally dies. It's been suffering severed legs and continual blood loss over the years. It's for the best. (Y)
Your state of mind amazes me.
Logged

Offline (Male) Yambam
Reply #13 Posted on: November 22, 2016, 04:36:51 AM

Member
Location: The Netherlands
Joined: May 2016
Posts: 71

View Profile WWW
What's next? The ENIGMA project finally dies. It's been suffering severed legs and continual blood loss over the years. It's for the best. (Y)
You do have a point though. The original "ENIGMA" was an age-old decoding monster machine.

Here's my two cents: ;D



The Build over Game
Do you wanna build a game over world?

Notice that you can read this several ways.



Deque
For double-ended language learners

This one has something "programmy"
« Last Edit: November 22, 2016, 04:40:45 AM by Yambam » Logged

Offline (Male) Yambam
Reply #14 Posted on: November 22, 2016, 03:34:01 PM

Member
Location: The Netherlands
Joined: May 2016
Posts: 71

View Profile WWW


Pronounce as Game Over World. What-da ya think guys? :D

Plus, it's my take on the combo of "Game Over" and "Over World".
« Last Edit: November 22, 2016, 03:36:51 PM by Yambam » Logged

Pages: [1] 2 3
  Print