On Game Maker and 3D

Posted by Rusky on Feb. 12, 2011, 8:24 p.m.

So, I'm doing some simple 3D graphics for my latest project. They're not strictly required but they make it look more interesting- it's essentially a top-down game, I just pulled the camera back a bit.

However, d3d_start() flips the handedness of the coordinate system. This flips the room editor upside down, which was okay for testing and I suppose for regular level design. I could have flipped the camera to the other side, but that would have screwed up depth.

Depth is effectively a built-in z variable which also happens to be used for drawing order, which works perfectly until you do anything slightly non-trivial (like flipping the camera to the other side of the z-axis). That was nice until I needed to sort drawing order independently of z value, for alpha blending and anti-aliasing.

Now I'm stuck with upside-down rooms even though I have separate z and depth. I should probably just go through with flipping the camera around by reversing all the signs again, but urgh. Why couldn't Game Maker just not flip the coordinate system so it could use depth as the z coordinate?

On a less hateful note, the lessons I'm taking from this are 1) always separate z and depth in GM 3D and 2) my own engine will not just tack on 3D as an add-on to the 2D stuff.

Also, I haven't been able to upload anything because my games are either too big or the connection is too slow for the server to get the whole thing before giving up.

Comments

Carlos508 13 years, 10 months ago

lmaoooo JID

I mean I use GM to prototype stuff, not for finished products. As far as something not being worth bothering because of its setup I disagree. I've yet to come across something I couldn't do with GM even if it meant using a DLL and I've worked on all sorts of things from games, a Lemmings Engine, conversation AI, a game engine/tutorial suite, an evolution simulator and now a flash engine and Ive seen some people do some pretty crazy stuff with GM.

It's slow, 3d sucks, and not crossplatform. That's its only flaw that I know. For everything else theres mastercard

Castypher 13 years, 10 months ago

Quote:
surely you can imagine a better tool for doing what GM does?
I can't, actually. Using a real language forces you to make your own tools. Whether those can beat GM's or not is really up to your ability.

GM is a powerful tool, no doubt. Like some pointed out, people have made some very complex games with it. But there are more powerful tools. GM is probably just among the easiest and most intuitive ones. I've played with a lot of game designing programs and engines, and none of them have been as easy as GM.

Rusky 13 years, 10 months ago

Here, I'll help you all broaden your horizons a bit. Imagine GM, but fast, cross platform and with sane 3d. There, that's a little bit better at doing what GM does. Now imagine that tool, but with an API for DLLs to access game resources (like GMAPI). Imagine a room editor that can zoom in and out and that lets you rotate and scale instances in the room. Imagine reusable blocks of behavior that can be attached to objects so you don't have to use all of inheritance or copy/paste just to make e.g. yet another object with platform physics. Imagine the ability for extensions to create new resource types and editors, for e.g. 3D models and rooms. Imagine a type system that keeps track of whether a variable is a texture or a background or a sprite or an object so you don't have to name everything resource_obj or resource_spr.

Wouldn't that be just a little bit better than GM at doing what GM does? Just because people have done amazing things with GM the way it is doesn't mean it can't be improved on.

Castypher 13 years, 10 months ago

Sure, but that would be cheating, and anyone and their cat could be a game designer.

Quote:
reusable blocks of behavior
GM8 calls those triggers.

I understand where you're going. But that's not what I meant by my post. The point I'm trying to make is that half of us are aspiring programmers, and if a program does our job for us, we're not needed. Various improvements in GM would make it nicer, but a big part of a programmer's job is to adapt to the continuously changing world of technology. If you want to be a hobbyist, that's fine too. Until then, I don't have any real complaints with Game Maker, as its little quirks that make it worse than it can be are actually remotely helpful to people interested in the industry.

Rusky 13 years, 10 months ago

I strongly disagree that making tools easier to use will make programmers less needed, and more specifically that Game Maker's "little quirks" are in any way helpful to anyone but YoYo who gets to fix them in future versions.

The essential act of programming still requires just as much careful thought and consideration no matter what level you're doing it at. It's still just as exciting and interesting for programmers and boring for people who just want to generate a report, no matter how much or little boilerplate there is in the way.

Being content with the current situation and then rationalizing it by calling current difficulties even remotely helpful is a horrible outlook. I'm sorry that's so blunt but really, nothing will be accomplished that way.

Carlos508 13 years, 10 months ago

interesting discussion. Well first off I'm not saying GM is "OMFG AWESOME", I'm just saying as far as prototyping or getting something out quick I really don't know of anything better.

Quote:
I'll help you all broaden your horizons a bit
You bring up valid points. However you keep saying "imagine", and so I will because as far as I know such an engine doesn't exist for the average hobbiest! The closest thing I can think of that does all that "natively" and is available for the average hobby programmer is Torque 2D or one of their other products. BUT if you were given all the resources (images, audio, etc) for any one of their games you could recreate it omfg so much easier in GM…if you don't believe me download the demo and give it a try.

Quote:
Being content with the current situation and then rationalizing it by calling current difficulties even remotely helpful is a horrible outlook.
I think your missing the point. Most of us are NOT content, which is why you see so many tools, dlls, and extensions created all the time and then being used by other people. I am not content at all with GM actually, but because I don't know of another engine that does what GM does just as fast or faster I deal with it.

Actually GM makes life so easy that most people overlook that it works exactly like C++/Java/Etc and other Object Oriented based languages. GM Handles classes by using objects, properties and methods by using events and variables within the object, and modules by using scripts. I mean you would have to manually do all that crap yourself, and ontop of that create multi-threads. If you've actually worked with any of these languages you know how much a pain in the ass it can be - and not necessarily because its hard but because its so effin tedious!

Believe me before I began working on my Rice Engine (the flash game engine) I exhausted all other possibilities. C++ was out of the question, actually the thought didnt even cross my mind. I considered Java but I would need to include so many external libraries that it just wasn't worth it to me. I never use Visual Basic because we now have Real Basic…which is the same thing only crossplatform. And in fact I did start the engine in Real Basic if you happened to read that blog.

But I scrapped it in favor of GM because GM literally handles everything those other languages can do either natively or through DLLs. It's not crossplatform like I would like, but it's a prototype so it doesn't really matter. Like I keep saying, to streamline a game or even an app as fast as possible GM is pretty good!

Like Kilin I've used a ton of languages and engines and yes there are some pretty damn good ones out there capable of making GM look like a toy. But nothing I have found can let you make something as quick as GM does. I take back saying that GM is the "best", it is the "best" at visualizing your ideas quick.

Rusky 13 years, 10 months ago

I definitely agree that GM is the best existing tool for what it does. However, it's also definitely not the best possible tool for what it does.

The "being content" remark was mostly towards Kilin's comment that "half of us are aspiring programmers, and if a program does our job for us, we're not needed." and "I don't have any real complaints with Game Maker…."

Carlos508 13 years, 10 months ago

oh yea then I totally agree with you lol

Castypher 13 years, 10 months ago

You're still missing the point.

I never implied that improvements here and there would be a bad thing. I've thought now and then that GM's room editor would be much better with zooming. I'm saying that if we had a god program that did everything for us, well shit, people would use it. And that would mean that fewer people were required. If a ten-man team can do it, why hire a hundred?

You also misunderstood my comment on GM's quirks. By denying us a god tool, it's forcing or allowing us to actually think a little. Think of it this way. You have a programming assignment where you convert a decimal number into base 2, base 8, and base 16. Most languages have built-in functions to handle that, but are you ever going to really learn how it works by using them?

We're some of the world's better problem solvers. Why would we be content with getting paid to be lazy?

I agree that it would be nice to have a few extra bits in GM, and I'm not telling you otherwise. But how impressive is it to have created a game in GM versus hard code in C++?

Now I don't want this to turn into a flame war. I'd just like for us both to see each other's arguments and understand them. Hopefully you do as well.

I also like the point Carlos made about how similar coding in GM is to C++ and other object-oriented languages. It shares the same syntax, the same base, just has different functions and makes the object-oriented system a little less of a pain in the ass. Note GUI here.

JuurianChi 13 years, 10 months ago

Yerp, the similarities are abound in any code developed after 1999.