Alpha MAEngine - Community 3D Engine

MAEngine has been under development for two years now, as a closed community project; headed by me, TickleForce (Venomous on the old GMC forums), and Falki147.

Due to time limitations (I'm getting married now, and I think the others have left for other game development tools and school), I'm going to release the engine early. I've been thinking about this for a while now, but decided against it because the engine wasn't even close to what we had planned.

However, there are currently no fast, well made, reliable and modern physics/collision engines made for 3D game development, all are ancient in terms of computing, from 2010 backwards.

Windows:
SDK: MAE.zip (Compiled April 27th, 2017)
TEST BUILD: NON_YYC (Compiled July 1st, 2017)

Some other features that are in the engine are these:
- 3D Path Finding & Navigation
- Vector, Matrix & Quaternion Math Scripts
- MD2 Model Loading
- 3D Particle System
- HLSL9 Shader Functions
- FMOD Sound Engine (Was to be replaced with XAudio)

Check the github for a complete list of features.

--

NOW, This is a big part of this post, because I want to put a message to the community, something I think should of happened earlier.

YoYo Games is never going to focus part of Game Maker on 3D, they want it to be 2D focused, but they did give us one thing; an excellent thing to build a community around, which is game development.

We're all here to develop games aren't we? So why not help ourselves, all of us that can develop 3D tools and applications to work with Game Maker?

I'm asking this, join together to all collaborate on this project, or a new one. If everyone who's into 3D in game maker contributed shaders, tools, code for different platforms, rendering code and optimizations into this engine, we could make Game Maker a really powerful tool for 3D Development.

Here's the GitHub: MAEngine


Why not make a sub-community out of us 3D players? :)

Four arguments in DLLs Solution:
Use the early access builds.

I've been using them for a good year now. Because Game Maker: Studio is quite mature as a program now, I haven't come across any big problems with them, other than custom constants, which have been replaced with macros anyhow.

Upgrading to early access also nets you new functions for working with matrices and arrays, allowing you to completely replace the d3d projection scripts with something more low level, which can be handy at times.

Not only that, the "only 4 arguments in external_define" is gone; I speculate it being due to ty_string & ty_real getting their limitations matched accidentally.
 
Last edited:
M

Misu

Guest
Im already working on one of my own separately and I believe there are like several other people on the same track on making their own 3D developments as well. I mean you are probably not the only person who is trying hard too. But its nice to work together on this... although I took a look at this and I like how little code required (for some features) but the amount of scripts and terms used is really complicated to understand. Sometimes I find more preferably an easy formatting on coding (like how GML tends to name their functions and the logic on using them that one can easily recognize the usage). You know this reminds me of Slayer's 3D asset on the marketplace that its quite complexive and abundant like his.

Im more seeking on making something much apt for the Game Designer audience than programmer audience since that is the core reason why many users changed to another engine after GM (for 3D). I know there are probably some here who would willing to support on this Open Source project to making a better 3D development kit, although my aim wont go on this, sorry. Cant wait what to see from this. Good luck.
 
I am currently stumbling my way through developing my own 3D engine - but it is a learning project for me, so I am not sure I have much to offer yet. I commend the effort, though.

If there was a sub community for 3D, that would be cool.

Is there any demos available that are using this engine? To see what is there so far in action?
 
Why do you guys use GameMaker for 3D rather than another, 3D-oriented game engine? Just love of the struggle?
I own Game Maker Studio Pro - I started with it, on a 2D game, so I am comfortable with the engine. I know it is more of a struggle, but at this point I am still learning the in's an out's of game dev on a larger scale. I intend to branch out into other engines eventually, if the project needs. So far for this project it is working pretty well.
 
Last edited:
Im already working on one of my own separately and I believe there are like several other people on the same track on making their own 3D developments as well. I mean you are probably not the only person who is trying hard too. But its nice to work together on this... although I took a look at this and I like how little code required (for some features) but the amount of scripts and terms used is really complicated to understand. Sometimes I find more preferably an easy formatting on coding (like how GML tends to name their functions and the logic on using them that one can easily recognize the usage). You know this reminds me of Slayer's 3D asset on the marketplace that its quite complexive and abundant like his.

Im more seeking on making something much apt for the Game Designer audience than programmer audience since that is the core reason why many users changed to another engine after GM (for 3D). I know there are probably some here who would willing to support on this Open Source project to making a better 3D development kit, although my aim wont go on this, sorry. Cant wait what to see from this. Good luck.
Thanks for the words here. I agree the complexity is overwhelming, the eventual goal for this project was to use a 3D Level Editor, which would handle most of the engine mechanics for you, so you could focus on gameplay logic and such. Not to mention bundling a lot of starter scripts for people who aren't as adept, and different wrappers. We originally built the engine for GML, but then made it a C++ Oriented engine, with a GML wrapper provided by us. This was decided so people could one day cross the gap from GML to C++ game development, with instantly familiar APIs. I haven't used Slayer's 3D, I don't really like to buy assets, which was another reason to release this. A gift to a really great community.

I am currently stumbling my way through developing my own 3D engine - but it is a learning project for me, so I am not sure I have much to offer yet. I commend the effort, though.

If there was a sub community for 3D, that would be cool.

Is there any demos available that are using this engine? To see what is there so far in action?
I wish there was a sub community too. I kinda hope more people do things like this so we can make one, even if it's on a different forum. The DLL download has a .gmx with a bunch of examples of the engine which we used for debugging. I was working on a tech demo but I never got all the assets finished, and Falik didn't get to finish the pipeline system, so I could work on a deferred pipeline.

TickleForce made a game for one of the GMCJam that uses the physics and pathfinding, I don't remember which one but there's a link on the gitter somewhere.

Why do you guys use GameMaker for 3D rather than another, 3D-oriented game engine? Just love of the struggle?
Personally, I find other engines are stylized. If a game is made with unity, 90% of the time you can tell. Same with Unreal Engine. Not to mention, that we all know GML already, and it functions perfectly fine for 3D. The tech demo for this engine I was working on was handling modern graphics at a FPS of 200, on a mid range computer from 2014. Though for me, it just feels as if Game Maker is easier to control, and I can prototype ideas from my mind a lot easier than with C++ and SDL/DirectX combined.

-

Thanks for giving the post some attention guys, I'd really like to start something for all the game maker users. It feels like we'd all benefit from one big extension doesn't it, and as with PCSX2 etc, community coming together to do it is always an excellent experience.
 

Aragon

Member
Great initiative, i was working on a bullet wrapper myself but this seem to be a better solution.
Although I'm wondering what kind of GM studio version you are using, since a huge DLL bug contains within the latest GMS version where more than 4 arguments using in external_define will not work. (https://forum.yoyogames.com/index.p...-more-than-4-vars-are-used.23026/#post-176297). (So i wasn't be able to run the given project above)

I would like to see a compiled GM version, just to try it out.
 
Great initiative, i was working on a bullet wrapper myself but this seem to be a better solution.
Although I'm wondering what kind of GM studio version you are using, since a huge DLL bug contains within the latest GMS version where more than 4 arguments using in external_define will not work. (https://forum.yoyogames.com/index.p...-more-than-4-vars-are-used.23026/#post-176297). (So i wasn't be able to run the given project above)

I would like to see a compiled GM version, just to try it out.
I had this issue. I opened up the project and got an external define error.
We started building this DLL two years ago, before these errors were around. The problem was fixed about 6 months ago on early access. It's probably to do with the external_define using ty_string limitations for ty_real, since you have always only been able to use a max of four arguments when ty_string is involved.

I'll add a compiled version to the top post.
 

TheSnidr

Heavy metal viking dentist
GMC Elder
Awesome initiative! I'm definitely digging through this once I'm back from vacation.
How does MD2 work? Skeletal animation or frame by frame models? I could possibly help with skeletal animation if the latter is the case.
 
Awesome initiative! I'm definitely digging through this once I'm back from vacation.
How does MD2 work? Skeletal animation or frame by frame models? I could possibly help with skeletal animation if the latter is the case.
MD2 is vertex morph animation, but the plans were to add a skeletal system. We were going to add some more formats once we worked out all the basics. MS3D, FBX and OBJ were on the list, and a loader was made for the BAO format, GM's own third party vertex morph format, and D3D format models.

The MPM 3D file format that Falki and I designed supported both forms of animation, but he only got as far as the converter, mesh loading and pipeline system. The backend wasn't even started for animation with MPM.

On a side note, I'm glad to see you took interest. I really enjoyed reading your post on Octree's in the Advanced section of the forums, it was part of the reason I finally decided to post on the engine, a prominent interest in 3D being present on the forums made me figure people would probably bite for an idea like this.

I'm hoping to see the old Enigma team is still around. Finding one or two of the people who worked on that would be useful for the engine.
 
Hi. I've been doing a little 3d stuff on my own, but only in GML (and GLSLES shaders).

Anyway, I see you list 3d particles in your description, which makes me think you're using some kind of gpu instancing. Is that correct? My question is, how exactly does that work? And do you know if there is any way of doing that in gml itself, or does it require an extension?

How about we make a subreddit for 3d in gamemaker?
 
Hi. I've been doing a little 3d stuff on my own, but only in GML (and GLSLES shaders).

Anyway, I see you list 3d particles in your description, which makes me think you're using some kind of gpu instancing. Is that correct? My question is, how exactly does that work? And do you know if there is any way of doing that in gml itself, or does it require an extension?

How about we make a subreddit for 3d in gamemaker?
Very late reply; sorry about that.

The 3D particles are just an array of point sprites; someone else had one that used GPU instancing though, think it's on the market place under 'graphics utilties' or something like that. Should be a demo with it with particle fireworks.
 
I can't get samplers in shaders to work. Could you explain i should go about it?
Samplers are indexed like the default texture_set_stage function inside GML, so you set up your shader like this:
Code:
sampler2D s_0;
sampler2D s_1;
Then you'd set the textures for those like this:
Code:
shdCSamp0 = 0;
shdCSamp1 = 1;
pTex0 = MAE_TextureCreateFromFile("brick.dds");
pTex1 = MAE_TextureCreateFromFile("brick_n.dds);

MAE_ShaderSetSampler(shdPtr, shdCSamp0, pTex0);
MAE_ShaderSetSampler(shdPtr, shdCSamp0, pTex1);
That should work, I never did much work on the rendering extension code though so I'm not 100% sure.

The shader support in MAE in a bit pointless unless you want to use some of the more advanced features of HLSL9. You can still use the regular Game Maker shaders with MAE engine components like collision/physics, pathfinding and particles etc.
 
S

Sam (Deleted User)

Guest
Why do you guys use GameMaker for 3D rather than another, 3D-oriented game engine? Just love of the struggle?
GameMaker is perfectly capable of doing great 3D. It's up to the developer on whether that potential is properly utilized. i.e. if someone doesn't have the talent, they can't do it. This is true with any engine. In fact, a lot of game engines that target 3D specifically are even more difficult to use than GameMaker - for both 2D and 3D. If you have ever tried Unity, you would know what I mean.
 
A

Axyl

Guest
If you have ever tried Unity, you would know what I mean.
Really? I tried Unity recently and was surprised at how easy it makes 3D.

If you have ever tried skeletal based animation blending between animation states in GMS, you would know what I mean. ;)
 
A

Axyl

Guest
I have actually, it's not that difficult ;D
I have seen your code and it it very impressive.

I wouldn't say you did it easily though, you have been working on it for a very long time.

But comparing that to the five lines of code in required in Unity, it is bloody massive and quite convoluted. The theory behind it would go well over 99.9% of the GM forum users.
 
I've just done some more testing and found that quite a few physics functions don't work. Do you intend to make future updates to the physics? (I hope this doesn't come across as too blunt/rude).
 
S

Sam (Deleted User)

Guest
I'm not denying it takes less code with Unity out of the box, but there are assets available like realtime shadow shaders, 3D room editors, and special model formats such as @TheSnidr 's that if you have all of those things handy then you really can't complain near as much.
 
I've just done some more testing and found that quite a few physics functions don't work. Do you intend to make future updates to the physics? (I hope this doesn't come across as too blunt/rude).
I do plan future updates, however the person responsible for the physics and pathfinding implementation has left to do other things, and I don't have a clue how to work with bullet. I'm currently working on the XAudio2 audio engine to replace FMOD, since then you'll be able to make commercial games with the engine. There is also work been done on a scene editor and more advanced conversion utilities to use with the engine, and an example SDK which will show more detailed examples of how to use the expanded feature sets to make 3D games.
 
I do plan future updates, however the person responsible for the physics and pathfinding implementation has left to do other things, and I don't have a clue how to work with bullet. I'm currently working on the XAudio2 audio engine to replace FMOD, since then you'll be able to make commercial games with the engine. There is also work been done on a scene editor and more advanced conversion utilities to use with the engine, and an example SDK which will show more detailed examples of how to use the expanded feature sets to make 3D games.
Thanks for the reply :), that's a bummer about the physics though :/. I don't have much time ATM and I have to finish a game in a few days for college, but I have the source code for the old GMBullet DLL so I'm just going to have a look at that to try and get that working with the YYC. I know almost nothing about C++, the closest I've come to using it is using C#, but if I do somehow get somewhere I could send you the updated DLL (but like I said its unlikely that I will get anywhere).
 
I have made quite a bit of progress using the source code of the MAE engine as well as other bullet APIs but it might be a few weeks before its complete enough for a first release. I just want to ask; do you have a problem with the world class being very similar to the world class of the MAE physics?
 
Top