Pages: 1 2 »
  Print  
Author Topic: Iji on ENIGMA  (Read 4816 times)
Offline (Unknown gender) sorlok_reaves
Posted on: July 07, 2014, 03:55:01 PM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
Hey all,

Now that I've finally gotten past the intro cutscene, I figured it would be a good time to formally introduce my project: porting Iji to ENIGMA (and thus, a native Linux port).

Requisite gameplay video:
https://www.youtube.com/watch?v=iBErmgih7fU

The video describes some basics about what I'm trying to accomplish. In terms of commits to ENIGMA, I have been pushing relevant commits upstream for months, but there will always be some hacks that I feel should not be included in the engine. Thus, you'll have to use my Github fork of ENIGMA to run this.

NOTE: Game is super-crashy, and may hang your system.
Logged
Offline (Male) Josh @ Dreamland
Reply #1 Posted on: July 07, 2014, 07:50:51 PM

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2949

View Profile Email
Looking good; the tearing's a little disturbing, but you've made some great progress, it seems.

Could you enumerate the changes you don't want to push to ENIGMA? I'm aware of the "backslashes in paths" hack, but I believe proper macros will nip that issue in the bud down the road. I'm interested in knowing what else you changed, because I want to get macros, metaprogramming, and plugin scripting to be powerful enough for you to be able to enact those changes as part of the game file. I can't make any promises without knowing them, obviously, but having some time to think about them will certainly help.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) sorlok_reaves
Reply #2 Posted on: July 08, 2014, 12:50:36 AM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
Sure, here's a list of the changes I don't want to merge at the moment:
  • image_single - implementing this is not easy, and the 3 ways I've tried doing it make the regular drawing code much, much messier.
  • with+script - my fix is inefficient, and most people don't use with+script.
  • depth::remove() - this was sometimes encountering null pointers, a sign of a much bigger bug. I put a band-aid on it, but I think fixing the actual bug is the right solution.
  • texturecache fix - my solution works, but is naive. Robert said he'll fix it his own way once GM 1.99 beta (or something) becomes stable.
  • variable auto-renaming - I haven't implemented this yet, but I want to automatically replace, e.g., "try = 10" with "try_ = 10". The way I plan to do it will be inefficient.
In short, all of these have sub-par solutions that I wouldn't feel right pushing on ENIGMA for the sake of a six year old game. If I come up with a stronger, more efficient solution for any of them, I'll gladly push a patch upstream. (Some of these "better solutions" require the new script compiler.) And, of course, you'll still get pull requests from me for fixes that I feel are correct (e.g., #771).

Oh, and the extensions idea you mentioned sounds marvelous. :)
Logged
Offline (Male) Goombert
Reply #3 Posted on: July 08, 2014, 09:57:22 PM

Developer
Location: Cappuccino, CA
Joined: Jan 2013
Posts: 3107

View Profile
This is very nice sorlok, you are actually inspiring me, keep up the good work!

Sorry If I generally appear ignorant on compiler related issues, but it's because I usually am, I will speak up if I feel the need to however, but for the most part that stuff is best directed at Josh.
Logged
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.

Offline (Male) Josh @ Dreamland
Reply #4 Posted on: July 08, 2014, 11:20:43 PM

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2949

View Profile Email
Ah, so band-aid stuff. Though, as far as I know, image_single was implemented; I'm not sure when that changed. Probably when polygone decided to redo my subimage handling when he moved it. It's not difficult to support image_single; you just check if it isn't -1 before you add image_speed to the current subimage.

I am hoping that a new instance system will fix your second and third points. That's way down the road.

No comment on your fourth point.

Your final point, TGMG addressed in a regex replacer a while back. Good luck tracking it down, though. In the future, I intend to allow special handling of that in the EDL lexer. It's extremely easy, in fact; all you'll do is duplicate the default lexer and set keywords["try"] = TT_INVALID, then in the handler below, return token_t(TT_IDENTIFIER, "$try", filename, line, pos - lpos);. A quicker (uglier) quick fix is just to use an ENIGMA-side #define. I.e, in definitions, put something like this:

Code: (C++) [Select]
#ifdef JUST_DEFINE_IT_RUN // To be interpreted only by ENIGMA
#define try try_
#define catch catch_
#define time time_
#endif
« Last Edit: July 08, 2014, 11:26:00 PM by Josh @ Dreamland » Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) sorlok_reaves
Reply #5 Posted on: July 09, 2014, 04:31:21 PM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
This is very nice sorlok, you are actually inspiring me, keep up the good work!

That's great to hear! The inspiration works both ways in fact, so thanks to you as well!

Sorry If I generally appear ignorant on compiler related issues, but it's because I usually am, I will speak up if I feel the need to however, but for the most part that stuff is best directed at Josh.

As strange as it may sound, the compiler source is actually not a problem for me. Generally the issue for me is not getting something done, but getting it done in a non-polynomial amount of time. :D

Ah, so band-aid stuff. Though, as far as I know, image_single was implemented; I'm not sure when that changed. Probably when polygone decided to redo my subimage handling when he moved it. It's not difficult to support image_single; you just check if it isn't -1 before you add image_speed to the current subimage.

The image_single stuff was revoked in a later commit, since you actually have to do a bit more than just check -1. In particular, when image_single is set back to -1, you have to revert to the previous frame (before the original call to set image_single). Or something like that; I haven't checked in a while.


Your final point, TGMG addressed in a regex replacer a while back. Good luck tracking it down, though. In the future, I intend to allow special handling of that in the EDL lexer. It's extremely easy, in fact; all you'll do is duplicate the default lexer and set keywords["try"] = TT_INVALID, then in the handler below, return token_t(TT_IDENTIFIER, "$try", filename, line, pos - lpos);. A quicker (uglier) quick fix is just to use an ENIGMA-side #define. I.e, in definitions, put something like this:

I'll have a look. Basically, my current strategy is "keep nasty hacks in my fork until upstream has better systems in place for handling this kind of thing". So I'll wait for the EDL lexer extensions, rather than hacking in some macros now.

I've still got tons of legitimate work to do on Iji, so the hacks can stay in stasis for a while.
Logged
Offline (Male) Josh @ Dreamland
Reply #6 Posted on: July 10, 2014, 09:20:00 PM

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2949

View Profile Email
Sounds good. Please keep us apprised of any more of these hacks that arise; it's good to have them in mind when designing backend components.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) sorlok_reaves
Reply #7 Posted on: July 13, 2014, 01:44:01 PM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
Sounds good. Please keep us apprised of any more of these hacks that arise; it's good to have them in mind when designing backend components.

Absolutely.
Logged
Offline (Unknown gender) sorlok_reaves
Reply #8 Posted on: July 18, 2014, 12:34:59 AM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
Update: message boxes outside of cutscenes are actually different objects from those inside cutscense. So now chatting via triggers works:
https://www.youtube.com/watch?v=UNecqkDnufA

There'll be a few pull requests rolling in later related to this.
Logged
Offline (Unknown gender) sorlok_reaves
Reply #9 Posted on: July 25, 2014, 12:01:01 AM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
New alpha release, with.... actual gameplay??? That's right.
https://www.youtube.com/watch?v=ZPZpTdGFGqY&feature=youtu.be
Logged
Offline (Unknown gender) egofree
Reply #10 Posted on: July 25, 2014, 04:23:14 AM
Contributor
Joined: Jun 2013
Posts: 603

View Profile Email
It looks very nice, thanks for sharing and for improving enigma also !  (Y)
Logged
Offline (Unknown gender) sorlok_reaves
Reply #11 Posted on: July 26, 2014, 01:21:59 PM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
It looks very nice, thanks for sharing and for improving enigma also !  (Y)

You're welcome! Can't wait for the day when I can get a nice, playable beta version out to all you guys. :)
Logged
Offline (Male) edsquare
Reply #12 Posted on: July 26, 2014, 01:52:55 PM

Member
Location: The throne of ringworld
Joined: Apr 2014
Posts: 402

View Profile
It looks very nice, thanks for sharing and for improving enigma also !  (Y)

Ditto  (Y)
Logged
A child of five would understand this. Send someone to fetch a child of five.
Groucho Marx
Offline (Unknown gender) sorlok_reaves
Reply #13 Posted on: August 05, 2014, 06:19:30 PM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
New bugfixes. These will both get pull requests soon:
https://www.youtube.com/watch?v=-7VXuxchRCE&feature=youtu.be
Logged
Offline (Unknown gender) sorlok_reaves
Reply #14 Posted on: August 10, 2014, 12:51:35 AM
Contributor
Joined: Dec 2013
Posts: 261

View Profile
Got really lucky with a bug fix that actually fixed about 10 bugs. The result? Much more playable!
https://www.youtube.com/watch?v=ukV_1_Mr18g
Logged
Pages: 1 2 »
  Print