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

2116
Developing ENIGMA / Re: Why is GameMaker: Studio so slow?
« on: November 28, 2013, 04:57:11 PM »
TheExDeus,

Quote
(which if I remember correctly was already batching everything via high-level DX magic), so that's funny.
No, this was actually my fault with not setting the index buffers to write only and not setting the new global batchers to dynamic memory usage and I had the models in the wrong pools. Don't blame Direct3D for my lack of inexperience with the API, it has enough reasons on its own of why it sucks. And it is still slower than OpenGL as well, from actual test cases I have been running with the proper memory pool set up and everything.

Quote
And that is what they can do.
A simple draw_batch_begin()/end() would suffice like every other game engine. But because of it having to be like this I am going to add draw_set_batching_enabled()

Quote
If the user knows how batching works, then he can fine tune the code for massive speed boost.
You are still completely missing the problem here, having such a system as this does not make every game faster, my Box2D example with the new system on my end as optimal as it can be now runs 1/3rd of the speed it did run at. There really is no solution to this problem.

Sslaxx, not in this particular case no, as we already have texture binding memorization in my context managers, texture atlasing can improve game performance down the road for certain games. But please don't be mislead by YoYoGames, texture atlasing is not the only thing you need to worry about, you need to worry about ALL render state changes, that includes enabling/disabling lighting, texture repetition, and any thing else that is either FFP or shader based. Texture atlasing won't become necessary until we start on mobile ports. But also, my context managers do memorize all render states and everything, this is currently what im partially working on for OpenGL 3 as it needs perfected for me to add these new matrix functions just released.

2117
Developing ENIGMA / Re: Why is GameMaker: Studio so slow?
« on: November 28, 2013, 10:37:01 AM »
AsuMagic, it is only a particular case. You see the way graphics API's work, you want to try to batch EVERYTHING into a single vertex buffer object. For instance in ENIGMA, each d3d model is a single VBO and sometimes it has an IBO or index buffer object attached. Now, these VBO's can contain 6 different primitive types, in the following order INDEXED TRIANGLES | INDEXED POINTS | INDEXED LINES | TRIANGLES | POINTS | LINES due to me being the one who designed it. Now the issue is, if you batch a bunch of triangle primitives together, which is the filled circle, since every filled circle is a triangle fan, they keep their depth and are drawn first when the VBO actually renders to the screen. The global VBO decides to draw its contents when stride changes or other render states such as color or text changes. Anyway, it batches the circle outlines as line lists, and the circle outlines will maintain their depth with each other.

But the issue occurs when doing both filled and outlined circles, since if you draw the indexed triangles first, they keep their depth, and so does the indexed lines, but they don't keep their depths relative to each other. So in other words, all the line primitives render on top of the filled circle/triangle primitives causing the depth to be screwed. So that means the global VBO now has to render each time its primitive type changes, which drastically slows it down because it has to get run through all this overhead instead of just being sent directly to the GPU and rendered. But anyway, this is why 8.1 is faster with this test case because it didn't do any batching with any overhead and sent everything directly to the GPU after interpretation.

Sorry if it doesn't make much sense but it is a rather complex graphics issue :(

2118
Developing ENIGMA / Re: Why is GameMaker: Studio so slow?
« on: November 28, 2013, 10:10:40 AM »
Yes, but you are missing the point entirely, I explained why ENIGMA has this same issue as well. This is actually why I've been stuck the past couple days unable to finish my improvements to D3D and OGL3, as I am unsure exactly what to do. I am trying to think if I can come up with a solution that makes ENIGMA faster in all scenario's.

2119
Developing ENIGMA / Why is GameMaker: Studio so slow?
« on: November 28, 2013, 09:57:27 AM »


So while working on the global batchers to get the context managers finished for OGL3 and D3D so I can add the new matrix functions for Harri, I decided to do a little test.
I ran into a particular issue with an auto-magic global batching system, and that is when you are constantly changing the stride or primitive type of a global batcher. I was disappointed in how much slower it caused my Box2D physics example to run as it draws a lot circles and rectangles with outlines, so I decided to test if Studio also has this issue. Sure enough it does, you can run the two examples below by simply making an empty project with 1 object whose draw event is the code below, sticking that object in a room and hitting run in either ENIGMA or Studio.

The first example demonstrates the batching problem that no batching system can really resolve, this also ran at 183fps in Game Maker 8.1 because it just drew the primitives instantly without any overhead.
minFPS, maxFPS, avgFPS
41, 52, 48
Code: (EDL) [Select]
    room_speed = 1000;
    draw_text(0, 0, "FPS: " + string(fps));
     
    repeat (500) {
        var xx, yy;
        xx = random(room_width);
        yy = 50 + random(room_height);
        draw_set_color(c_blue);
        draw_circle(xx, yy, 10, false);
        draw_set_color(c_red);
        draw_circle(xx, yy, 10, true);
    }

This demonstration shows that global batching does help when not constantly switching stride and primitive type as this example ran 3 times slower 8.1
minFPS, maxFPS, avgFPS
60, 583, 524
Code: (EDL) [Select]
    room_speed = 1000;
    draw_text(0, 0, "FPS: " + string(fps));
     
    repeat (500) {
        var xx, yy;
        xx = random(room_width);
        yy = 50 + random(room_height);
        draw_set_color(c_blue);
        draw_text(xx, yy, "wtf");
    }

I am really at a loss for what to do here as I am historically in favor of users learning to do the batching themselves so they can fine tune it to perfection, I do not like trying to auto-magically make games faster. But then again I suppose it is not that big of an issue since I can always add the ability to disable global batching later on anyway, and well OpenGL 1.1 we had no plans of ever adding global batching to, so it's perfect. But anyway, moving forward, ENIGMA will have this same issue with drawing shape outlines in Direct3D and OpenGL 3 and I will later add an option if there is a lot of need for it, and OpenGL 1.1 will never have this issue, since it expects you to do shit yourself.

2120
Nah it's my fault, I was trying to make DirectX default on Windows but I don't have the time to maintain the systems, I have reverted it to OpenGL1.1 and OpenAL being the default systems in my latest commit yet to be pulled.

Quote
I've had issues with events disappearing from an object, too - related
Nope that would be completely the IDE, sounds like a new issue. You can report the issue to LGM's tracker below and it will be resolved when someone gets a chance.
https://github.com/IsmAvatar/LateralGM/issues?state=open

Our plugin is what the IDE uses to communicate with ENIGMA, you can use LGM on its own without ENIGMA since it is the only program which can edit GMK/GMX for Linux and Mac.


At any rate, that output log offered me nothing useful, nothing went wrong in that, look for the file output_log.txt and http://www.pastebin.com that for me.

2121
Well you don't need the INI extension under Windows, as Win32 has ini functions by default, just by virtue of it being a default feature of the operating system.

Quote
What would be nice, if it isn't, is if there could be support to disable selective modules (like this one, or the MCI CD commands) under OSes that don't need (or support) such extensions.
There already is, but I don't limit any of them to a specific OS because a lot of users are on Linux and they use a cross compiler patch to build for Win32 and test the games in WINE, so they don't like having the stuff hidden from them, and it really don't hurt anything anyway.

But yes, that is actually odd that 1.1 works but not 3, as I am currently working on stuff for 3 and d3d, but please paste the output log of OpenGL 1.1

2122
Off-Topic / Re: Don't get Scroogled!
« on: November 27, 2013, 04:58:24 PM »
Yeah that is really the only reason I can't make Linux my main desktop, bad drivers and the GUI.

But I would like a separate computer to make into a Linux distro for development, as Linux is veryyyyy friendly to developers.

2123
Off-Topic / Re: Don't get Scroogled!
« on: November 27, 2013, 03:37:08 PM »
I like things about both operating systems, Windows for its user interface and friendliness and Linux for its comprehensive development environment and package systems.

I also think the RT Surface is really neat, with its nice trim keyboard and all, good luck typing word documents on an iPad :\

2124
Issues Help Desk / Re: Compiled exes not responding
« on: November 27, 2013, 01:26:18 PM »
No problem.  (Y)

2125
Issues Help Desk / Re: Compiled exes not responding
« on: November 27, 2013, 12:29:27 PM »
Build->Settings and select the "API" tab

Try again with OpenGL1.1 and OpenAL for graphics/audio.

Also be sure you are launching ENIGMA with administrative privileges, it needs to access AppData to store temporary files.

2126
Issues Help Desk / Re: Compiled exes not responding
« on: November 27, 2013, 10:20:57 AM »
http://www.pastebin.org

Can you please send me a link of the file contents of output_log.txt, thank you.

2127
Issues Help Desk / Re: Compiler error: "Draw_Particle defined but not used"
« on: November 27, 2013, 05:46:27 AM »
No problem  (Y)

2128
Issues Help Desk / Re: Compiled exes not responding
« on: November 27, 2013, 05:46:02 AM »
You mean the button to make a single executable on the desktop? Try the green run button instead, the compile button may be broke at the moment because of cheeseboy stripping the executable. But please tell me if the game runs with the green run button.

2129
Off-Topic / Don't get Scroogled!
« on: November 26, 2013, 05:06:59 PM »
http://www.scroogled.com/chromebook

This is the worst advertising campaign ever, Microsoft is reallllyyy shallow.

2130
General ENIGMA / Re: SVG Graphics
« on: November 26, 2013, 05:05:53 PM »
Oh we are definitely going to GameMaker is adding now so we have to for compatibility.  (Y)