At the moment my team is really fed up with YoYo Games for their buggy releases into the stable build of GMS, and we are moving to a completely different development environment. GameMaker is great and all for prototypes and small games, and I'll still be using it for those, but for large projects, ew.
Yeah this is how I feel. Not worth wrestling with a bad engine, no matter how "accessible" it is for beginners.
emm I actually think is more theirs about sloppy code fault, than gms bugs
There have been numerous times where our game was working fine until an update, then it broke and we had to fix things, in the stable branch. It's getting tiring.
This discussion is starting to deviate from the YYC topic a bit, so I'll leave my rant in a spoiler.
Why you team is using scripts rather than just write the code in each obj event, seems like your team is using scripts on everything.
Can you talk about the bugs?
I also work with c sharp and c++, but I dont have any issues with the lack of custom methods in gm, yeah, I dont even have to use user defined events at all, I just dont found it neccesary...
ps. In C sharp? Thats just such a weird option... also... from game maker to an engine from scratch? doesnt sound too good
Because it's good programming practice to not repeat code. It's called "loose coupling." You know those times where you have to change a line of code, then have to change another line of code that was meant to operate under the same way? That is called "tight coupling." In loose coupling, where you have a script, you just have to change the script and all uses of it will update. It saves a lot of hassle, well, until the scripts start to pile up in that folder and subgroups. It gets really messy. In a real programming language, you have methods that belong to the class that initializes them, and you have "static" methods, which work more like GMS's scripts do. There are also "private" methods, which can only be called by other methods in the same class. This is to simplify those other methods. You can also simplify that private method with another private method, and then with another pri-... you get the idea. You can do something like this in GMS, but they are all "static" and can be used by anything, since they are not initialized by any classes. This could lead to very poor code organization and structure.
For example, in a traditional programming language, you can code a class called Dog, which has methods Bark() and Bite() defined within the class. Easily readable methods. In GMS, you're stuck with event_user(0) and event_user(1), unless you make Bark and Bite scripts and put them in a folder called Dog in Scripts in attempt to organize it. But it's not organized. You can't edit Dog by opening up Dog's code. You have to go to the script folder and open it from there. It is cumbersome and annoying. It may sound minor, but it really builds up after 3 years on the same project...
I can't talk about the bugs, since I don't really remember any specific ones besides the most recent failsafe problem I already mentioned. It has been a long time since I actively worked on that game.
No we are not making our next project from scratch. We're using an engine that uses C#. I won't specify what it is because my negative stance on GMS in this topic would make it look like I am promoting YoYo Game's competition, but if you look around the forums you can tell which engine I am switching to. I will just say that the first impressions on the different engine are amazing, and hopefully it will continue this way. Note that I am not ditching GMS at all, in fact I am making ByteStack with it. I just don't think it's a good choice for a large project from my own personal experience. The structure of GMS simply isn't built for it. Yes I know Undertale and Crashlands and whatever, well good for those developers. They made GMS's structure work for them. But it's not suitable for my team.
Edited by 11clock, 12 February 2016 - 11:22 PM.