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 - TheExDeus

1231
Proposals / Re: OpenGL chosen by system (?)
« on: July 19, 2013, 09:56:40 am »
When that happens then of course it will not be practical to support it. Because it really isn't practical to support GL1 even now. For desktop PC's you can buy a GL3 card for 100$ and a used one for 50$ or less. There really is no reason to not get one. On laptops sadly changing GPU is usually a lot harder or even impossible. But then again laptop (especially a crappy one) is in no way meant for gaming. But if it is at most 3-4 years old then it should support GL3 just fine even with crappy intel cards. You can probably buy a 3 year old laptop for 100$ as well. So if a person like poly wants to maintain GL1 for himself then it's ok. But ENIGMA as a project shouldn't really focus on that kind of compatibility.

1232
Proposals / Re: OpenGL chosen by system (?)
« on: July 19, 2013, 08:17:45 am »
Quote
DirectX changes so much as to be impossible to salvage old code, from version to version.
Code does change and so the needed sdk's and libraries to compile it. My thoughts was that already compiled game will probably work fine though. That is why HL1 from 1998 with D3D using DirectX6 or something still runs on modern hardware even without patches.

Quote
OpenGL has remained "compatible", but a lot of what you do is emulated software-side.
But that means it will still run. So a GL1 game still runs on a newer PC. Maybe many functions will be software side, but that is true for GL3 anyway. Like we don't have any transformation functions any more. We need to take care of matrices ourselves. And while I believe at some point the transformation functions were hardware based, now they are purely software. So none of the functionality that went from hardware to software (GL1 to GL3) is not actually straightforwardly replaceable with something purely in hardware. Now everything is done in shaders. The even simple things like rotations or translations. If you want to move a box in a 3D you have to write a vertex shader that does it and if you want to see the box then you need to write a pixel shader that does it. Nothing comes included.

1233
Proposals / Re: OpenGL chosen by system (?)
« on: July 19, 2013, 01:13:37 am »
I don't think it's vice versa. I haven't seen a feature from GL1 which doesn't work on newer cards. That's the thing with software design and standards. It almost always have to be backwards compatible (or as much as possible). So while most of GL1 functions are obsolete, they are and will be supported. Maybe it's just in the driver level though (as it emulates fixed pipeline stuff with newer functions like shaders).

Josh, but isn't that just at the compile time? I think Fervi wants that we compile with both GL1 and GL3 and then switch at runtime. I don't believe we need to do that. Any PC (even with Intel cards as sidegame has made us aware) support GL3 in sufficient capacity. There really should be a point where compatibility is just too expensive in terms of time and effort required. I think our GL3 don't work on maybe 1% of all cards (which fervi and poly I guess are owning).

1234
Issues Help Desk / Re: missing surface functions?
« on: July 18, 2013, 03:05:58 pm »
Well until that is sorted out you can use this: https://dl.dropboxusercontent.com/u/21117924/Surfaces/OpenGL3.zip
Just extract it the same place as before. I modified the surface_save functions to output png if the extension is .png and output bmp if extension is .bmp. There is a problem with bmp though and it was there previously too. bmp will only save correctly for some dimensions. Like your 500x500 saves fine, but not 322x322 (or 50x50 or whatever) will not. I tried to fix that for 2 hours and I have no idea why it is doing that. In the end I replaced the whole current code with totally different one from lodepng and it still outputed the wrong stuff. In the end I just gave up. Maybe someone else can figure it out.

1235
General ENIGMA / Re: Hi There
« on: July 18, 2013, 11:59:06 am »
LateralGM is very old and was created as just that - total open source and free replica of GM IDE. It wasn't meant to be any different as ENIGMA wasn't even a project back then. So as LGM could only edit and save GM files then there was no reason to add something GM didn't support.
Right now some additions (like new resources) are planned and editor changed. The whole idea will probably stay the same though, as I personally think Mark Overmars did a very good job in coming up with the IDE. If it was any different then it would probably be more complicated.

And I think it's the other way around - When will ENIGMA be compatible with GM:S, as I don't think YYG will create stuff to be compatible with us. I think most of GM:S stuff is already in ENIGMA. There could be some functions not ported (and some may never be), but ENIGMA also has functions which GM:S lacks. So we are slowly diverging. You should probably make projects in one or the other. Hoping that gmk from ENIGMA will work in GM:S or vice versa seems very optimistic. The idea is that if the project is complex enough or uses special features that make it incompatible with one or the other, then it would be at least easy to port. I don't think it would take longer than a day or two to port almost any GM game to ENIGMA (if it didn't work out of the box already).

1236
Issues Help Desk / Re: missing surface functions?
« on: July 18, 2013, 11:40:47 am »
It's no the problem of draw_clear_alpha(color, alpha). If you remove all the rectangles you draw then you will see the surface itself is transparent. The problem is that ENIGMA doesn't export .png's. It only exports BMP's which don't have alpha channel. I have mentioned it before, but no one is willing to do anything about it. Josh said that images (sprites and backgrounds) are just zip'ed and not .png encoded so ENIGMA doesn't actually have functions necessary to export PNG's. So we have to choose:
http://lodev.org/lodepng/ - No other dependencies. Probably the most painless method.
http://www.libpng.org/pub/png/libpng.html - Requires zlib
Or just make our own (which would be stupid).
The lodepng seems to be the easiest to implement.

1237
Issues Help Desk / Re: missing surface functions?
« on: July 18, 2013, 08:27:19 am »
Well that's weird. But I guess this knowledge will come in handy. Could also explain why we have problems with MSAA.

1238
General ENIGMA / Re: Hi There
« on: July 18, 2013, 02:53:47 am »
Well unless they become freeware then I don't think it will matter that much. We already are going in different direction. We have many different functions and different possibilities in EDL (like optional types, which can increase speed much more than any LLVM ever can).

And I just thought you could of posted in General ENIGMA or something as this is really not off topic, but on topic.

1239
Proposals / Re: Compile Scripts
« on: July 18, 2013, 02:30:53 am »
Quote
While being compatible with GML 100% ??!?!?!?!? o_O
Well that part will not be GML compatible (as it doesn't even have the C++11 foreach().

Some thoughts:
1) Compile Scripts confused me a little. As I though "Compiled Scripts" and then tried to figure out why you call it like that because we already compile all scripts.
2) While it seems powerful to lets users do this, I still think we should add as much functionality ourselves as we can. Especially sprite_get_name() the like. And I don't think it would bloat the exe, as shouldn't compiler cut unused functions? I am pretty sure it doesn't do it now for some reason (probably the makefile is wrong). You could also make JDI do some size optimizations as you know what functions are used what aren't.
3) So you are basically defining a new language? I guess it will have similar syntax to EDL, but have some additional built in stuff to get information about resources? As you cannot do spr_my_sprite.name in EDL, though actually it is a very good idea. We should make all resource objects actual classes to we can get obj_enemy.bounding_box_width and such. I think we already can do obj_enemy.depth though.
4) What could be other uses for it instead of replicating these _name functions? I suspect this isn't meant to replace extensions or add the capability to code the scripts in pure C++ like Definitions.

1240
General ENIGMA / Re: Hi There
« on: July 18, 2013, 01:10:25 am »
We did think about LLVM (Clang specifically), but dunno what happened there. The GM roadmap is a little confusing. It says "FULL script compilation" as if in their C++ runner they weren't compiled. We already compile everything so speed gain is quite large. If that is meant to be run-time compilation (to emulate no obsolete execute_string()) then we also though about that. In the end it always comes to the conclusion that if you must use execute_string(), then you are doing it wrong. Josh recently came up with something that allows getting resource id's from strings (I think that is what it was [1]), which is the most used case for execute_string().

I don't think this needs to be in off-topic.

[1] - http://enigma-dev.org/forums/index.php?topic=1356.msg13650#new

1241
Issues Help Desk / Re: missing surface functions?
« on: July 17, 2013, 02:35:37 pm »
I don't actually now if it will fix anything. It really shouldn't as it works on many machines and is just weird it doesn't work on yours. Have you also tried installing newer video drivers? And are you sure you don't have an ATI card in that PC (look at the stickers on it if it says ATI anywhere), because for some reason the manufacturer is ATI Technologies Inc. Maybe they just make the built-in card.

Try copying this https://dl.dropboxusercontent.com/u/21117924/Surfaces/GL3surface.cpp inside enigma-dev\ENIGMAsystem\SHELL\Graphics_Systems\OpenGL3 and overwriting the file there. I cleaned it up as far as consistency goes (now everything is ARB) and made surface_free() actually free texture and FBO (previously I guess it was a memory leak on the GPU... dunno how that works).

Also you should try a simpler example. It's possible that blend modes just fk's the picture up and just writes 0 alpha everywhere or something. So try something like:
surf = surface_create(128,128);
surface_set_target(surf);
draw_text(10,10,"This is text "+string(random(100)));
surface_reset_target();

This will just draw text. Nothing else.
Also try this: https://dl.dropboxusercontent.com/u/21117924/surface_test.exe
It's exactly that text drawing but I compiled it so if it still doesn't show up then the problem is even more bizzare. Also try pressing Enter while the program is running. That will delete the surface and create a new one with new text. A random number is added to see if it changed.

edit: Robert B Colton, check the first page. He posted a screenshot. _supported() returned true.

1242
Issues Help Desk / Re: missing surface functions?
« on: July 17, 2013, 12:27:14 pm »
FBO is short for Framebuffer Object. It's basically OpenGL native equivalent of surfaces and it is what surfaces are based on in ENIGMA's OpenGL graphics system. Your graphics system seems to support it - lines 653 and 2022 in the glewinfo. So it is very hard to tell why it doesn't work for you.

On a related note, I don't know if that will fix anything, but I noticed that surfaces use both ARB and EXT to implement framebuffer. I think they should work together, but it is possible that in a certain case like his they don't. So we should rewrite them to use one or another. The question is which. ARB is better implemented and available on every new card. EXT could be able to run on a card from 2006. or sooner, but it won't probably run ARB. I think we should just do everything using the new stuff and think about compatibility later. Maybe by using EXT in GL1 and ARB in GL3.

1243
Issues Help Desk / Re: missing surface functions?
« on: July 17, 2013, 09:37:50 am »
"Intel(R) HD Graphics Family" - Well for all intents and purposes you can say you don't have a graphics card at all. Those things usually will not really launch anything and the technology support is usually awful. You might have hope as it is new and maybe Intel starts actually creating cards people can use now. I for example, was certain that Intel cards created at least in the past 2 years have support for FBO's (which is a technology from 2006 (last version, originally it is even older)). Try rendering normal sprites and see if that works. Because if _is_supported() returned true, then it must be supported, as it is the only valid way to actually check for support (as far as I know).

1244
Issues Help Desk / Re: missing surface functions?
« on: July 16, 2013, 12:16:38 pm »
GM uses DirectX which has magic support from MS. Just like Apple made their own driver so their crappy GFX cards could emulate more advanced functions.

1245
Issues Help Desk / Re: missing surface functions?
« on: July 16, 2013, 11:11:46 am »
Robert, he tried my compiled example. As it doesn't work then it's lot bigger problem.