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 - Josh @ Dreamland

766
Issues Help Desk / Re: file_find functions
« on: May 22, 2013, 07:25:43 PM »
ENIGMA depends on file_find functions in the compiler, so they are almost certainly implemented in the engine. What platform aren't they working on?

767
Proposals / Re: While we (as in forthevin) are moving shit
« on: May 22, 2013, 01:45:00 PM »
My only bitch with macros is that the syntax checker will sound stupid. The code will read irandom(1,2,3) instead of choose(1,2,3), and the checker will bitch, "Too many arguments to function `random_integer': expected at most 2, provided 3". That might confuse the fuck out of people, or they might assume that ENIGMA is a mind-reading sentient. Either way, it's a little tacky.

768
Proposals / Re: While we (as in forthevin) are moving shit
« on: May 22, 2013, 07:58:34 AM »
forthevin: You reading this? It seems you've begun migrating #define'd functions to enigma_user by rewriting them as regular functions that call the original. That's, in general, a good idea, but it breaks overloads. Would you be interested in a parser macro specifically designed to alias a function in ENIGMA's compiler? You'd call something like $ENIGMA_alias(random_integer, irandom), and it would create a duplicate definition in the current scope. Just an idea.

Otherwise, we'll have to stick with macros for the time being. Or worse: alias all overloads. Not a fan of that idea.

I don't mind macros, because what we're avoiding is C++ definitions that conflict with user code, not user/ENIGMA code that conflicts with C++ definitions.

769
General ENIGMA / Re: Definitions Modified
« on: May 20, 2013, 01:49:41 PM »
Couldn't have been. Only ENIGMA needs this feature, and ENIGMA has been using exclusively the JoshEdit branch for ages. The lack of resource highlighting might have been an issue, though.

770
Announcements / Re: LateralGM 1.8
« on: May 20, 2013, 01:33:53 PM »
IsmAvatar has had LGM in a "feature freeze" for ages. I'm not sure if she still has plans to consider 1.6 for a release, but I personally discourage it; the rest of the Game Maker world has moved on, and LGM is quickly reaching obsolescence, even outside of the ENIGMA world. That said, I understand if she ends up not pulling the changes, or pulling them as a new branch and then sifting the bug fixes into master (this is what I'm expecting she'll do).

That said, based on the results of Robert's beta release, we will probably be switching to his fork until Ism starts work on her own master branch. In the event that the two begin to diverge, we (as in, the ENIGMA organization on GitHub) will maintain our own fork, assuming Ism is willing to help patch any merge conflicts arising from divergent systems. I suspect she will be, considering ENIGMA's userbase constitutes a substantial and increasing fraction of LGM's userbase.

771
Issues Help Desk / Re: Mac help
« on: May 20, 2013, 02:25:59 AM »
All right; good luck, and let us know how it goes. Eventually, another Mac fan with a knack for C++ will come along and pick up the torch. I imagine our original Mac developer is just busy with university.

772
Issues Help Desk / Re: Mac help
« on: May 19, 2013, 07:21:52 PM »
Our Mac maintainer seems to have fled his country, so I really don't know how ENIGMA is doing on Mac. We've tried to coordinate with him, but have just recently begun moving on as interest in the platform is very low. We'd be happy to walk you through trying to get it up and running again, but I can't promise anything at this point.

It's my understanding you'll need Apple's developer tools, along with a copy of ENIGMA's repository. If you're feeling jumpy, you can try to see how it's installed on Linux from the Wiki Git installation page. Otherwise, just check out from git, run install.py, and then run LateralGM's jar file, probably using java -jar lgm16b4.jar in your terminal window.

Let me know how far that gets you.

Cheers

773
General ENIGMA / Re: Definitions Modified
« on: May 19, 2013, 07:14:47 PM »
It already does it each time you compile. Ism just doesn't update her keyword lists.

It also does it when you save the definitions file.

All that needs done is putting a call to the word list updater after those two calls.

774
Proposals / While we (as in forthevin) are moving shit
« on: May 18, 2013, 05:48:14 PM »
Here's a question to think about while we're moving shit.

A lot of functions take specific types of objects as input. This hasn't been a big problem so far, because all objects have been 2D. When users go 3D, the tier object_planar will need swapped out for a hypothetical object_spatial, which implements an x, y, and z. We're going to have cast issues out the ass one way or another, but I think it'd benefit us to have some community discussion before anything big happens.

Ideally, we could solve this by moving functions such as motion_add into the object_planar class. But thanks to our friend, with(){}, this is, as usual, completely off the table. That said, I think we can still use vtables to help mitigate issues, like so:
  • Class object_spatial and class object_planar extend class object_positionable, which has a virtual $add_motion
  • Each child class, object_planar and object_spatial, implement a motion setter for two and three dimensions, but object_planar ignores the given z coordinate.

If we do this, cast checks can be eliminated for engine code, and errors can be reported for assigning z-motion in a 2D object in debug mode (possibly only when a certain flag is set, like -pedantic or -w-wrong-fucking-dimensionality). Other functions, such as those in extensions, would either have to do cast checking or use the virtual methods from object_positionable to be able to whore the vtable.

By the way, let me make one thing clear: if your code contains dynamic_cast, you are doing something wrong. Rule of thumb.

Any thoughts, suggestions, or visions of disastrous issues with the proposed or existing systems are welcomed.

Cheers

775
Hi there! Here's a suggestion:

Move the collision from the asteroid object to the player ship object. In that event, instead of changing the object to explosion (which is terrible practice and was going to be removed from the engine), just create an explosion object at its position. Then reset x to xstart and y to ystart instead of creating the new ship.

In the ship's create event, set a variable, such as invincible, to 0. Then, wrap the collision with asteroid event you created in if (invincible <= 0) {}. Also in that if block, set invincible = room_speed * 3; to give you three seconds of invincibility. In the step event, decrement it:

Code: (EDL) [Select]
if (invincible > 0)
  invincible -= 1;

That should do it.

Alternatively, you can set an alarm whose job it is to unset invincible instead of decrementing it yourself. Instead of setting invincible, you would use invincible = true; alarm[0] = room_speed * 3;. Alarm0 would then reset invincible to false.

776
General ENIGMA / Re: WIP enigma icon set cartoon
« on: May 17, 2013, 09:50:57 AM »
You'll need to optimize them to look good at about 18x18, otherwise they won't look right in the editor window (they'll be fuzzy).

777
Announcements / Re: LateralGM 1.8 Beta
« on: May 16, 2013, 11:06:28 AM »
He has only recently merged in that branch. Autocomplete worked fine in the JEdit branch. :P

778
General ENIGMA / Re: Where would you like your objects?
« on: May 16, 2013, 10:57:51 AM »
A prompt is not completely necessary. It could just be set to unceremoniously delete any objects that haven't been used in over two weeks when it is launched, or when the IDE is closed. The point of this endeavor is not to make all games build fast every time, but just to make it so when you are actively developing a game (or multiple games at once), you don't need to build all of it every time you want to test something.

My main issue with (2) is, as HaRRi pointed out, novices won't know what the bin/ dir is. My fear is not that they will bundle the objects with the game, but instead that they won't know it's safe to delete them if they delete or stop working on the corresponding games. If they were dumb enough to include the bin/ dir with the game, we'd have serious problems, because they could be including a hundred games' worth of object files.

Another thing I have to work out is getting the objects to build as shared objects/dynamic link libraries, so they can be rebuilt and swapped out on the fly. This will, ideally, allow debug and design mode to make changes to the code and hot-swap it with the existing code.

779
General ENIGMA / Where would you like your objects?
« on: May 16, 2013, 07:06:14 AM »
The more I review the idea, the clearer it is that I ought to start moving event code into separate source files. I'm thinking the new pretty printer (which I am using as a gloss word for "that thing that exports all the relevant engine code") should implement this change, just while I'm at it.

The point of this is to make it so that objects do not all need rebuilt every time you run the game. Issue with that is, we need somewhere to store the object files generated by the compiler (eg, GCC). The way I see it, we have a few options:

1) Store them in temp files. Your game will need built from scratch once, every time you reboot the machine.
2) Store them in the same folder as the game. So there'll be a ./game.egm, and a ./bin/game.egm/objects. This will leave object files everywhere, because nothing will ever delete them.
3) Store them in the actual game. This will make games extra fat, and could be problematic when using zipped formats (we can't point the linker to a zipped file).
4) Insert better idea here.

My only better idea is to give ENIGMA a specific spot in appdata / ~ that stores object files by game ID/path+filename, along with a timestamp to let ENIGMA know that it's been two weeks since the objects there have been used, and so they should probably be deleted. Game Maker used to prompt to delete old temp files on start, so I guess it wouldn't be unheard of.

Anyway, thoughts welcome.

Cheers

780
I've told you that was there seven times now.