GML ^GML : the future of GML

Status
Not open for further replies.
S

Storyteller

Guest
So, ^GML (pronounced Power GML, instead of GML++, or GML#).

You know you want it. A better GML. A lot of threads here talk about other languages, missing features (myself included), even having these usable alongside GML, or replacing it.

The Dev team has been explicit, and the user community resounds 'GML forever!'. Okay, great, keep GML forever. I would wager its just too tightly bundled into the core of GM to extract. So, leave it as is. Keep it there, that's cool too. What about the very vocal and significant group of users who want some common things?

This thread is to discuss openly, just what a new version of GML should have, what features, syntax changes or options it should include. If we raise GML to the next level, we get GML raised to its power, hence GML^. (catchy right?).

Let's start with how possible this all might be. I direct your attention to the Preferences Editor in GMS2:



Here you can see "Languages" and you might say 'hey, that is for localization, like Spanish or English or French', but no, you can see 'GML' listed as the only entry. What does this imply, that there may be hooks in place for future expansion into other languages, such as Javascript, C++, LUA or I dare say, GML 2.0, GML++ or even, ^GML, as that is what this thread is all about. ( I really do not care what its called, I just want a more comfortable, flexible and powerful scripting language).

So, it may be possible, that this type of functionality will be included in a future release of GMS2 (or 3 or 4 or X).

Now, how important is it. GML is just fine you say, well, for some people it is, and for others Drag & Drop is just fine, and for others still, they may find using a native language from scratch is what they need. I think, with the repeated threads asking for a handful of very specific features, of wanting other capabilities, there is yet another tier of users, GML power users. They still want to use GMS2, but they want more from the scripting language. GM, and GML were built originally for beginners, which is why Drag & Drop is popular. GML takes that to a slightly higher level and allows you to script things that are too cumbersome or complex to arrange using icons. However, over the years, GML has had a lot of 'extras' added to it, that were made to work and not really in any kind if 'industry standard' way. They were tacked on to GML and made to fit its paradigms.
^GML aims to correct this. It is an opportunity for the developers and the community to break free of GML and its shortcomings and implement things in a more intuitive, or standard way. To open up certain aspects that are too difficult or constrained in the current system.

GML should be an option for everyone, this '^GML' would simply be a more modern iteration of that language. Like how C# is on version 6 or seven of itself, C became C++ and BASIC had a slew of dialects and became VB.

So, what is this thread for? All of this sounds nice but it is up to the devs to implement it.

This thread's for YOU!

Please post your ideas for what the next iteration of GML should look like, what features should it have? What are your 'top 5' requests? What language should it be most similar to? And, what features of the current GML should remain?

I will be monitoring this thread over the next couple of months. In two weeks, I will be going through this thread and compiling a poll on survey monkey or similar with the most requested features. You will be able to then vote on and rank those features. That poll will be open for two weeks. So mid-April, I will make a poll based on this thread. At the end of April, that poll will be closed and we can all discuss the results of that poll.

Thank you, I hope this is a positive discussion. Please refrain from arguing in here. Discussion is good, but blatant language wars or name-calling is a no-go. Try to post say, your top 1-5 features. If you like someone else's post, use the like option. It will help with the future poll.

To the Devs and forum staff: I am aware this may be a complete run around. It may actually give you guys some feedback and market research. Any light you can shed on this subject as we go, would be appreciated. What is hoped, is that this thread gives us a healthy outlet for discussion of a potential new iteration of GML, or even what might be included in GML itself. Im sure this has been tried before, but with the new release, lets give it a shot.

So, I'd like to open the discussion with my top 5 features I think ^GML should have:

  1. Structs (and classes)
  2. proper functions, ie, classes with callable methods and normal argument structure
  3. events in code
  4. actual variable types, like Int, Float, etc. ie formal typing
  5. better scoping and protection keywords, like private, local, static, public etc

so to discuss each one.

1. Structs. - 'nuff said.

2. functions and classes. This is fairly self evident.

3. events in code. like onStep or onCreate. this will lead to more readable, concise code IMO

4. typing would be nice. there is a whole section in the manual on Data Type, that are all just 'vars'. Mind you this can be a purely syntax feature, the compiler need not know, but the syntax checker could look for these to help when you program.

5. scoping: the use of no keyword for variables, and var for local scopes is backwards. its really odd to scope something down this way, much less a generic term like 'var'. Local would be good, or private. var is a bit too informal. So adding public, local or private, static etc would help a bit with know the scope and access of variables as you read your code (much less someone else's) and assist with structured code and debugging.


So those are my top 5. What features would you like to see in ^GML ?
 
D

dj_midknight

Guest
I could definitely go for object methods. I dont much care if they implement a full on class system(and as this is a multi platform engine, the data driven model is fine), but being able to build a particular method into specific options rather than having a script that may have to collect a 💩💩💩💩 ton of extra info which is probably already inside the relevant object.

Id like to see the code editor provide more detailed descriptions of scripts and inbuilt functions similar to how eclipse does.
 

Tthecreator

Your Creator!
Yea I'd like something with objecs too. Not the current objects. The event system, collision and physics systems on gm objects are nice, but not needed in every case. A faster and more "empty" object like in other languages would be nice.

Probably the thing I would want is to just have a quick way to add some c#/cpp code. If I now want to test a dll in my project it's tedious. I kinda understand that this will be hard to implement with different compilers and stuff. Not to forget sharing variable names (how would they even do that) and having things like threads run besides the runner. Lot's of problems there. If they would implement something like this it would probably end up like some auto DLL/extension making thing building. Again this is hard especially considering gm is multiplatform. It would need some way of managing libraries and stating which ones are platform specific and which ones aren't.

Keep in mind this is just me looking up into the night sky trying to find a falling star. I highly doubt anything will happen.
 
D

DatCodingGuy

Guest
All I want is to turn GML in to an object-oriented language. There's so much I'd love to do with GML but can't due to this, mainly the ability to implement neural networks and genetic algorithms. I know that it can be done and I kinda know how, it's just really tedious and would very clunky. If they implement classes this would be a lot easier.

One of the reasons why I'm slowly moving off Game Maker is that I feel like it's starting to slow me down, there's only so much you can do with a simple scripting language like GML. I've been working a lot more with JavaScript, I really like the way it works, I think if I could use JavaScript instead of GML it would improve its capabilities tremendously. GMS would be a lot more powerful and flexible with what you can do, it would just make it overall better to use.
 

bml

Member
I'm new to GML so my understanding and frustration levels are low. Give me a few more weeks for better comments, but so far a few things stand out. Most of my items aren't directly language related.

Let me use something like C++ or C# as a first class language. The cross platform extension process looks labor intensive and limited (internal access). Plus this would open up a lot of existing code that could be used including game libs, SDKs and things like msgpack. I don't really want to write in C++/C#, but it would be nice not to have to port existing code. And it might make it easier to support external scripting with something like Lua.

Remove or increase some of the hard limits like 12 alarms per object instance, parameter limits and 16 user-defined events. I'm probably missing others.

Create objects from code instead of instancing an empty object. This is easy to work around, but it sidetracked me initially. I can room_add() for example, but no object_add()?

I haven't built an HTML app yet, but I've seen notes about special one-off things that need to be done to make it work. It would be nice to not need to make any changes to have the HTML builds work.

Builtin concurrency of some sort. I wrote a Terraria-like terrain generator that would build chucks of terrain in the background so the player would never have to wait. I'm not sure how I would approach that in GMS2.

Those are my initial thoughts. I have a lot of annoyances, but nothing that's significant and they are mainly preferences, so I won't list them.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I would like to briefly address the core points of this topic

Speculations
There's very little sense in speculating.
You've assumed that "GML" sub-section means that there will be more languages.
I've assumed that it means that there are going to be general and shader-specific sections in it, since Preferences' structure seems to take inspiration from Visual Studio (and other modern editors), and that's what they do.
Either way, it is not possible to tell whether either of opinions is right unless\until YoYo Games make any announcements.

"Pile all your suggestions here"
This is a horrible idea that results in a giant unreadable topic with countless duplicates.
There's an entire forum dedicated to GMS2 discussions for a reason, you know.
One topic per suggestion. Keep things organized. Use search.

Suggestions
All of listed suggestions were discussed once or more already,
Structs: "something we all want, and we'll do when we can"
Classes: "I don't really think you "Need" specific types or class definitions.... but methods, stucts etc. would make a huge difference and I do hope we get them one day. "
Events: Your own topic, which was answered.
Types: "
We're not looking (or even thinking) about this stuff just now. We obviously still have a LOT to do, not least get the final product out."

Scoping: "GML is a beginner language and we have no plans to add in any public, private or protected scoping as this complicates things (for beginners and infuriates more savvy )."

Now, you could say "oh, but what if this new hypothetical language is does everything differently and just like I wish", but that would be speculation again.

So I'm closing this topic. Please use the intended procedures- for discussions or filing suggestions.
 
Status
Not open for further replies.
Top