Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Goombert

General ENIGMA / 3D Particle Effects
« on: October 30, 2013, 12:37:53 AM »
I am thinking of revamping our particle system to support this popular extension from the GMC.

Except, it won't be used via dll, I basically mean to extend our particle functions to include the ones it has basically rewriting it but having the same function names.

What do you guys think? I figure well I wanted 3D particles, and this was already a well established and popular API for Game Maker, so why not make our functions the same?

Edit: Heh, he even mentions LGM in the topic...
**NOTE, Change the room in the GMK to see the right demo (Default is now the Spore Like Galaxy)
400k. (Because of sprites) GM7... You can convert it to gm6 with LGM. GM6er's Notes

Off-Topic / Re: The truth about "Obsolete GMStudio functions
« on: October 30, 2013, 12:02:38 AM »
Well I didn't say nothing used registry. But the less a program uses it the better.
Well I am sorry Harri, but you are simply wrong this was the entire purpose of the registry.
" With the introduction of Windows 95 and Windows NT, its use was extended to tidy up the profusion of per-program INI files that had previously been used to store configuration settings for Windows programs."

They could make a 5k$ product that can only do show_message() and you shouldn't care.
Unity3D's free version can do all that they do and more and do it better, because they have the power of a full programming language.

The quote you made was me talking about hardware functions.
Again, the Windows registry is not a hardware feature, and neither are disk and storage functions for audio and media playback, what if somebody wanted to create a really really cool media player that was half media player and half video game or something? With Unity3D you have that power, with BlitzBasic you have that power and cross-platform. Another thing I just added that they had removed was video playback support using DirectShow, later I intend to add the functions so video's can be rendered to Direct3D surfaces using the COM interface.

They consider it a tool for making a specific type of software - games.
Again, that is what Unity3D and BlitzBasic are meant for, yet people use them to create all kinds of other applications. Same with Qt being mainly a cross-platform GUI framework, and people use it to make games.

Is that the physics part accelerated?
No, Box2D is not hardware accelerated which makes it nice for mobile and shit. Which is also why I've written a Bullet extension which can be used for hardware accelerated 2D and 3D physics. I may do one more collision system which doesn't handle physics but does 2D and 3D collision detection as an alternative to BBox and Precise since cheeseboy and others have been requesting it.

That thing basically didn't even support internet.
As I said before I have no intention of even bothering to make that DirectPlay networking system work, the code is a clusterfuck and it was a very very poor API by Microsoft.

and ini functions require an extension to be used on non-windows platform.
"Linux and Unix systems also use a similar file format for system configuration. In addition, platform-agnostic software may use this file format for configuration. It is human-readable and simple to parse, so it is a usable format for configuration files that do not require much greater complexity."
You are almost as bad as Josh, can we please stop all the hate on INI files? YAML is 1000x more shittier and does not leave room for mistakes either, eg. indentation.

And again, nobody should ever use that function. That is only used for debugging.
Texturing a message dialog to make it look pretty, is for debugging????

And the reason for removal of course is that this also cannot be easily ported.
*ahem* They can be ported, you can texture XLIB dialog and Mac dialogs, if Windows can do it, what would make you think Linux wouldn't be capable of it?

Things like CD_ functions are very specific to the device.
Yes, but here is the thing, they already had the code for all of it written, so throw all that code into a prepackaged extension, then nobody would fucking complain. And just tell people the extensions are unlikely to be continuously developed unless needed.

I personally enjoy 2D games when done right and I think that is what GM excels at.
Right, but that does not mean you need to break its legs off like Nvidia does to their Linux drivers to make them as shitty as they are on Windows.,24519.html

Also as for the Windows cursor functions not being used, I see them being used quite a bit, and TKG specifically asked for that function when it broke, those were pretty well used.

most of the other window_* functions are still there at least and they only work on desktop platforms.
Nononon what are you talking about? That is not what I said at all, those are very usable functions.

Also, TKG, everything else you said I 100% agree with.

General ENIGMA / Re: Community Facebook
« on: October 30, 2013, 12:00:37 AM »
Nah I suppose it is fine because another dude came back and said this now.
There is no reason to compare ENIGMA, a community-powered project which takes no donations, with Unity, an application funded with venture capitalist groups.

If it turns into a war I'll probably hide it all.

Tips, Tutorials, Examples / Re: My Tutorial - need help
« on: October 29, 2013, 11:58:39 PM »
Yah, you're right it does look better with screens.  :D

Tips, Tutorials, Examples / Re: My Tutorial - need help
« on: October 29, 2013, 09:46:11 AM »
3 ) Drowning and Obstacles

The figure we are using from our tileset includes water which the player can not swim in. First cut the water out of the tileset and add it to the sprite and create an object called obj_water.

I chose the darker water ( it does not make any difference )

Now create a collision of obj_water and add the code
That is to say that the game (including our position, and all other variables) will restart, almost as if it just started.

4 ) Land
This is where we check for obj_wall with spr_wall and replace the soil. Specifically, we throw spr_wall, add spr_ground in obj_wall change the sprite to spr_ground, and change the name of the object itself. Phew

5) Background
The tileset did not give us the background, so either we'll get it, or we use a uniform color. I personally like this bright blue like the default in the settings of the room editor (in the Background tab) changed to a darker color.

6 ) A small earth
Adding even object " small world", which will be the platform. There is nothing like the earth. (so that the small)

7 ) End of game
Everything has a beginning and an end - we need to add an end. Employ the graphic character (with an arrow , but whatever) as our goal.

Here we add a character, add an object with the graphics of the character in the form of adding a collision with a sign. This time, our code is:
game_end ();
// turn off the game

8) The amendments visual
 To our game look nice , we need to improve it visually - let the water covers the entire territory , etc.

Voila! The game is ove !

Of course we have many mechanisms introduced in the game, such as the prevention of possible escape from the game. But it's in your hands what you do. My role has come to an end, I can die in peace :)

Useful links:
Official ENIGMA Website
The source code for our game
Lol, your tutorials are hilarious, and great!! :)

Off-Topic / Re: The truth about "Obsolete GMStudio functions
« on: October 29, 2013, 09:19:18 AM »
I agree with both of you.

Mac and Linux has some kind of equivalent, but that does require additional work (as there is no POSIX functions or something like that for registry)
Java preferences and Qt use the registry on Windows and ini files on Linux and Mac, LateralGM itself uses the registry.

Again, it's not about whether they work or not. It's whether a game making software should have them and how used are they
For 800$ Stupido should have all the features of a regular programming language, and maybe wipe your ass for you when you get off the toilet a couple of times. Also, while I do not agree with cd functions since you should really just load the stuff from the disk drive yourself, external resources are a must. Studio really fucked up by sandboxing the working directory.

These are not multi-platform (as far as I know you cannot change things like frequency or resolution on an Android device).
Right, and steam functions, and Windows 8 functions and some touch screen functions aren't cross-platform either, so why are Windows 8 catered functions considered cross-platform conducive but old Win32 stuff like setting the fuck window cursor isn't?
They literally just removed the setting of the window cursor.

Same excuse as for cd_ and registry_. Adding them were a mistake in the first place
There should also at least be drive_ functions to obtain disk space and other storage information, again it should have all the capabilities of a full programming language for such an expensive cost. And don't forget Harri I also complained about point size and shit to you before because it wasn't in Direct3D, but I have since changed my thinking.

So they will either reimplement them via that system or will allow the programers to use it on their own.
No, their particle effects are GPU accelerated now, probably only one of the things I agree that they did right.

got rid of the mplay functions because they had bugs and didn't always work
Mplay is another one I agree with Harri on, mplay was horrible it was built around DirectPlay, which is really really old DOS shit and COM interfaces, the API is so fucking bad I wasn't even able to make sense of it to implement in ENIGMA. It was soooo fucking bad that Game Maker was like the only program that ever even utilized it as their is like 0 documentation on the internet and no tutorials or anything to even try to understand DirectPlay.

but I did like variable_local_exists() which I used to make modular instances
Fucking gross, I don't agree with either of you on that, that is essentially storing a map of all variables with an extra fucking variable, that is soooooo unbelievably horrible.

By this logic 90% of their obsolete functions truly are obsolete.
It really doesn't matter, had they programmed their engine properly in the first place it wouldn't be an issue as shit could just be abstract and it could be left up to their end users which systems to use, eg. what ENIGMA does. Case in point.

Also another dumbfuck thing they removed, message_box functions that let you texture the message box dialogs, because without that they look like shit, and like the programmer did a lazy job and just used the plain Win32 api.

Game Maker can make good Windows games too you guys, people need to quit being so mesmerized by this 2D and mobile crap, I don't even fuck have a phone, I play SimCity and RTS games and shit.

General ENIGMA / Re: draw_set_color
« on: October 29, 2013, 07:00:51 AM »
Well fuck me, becase that is the exact issue I just posted about why Tetris don't work in Direct3D, it drew everything with default black because I did add the color to the draw sprite calls, now I don't know what to do. But again, as for your and their excuse I don't agree about it being that big of a drag, we are going to redo the entire ffp with shaders anyway once we get all this sorted out and the abstract device/state managers are finished. I like it being easy for noobs to draw transparent models and stuff, but that doesn't mean it has to be slow either.

General ENIGMA / Community Facebook
« on: October 29, 2013, 06:19:16 AM »
Polygone, Harri, everyone, I'd like to know how you guys think this should be handled. Take for instance the following post left on our Facebook.

Now, I am inclined to agree with him, the issue is do we want to allow this sort of language on a page that represents our product, or should I pull a YoYoGames? Again, my personal preference is to allow people to speak their minds, and like I said I agree with him. But again, this is not only my project, so I'd like some input from the rest of you.

General ENIGMA / draw_set_color
« on: October 29, 2013, 03:18:02 AM »
Yah just a heads up everybody, Studio removed the draw_set_color function, well, the way it used to be anyway. I recently readded it the Game Maker 8.1 way with Direct3D where you can call it to change the color of a model or the alpha, but listen here is the funny thing. YoYoGames decided to store current color for every vertice, making their code redundant one would assume, and making it run slower and also making it less flexible to use, eg. drawing transparent models, when they simply could have replaced the blend operation in the FFP with HLSL. But never the less ENIGMA will continue the old expected draw_set_color behavior because it is rather useful to draw transparent models and the likes.

Code: [Select]
void draw_set_color(int col)
enigma::currentcolor[0] = __GETR(col);
enigma::currentcolor[1] = __GETG(col);
enigma::currentcolor[2] = __GETB(col);
    D3DCOLOR D3DColor = D3DCOLOR_RGBA(__GETR(col), __GETG(col), __GETB(col), 155);
d3ddev->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
    d3ddev->SetRenderState(D3DRS_BLENDFACTOR, D3DColor);
d3ddev->SetRenderState(D3DRS_TEXTUREFACTOR, D3DCOLOR_RGBA(155, 155, 155, 155));

Also, this means that stupid cubes demo of their's won't work right out of the box. And listen how dumb this is, here is why...
Code: [Select]
       d3d_light_define_direction(0, 0.5,0,1, c_white);
       d3d_transform_set_rotation_z( d3d.x );
       d3d_transform_add_rotation_y( d3d.x/2 );

       if( global.cube>=0 ) d3d_model_draw(global.cube, 0,0,0, -1);
       d3d_model_draw(global.wirecube,  0,0,0,  -1 );

They put draw_set_color(c_red); directly before drawing the cubes. Which doesn't even change anything in Studio since set color was stored in the model but yet it does work in ENIGMA. Which makes me wonder why the fuck that code is even their in there demo, if they were just testing it or testing if it was removed or what. But at any rate, ENIGMA will keep the easy to use expected behavior and sprite batching will render on the state change since it is simply a blend op.

Off-Topic / Re: The truth about "Obsolete GMStudio functions
« on: October 28, 2013, 09:27:58 PM »
Four things.

One, those functions are deprecated if you try to use them Studio will usually error out the ass.

Two, this basically sounds to me like they just don't know what the fuck they are doing, because we implemented a lot of that shit to other platforms. What the fuck does taking control of a device even mean? Any sort of device managers Studio should already be in control of, otherwise how the fuck does it have retina functions and shit. This honestly sounds like 100% laziness to me.

Three, I would make it practice to never buy anything off of them ever, not just Game Maker, but any software they ever come up with.

Four, they are probably watching our site and noticing how it's catching up and doesn't deprecate these features which leads me to think this is why they are trying to recant earlier statements.

General ENIGMA / Re: GLbinding
« on: October 28, 2013, 11:33:45 AM »
Push those fixes to github for the time being until I have a chance to redo that properly.

Tips, Tutorials, Examples / Re: My Tutorial - need help
« on: October 28, 2013, 10:06:53 AM »
We will also need to create an invisible wall for detecting if the object falls of the screen.
Add an object and tick the solid option on it, which is generally for stationary objects.

In obj_hero add a event Collision with obj_wall and enter the code:
if (vspeed> 0) {
  move_contact_solid (270, vspeed);
vspeed = 0;

This way if the character hits the wall it will not fall.
Done, and I need a break again :P

General ENIGMA / Re: GLbinding
« on: October 28, 2013, 10:03:24 AM »
for(xx=0; xx<; xx+=1){
for(yy=0; yy<; yy+=1)

 for(zz=0 zz<height zz+=1)
 if zz>height-3 {
  ds_grid_set(global.layer[zz],xx,yy, 1)     //grass
 } else {
  ds_grid_set(global.layer[zz],xx,yy, 2)     //stone

Also Harri this needs done to fix the Minecraft example in OpenGL3 as well, because you are batching that sprite call and the global VBO is not getting rendered on the hidden state change. But this also presents a problems such as the car racing game that draw outside the draw events and not using surfaces, but this should be fine since draw_getpixel will most likely fireoff an FBO or texture state change with glBind, so I presume that this should continue working outside the draw event and without using surfaces, it will have to or the car racing game won't work either, so I think my solution is pretty solid.

Tips, Tutorials, Examples / Re: My Tutorial - need help
« on: October 28, 2013, 09:37:20 AM »
It is helpful if you already know basic highschool geometry and math, for instance the Cartesian coordinate system is used to map objects and graphics on the screen as well as calculate collision detection and make physics calculations. The character object we need to add events to handle the input  from the arrow keys and move it accordingly.

We move the object to the right using this code: x = x +3

This sets the x coordinate of the object equal to its current position in addition to 3 pixels. To move left you simply subtract from x.

For jumping we need to add a little more code than what we did for moving left or right. To move the object vertically without accounting for gravity, such as walking up a ladder you would use the following code.
if !place_free(x,y+1)

Basically this code says that if no objects are on top of each other the vertical speed becomes -8 pixels per time step.

Now we can add an extra component, gravity, which will gradually pull the object down. You can add this code to the step event of the object.
if place_free(x+0,y+3) {
} else {

if (vspeed>8)


General ENIGMA / Re: GLbinding
« on: October 28, 2013, 09:32:03 AM »
I did take a quick look and texture_use() itself seemed fine.
I see, but that example works fine in OpenGL 1.1 for me, just not OGL3. The device manager needs to be similar to the DirectX one, it shouldn't implement functions by unique names it should just be similar to the following.


This way the manager can also easily be removed, anyway inside this manager is where global batching and state changing and memorization will occur, please see the following.

This is also where common error messages should be handled, in order to reduce duplication of code even more as well.

Also, how are the matrices going?
You may go ahead and start on them but any of that will most likely get moved to the OGL manager when I write it. I am working on implementing timelines and other long forgotten features.