Ken's possible 3d system discussion

kburkhart84

Firehammer Games
Some of you may have seen me mention wanting to make a full-blown system for using 3d here in Gamemaker. I've also typically mentioned that I'm not sure whether to spend the time on such a thing or not. This thread is to hopefully help me decide what the community at large thinks, what kind of demand there would actually be.

Reasons I think the 3d system would be a good idea(Pros):

1. There are plenty of examples showing 3d things, PBR shaders, deferred renderers, animation systems, and plenty others. However, there is not anything I've seen that is a whole system. All these separate things were done in different ways(maybe some by same authors and in similar fashion, but overall and in general). This means that to use multiple things you need to integrate them. However, if it was all done the same way, all together, in one big system, it would be much more usable. And actually doing anything with 3d would likely be much more viable since a great majority of the work would be done already.
2. Right now, GM is all about 2d. I've seen some demand for 3d, but the barrier has always been the extra work needed to implement it all. Simply having the system could mean more people doing 3d...which could lead to...
3. If it is more shown you can use 3d in GM, it is possible(not necessarily likely, but possible) that more users will come. More users would mean hopefully a better product, meaning we all win.
4. Though there are other tools that can do 3d, in general they are harder to get into than GM for many people.

Reasons I think it would be a waste of time to do this(Cons)

1. The target audience for GM has always been the 2d market. I'm not convinced a nice 3d system would ever change that.
2. There are several other tools that can do 3d much better than any system I could. This means that my system very possibly wouldn't end up getting much usage.
3. It would be a lot of work. I'm sure I could get it done, though it would take quite some time. In the meantime, other tools are just getting better, GM will be changing, who knows what else?

The main thing I have is sort of a chicken/egg thing. If the work was done, would more people decide to work with 3d? Or is it more than the target audience using GM in general wants the easier stuff, which 3d is not even if there was a full-blown system for it? I'm having trouble convincing myself either for or against, so I'm hoping maybe some community input would let me "see the light" as the saying goes.
 

rui.r6o

Member
I'm personally not that interested in actual 3D in GameMaker, but I always like seeing the 3D content generated by the likes of Xor, Bart, TheSnidr, etc. What I wanted to ask though was:

You mentioned there are already several tools out there for different things (e.g. TheSnidr's 3D model format, etc) and that the problem is usually integration, so why not try to gather all of the creators of those tools under a sort of "GM 3D group" that focuses on restructuring and native integration between the several tools into a de-facto 3D system for GameMaker?

Or to explain it differently, instead of trying to create your own 3D system from scratch why not focus on restructuring the existing 3D tools (with the author's consent/help) into a system where all of those existing tools integrate with each other natively?
 

kburkhart84

Firehammer Games
I'm personally not that interested in actual 3D in GameMaker, but I always like seeing the 3D content generated by the likes of Xor, Bart, TheSnidr, etc. What I wanted to ask though was:

You mentioned there are already several tools out there for different things (e.g. TheSnidr's 3D model format, etc) and that the problem is usually integration, so why not try to gather all of the creators of those tools under a sort of "GM 3D group" that focuses on restructuring and native integration between the several tools into a de-facto 3D system for GameMaker?

Or to explain it differently, instead of trying to create your own 3D system from scratch why not focus on restructuring the existing 3D tools (with the author's consent/help) into a system where all of those existing tools integrate with each other natively?
This is a consideration, but I really think that it would take too much re-factoring to make it all work together. Plus, there are many other things that simply aren't out there(or wouldn't be up to standards to be usable) so I would have to write a lot of systems anyway.
 

rui.r6o

Member
This is a consideration, but I really think that it would take too much re-factoring to make it all work together. Plus, there are many other things that simply aren't out there(or wouldn't be up to standards to be usable) so I would have to write a lot of systems anyway.
I understand, I just thought I'd mention it since I foresee the potential situation where you create your 3D system but it doesn't have as much traction as you want because parts of it are competing with those existing tools that might be already in use by the GM population interested in 3D. Plus, I think having the help from people that already did similar tools in the GM ecosystem would be a plus to the final 3D system and a potential increase in the efficiency of implementing such system.
 

kburkhart84

Firehammer Games
I understand, I just thought I'd mention it since I foresee the potential situation where you create your 3D system but it doesn't have as much traction as you want because parts of it are competing with those existing tools that might be already in use by the GM population interested in 3D. Plus, I think having the help from people that already did similar tools in the GM ecosystem would be a plus to the final 3D system and a potential increase in the efficiency of implementing such system.
I 100% agree there could be benefits to having others in on it. The catch is that they would have to interested. And it could easily end up taking as much work to convert theirs as it would be to just make my own in many cases. As far as the competition goes, that is certainly a thing...but I don't see it as an issue really. I'm more worried that it wouldn't gain traction simply due to lack of audience more than due to competition.
 

rIKmAN

Member
I 100% agree there could be benefits to having others in on it. The catch is that they would have to interested. And it could easily end up taking as much work to convert theirs as it would be to just make my own in many cases. As far as the competition goes, that is certainly a thing...but I don't see it as an issue really. I'm more worried that it wouldn't gain traction simply due to lack of audience more than due to competition.
If you're doing it based on potential audience size for sales or who might use it then I'd say it definitely wouldn't be worth it.
If you're doing it for your own project, interest or learning experience then it doesn't really matter what others opinions are as you're doing it for yourself.
 
I won't go on the "why" side of things, but for it to work, you have to have good "Templates" that goes with it. First Person, Third Person, and then ideally some racing stuff (Planes, Cars).
Add to that lightning, basic 3d physics... quite a big project. Still, all this is solvable. The biggest hurdle would be the room editor.
Unless you come up with either some magic to do it in the IDE, or build an external editor, it's very unrealistic to think anyone would be able and/or want to do everything by code, 99.999% will want to be able to move WSAD in the room editor.
Otherwise, I really see no market for it. It'll end up with you getting paid 0.0001$/hour! 😂
Cool project, tho!
All that being said, I got a couple good reads about making 3d game engines I could pass your way, if you're interested to investigate further.
 

kburkhart84

Firehammer Games
I won't go on the "why" side of things, but for it to work, you have to have good "Templates" that goes with it. First Person, Third Person, and then ideally some racing stuff (Planes, Cars).
No need to go into "why" as this makes perfect sense to me.

Add to that lightning, basic 3d physics... quite a big project. Still, all this is solvable. The biggest hurdle would be the room editor.
Unless you come up with either some magic to do it in the IDE, or build an external editor, it's very unrealistic to think anyone would be able and/or want to do everything by code, 99.999% will want to be able to move WSAD in the room editor.
I would probably make it be a part of the project itself(like my input system's configuration room). I would certainly have to investigate ways to make the assets not get put into final builds if possible so you don't have to mess with deleting those things for those builds. The reason I like the idea of doing it as part of the project(instead of separately) is that you can directly access all the assets of the project in a build. And yes, we do agree that it is a VERY important part of the thing. I see no way to do it as part of the IDE until they implement IDE plugins(no idea when that is going to happen).

All that being said, I got a couple good reads about making 3d game engines I could pass your way, if you're interested to investigate further.
Sure, I'd appreciate them. More knowledge is always good. Feel free to hit my PMs.

If you're doing it based on potential audience size for sales or who might use it then I'd say it definitely wouldn't be worth it.
If you're doing it for your own project, interest or learning experience then it doesn't really matter what others opinions are as you're doing it for yourself.
This is a possible point, but I'm not fully convinced just how big or small that audience size would be. I'm certainly leaning to it more likely to be small or non-existent. And honestly, if there is really no chance of an audience, I'm better off not making it. If there seemed to be a chance of an audience, maybe it would be worth making even if there is no guarantee of a massive audience. That's why I made to topic, to see if most people see it like you or not.
 
Sent a couple reads.
And for the assets, there's a ton of free meshes you could use, this is not worrying at all!
Same goes for sfx and the likes, go public domain, or make some basic ones!
 

Gamebot

Member
Some of you may have seen me mention wanting to make a full-blown system for using 3d here in Gamemaker.
When you say full-blown...I think it would be a good idea for your own work. Don't worry what we think. Yes it's alot of work...If you can afford the time, do it!
As you mentioned and as many of us know there are separate systems for loading camera views ( person perspective ) , models into buffers, textures, shaders...even Model Creator still works ( I use Blender never the less ).

It would be a great project to "put it all together".
 

BenRK

Member
Go for it! Yeah, Game Maker Studio is geared towards 2D, but who cares? Some of us have been using Game Maker for most of our lives. Me? Since I was 10. I'm too old now and don't have the time to learn any new engine, and honestly? Don't really care to. I know Game Maker, I know how make it do what I want it to do (for the most part, always learning new things). I also want to see more 3D Game Maker stuff. It's actually the closest I've ever seen it to being a great engine for 3D stuff. There are so many awesome creators who are sharing what they've made for the rest of us to use. Not to mention there are FAR more royalty free game assets out there for people to use.

Rambling aside, go for it! You won't be the only person who would make great use of it.
 

rIKmAN

Member
This is a possible point, but I'm not fully convinced just how big or small that audience size would be. I'm certainly leaning to it more likely to be small or non-existent. And honestly, if there is really no chance of an audience, I'm better off not making it. If there seemed to be a chance of an audience, maybe it would be worth making even if there is no guarantee of a massive audience. That's why I made to topic, to see if most people see it like you or not.
The amount of people using GMS for 3D is a very low percentage in comparison to general 2D usage so I think basing whether you do it or not based on possible audience size (either for sales or just users if it's free) isn't really a great metric to use as the numbers don't add up currently.

Personally I don't understand why people want to use GMS for 3D other than learning, improving their knowledge or for the challenge - but that's just me.
In saying that - it is very cool seeing 3D stuff done in GMS but I think we all know the people we'd associate with 3D and could name them on one hand.

I see a lot of people say that GMS is more user friendly than Unity, Unreal etc which is true in general.
However when it comes to 3D the difficulty ramps up quickly when using GMS as you have to do everything manually, whereas in engines made for 3D it becomes as simple as when using GMS for 2D. You drag in a primitive or model, attach a script to it and write a couple of lines of code to see instant results - it couldn't be simpler and is a great start to learning 3D without getting stopped with the hurdles you have in the way when using GMS for 3D.

If you intend to write some sort of engine that makes it easy for people to do that in GMS then it may attract users based on the fact that you have removed the barrier to entry for 3D in GMS, but then they aren't using GML or the ease of use of GMS they are using a generic 3D type engine which will be competing with many of the other freely available 3D "no-code" engines (not just the big 3, there are many others) and it will live or die based on how it fares against them in terms of ease of use and quality of the end product.

I think taking the audience out of the equation altogether would be a better way to judge whether you think it's worth it, as like I mentioned the end product may attract an audience that doesn't yet exist. However if it didn't would you consider it a waste of time? A good learning experience? Something to build your own next game with?

That's how I'd look at it anyway, because an audience isn't guaranteed whatever the project so there has to be some other intrinsic value to make it worthwhile.

I wish you well whatever you decide!
 

kburkhart84

Firehammer Games
Sent a couple reads.
Thanks!

And for the assets, there's a ton of free meshes you could use, this is not worrying at all!
Same goes for sfx and the likes, go public domain, or make some basic ones!
True, the assets aren't really an issue. When I mentioned assets, I was referring to resource tree in the IDE assets. An external project won't have direct access to the names of those objects, etc... so the editor won't be as tightly integrated. If I have the editor work as just another part of the project, it will have direct access to the resource tree assets.

However when it comes to 3D the difficulty ramps up quickly when using GMS as you have to do everything manually,
We generally agree as far as to how many people use GM for 3d currently. My thoughts are that possibly, if a system like what I'm coming up with existed, maybe more people would want to do 3d here, since the manual work do get 3d in GM would be done, and the rest of the work would be about programming and assets(which wouldn't be any different from any other engine at that point).

I think taking the audience out of the equation altogether would be a better way to judge whether you think it's worth it, as like I mentioned the end product may attract an audience that doesn't yet exist. However if it didn't would you consider it a waste of time? A good learning experience? Something to build your own next game with?

That's how I'd look at it anyway, because an audience isn't guaranteed whatever the project so there has to be some other intrinsic value to make it worthwhile.
For me personally, if I'm guaranteed to NOT have an audience, I'm not doing this project. I personally could go use one of the other engines and be fine. However, I'm not 100% convinced I would or wouldn't have an audience(hence this post/topic). So far it seems to be a mixed bag as far as people thinking I would or wouldn't have at the least a small audience.
 

rIKmAN

Member
We generally agree as far as to how many people use GM for 3d currently. My thoughts are that possibly, if a system like what I'm coming up with existed, maybe more people would want to do 3d here
Yeah I said exactly that in a part you didn't quote.
For me personally, if I'm guaranteed to NOT have an audience, I'm not doing this project. I personally could go use one of the other engines and be fine. However, I'm not 100% convinced I would or wouldn't have an audience(hence this post/topic). So far it seems to be a mixed bag as far as people thinking I would or wouldn't have at the least a small audience.
There are no guarantees, as I said you may attract an audience that doesn't exists yet because you take the legwork out of getting started with 3D in GMS.
As was mentioned by someone else - might be worth talking to Snyder and the like who use 3D and seeing their take and how many users their tools attracted and then factoring that into whether it'd be worth it for you personally if the same numbers used your tool.

You might just have to make it to find out how many it attracts, but based on currently availably information and how much work it would be to make something that compared decently against existing solutions/engines it'd seem like a risk.

Good luck!
 
I'm probably in the minority, but I'd love an all in one 3D system in Gamemaker. Your "Pros" list is spot on for me. I've tried other engines and they just don't click since art comes more naturally to me than programming. If you do end up making this thing, I'd be happy to test it out and offer feedback.
 

Yal

🐧 *penguin noises*
GMC Elder
or build an external editor
it's not rocket science, even I managed to do it back in the GM8 days...
1623252277743.png

The main reason I want to use GM for 3D is simple, GM is easier to use than anything else I've tried, and I don't want to waste time relearning a new tool when I've got 15 years of experience with GM.

Judging by the number of google hits, there's definitely an audience for this:
1623252091198.png
Ironically, the first few non-GMC/yoyo hits are people on social media asking things to the point of "when are they gonna add real support 3D to game maker? :<" / "why would you submit yourself to the torment that is GM's 3D support when you could just use another engine"
 

rIKmAN

Member
Judging by the number of google hits, there's definitely an audience for this:
View attachment 40498
Ironically, the first few non-GMC/yoyo hits are people on social media asking things to the point of "when are they gonna add real support 3D to game maker? :<" / "why would you submit yourself to the torment that is GM's 3D support when you could just use another engine"
That's a bit misleading, you're searching for 4 seperate popular and generic words that can be mixed and matched in any order and grouping to return a hit, so once you get to around page 5+ the hits are more for the word "game" and "3D" than anything specific to GMS or 3D in GMS itself.

If you put that in quotes the results are much lower (~6500 for me).
Changing "game maker" to "gamemaker" in the search returns a little more (~10k).

Definitely nowhere even close to 46m hits related to 3D in GameMaker, that's just silly.
 
Last edited:

kburkhart84

Firehammer Games
@Yal Whether the search results are valid or not, I'm certainly taking your main point down, that you may not want to switch to another engine for 3d if possible simply because you have been using GM for a long time already. And yes, not that it is trivial, but certainly the 3d room editor is doable.
 
Before starting work on an external editor, MAYBE wait to see what the Extension Updates is going to be about in the next 2 updates.
I have a weird feeling/hope that we might see IDE plugins...I don't want to speculate too much, but there was a lot of 'under the hood' stuff done lately, and I feel part of it was to enable that.
Then that 3D project would make much more sense in the user-friendliness department, which is what GMS is supposed to be all about.
Maybe I'm way off, but I'm still asking Santa for it in 2021!! 😂
 

kraifpatrik

Member
In my opinion, people who make 3D in GM do it because they like to learn how to do it themselves and so they keep creating their own tools, even though there's already bunch of them available (e.g. the infamous OBJ loaders). So I don't think the problem is that there isn't a single project that does it all - it could be quite simply put together from already existing individual libraries - but that people like to create this stuff themselves. If you make a complete solution for making 3D games in GM, you would surely help a bunch of people who don't have this kind of mindset, but the rest of us would keep rewriting the same stuff over and over again on our own. So, it's really up to you. If you think that creating this would make you happy, then go for it! I just wouldn't expect that suddenly everyone starts using it 😕

The biggest hurdle would be the room editor.
Maybe you could get inspired by https://github.com/GameMakerDiscord/PushEd 😇
 
Last edited:

kburkhart84

Firehammer Games
Before starting work on an external editor, MAYBE wait to see what the Extension Updates is going to be about in the next 2 updates.
I have a weird feeling/hope that we might see IDE plugins...I don't want to speculate too much, but there was a lot of 'under the hood' stuff done lately, and I feel part of it was to enable that.
Then that 3D project would make much more sense in the user-friendliness department, which is what GMS is supposed to be all about.
Maybe I'm way off, but I'm still asking Santa for it in 2021!! 😂
I've been waiting so long already for them to implement actual IDE plugins as it is... if they did that I'd already be using it for my input system's configuration stuff instead of the workaround I had to do.

Since the editor would need access to all the resources, I figure the easiest way currently is to just make the editor another room/level that you load in the project itself(I don't make anything external). So you can either move a specific room to the top of the list, you can have one of your objects go to the certain room(so you don't have to change room order), or you can drop an object I made just for this purpose into your first room or similar place. The point is to get to a certain room, which would be the 3d editor. So the trick is to just run a build. That build has access to all your objects, and anything else that can be seen normally during run-time, so it is actually a nice enough way to do it.

In my opinion, people who make 3D in GM do it because they like to learn how to do it themselves and so they keep creating their own tools, even though there's already bunch of them available (e.g. the infamous OBJ loaders). So I don't think the problem is that there isn't a single project that does it all - it could be quite simply put together from already existing individual libraries - but that people like to create this stuff themselves. If you make a complete solution for making 3D games in GM, you would surely help a bunch of people who don't have this kind of mindset, but the rest of us would keep rewriting the same stuff over and over again by themselves. So, it's really up to you. If you think that creating this would make you happy, then go for it! I just wouldn't expect that suddenly everyone starts using it
I have seen a good bit of that. I've seen plenty of people who do like to do things themselves and enjoy that process, it is certainly a thing.
 
I can speak on these two points specifically:
1. The target audience for GM has always been the 2d market. I'm not convinced a nice 3d system would ever change that.
Though there are other tools that can do 3d, in general they are harder to get into than GM for many people.
As you said, it's much easier to get into game maker than other languages.
And as it's a 2D engine, I have invested my time into getting good at making 2D games. It's circumstantial not preference.

But now that I've got many years of experience with game maker, and sometimes need 3D, I learn to work around game maker's limitations using my 2D knowledge. For example:

I made this today for my current project. It would make way more sense to render this in game maker, but instead, I've had to prerender it.
This comes with some limitations:
- I cannot slow down the rotation speed or it becomes choppy. I am limited by texturepage space, and 15 frames is all I'll allow for it.
- I cannot render it in high definition or it will become pixelated, whereas if it were in 3D I could scale it up to any size I wanted at no performance loss.
- I cannot do any additional animation with it beyond image_xscale/yscale.

My point is, if the 3D functionality within game maker was as accessible as sprites, I'd use it no question. I'd definitely pay good money for an asset that could bring 3D into game maker intuitively.

For example:
GML:
// Spawn a 3D world like a room
var world = gm3d_world_create();

// Create a camera like a view
var cam   = gm3d_camera_create(world, canvasWidth, canvasHeight, x, y, z, xRot, yRot, zRot, fov, etc);

// Import a 3D model like creating a physics fixture.
var crownModel = gm3d_import_obj("crown.obj");

// Spawn it in the world like an object
var crownInst = gm3d_instance_create(world, crownModel, x, y, z, xRot, yRot, zRot, xScale, yScale, zScale);

// Control visual aspects such as image_angle but in 3D. This would go in the step event to make it spin
crownInst.zAngle += 20;

// Simple functions that do the "complex" maths like point_distance
gm3d_camera_point_at(cam, crownInst.x, crownInst.y, crownInst.z);

// Draw what the camera sees like a surface
gm3d_draw_scene( cam, x, y, width, height, rotation, opacity);
 
Last edited:

kburkhart84

Firehammer Games
I can speak on these two points specifically:


As you said, it's much easier to get into game maker than other languages.
And as it's a 2D engine, I have invested my time into getting good at making 2D games. It's circumstantial not preference.

But now that I've got many years of experience with game maker, and sometimes need 3D, I learn to work around game maker's limitations using my 2D knowledge. For example:

I made this today for my current project. It would make way more sense to render this in game maker, but instead, I've had to prerender it.
This comes with some limitations:
- I cannot slow down the rotation speed or it becomes choppy. I am limited by texturepage space, and 15 frames is all I'll allow for it.
- I cannot render it in high definition or it will become pixelated, whereas if it were in 3D I could scale it up to any size I wanted at no performance loss.
- I cannot do any additional animation with it beyond image_xscale/yscale.

My point is, if the 3D functionality within game maker was as accessible as sprites, I'd use it no question. I'd definitely pay good money for an asset that could bring 3D into game maker intuitively.

For example:
GML:
// Spawn a 3D world like a room
var world = gm3d_world_create();

// Create a camera like a view
var cam   = gm3d_camera_create(world, canvasWidth, canvasHeight, x, y, z, xRot, yRot, zRot, fov, etc);

// Import a 3D model like creating a physics fixture.
var crownModel = gm3d_import_obj("crown.obj");

// Spawn it in the world like an object
var crownInst = gm3d_instance_create(world, crownModel, x, y, z, xRot, yRot, zRot, xScale, yScale, zScale);

// Control visual aspects such as image_angle but in 3D. This would go in the step event to make it spin
crownInst.zAngle += 20;

// Simple functions that do the "complex" maths like point_distance
gm3d_camera_point_at(cam, crownInst.x, crownInst.y, crownInst.z);

// Draw what the camera sees like a surface
gm3d_draw_scene( cam, x, y, width, height, rotation, opacity);
Actually, that is basically the idea I'm looking at, except the drawing would happen automatically instead of you having to draw things to a surface first like that. The 3d would generally take over the rendering pipeline completely. That said, it would/should be able to support multiple cameras, where you draw something with one camera and then use that render as part of the other camera's render(in the 3d world this is usually called render textures, and is basically what GM's surfaces are).
 
Actually, that is basically the idea I'm looking at,
Oh haha nice, well I look forward to seeing it then!

except the drawing would happen automatically instead of you having to draw things to a surface first like that.
Well I didn't imagine drawing it to a surface first, I just mean drawing all the polygons directly to the application_surface (assuming there's an efficient way to remove the remaining offcuts that stick out from the side).

The 3d would generally take over the rendering pipeline completely.
I see. What happens if you just want a little 3D in your primarily 2D game? For example your game is isometric, but on top of each tile you wanted to draw something in 3D e.g. a little tank, fully animated in 3D?

Or in my use case of a completely 2D game with a specific element rendered in 3D for the UI?

Or what about UI? I've seen sometimes in 3D games, the '2D UI' actually exists as a plane that's always in front of the camera, but physically in the 3D world like this:
1623346846685.png

Which can have the following negative effects:
1. 3D objects that come close to the camera can poke through the UI and obstruct it
2. The fact I even know this exists is because I've seen a bug where it became detached from the camera and just existed, floating in the world

Would there be no way to draw the 3D world as a sprite at all? For example a 2D game with the 3D world drawn on a computer screen within the 2D world.
Would there only be 1 3D world? Kind of like how game maker's rooms / physics work?
Would there be any way to draw 2D (or 3D?) elements on top of the view that don't exist in the real world?
 

kburkhart84

Firehammer Games
Well I didn't imagine drawing it to a surface first, I just mean drawing all the polygons directly to the application_surface (assuming there's an efficient way to remove the remaining offcuts that stick out from the side
If I make the system take over the 3d drawing pipeline, I'm pretty sure I can make it complete drawing in the regular draw events just fine, and so it would automatically draw to the application_surface like normal. It would take over the draw pipeline but only partially.

I see. What happens if you just want a little 3D in your primarily 2D game? For example your game is isometric, but on top of each tile you wanted to draw something in 3D e.g. a little tank, fully animated in 3D?

Or in my use case of a completely 2D game with a specific element rendered in 3D for the UI?

Or what about UI? I've seen sometimes in 3D games, the '2D UI' actually exists as a plane that's always in front of the camera, but physically in the 3D world like this:
I'm sure I would also have some systems in place for more manual control as well, and your question show that I would indeed need to do this. In the case of the UI part, assuming I provide 3d drawing functions as their own thing, you might be able to use those in the DrawGUI event. If not, I'm sure there would be some way to make it happen.

Would there be no way to draw the 3D world as a sprite at all? For example a 2D game with the 3D world drawn on a computer screen
I don't see why this wouldn't be able to happen. I'm aware that there are Pre, Normal, and Post draw events. You would likely do manual drawing of your 3d stuff in the pre-draw, and then in the regular draw events use the surface from the pre-draw event for the computer screen.

Would there only be 1 3D world? Kind of like how game maker's rooms / physics work?
I don't think I would have more than one 3d world going at a time. However, the way other engines handle what I think you are looking for is by having cameras have culling masks, and objects use those. So a camera would only render the objects it is supposed to, so even if it is all in the same world, it is basically like having separate worlds as far as the drawing system goes. The native gamemaker drawing system actually can do something similar, because the draw events all get called once for each view that you have enabled, so you can choose to not draw all objects in all the views.

Would there be any way to draw 2D (or 3D?) elements on top of the view that don't exist in the real world?
I'm pretty sure if I go through making this system, I'll be able to make this happen. The draw GUI event draws on top in screenspace automatically as well. And there is also the draw end event which can would draw on top of things in the normal way.
 

Rayek

Member
I am unsure if I would ever use GMS for full 3d world projects myself. I started with Godot last year and found it very simple and effective for this type of work, and the built-in editor just works very well, and I feel a full built-in 3D editor in GMS's IDE would be required to cater for a similar comfortable workflow.

That said, I agree with @Pelican Police that some 3d support for rendering 3d as sprites or objects in a 2d game could be super useful to have.

Personally I am not interested in doing full-on 3d worlds and games in GMS (anymore). I do appreciate that this could be a fun project for you @kburkhart84 . For myself I can't see the benefit unless GMS truly embraces native 3D support. Also, established 3d engines have good support for import from 3d apps. And this is often underestimated as a task in developing a 3d 'module'.

And besides, a good 3d game editor provides support for advanced rendering 'out-of-the-box', world-building tools, animated characters with IK, etcetera... 3d physics, and much more nowadays.

Have you seen how easy to use the new Unreal 5 engine is going to be? I know, comparing apples with pears. But I plan on trying it out later this year myself.

Still, I suppose that some GMS users are so familiar with GMS that an outing to other alternatives may not feel like an acceptable or preferable option for 3d work - even though you'd be doing yourself a disservice in my opinion.

But I would definitely use true 3d space sprites in GMS in a 2D project.
 
And besides, a good 3d game editor provides support for advanced rendering 'out-of-the-box', world-building tools, animated characters with IK, etcetera... 3d physics, and much more nowadays.
I would argue that most of this is nice, but unnecessary. Sure if you want to make The Last of Us, then yeah, IK and world building would be necessary, but you wouldn't pick GameMaker for that.

It has me curious as to what features would be planned though.
 
Realistically if you're making something with 3D, you're going to need skeletal animation, or at least a way to change groups of vertices in a certain way, (which ends up being a basic skeletal animator), unless your world is entirely static or can be animated using only basic transformation (move,scale,rotate), which then would narrow the target audience down.

The animation editor itself doesn't need to be part of it because there's other software that can already do that, but it needs to be able to handle the animations such as running them and playing multiple animations at the same time (on different parts of the skeleton, or blending two animations together).

As for the world editor, without a basic one, you're left to either make your own 3D editor as a user, or program placement of objects within the world through code (which is going to take forever).
 

kburkhart84

Firehammer Games
I would argue that most of this is nice, but unnecessary. Sure if you want to make The Last of Us, then yeah, IK and world building would be necessary, but you wouldn't pick GameMaker for that.

It has me curious as to what features would be planned though.
Realistically if you're making something with 3D, you're going to need skeletal animation, or at least a way to change groups of vertices in a certain way, (which ends up being a basic skeletal animator), unless your world is entirely static or can be animated using only basic transformation (move,scale,rotate), which then would narrow the target audience down.

The animation editor itself doesn't need to be part of it because there's other software that can already do that, but it needs to be able to handle the animations such as running them and playing multiple animations at the same time (on different parts of the skeleton, or blending two animations together).

As for the world editor, without a basic one, you're left to either make your own 3D editor as a user, or program placement of objects within the world through code (which is going to take forever).
Indeed, the way I would go about this is to start with the basic and more necessary stuff. The model loading and rendering, cameras, skeletal animation(at a minimum), 3d editor, lighting(and hopefully at the least basic shadow mapping)...these are certainly the bare minimums. Then if it looks like it could gain traction, I could keep extending into things like terrain systems(I'd like both heightmap and voxel versions), better animations(like vertex skinning on top of skeletal moves, and IK), PBR shaders and even a node based shader editor, optimization things like frustrum culling and maybe a form of occlusion culling if it makes sense, and finally a basic math library of stuff, like collision detection functions(which would be able to cause collision events possibly), raycasting, and maybe some more basic physics stuff. And yes, the world editor would be way high up high priority to have as well because I wouldn't want it to only work with code(that would suck).
 

Yal

🐧 *penguin noises*
GMC Elder
Or what about UI? I've seen sometimes in 3D games, the '2D UI' actually exists as a plane that's always in front of the camera, but physically in the 3D world like this:
In GM, it's rendered in 2D mode (drawn on top of the application surface after it's rendered to the back buffer) so things poking through it should never be a problem.
 
Indeed, the way I would go about this is to start with the basic and more necessary stuff. The model loading and rendering, cameras, skeletal animation(at a minimum), 3d editor, lighting(and hopefully at the least basic shadow mapping)...these are certainly the bare minimums.
Add on top of that a whole physics system. I haven't really deeply thought about that, but I doubt there would be any way to mod the built-in one to accept a z parameter on top of the x and y.
Good news is the laws of physics are pretty well documented and easy to convert in algorithms, but the bad news is that there's a ton and a half of those laws. The leg work will be insane. But not impossible. ;)
 

kburkhart84

Firehammer Games
Add on top of that a whole physics system. I haven't really deeply thought about that, but I doubt there would be any way to mod the built-in one to accept a z parameter on top of the x and y.
Good news is the laws of physics are pretty well documented and easy to convert in algorithms, but the bad news is that there's a ton and a half of those laws. The leg work will be insane. But not impossible. ;)
I don't really see a whole physics system as being that high of a priority. It is certainly higher than other things though. But you know how much people just code their own stuff instead of using the integrated physics system just for the 2d stuff, I don't see it being that different for the 3d side, maybe less so, but still. I DO see an importance of collision detection though, that is certainly higher up on the list.

As far as trying to convert the included physics system to work in 3d....not something I'd ever mess with, for production code at least. The 3d guys did that for their jam entry and it worked, but I don't know how well it would work in more general usage or what all they had to do.
 

Yal

🐧 *penguin noises*
GMC Elder
Game Maker uses Box2D for their physics engine, and it's got 2D right there in the name... that probably says a thing or two about how its 3D compatibility goes :p
 

Bart

WiseBart
I saw this topic come by some time ago and wanted to reply here but it went out of my mind with other things going on.

The following are just some fairly loose thoughts. A lot more could be said about every one of them but I guess they summarize quite well how I currently see things.

To me personally, as it stands now, it seems a lot more interesting to connect all existing functionality. Or to code the missing bits and pieces that could make developing a 3D game with GM a bit easier. Use some interface here and there.
And I think that could be the 3D system. Some sort of API/interface that brings it all together.
I'd always be willing to help out with such system with the knowledge that I have. Though I currently see it mainly as a community project and it feels like it should be created bottom up instead of top down (at least initially).
So my idea on this is probably most in line with what @rui.r6o suggested.

Such system of its own probably won't be enough. I guess people who are just starting out should have some examples, project templates to start from, some tutorial material to go with it, ... And have knowledge of a proper workflow to do this kind of thing with GameMaker.
A generally accepted 3D system for GM could help with that but it needs more than just the system to be able to work I think.

Also, perhaps more a semantic thing, is that there seems to be a typical idea of "a 3D game". But when is a "3D game" considered 3D enough?
If people would decide to use GM for a 3D game then they should be aware that it won't be the most technically advanced 3D game. But is all that always required for someone's game?
I think the main reason to use GameMaker for a 3D game when such a system exists is rather because it would give the advantages that GameMaker itself has to offer.

As far as trying to convert the included physics system to work in 3d....not something I'd ever mess with, for production code at least. The 3d guys did that for their jam entry and it worked, but I don't know how well it would work in more general usage or what all they had to do.
The code required to set that up is actually fairly limited. The jam game showed the most basic shapes that can be used with it. It should definitely be possible to generalize the idea a bit more, though it'll never be as good as a full 3D physics simulation. More should be possible, though it all needs to be thought through properly.
 
Last edited:
Top