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

Pages: [1] 2 3 ... 208
1
Just going to make a note here for everybody else. We got this mostly squared away.

He contributed the array_set function which I've approved.
https://github.com/enigma-dev/enigma-dev/commit/ed696c743a117d9648353268cff6b2dac5fbb842

We still have some things to work out with var arrays and accessors though.
https://github.com/enigma-dev/enigma-dev/issues/1751

2
Works in Progress / Re: Sokoban clone for Enigma
« on: June 15, 2019, 01:11:06 PM »
Holy cow hugar, you are on fire making games. This one too looks like fun! Yeah i'm still planning on setting aside some time to play your new games.

PS: What's up with the broken formatting of the size BBCode in your post? I think the version of Simple Machines Forums (SMF) we have installed doesn't support percentages. I would Google "SMF BBCode font size" or maybe try using the UI button to set the font size of that link.

3
Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 15, 2019, 01:05:39 PM »
That's correct, yeah, what's it doing in ENIGMA? I understood you, you want to store the reference/pointer to the var array inside the ds list.

4
Issues Help Desk / Re: Error implementing struct
« on: June 15, 2019, 01:04:05 PM »
Yeah, I recently had the chance to try GMEdit, it's pretty cool, I recommend too.

5
General ENIGMA / Re: Roadmap?
« on: June 15, 2019, 12:55:38 PM »
Quote from: Dragonite
Okay, cool. Is it ok to report here if I find more pages with outdated information?
Sure, you can say so here, or Discord, or IRC, or wherever you prefer. I can also say that since you already have a forum account, you already have a Wiki account, so you are actually free to update content as you see fit. I just have to mention here that I must ask that you please consider copyright before uploading content to our servers. I've really only had one problem with somebody uploading copyright stuff in the past like 6 years~ I've been here, so it's not a big issue. Just make sure you either have the rights or the permission of the author to use any content you try to upload. Use your own original work rather than using somebody else's in general.

Quote from: Dragonite
Yeah, these days the normal build mode compiles your project into bytecode and it runs it inside a VM. It's much faster than GM8.1, but much slower than YYC.
Right, I haven't dived too much into this part of the engineering problem here. I mean, ENIGMA and GM are both software to solve an engineering problem, RAD game development. You may be interested in speaking sometime to Josh or Rusky or other individuals who are more knowledgeable in this domain. There's actually something funny if I recall about YoYo's use of LLVM, in other words, it's not using LLVM to the fullest. For example, it still uses Clang to link or something like that. Actually, I'll share this post with one of these people and maybe they'll explain it better than me.

For example, I mean the lack of execute_string and other dynamic programming language features.

6
General ENIGMA / Re: Sorry, I really tried
« on: June 13, 2019, 11:07:33 AM »
Quote
Speaking from ignorance, wouldn't it work if someone who has the program uploads it completely to GitHub for others to download?
Hi again Waddlewaddle. This is technically possible and something we've discussed. However, for me to upload it, I'd have to upload several gigabytes as my particular MSYS installation is huge. You'll still need MSYS and at minimum GCC to compile your game's code. This is why one of the things we've considered is an installer, automated by a build server, which will upload only the minimum MSYS setup that's needed along with LateralGM and the rest of ENIGMA. That's quite the engineering job and we haven't exactly concluded on how to do it.

I am still troubled to hear about your setup and installation problems. I want to offer this video link in addition to hugar's resources above in the hopes that it may help.
https://www.youtube.com/watch?v=tAejbYc3LRI

Perhaps what may help is a brief high-level overview of how all these parts interact with each other.
* LateralGM is a GM file editor written in Java. It is older than ENIGMA and supports plugins. It can be used entirely on its own without ENIGMA.
* ENIGMA is both an engine and compiler. Its compiler parses and translates your game to C++ then feeds it to GCC/Clang. The build system compiles the engine when you hit run which will be linked to the executable produced by ENIGMA's compiler. Your resources are then appended to the executable in the data section, like traditional GM.
* When ENIGMA started, it did not have an IDE, but LGM existed and supported plugins. At that point a plugin, lgmplugin (aka enigma.jar), was developed to hook ENIGMA into LateralGM. This plugin loads compileEGMf using Java Native Access and adds a run/debug/compile button as well as a few other UI features to interact with ENIGMA.

7
General ENIGMA / Re: Roadmap?
« on: June 13, 2019, 10:52:37 AM »
Quote from: Darkstar2
And how to explain why it happened in some scenarios and not others, is there interference between keyboard_string and something else ?
The fix for the backspace issue is now merged. And yes, any bug that overwrites the stack can muck up the whole program, that's why it's also the nature of buffer overflows and security vulnerabilities.
https://github.com/enigma-dev/enigma-dev/commit/1ab91aefefe8fd7019ffbab876448b7bf65463b0

Let me slightly correct myself, some of the problems you may have had, perhaps building an empty game, may have been unrelated. I am still investigating issues I am having with empty games.
https://github.com/enigma-dev/enigma-dev/issues/1745

Quote from: Dragonite
The ENIGMA:ToDo page was last edited in 2013.
Ok, I've put the roadmap on that page, that's a good idea. Let me mention something though, and this is not as bad as it sounds. Many of the tasks on that page actually still need done. One of the reasons it's not so bad they haven't been done is because a few of them don't really matter to the users. For example, moving resources from arrays and vectors to our own templated container. That's not something the end user will really notice even in performance if it's done correctly. It will only improve our code maintainability.

Quote from: Dragonite
Some issues could be labeled as good "first issues" for those who want to contribute.
Josh started doing this actually. However, it's kind of not working because I gobbled up all of the good first issues since they were so easy and I want ENIGMA to work well. I can't help it so much I tend to be a bit of a busy body, but I will continue trying to identify good first issues and labeling them.

Quote from: Dragonite
I believe YYG uses the term "runner" for the actual engine nowadays, and calls the interpreted mode "VM".
I'm not so sure, I'm just going by the origin of the term. The origin was an executable, called the runner, which contained the interpreter/VM, which would be simply file copied and have your games assets appended to it in the data section. I suppose I should refer to it as VM now, though its behavior in modern GMS is not really that different from that in the classic GM.

8
General ENIGMA / Re: Roadmap?
« on: June 12, 2019, 09:04:44 AM »
Quote from: Darkstar2
So according to you, is the keyboard_string the main reason for ALL cases or are there possibly other causes ?
Yeah, probably. Read the issue on GitHub, if you look at the stack produced when I hit backspace you'll see it's calling into some Enclave Win32 functions. An Enclave is a way of isolating code within the same executable. When keyboard_string is empty, and length-1 is passed to substr, there's integer underflow which causes it to be INT_MAX. So what happens is it tries to copy too many characters and overflows the stack (which GCC probably confined to an enclave). It only appears in some situations because of link time optimization. Again, behavior here is undefined, which just causes it to look random.

Anyway, it's a very simple fix and I'll send it momentarily. We just need to check if the string is empty before erasing a character.

Quote from: Dragonite
Goombert, are you welcoming pull requests to put documentation on each of those projects' repo? I'd like to contribute that way, if possible.
It depends on exactly what you mean. We've actually stuck to documenting things here on our Wiki, which is more powerful, rather than doing so on the actual projects. We tend to only document exceptional things in the actual repos. Though, JDI is completely doxy commented. The Wiki is basically our version of the GM manual, but can also go into advanced topics that the typical user never needs to read. This line is drawn between "Getting Started"/"Documentation" and "Development Contribution".
https://enigma-dev.org/docs/Wiki/Main_Page

Quote from: Dragonite
The runner works pretty well as it is (at least in my experience).
Well, hold your horses there buckaroo, we don't actually have an interpreter. There are actually other projects attempting to build an open source GM runner, but the ENIGMA project is closer to what YoYoCompiler does (and was also invented earlier; ENIGMA compiler was started in 2007). We take your GML/EDL and convert it to C++, then compile it and link it to our engine also written in C++. There are actually use cases for a runner, even if you compile, that's why YoYo kept their runner even after creating the YYC. A runner is better for... well.... running the game quickly. If you are developing in a hurry, you don't care so much what the runtime performance is, you just want to launch the game quickly to see if your code changes worked. A runner launches quicker because it doesn't go through compiling the whole game and optimizing it. Compiling your game is better for releases because it will optimize the game and make it run faster, which makes something like ENIGMA or YYC better for releasing games.

Quote from: Dragonite
Thanks for posting an updated roadmap.
You're absolutely welcome! I hope it gives some insight on what ENIGMA needs to prioritize at this point basically.

9
General ENIGMA / Re: Roadmap?
« on: June 11, 2019, 10:51:01 PM »
Alright, a couple of things, because I just reproduced it. First, I tried building an empty game and running it but that doesn't seem to work for me. The exe just crashes when I try to double click it. So I tried building the 3D Cubes Demo in compile mode and that worked. I press backspace and bam, instant crash. We'll have to figure it out.
https://github.com/enigma-dev/enigma-dev/issues/1743

Edit: Ok, I tracked it down to the addition of backspace behavior for keyboard_string so it should be an easy fix.

10
General ENIGMA / Re: Roadmap?
« on: June 11, 2019, 11:50:50 AM »
Daz is pretty accurate about his analysis. Everybody wants a roadmap, so here, I'll lay it out for the next 1-2 years.

* Grow the CI coverage by another 25% over the next year. This includes completion of binary buffers and testing of them. Coverage of objects, inheritance, and collisions.
* Continue improving and maintaining the ENIGMA engine and LateralGM. This includes new features and smaller fixes as users request them.
* Finish the EGM writer thus completing the EGM library. Test EGM project serialization to keep it working.
* Finish refining the asset compilation stages so that emake becomes a functioning remote asset compiler. This includes finalizing ideas of how RadialGM and the like should attach assets to the exe locally or remotely.
* Continue developing RadialGM into a stable and usable IDE. This includes completion of additional editors, refinement, and integration of the above completed APIs.

Quote from: Darkstar2
I would like to see resolved in ENIGMA is that nasty backspace bug
I gave backspace some testing today, couldn't see anything different from the regular input. Still need to be able to reproduce it before it can be fixed. I assume the reason you are having trouble with this at all was when we introduced SDL since the input logic was generalized. It's very easy to make mistakes when refactoring existing code when that code is not tested. Though, testing input is a little trickier, also why GUIs are tricky to test.

11
Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 10, 2019, 05:39:03 PM »
That's just the syntax checker being greedy about what's a script. Needs a fix and then a CI test to keep it working.

12
Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 10, 2019, 02:48:39 PM »
Hey, that's great! I will still look into fixing the old EGM format saving/loading from the lgmplugin for you. It just makes it easier to save that information.

PS: Also my recommendation about using lists is actually the same as Mark Overmars in the GM8 manual. It's true for scientific reasons that the data structures are faster when you consider operating on lots of data.

13
Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 10, 2019, 08:51:41 AM »
Everything hugar said is correct. The following part of the code I gave him can actually go wherever you want it, in the create too. It is copying the array to the list, element by element.
Code: (EDL) [Select]
for (var i = 0; i < array_length_1d(arr); ++i) {
    ds_list_add(list, arr[i]);
}

So the difference between ENIGMA/GM var arrays and data structure lists is subtle but important. In ENIGMA the var arrays are actually Lua tables of variants. The data structure lists are C++ std::vector of variant. Variant is the light weight type which is single dimensional in the case of reals. It uses NaN Boxing to store floating point and scalar values.

Var array functions:
https://github.com/enigma-dev/enigma-dev/blob/master/ENIGMAsystem/SHELL/Universal_System/var_array.cpp

Data struct list functions:
https://github.com/enigma-dev/enigma-dev/blob/eabb1b474d5abf7e2d58ae3eccf4ba875208a9c9/ENIGMAsystem/SHELL/Universal_System/Extensions/DataStructures/data_structures.cpp#L1203

In general, you probably want to use lists exclusively over arrays since they can not only be passed around by id, but their operations are more efficient. They won't be much different from var arrays, they just don't have to do as much work and are written in C++. And ENIGMA again is actually implemented close to GM so you should expect similar results going in the direction of any of the above.

14
Programming Help / Re: How to access arrays stored in a ds_list ?
« on: June 10, 2019, 07:03:42 AM »
We don't have that list function yet, but i can actually add that for you, that's doable now! I'll see if I can get to it tonight.

15
Issues Help Desk / Re: Error implementing struct
« on: June 01, 2019, 03:44:47 AM »
If I recall correctly, I think it's possible the definitions frame may be bugged and isn't saving. In other words, it reverted immediately after you closed the game settings frame. I am planning to look into this area soon now that I have fixed included file editing, but am extremely busy. I will update if I get any of it done, thank you for your patience. As you are discovering, ENIGMA may be rough around the edges, but this situation is drastically improving with our introduction of continuous integration testing.

Pages: [1] 2 3 ... 208