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

61
Issues Help Desk / Re: Compiled game doesn't start?
« on: March 14, 2019, 11:16:16 PM »
Ok, yeah, try the workarounds.... if anybody finds anything more about this before I do be sure to share.

62
Issues Help Desk / Re: Compiled game doesn't start?
« on: March 14, 2019, 05:46:05 PM »
Hi Jan! I'm sorry you ran into this and I have been seeing some cases of it myself when building final games in compile mode. However, it seems to be random as some games will do it while others are just fine. It also seems to keep changing whenever I do an MSYS2 upgrade. I am interested in finding the root cause of this myself, but it's proved to be a little difficult since it sometimes won't occur when building with debugging symbols and gdb'ing the release exe doesn't yield anything useful because there is no debugging symbols! It's a bit of catch 22.

You can try maybe compiling the games with different systems (I specifically want to point my finger at OpenAL here as a potential cause of this). Another workaround, since you said the game works fine in run mode, is to copy and distribute the temp file exe of your game (the file path is printed in LGM's output window when you run the game). One issue with the second work around is you may end up with a terminal window when you double click the game. You can circumvent that by modifying the main makefile to link the Windows subsystem in Run mode (which tells Windows that it's a Window app not a console app). Just change the following line from Compile to Run, save the makefile, build your game, and copy the temp file.
https://github.com/enigma-dev/enigma-dev/blob/2df68cffc66d5e6564392f5b078ad0589cf868ae/ENIGMAsystem/SHELL/Makefile#L92

Again, I'm sorry about this problem, and I will continue looking into it.

63
General ENIGMA / Re: Sorry, I really tried
« on: March 10, 2019, 04:02:39 PM »
While I share many of the sentiments and opinions that have been discussed here. Let me play devil's advocate and offer you guys a counter argument. One advantage to the emphasis we have on a source setup using a package manager, as opposed to a binary release mechanism, is the simplicity of hacking on ENIGMA. We gained several contributors because of this, including myself, because it is so easy to change the code in the engine, save it, and rerun the game and see the changes immediately. I think we can even find evidence of this in the past when ENIGMA has honestly had more contributors than users. That said, again, it doesn't mean we have to totally rule out binary releases and, again, I am open minded to more simplistic methods of setup. This is one of the reasons I got on board with fundies investigating MSVC support for ENIGMA. The idea was that if we could support MSVC, well then users already have the dependencies for ENIGMA installed if they have GMS installed. We're probably not going to merge any of this or roll it out any time soon because we ran into issues like globbing and other things we don't like about MSVC build systems. Long story short, we'll continue investigating this problem, and I hope you guys see my point of view too.

64
Hi Talkashie! impo's advice is one way to go/thing to try. Regarding the boolean cast issue, that used to be a bigger incompatibility than it is now. Yes, it's true that C++ casts booleans differently than the old GML. In fact, most programming languages cast booleans the way C99 did (I mean C#/Java/etc).
Quote from: ISO C99 ยง 6.3.1.2
When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.

Now, it's no longer as much of an incompatibility, because I changed the collision functions to have a special return type, that when cast to boolean will give the expected behavior of older GM versions. I brought this to ENIGMA for the same reasons YoYo, at some point, did it for GMSv1.4. Additionally, our variant data type has always cast to boolean the way classic GM did. So, these days, in ENIGMA, unless you literally declare your variable with the bool data type, you will get the expected behavior of older GM versions.
https://github.com/enigma-dev/enigma-dev/pull/1218

For these reasons, I have now actually updated the wiki page you were referring to. It now more accurately mentions that we have dealt with the collision functions and there shouldn't be incompatibilities here now.
https://enigma-dev.org/docs/Wiki/GM_Incompatibilities#Coding_Incompatibilities
Quote from: ENIGMA Wiki
In GM values < 0.5 are treated as false, in C++ only a value equal to 0 is treated as false. ENIGMA's variant type and instance type (returned by collision functions) have special boolean casting rules so that they give the expected results of earlier GameMaker versions when tested in conditional statements.

65
Oh that's very interesting hugar! I had never thought about doing this myself without having to create a fully animated sprite or do some 3D with an ortho projection. Thanks for sharing this example as I think it will help novices pull off this seemingly basic graphics technique without much effort!

66
Tips, Tutorials, Examples / Re: Isometric projection in 3D
« on: March 09, 2019, 02:29:04 PM »
As someone who worked on aspects of this internally along with Harri, who wrote the GL3.3 shader, I can say that the explanation impo gave to Hugar there is accurate. Further, I am also aware from talking with Hugar that his OpenGL drivers seem to have some issues (e.g, can't enable per-pixel fog in GL1.1; and we tried lots of stuff) so this could be compounding any rendering differences he has from the rest of us.

67
Tips, Tutorials, Examples / Re: Vertex buffer primitives
« on: March 09, 2019, 02:21:47 PM »
Haha this example looks really interesting, informative, and useful! I have plans and may create something like this to regression test our lighting functions and fog. But I would like to provide some additional information here being someone whose worked internally on these features.

Quote from: impo
there's scripts to generate cones, walls, blocks,importing d3d/obj models etc via vertex functions which work much faster comparing to default d3d_ ones.
This is actually exactly what I made the internal engine do, all of our shape functions actually just call the d3d model functions, which in turn are implemented using the vertex functions. Now, here's why your method is probably faster, for 3D shapes only, because I hadn't exactly worked out the flushing mechanism, our d3d shape functions are still doing an immediate flush. This means that your version is probably all being submitted in one draw call, which obviously is less overhead and will give better performance.
https://github.com/enigma-dev/enigma-dev/blob/90279d01a1db831f1013e118ddba7645b82802ce/ENIGMAsystem/SHELL/Graphics_Systems/General/GSprimitives.cpp#L205
https://github.com/enigma-dev/enigma-dev/blob/90279d01a1db831f1013e118ddba7645b82802ce/ENIGMAsystem/SHELL/Graphics_Systems/General/GSmodel.cpp#L735

Quote from: impo
the culling doesn't work and is reversed on all of the 3d primitives and models
I can apitrace this and see if we have the same winding order as GM8 and GMSv1.4.

68
Issues Help Desk / Re: Compile error after adding sprite
« on: March 09, 2019, 02:14:07 PM »
You clearly have objects and resources with duplicate ids. The engine can't resolve the differences, hence the error. I suggest making a backup copy of your project and using the defragment ids feature of LateralGM. In fact, the latest version of LGM should have warned you when you loaded the project.

69
Announcements / Re: Image Format Extensions & New libpng Dependency
« on: March 09, 2019, 02:10:11 PM »
Quote from: Dragonite
Has there been any progress in keeping EDL up with GML features that were added in the last years? Such as accessors, enums, the collision_list functions, etc.
There hasn't been much in this regard yet, but we are looking at some things and hopefully may have some positive news about this in the near future.

70
Tips, Tutorials, Examples / Re: Isometric projection in 3D
« on: February 25, 2019, 12:21:46 PM »
Ok, that's good now I think you are still on an outdated version. Several of the issues/differences left that you are showing me here seem to be issues I have just fixed within the last month. So I would like you to update ENIGMA and see what the differences are then.

Here's the commands you can use to update your copy of ENIGMA if you don't want to do the entire installation over again. Just start the MSYS2 shell that you launch LateralGM from and make sure you are in your cloned enigma-dev directory.
Code: (Bash) [Select]
git pull
make clean
make -j4

NOTE: Here's a small tip, you can use [img width=300]http://url[/img] to give your images a custom width so this topic is easier to navigate. Our forum has built-in support so that left clicking the image will increase it in size.

Quote from: impo
opengl1.1 works well, except for  lighting looking inverted relative to the light source. i also couldn't get the other EDL's light functions to work (related to specular  lighting)
This is either the lighting normals in some of our shape functions or an issue with the fact that GL1 lighting is computed in eye space. I am leaning towards the former and haven't had time to look at the shape functions, since they've been deduplicated, and make the normals 100% like GM.

Quote from: impo
opengl3.3 has no fog, also broken transperancy
We are aware that this system's shader lacks fog support. Our shader in this system might also either lack vertex transparency or the blend states are configured incorrectly.

Quote from: impo
directx11 has no light/fog, problems with h/vrepeat and whatnot. opengl 1.1 actually has problems with that as well, texture hrepeat/vrepeat didn't work on cube primitive (but worked on floor)
This system is the same story as GL3 and we are aware there's no lighting and fog support in its default shader yet (I have yet to write it). Texture repetition issues has to do with texture state issues.
https://github.com/enigma-dev/enigma-dev/pull/1497
The GL1 issue with texture repetition problem is a new one I discovered recently that will also need to be solved.

Quote from: impo
directx9 just renders a single triangle.. lol. whatever i try to change, it still shows a triangle. directx9 worked fine in other tests as far as I remember, might be a problem with d3d_set_projection_ortho_lookat, i'll probably do some other tests on that
I am like 90% certain the issue is the lighting material, and I have fixed it in master. It also caused Project Mario not to draw anything, and this is why I would like you to update and try again.
https://github.com/enigma-dev/enigma-dev/pull/1530

Quote from: impo
yeah i know, I tried to turn off the perspective before each draw event, with different projections, angles etc, but it just didnt seem to work
It won't render anything because you have an outdated ENIGMA. You need to upgrade so that you have my perspective fixes.
https://github.com/enigma-dev/enigma-dev/pull/1528

Quote from: impo
that's great, alot of potential. i want to make some advanced stuff just for the sake of kicking game maker's ass
Sure, I was interested to see what you did here because I for a while wanted an isometric projection function in ENIGMA, but I did not know that we already had it. It was originally added by TheExDeus and I decided to keep it when I switched us to GLM and cleaned up all of the duplicate matrix code we had. So this is good, I am happy that it works and might want to use it to make a game myself.

71
Tips, Tutorials, Examples / Re: Isometric projection in 3D
« on: February 23, 2019, 11:44:25 PM »
Hi again impo! I have to say I was happy to hear of your development with this as it seems to be a positive side effect of the matrix cleanup we did. What's even better is that to fix it, it only needs tweaked in a single location for all the graphics systems.
https://github.com/enigma-dev/enigma-dev/blob/5317421ad4aa3ac38d3e6e99515c993ccfa04320/ENIGMAsystem/SHELL/Graphics_Systems/General/GSmatrix.cpp#L245

If you could be more specific about how you think it should be changed to improve it, I would love to hear it and consider adding it to the official ENIGMA. Also, please try running your game in Direct3D systems and let us know if that produces different results with respect to the fog or lighting.

Quote from: impo
however i couldn't get functions like d3d_set_perspective to work
This particular function I'd like to comment on. This is actually a tricky to understand function due to its poor documentation in GM's original manual. And through API traces I can confirm that its behavior is the same in ENIGMA as it is in GM. Basically, the way it works is that GM resets the projection automatically at the beginning of each screen redraw. If 3D mode was turned on and perspective is enabled (default is on) then it will set a perspective projection, otherwise an orthographic one. You can see several of the pull requests below where I tested and confirmed the behavior of these functions for consistency.
https://github.com/enigma-dev/enigma-dev/pull/1528
https://github.com/enigma-dev/enigma-dev/pull/1396
https://github.com/enigma-dev/enigma-dev/pull/1388

You'll notice that 1528 was merged just 21 days ago, if you setup ENIGMA before that, you might want to consider updating.

Quote from: impo
perhaps projection matrix would work faster?
I am not sure if I understand this question. I have added the GMSv1.4 and GMS2 matrix_* family of functions to ENIGMA, though they are untested. Feel free to be the first person to give them a try.
https://github.com/enigma-dev/enigma-dev/blob/5317421ad4aa3ac38d3e6e99515c993ccfa04320/ENIGMAsystem/SHELL/Graphics_Systems/General/GSmatrix.h#L34

Quote from: impo
what's actually the most computationally effective way in enigma to make isometric (or any other orthographic) projection in 3d?
The way that you are doing it now basically. I have done a lot of benchmarking to ENIGMA's graphics such that you don't need to worry about it, and I have posted these benchmarks publicly on the GitHub repo on my various pull requests. ENIGMA, as a game engine, handles matrices in a very standard way that's not only compatible with GM but just as performant. Going even further, OpenGL Mathematics (GLM) is the dependency we use for the matrix computations and it uses SIMD and compiler intrinsics for optimization.

72
Finished Games / Re: Mystery Mansion
« on: February 18, 2019, 03:09:29 PM »
That was a lot of fun Hugar, I've left you a review on the Windows version!
https://enigma-dev.org/edc/games.php?game=77

73
General ENIGMA / Re: Sorry, I really tried
« on: February 18, 2019, 04:56:14 AM »
Hey waddlewaddle, I am sorry to hear of your struggles with the installation, and I want to say that we do hear your feedback. We have debated for some time the complexity of the installation procedures for ENIGMA. We understand it's not the most friendly to novices and we have looked at various scripts and installer-like mechanisms to make things easier. I am, to this date, still not entirely satisfied with the lack of a simple setup method.

Various forum users have also been developing their own setup methods, which we are totally ok with and do support. You may be interested in an Easy Installation method that was shared recently.
https://enigma-dev.org/forums/index.php?topic=2954.0

The problem is partly the underdevelopment of ENIGMA as we lack contributors. On one hand, the quality of updates and contributions has improved significantly, largely thanks to continuous integration testing on the repo. But when you consider that maintaining an installer alone is a large bulk of work, it's quite obvious that YoYo has an advantage here because they have a full staff of people that can just focus on installation alone. Here the responsibility usually falls on me to update dependency lists and other instructions on the Wiki pages, which you often see me doing in official announcements.

I want to give you some more information about the commonly used cd command which is short for "change directory." An obvious reason your cd enigma-dev command may have failed, is that you were in the wrong directory to begin with, in which case you must first cd to the parent directory of the enigma-dev directory. Also, the enigma-dev directory is created during the git clone step of the setup which is where the source code is actually downloaded from our GitHub repository. By default, the clone command will download the source code in the current directory of your terminal and give it the name of the repo, which happens to be enigma-dev. I hope you will find this information insightful and that it maybe clarifies a little bit of your confusion. I will provide a short/simple guide that explains several other common terminal commands.
https://www.digitalcitizen.life/command-prompt-how-use-basic-commands

I also want to say that it's fine to be unfamiliar with command line tools, but knowing about them and understanding them can be very beneficial to you as a software developer. Nothing the project uses is in any way non-standard or particularly unique. For example, GNU make is a very popular and widely supported build system. There is nothing out of the ordinary for our project to be using it. Regardless, I hope I helped and I really do take your feedback seriously and appreciate that you took the time to try the setup and to let us know about the issues you faced.

74
Announcements / Re: Image Format Extensions & New libpng Dependency
« on: February 18, 2019, 04:39:13 AM »
You're welcome, and I hope to have some more exciting stuff to announce soon!

75
Announcements / Image Format Extensions & New libpng Dependency
« on: February 14, 2019, 11:19:05 PM »


Many of you have been requesting for some time that we switch from LodePNG to libpng to make it easier to install ENIGMA on your platform because libpng is usually available on package managers and LodePNG is not. I wanted to let everybody know that we have finally done this.
https://github.com/enigma-dev/enigma-dev/commit/112dc544d611d5b588e8f0b2e3f193b79e7f0845

This means that libpng is now a dependency for ENIGMA and you will need to install it through your package manager the next time you git pull or otherwise setup ENIGMA.
https://enigma-dev.org/docs/Wiki/Install:Windows
Code: (Bash) [Select]
# MSYS2 64-bit
pacboy -S libpng:x
# MSYS2 32-bit
pacboy -S libpng:i

I have also updated the Ubuntu/Linux installation instructions as well as the easy method script.
https://enigma-dev.org/docs/Wiki/Install:Linux
Code: (Bash) [Select]
sudo apt-get install libpng-dev
There are actually other positive benefits from this change, including the fact that png loading and saving is now many times faster according to several benchmarks I have performed. There may still be additional optimizations we can make in the future, but for now you can see my benchmarks on the original issue where libpng was requested.
https://github.com/enigma-dev/enigma-dev/issues/1391#issuecomment-464307654

Another positive aspect of this change stems from the fact that I integrated libpng into the engine as an extension. This means I have made the image loading and saving "hookable" so that additional image formats can also be supported through extensions. I hope everyone likes these changes and will find that they improve ENIGMA. I also want to mention that I do not foresee us adding any more required dependencies to setup ENIGMA except for FreeType which we'll be using to render fonts in emake and the frontend tools. It will be a shared dependency between the command line and the engine. I just want to give everyone a heads up. Cheers!