Same for "execute_string(...)". Removing the other only means that some dumb*ss now using a single command to create his most excelent saving-and-loading system now first needs to read the contents of that whole file into a string, to only than have it executed. End-result: nothing changes.But execute_file gives you possibility to change everything in game in real time by injecting code - you can even create new objects, and gameplay in someone game!
What should go........?
#41
Posted 27 January 2011 - 06:21 PM
#42
Posted 27 January 2011 - 06:58 PM
Disagree on triggers- they're not just checks in the step event- they can be named, individually executed and most of all inherited. It's much more painful to do that without them. In fact, some of the built-in events could/should be converted to trigger events as this would simplify GM's internals as well as potentially allow them to be moved into extensions.
However, most of these would need to be done with care so as not to make things worse. The syntax of old projects could be trivially upgraded to whatever the new version uses, but in some cases there's no clear consensus on which syntax is better or more widely used. Health and score actions would need to be converted to work with regular globals or even locals (which would be extremely useful for health).
The execute_* functions are useful, but also broken. Workarounds are generally painful or not generally applicable. The best way to replace them would be to find primary use cases and introduce new ways to do those things- looking up resources by name, external scripting, callbacks and closures (yes, sorry Mike
#43
Posted 27 January 2011 - 07:11 PM
mplay is on it's way out. Regardless of who actually uses it, it's WELL past it sell by date. We will rewrite the whole networking system from scratch.
uninitialised variables to 0. Stays. Beginners need this. It's just easier for them if it's there.
begin/end/then etc. all stay. GML is simple to get into because it understands many syntaxes. However... I'm starting to think we need an option to selected various syntaxes. Lax, Pascal, C, C#.. etc.. (just examples!)
Gravity, score, health etc. all stay. Beginners use them.
In game Help - is a pile of pooh, and will be shot at dawn, or as soon as I can get my pawns on some rusty knives to kill it with.
We have started using OpenAL internally. This might go into GM at somepoint, but I'm not sure how this would affect things other than give better access to stuff like MP3s, and OGG etc.
Choice of renderer is academic, and easy to have multiples types - don't worry about it. And if someone tells me what DX10 and DX11 actually has that would make such a huge difference to what Game Maker does, I'll be impressed.
Timelines - aren't terrible well implemented, but they are brilliant. We may well increase support for them and make them easier to use and visualise.
Hiscore - we've been moving to a more "contained" system, where everything comes up inside the gaming window. This is a better experience, and far more portable. Again... not sure when this will appear, probably when the C++ runner does.
execute_string(...), execute_file(...). While I really don't like these, they are used all over the place, so I'm more in favour of changing them, so you can "compile" a script yourself. This would mean you can load, compile, execute. which would then allow you to keep speed up, but still keep the flexibility.
Beginner/Advanced mode. DEF stay, in fact we may even add a PRO mode. Mark was right on the money with these ones.
CD functions... interesting. possibly, but not yet I think. you can still buy cd's, so you might want to do something with them....
Registry - WILL go. It's a massive security hole that needs nuked as quickly as possible.
set_program_priority (and similar functions). Yes, I think they should go too...
Does anyone use the printer stuff?
#44
Posted 27 January 2011 - 07:13 PM
#1 : the "keyboard_check_direct(...)" command (and other methods behaving like it). A game should not be able to see what another other programs input is. Maybe the addition of an "Abort now key" would than be neccessary though ...
#2 : the "sleep" command (D&D & GML). Freezing an event-driven program is not the idea.
#3 : the "splash_show_web(...)" command (D&D & GML). Its little more than a dumbed-down version of "execute_program(...)" and "execute_shell(...)" commands, simply displaying a full webpage (whatever it might be, even some porn-site) in IE (even when you have FF as default browser) with its default security-settings. Not really to my liking. Remove please.
#45
Posted 27 January 2011 - 07:26 PM
EDIT: Oh, and I don´t use the printer options ever...
Edited by Mark13673, 27 January 2011 - 07:28 PM.
#46
Posted 27 January 2011 - 07:27 PM
Triggers should definitely stay. I use these quite a lot in my GM8 games because they clear up the code a lot. I find this very important: clean code. Trigger events help with this.
Health and score should stay. Beginners use these a lot. Especially score, since the highscore list is based around it.
I even think execute_string should stay, because it does things no other GML function does. At least I have used execute_string in a game that would've been a lot harder to code (if even possible) without (the game was about placing items on sensor platforms to change their value in such a way that a given math equation would turn true. I used execute_string to evaluate the equations. If I didn't have execute_string, I would have to either write my own equation parser, or hard-code all equations and their solutions which means I can easily forget solutions.)
Anyhow. Things mentioned by others earlier that I support for removal:
simple mode
The first thing that newbies are getting as advice when can't find something, is usually Go to advanced mode. Doing this, the GM IDE will look the same for everybody, which makes helping each other find things a lot easier.
treat uninitialized variables as 0
All this does is hiding the most useful error message you can get. If you use an unitialized variable, your code is wrong. It's that simple. An no, beginners don't need it. They need the unknown variable error to fix their coding.
Program priority setting
Explained already by NakedPaultoast in post #34. I have never seen it do anything good and it can make other processes unresponsive. Also as far as I know almost any game that lags takes 99% CPU anyway, so this won't do much.
deprecated functions like image_single, part_type_color, file_eof, font_name, ...
I mean...
It's even worse: I still sometimes see people recommend others to use image_single.image_single was deprecated and replaced with image_speed/image_index years ago. V4 maybe V5. But it's still hanging around.
#47
Posted 27 January 2011 - 07:33 PM
Sorry my saying so, but beginners need that like a hole in their heads.uninitialised variables to 0. Stays. Beginners need this. It's just easier for them if it's there.
It just makes it easier for them to make all kinds of spelling-mistakes and think there is no problem. The end-result often is that they than post on this forum with the mess their program has become to ask us to figure out what went wrong ...
Ofcourse, this mess is only possible because GM (still) uses a resource-system in which Zero is a valid ID.
One even more evil setting is the possibility to disable the showing of errors. Misteriously failing programs galore. End yes, I had the displeasure to have tried to figure out how to help members to recuperate something of their (often) hard work.
I'm in favour of a more localized approach, where a few lines can be excluded from throwing errors (and than checked with the normal error-variables afterwards).
[edit]
Its a one-stop setting of a certain sub-image and telling the instance not to animate: one command instead of two. Sounds like a good decision to me.I still sometimes see people recommend others to use image_single.
Edited by ragarnak, 27 January 2011 - 07:59 PM.
#48
Posted 27 January 2011 - 07:45 PM
Treat uninitialized variables as 0
In my opinion this is bad, even for beginners. Why? Well, simply because it makes it harder to debug your program. If you've missed to initialize a variable somewhere in your code (even if your code is fairly clean) it can get extremely irritating and time consuming to find that tiny mistake. It may now cause horrible bugs, but it's possible that it causes hard found bugs and that's one thing that you want to avoid. If you want your variables to initialize to 0, then write it on your code yourself. Write "variable_name = 0;" instead of just "variable_name;". The latter is just bad practice and shouldn't be allowed. It's better if beginners learn from the start of to initialize their variables and it will also prevent lots of unnecessary bugs caused by a variable that you missed to initialize.
This is just my opinion and I agree with the others that have said that this should "go". As I mentioned before, you shouldn't learn beginners something that is just bad practice. It may (I don't say it will) make it harder for them to continue on with some other language like C, C++, C#, Java, etc. Well, I'm not going to say more about this, I've already said enough. I'll probably give my thoughts about some other things at a later point, but not now.
#49
Posted 27 January 2011 - 07:46 PM
CD and Printer functions could be moved to there own extensions.
#50
Posted 27 January 2011 - 07:54 PM
I find it very useful for debugging loops though.#2 : the "sleep" command (D&D & GML). Freezing an event-driven program is not the idea.
As for "Treat uninitialized variables as 0", I remember it only confusing me further when I was new to Game Maker.. I can't speak for everyone else but I don't think it's much help.
Edited by Nehacoo, 27 January 2011 - 07:55 PM.
#51
Posted 27 January 2011 - 08:03 PM
I find it very useful for debugging loops though.
Ofcourse, I only used it as a replacement for the "show_message(...)" box I had there earlier, as that gave me the possibility to single-step (and keeping a button down also is a kind of slow sleep
#52
Posted 27 January 2011 - 08:09 PM
io_clear(); while !keyboard_check_pressed(vk_anykey) sleep(100);
instance_deactivate_all(true);
#53
Posted 27 January 2011 - 08:36 PM
Is that not identical to:io_clear(); while !keyboard_check_pressed(vk_anykey) sleep(100);
io_clear(); keyboard_wait();
?
-IMP
#54
Posted 27 January 2011 - 08:38 PM
#55
Posted 27 January 2011 - 08:41 PM
Seconded. There's no need to have a separate, verbose extension to replicate exactly the same things as the default functions, but with a recognizable interface.How about removing the Game Maker "game UI" (the UI of the boxes like show_message() produces) and make the default message boxes whatever is native to the OS you create your game for? That would make GM games seem much more "legit", I think (plus I can't stand those ugly black boxes).
-IMP
#56
Posted 27 January 2011 - 08:52 PM
score, health etc. all stay. Beginners use them.
Beginners should be able to get along without score and health. All they need to do is create a global variable called health or score... Maybe(I know this isn't the place to suggest features)have a setting the Global Game Settings that will allow you to choose if these are 'pre-defined' or not?
#57
Posted 27 January 2011 - 08:56 PM
score, health etc. all stay. Beginners use them.
Beginners should be able to get along without score and health. All they need to do is create a global variable called health or score... Maybe(I know this isn't the place to suggest features)have a setting the Global Game Settings that will allow you to choose if these are 'pre-defined' or not?
Thing is, these things make it easier for beginners, and don't affect advanced users at all. There's no point in getting rid of them just for the sake of getting rid of them.
Maybe it'd be more useful if in Advanced or Pro mode you could disable some of the default globals like these. I'm not really sure how that would help, other than to make sure that your game throws errors if you accidentally use one of those var names or something, but hey, just a suggestion.
#58
Posted 27 January 2011 - 08:56 PM
I disagree. The hide errors function has actually a purpose - on a finished product one might want to hide error message and instead replace them with their own error handling system (using a Trigger event with error_occurred in itOne even more evil setting is the possibility to disable the showing of errors. Misteriously failing programs galore. End yes, I had the displeasure to have tried to figure out how to help members to recuperate something of their (often) hard work.
So, Hide error messages should stay.
And also I think I have encountered a bug in the error system twice, that I could find only by looking at the error in game_errors.log, because both bugs gave a normal error message followed by a series of access violations (yes, GM is not bug free as we all know). Although of course the solution to this is to fix the error system (assuming it is the cause of the two bugs). Those bugs have been reported to YYG's bug system a while ago already by the way.
I don't think it's a good idea to recommend a deprecated (and undocumented) function, because sooner or later this will be removed from the program. I think it's much better to learn the right way, even if it's one line longer. (Woo. One whole line. Disaster.ts a one-stop setting of a certain sub-image and telling the instance not to animate: one command instead of two. Sounds like a good decision to me
But I don't really care either way.
#59
Posted 27 January 2011 - 08:57 PM
Treat uninitialized variables as 0: This is TERRIBLE programming practice and should be removed. Beginners need to learn that programming involves careful variable declaration and usage. Otherwise, if this feature wasn't removed, whenever a variable was initialized via this system, it could have a "flag" on it saying it was declared via the system and could produce a warning to the programmer saying that it hasn't been declared manually.
Registry - WILL go. It's a massive security hole that needs nuked as quickly as possible.
#60
Posted 27 January 2011 - 08:58 PM
You're wrong, when I first start using Game Maker, I had no programming experience at all, and I did used the health and score, I used D&D of course, but still when moving to GML, I used the health and score, so removing it will create beginners many problems.
And I do agree with the other posts here. (About game help, treating unknown variables as 0, etc).
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users



This topic is locked








